diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 194d8391a9c4..bb421ac6b3bf 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -15,5 +15,6 @@ updates: - dependency-name: "beefy-*" - dependency-name: "try-runtime-*" - dependency-name: "test-runner" + - dependency-name: "generate-bags" schedule: interval: "daily" diff --git a/.github/workflows/extrinsic-ordering-check-from-bin.yml b/.github/workflows/extrinsic-ordering-check-from-bin.yml index fa70a3071c4a..0d2ffc6f2b18 100644 --- a/.github/workflows/extrinsic-ordering-check-from-bin.yml +++ b/.github/workflows/extrinsic-ordering-check-from-bin.yml @@ -10,7 +10,7 @@ on: required: true binary_url: description: A url to a Linux binary for the node containing the runtime to test - default: https://releases.parity.io/polkadot/x86_64-debian:stretch/v0.9.9-rc1/polkadot + default: https://releases.parity.io/polkadot/x86_64-debian:stretch/v0.9.10/polkadot required: true chain: description: The name of the chain under test. Usually, you would pass a local chain diff --git a/.github/workflows/publish-docker-release.yml b/.github/workflows/publish-docker-release.yml index 811849c561a5..1c5ae13caaa3 100644 --- a/.github/workflows/publish-docker-release.yml +++ b/.github/workflows/publish-docker-release.yml @@ -29,7 +29,7 @@ jobs: uses: docker/build-push-action@v2 with: push: true - file: scripts/docker/release.Dockerfile + file: scripts/docker/polkadot_injected_release.Dockerfile tags: | parity/polkadot:latest parity/polkadot:${{ github.event.release.tag_name }} @@ -37,6 +37,7 @@ jobs: POLKADOT_VERSION=${{ github.event.release.tag_name }} VCS_REF=${{ github.ref }} BUILD_DATE=${{ github.event.release.published_at }} + GPG_KEYSERVER="hkps://keys.mailvelope.com" cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache - name: Image digest diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cf75b74f11a9..d1a4bf46c921 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -115,13 +115,13 @@ default: file: false GITHUB_TOKEN: vault: cicd/gitlab/$CI_PROJECT_PATH/GITHUB_TOKEN@kv - file: false + file: false MATRIX_ACCESS_TOKEN: vault: cicd/gitlab/$CI_PROJECT_PATH/MATRIX_ACCESS_TOKEN@kv file: false MATRIX_ROOM_ID: vault: cicd/gitlab/$CI_PROJECT_PATH/MATRIX_ROOM_ID@kv - file: false + file: false PARITYPR_USER: vault: cicd/gitlab/$CI_PROJECT_PATH/PARITYPR_USER@kv file: false @@ -213,7 +213,7 @@ test-build-linux-stable: - echo "Polkadot version = ${VERSION} (EXTRATAG = ${EXTRATAG})" - echo -n ${VERSION} > ./artifacts/VERSION - echo -n ${EXTRATAG} > ./artifacts/EXTRATAG - - cp -r scripts/docker/* ./artifacts + - cp -r scripts/* ./artifacts check-runtime-benchmarks: stage: test @@ -268,7 +268,7 @@ build-adder-collator: - echo -n "${CI_COMMIT_REF_NAME}" > ./artifacts/VERSION - echo -n "${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}" > ./artifacts/EXTRATAG - echo "adder-collator version = $(cat ./artifacts/VERSION) (EXTRATAG = $(cat ./artifacts/EXTRATAG))" - - cp -r scripts/docker/* ./artifacts + - cp -r scripts/* ./artifacts build-malus: stage: test @@ -298,6 +298,23 @@ build-malus: #### stage: build +check-transaction-versions: + # image must be ubuntu:20.04 based to match the linkers, this image has npm installed + image: paritytech/contracts-ci-linux:production + stage: build + <<: *rules-test + <<: *docker-env + <<: *vault-secrets + needs: + - job: test-build-linux-stable + artifacts: true + before_script: + - apt-get -y update; apt-get -y install jq lsof + - npm install --ignore-scripts -g @polkadot/metadata-cmp + - git fetch origin release + script: + - scripts/gitlab/check_extrinsics_ordering.sh + generate-impl-guide: stage: build <<: *rules-test @@ -370,8 +387,8 @@ publish-polkadot-image: <<: *build-push-image variables: <<: *image-variables - # scripts/docker/Dockerfile - DOCKERFILE: Dockerfile + # scripts/dockerfiles/polkadot_injected_debug.Dockerfile + DOCKERFILE: dockerfiles/polkadot_injected_debug.Dockerfile IMAGE_NAME: docker.io/paritypr/synth-wave rules: # Don't run on releases - this is handled by the Github Action here: @@ -406,8 +423,8 @@ publish-adder-collator-image: <<: *build-push-image variables: <<: *image-variables - # scripts/docker/collator.Dockerfile - DOCKERFILE: collator.Dockerfile + # scripts/dockerfiles/collator_injected.Dockerfile + DOCKERFILE: dockerfiles/collator_injected.Dockerfile IMAGE_NAME: docker.io/paritypr/colander rules: - if: $CI_PIPELINE_SOURCE == "schedule" @@ -675,4 +692,4 @@ simnet-tests-malus-dispute-valid: allow_failure: true retry: 2 tags: - - parity-simnet + - polkadot-simnet diff --git a/Cargo.lock b/Cargo.lock index 5fbc6f2145d3..2c37343a4c21 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14,20 +14,11 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a55f82cfe485775d02112886f4169bde0c5894d75e79ead7eafe7e40a25e45f7" -dependencies = [ - "gimli 0.23.0", -] - -[[package]] -name = "addr2line" -version = "0.15.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03345e98af8f3d786b6d9f656ccfa6ac316d954e92bc4841f0bba20789d5fb5a" +checksum = "3e61f2b7f93d2c7d2b08263acaa4a363b3e276806c68af6134c44f523bf1aacd" dependencies = [ - "gimli 0.24.0", + "gimli", ] [[package]] @@ -290,9 +281,9 @@ dependencies = [ [[package]] name = "async-std" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9f06685bad74e0570f5213741bea82158279a4103d988e57bfada11ad230341" +checksum = "f8056f1455169ab86dd47b47391e4ab0cbd25410a70e9fe675544f49bafaf952" dependencies = [ "async-attributes", "async-channel", @@ -408,15 +399,16 @@ checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" [[package]] name = "backtrace" -version = "0.3.56" +version = "0.3.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d117600f438b1707d4e4ae15d3595657288f8235a0eb593e80ecc98ab34e1bc" +checksum = "e7a905d892734eea339e896738c14b9afce22b5318f64b951e70bf3844419b01" dependencies = [ - "addr2line 0.14.1", + "addr2line", + "cc", "cfg-if 1.0.0", "libc", "miniz_oxide", - "object 0.23.0", + "object", "rustc-demangle", ] @@ -468,8 +460,8 @@ dependencies = [ [[package]] name = "beefy-gadget" -version = "0.1.0" -source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#c3a24cd3ceb9053520f7ecc48c4f5197c3344fb8" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "beefy-primitives", "fnv", @@ -496,8 +488,8 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" -version = "0.1.0" -source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#c3a24cd3ceb9053520f7ecc48c4f5197c3344fb8" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -516,13 +508,13 @@ dependencies = [ [[package]] name = "beefy-merkle-tree" -version = "0.1.0" -source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#c3a24cd3ceb9053520f7ecc48c4f5197c3344fb8" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" [[package]] name = "beefy-primitives" -version = "0.1.0" -source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#c3a24cd3ceb9053520f7ecc48c4f5197c3344fb8" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "parity-scale-codec", "scale-info", @@ -1203,24 +1195,24 @@ checksum = "6d375c433320f6c5057ae04a04376eef4d04ce2801448cf8863a78da99107be4" [[package]] name = "cranelift-bforest" -version = "0.74.0" +version = "0.76.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8ca3560686e7c9c7ed7e0fe77469f2410ba5d7781b1acaa9adc8d8deea28e3e" +checksum = "7e6bea67967505247f54fa2c85cf4f6e0e31c4e5692c9b70e4ae58e339067333" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-codegen" -version = "0.74.0" +version = "0.76.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf9bf1ffffb6ce3d2e5ebc83549bd2436426c99b31cc550d521364cbe35d276" +checksum = "48194035d2752bdd5bdae429e3ab88676e95f52a2b1355a5d4e809f9e39b1d74" dependencies = [ "cranelift-bforest", "cranelift-codegen-meta", "cranelift-codegen-shared", "cranelift-entity", - "gimli 0.24.0", + "gimli", "log", "regalloc", "serde", @@ -1230,9 +1222,9 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.74.0" +version = "0.76.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cc21936a5a6d07e23849ffe83e5c1f6f50305c074f4b2970ca50c13bf55b821" +checksum = "976efb22fcab4f2cd6bd4e9913764616a54d895c1a23530128d04e03633c555f" dependencies = [ "cranelift-codegen-shared", "cranelift-entity", @@ -1240,27 +1232,27 @@ dependencies = [ [[package]] name = "cranelift-codegen-shared" -version = "0.74.0" +version = "0.76.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca5b6ffaa87560bebe69a5446449da18090b126037920b0c1c6d5945f72faf6b" +checksum = "9dabb5fe66e04d4652e434195b45ae65b5c8172d520247b8f66d8df42b2b45dc" dependencies = [ "serde", ] [[package]] name = "cranelift-entity" -version = "0.74.0" +version = "0.76.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d6b4a8bef04f82e4296782646f733c641d09497df2fabf791323fefaa44c64c" +checksum = "3329733e4d4b8e91c809efcaa4faee80bf66f20164e3dd16d707346bd3494799" dependencies = [ "serde", ] [[package]] name = "cranelift-frontend" -version = "0.74.0" +version = "0.76.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b783b351f966fce33e3c03498cb116d16d97a8f9978164a60920bd0d3a99c" +checksum = "279afcc0d3e651b773f94837c3d581177b348c8d69e928104b2e9fccb226f921" dependencies = [ "cranelift-codegen", "log", @@ -1270,19 +1262,20 @@ dependencies = [ [[package]] name = "cranelift-native" -version = "0.74.0" +version = "0.76.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a77c88d3dd48021ff1e37e978a00098524abd3513444ae252c08d37b310b3d2a" +checksum = "4c04d1fe6a5abb5bb0edc78baa8ef238370fb8e389cc88b6d153f7c3e9680425" dependencies = [ "cranelift-codegen", + "libc", "target-lexicon", ] [[package]] name = "cranelift-wasm" -version = "0.74.0" +version = "0.76.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edb6d408e2da77cdbbd65466298d44c86ae71c1785d2ab0d8657753cdb4d9d89" +checksum = "e0d260ad44f6fd2c91f7f5097191a2a9e3edcbb36df1fb787b600dad5ea148ec" dependencies = [ "cranelift-codegen", "cranelift-entity", @@ -1925,7 +1918,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "parity-scale-codec", ] @@ -1943,7 +1936,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -1963,7 +1956,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "Inflector", "chrono", @@ -1989,7 +1982,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -2003,7 +1996,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -2031,7 +2024,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "bitflags", "frame-metadata", @@ -2058,7 +2051,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2070,10 +2063,10 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support-procedural-tools-derive", - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -2082,7 +2075,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "proc-macro2", "quote", @@ -2092,7 +2085,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-support-test-pallet", @@ -2115,7 +2108,7 @@ dependencies = [ [[package]] name = "frame-support-test-pallet" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -2126,7 +2119,7 @@ dependencies = [ [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "log", @@ -2143,7 +2136,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -2158,7 +2151,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "parity-scale-codec", "sp-api", @@ -2167,7 +2160,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "sp-api", @@ -2380,7 +2373,7 @@ checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generate-bags" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "chrono", "frame-election-provider-support", @@ -2459,15 +2452,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" - -[[package]] -name = "gimli" -version = "0.24.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4075386626662786ddb0ec9081e7c7eeb1ba31951f447ca780ef9f5d568189" +checksum = "f0a01e0497841a3b2db4f8afa483cce65f7e96a3498bd6c541734792aeac8fe7" dependencies = [ "fallible-iterator", "indexmap", @@ -3072,7 +3059,7 @@ checksum = "f37924e16300e249a52a22cabb5632f846dc9760b39355f5e8bc70cd23dc6300" dependencies = [ "Inflector", "bae", - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -3138,7 +3125,7 @@ dependencies = [ [[package]] name = "kusama-runtime" -version = "0.9.9" +version = "0.9.11" dependencies = [ "beefy-primitives", "bitvec 0.20.1", @@ -3288,9 +3275,9 @@ checksum = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" [[package]] name = "libc" -version = "0.2.101" +version = "0.2.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cb00336871be5ed2c8ed44b60ae9959dc5b9f08539422ed43f09e34ecaeba21" +checksum = "dd8f7255a17a627354f321ef0055d63b898c6fb27eff628af4d1b66b7331edf6" [[package]] name = "libgit2-sys" @@ -3786,9 +3773,9 @@ dependencies = [ "base64 0.12.3", "digest 0.9.0", "hmac-drbg", - "libsecp256k1-core", - "libsecp256k1-gen-ecmult", - "libsecp256k1-gen-genmult", + "libsecp256k1-core 0.2.2", + "libsecp256k1-gen-ecmult 0.2.1", + "libsecp256k1-gen-genmult 0.2.1", "rand 0.7.3", "serde", "sha2 0.9.2", @@ -3805,15 +3792,34 @@ dependencies = [ "base64 0.12.3", "digest 0.9.0", "hmac-drbg", - "libsecp256k1-core", - "libsecp256k1-gen-ecmult", - "libsecp256k1-gen-genmult", + "libsecp256k1-core 0.2.2", + "libsecp256k1-gen-ecmult 0.2.1", + "libsecp256k1-gen-genmult 0.2.1", "rand 0.7.3", "serde", "sha2 0.9.2", "typenum", ] +[[package]] +name = "libsecp256k1" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0452aac8bab02242429380e9b2f94ea20cea2b37e2c1777a1358799bbe97f37" +dependencies = [ + "arrayref", + "base64 0.13.0", + "digest 0.9.0", + "hmac-drbg", + "libsecp256k1-core 0.3.0", + "libsecp256k1-gen-ecmult 0.3.0", + "libsecp256k1-gen-genmult 0.3.0", + "rand 0.8.4", + "serde", + "sha2 0.9.2", + "typenum", +] + [[package]] name = "libsecp256k1-core" version = "0.2.2" @@ -3825,13 +3831,33 @@ dependencies = [ "subtle 2.4.1", ] +[[package]] +name = "libsecp256k1-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451" +dependencies = [ + "crunchy", + "digest 0.9.0", + "subtle 2.4.1", +] + [[package]] name = "libsecp256k1-gen-ecmult" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" dependencies = [ - "libsecp256k1-core", + "libsecp256k1-core 0.2.2", +] + +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809" +dependencies = [ + "libsecp256k1-core 0.3.0", ] [[package]] @@ -3840,7 +3866,16 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" dependencies = [ - "libsecp256k1-core", + "libsecp256k1-core 0.2.2", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7c" +dependencies = [ + "libsecp256k1-core 0.3.0", ] [[package]] @@ -4012,9 +4047,9 @@ checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" [[package]] name = "memchr" -version = "2.3.3" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" +checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" [[package]] name = "memmap2" @@ -4083,11 +4118,16 @@ dependencies = [ [[package]] name = "metered-channel" -version = "0.9.9" +version = "0.9.11" dependencies = [ + "assert_matches", "derive_more", + "env_logger 0.9.0", "futures 0.3.17", "futures-timer 3.0.2", + "log", + "thiserror", + "tracing", ] [[package]] @@ -4266,7 +4306,7 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "424f6e86263cd5294cbd7f1e95746b95aca0e0d66bff31e5a40d6baa87b4aa99" dependencies = [ - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro-error 1.0.4", "proc-macro2", "quote", @@ -4355,9 +4395,9 @@ dependencies = [ [[package]] name = "nix" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ccba0cfe4fdf15982d1674c69b1fd80bad427d293849982668dfe454bd61f2" +checksum = "fa9b4819da1bc61c0ea48b63b7bc8604064dd43013e7cc325df098d49cd7c18a" dependencies = [ "bitflags", "cc", @@ -4379,9 +4419,9 @@ checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" [[package]] name = "nom" -version = "6.2.1" +version = "6.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c5c51b9083a3c620fa67a2a635d1ce7d95b897e957d6b28ff9a5da960a103a6" +checksum = "e7413f999671bd4745a7b624bd370a569fb6bc574b23c83a3c5ed2e453f3d5e2" dependencies = [ "bitvec 0.19.5", "funty", @@ -4483,18 +4523,13 @@ dependencies = [ [[package]] name = "object" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9a7ab5d64814df0fe4a4b5ead45ed6c5f181ee3ff04ba344313a6c80446c5d4" - -[[package]] -name = "object" -version = "0.24.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5b3dd1c072ee7963717671d1ca129f1048fda25edea6b752bfc71ac8854170" +checksum = "39f37e50073ccad23b6d09bcb5b263f4e76d3bb6038e4a3c08e52162ffa8abc2" dependencies = [ "crc32fast", "indexmap", + "memchr", ] [[package]] @@ -4557,10 +4592,24 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" +[[package]] +name = "pallet-assets" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "parity-scale-codec", + "scale-info", + "sp-runtime", + "sp-std", +] + [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -4576,7 +4625,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -4591,7 +4640,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -4615,7 +4664,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4635,7 +4684,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -4649,8 +4698,8 @@ dependencies = [ [[package]] name = "pallet-beefy" -version = "0.1.0" -source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#c3a24cd3ceb9053520f7ecc48c4f5197c3344fb8" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "beefy-primitives", "frame-support", @@ -4665,15 +4714,15 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" -version = "0.1.0" -source = "git+https://github.com/paritytech/grandpa-bridge-gadget?branch=master#c3a24cd3ceb9053520f7ecc48c4f5197c3344fb8" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "beefy-merkle-tree", "beefy-primitives", "frame-support", "frame-system", "hex", - "libsecp256k1 0.6.0", + "libsecp256k1 0.7.0", "log", "pallet-beefy", "pallet-mmr", @@ -4691,14 +4740,17 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", "frame-system", + "log", "pallet-treasury", "parity-scale-codec", "scale-info", + "sp-core", + "sp-io", "sp-runtime", "sp-std", ] @@ -4773,7 +4825,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -4790,7 +4842,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -4806,7 +4858,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4830,7 +4882,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -4848,7 +4900,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -4863,7 +4915,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -4886,7 +4938,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4902,7 +4954,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -4922,7 +4974,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -4939,7 +4991,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -4956,7 +5008,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -4974,7 +5026,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -4990,7 +5042,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5007,7 +5059,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5022,7 +5074,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -5036,7 +5088,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -5053,7 +5105,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5076,7 +5128,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5091,7 +5143,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -5105,7 +5157,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5121,7 +5173,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -5142,7 +5194,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5158,7 +5210,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -5172,7 +5224,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -5195,9 +5247,9 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -5206,7 +5258,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "log", "sp-arithmetic", @@ -5215,7 +5267,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -5229,7 +5281,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5247,7 +5299,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5266,7 +5318,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-support", "frame-system", @@ -5283,7 +5335,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5300,7 +5352,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5311,7 +5363,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5328,7 +5380,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5344,7 +5396,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-benchmarking", "frame-support", @@ -5358,7 +5410,7 @@ dependencies = [ [[package]] name = "pallet-xcm" -version = "0.9.9" +version = "0.9.11" dependencies = [ "frame-support", "frame-system", @@ -5378,6 +5430,31 @@ dependencies = [ "xcm-executor", ] +[[package]] +name = "pallet-xcm-benchmarks" +version = "0.9.8" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "pallet-assets", + "pallet-balances", + "pallet-xcm", + "parity-scale-codec", + "polkadot-primitives", + "polkadot-runtime-common", + "scale-info", + "sp-core", + "sp-io", + "sp-runtime", + "sp-std", + "sp-tracing", + "xcm", + "xcm-builder", + "xcm-executor", +] + [[package]] name = "parity-db" version = "0.3.1" @@ -5399,9 +5476,9 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "2.2.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8975095a2a03bbbdc70a74ab11a4f76a6d0b84680d87c68d722531b0ac28e8a9" +checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" dependencies = [ "arrayvec 0.7.0", "bitvec 0.20.1", @@ -5413,11 +5490,11 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "2.2.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40dbbfef7f0a1143c5b06e0d76a6278e25dac0bc1af4be51a0fbb73f07e7ad09" +checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" dependencies = [ - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -5731,7 +5808,7 @@ checksum = "989d43012e2ca1c4a02507c67282691a0a3207f9dc67cec596b43fe925b3d325" [[package]] name = "polkadot" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_cmd", "color-eyre", @@ -5743,7 +5820,7 @@ dependencies = [ [[package]] name = "polkadot-approval-distribution" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "env_logger 0.9.0", @@ -5763,7 +5840,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "bitvec 0.20.1", @@ -5784,7 +5861,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "derive_more", @@ -5811,7 +5888,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "env_logger 0.9.0", @@ -5838,7 +5915,7 @@ dependencies = [ [[package]] name = "polkadot-cli" -version = "0.9.9" +version = "0.9.11" dependencies = [ "frame-benchmarking-cli", "futures 0.3.17", @@ -5857,7 +5934,7 @@ dependencies = [ [[package]] name = "polkadot-client" -version = "0.9.9" +version = "0.9.11" dependencies = [ "beefy-primitives", "frame-benchmarking", @@ -5889,7 +5966,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" -version = "0.9.9" +version = "0.9.11" dependencies = [ "always-assert", "assert_matches", @@ -5916,7 +5993,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" -version = "0.9.9" +version = "0.9.11" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -5928,7 +6005,7 @@ dependencies = [ [[package]] name = "polkadot-dispute-distribution" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "async-trait", @@ -5957,7 +6034,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" -version = "0.9.9" +version = "0.9.11" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -5970,10 +6047,13 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", + "async-trait", "futures 0.3.17", + "futures-timer 3.0.2", + "lazy_static", "polkadot-node-network-protocol", "polkadot-node-subsystem", "polkadot-node-subsystem-test-helpers", @@ -5981,17 +6061,19 @@ dependencies = [ "polkadot-primitives", "rand 0.8.4", "rand_chacha 0.3.1", + "sc-network", "sp-application-crypto", "sp-consensus-babe", "sp-core", "sp-keyring", "sp-keystore", + "sp-tracing", "tracing", ] [[package]] name = "polkadot-network-bridge" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "async-trait", @@ -6014,7 +6096,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" -version = "0.9.9" +version = "0.9.11" dependencies = [ "futures 0.3.17", "parity-scale-codec", @@ -6032,7 +6114,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "bitvec 0.20.1", @@ -6068,7 +6150,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "bitvec 0.20.1", @@ -6095,7 +6177,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "bitvec 0.20.1", @@ -6119,7 +6201,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" -version = "0.9.9" +version = "0.9.11" dependencies = [ "futures 0.3.17", "polkadot-node-subsystem", @@ -6134,7 +6216,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "async-trait", @@ -6155,7 +6237,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" -version = "0.9.9" +version = "0.9.11" dependencies = [ "futures 0.3.17", "maplit", @@ -6174,7 +6256,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-selection" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "futures 0.3.17", @@ -6195,7 +6277,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-coordinator" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "bitvec 0.20.1", @@ -6219,7 +6301,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-dispute-participation" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "futures 0.3.17", @@ -6235,7 +6317,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" -version = "0.9.9" +version = "0.9.11" dependencies = [ "async-trait", "futures 0.3.17", @@ -6251,7 +6333,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" -version = "0.9.9" +version = "0.9.11" dependencies = [ "bitvec 0.20.1", "futures 0.3.17", @@ -6268,7 +6350,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" -version = "0.9.9" +version = "0.9.11" dependencies = [ "always-assert", "assert_matches", @@ -6302,7 +6384,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" -version = "0.9.9" +version = "0.9.11" dependencies = [ "futures 0.3.17", "memory-lru", @@ -6321,7 +6403,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" -version = "0.9.9" +version = "0.9.11" dependencies = [ "async-std", "lazy_static", @@ -6338,7 +6420,7 @@ dependencies = [ [[package]] name = "polkadot-node-metrics" -version = "0.9.9" +version = "0.9.11" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -6348,7 +6430,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" -version = "0.9.9" +version = "0.9.11" dependencies = [ "async-trait", "derive_more", @@ -6365,7 +6447,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" -version = "0.9.9" +version = "0.9.11" dependencies = [ "bounded-vec", "futures 0.3.17", @@ -6387,7 +6469,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" -version = "0.9.9" +version = "0.9.11" dependencies = [ "polkadot-node-jaeger", "polkadot-node-subsystem-types", @@ -6396,7 +6478,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" -version = "0.9.9" +version = "0.9.11" dependencies = [ "async-trait", "futures 0.3.17", @@ -6414,7 +6496,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-types" -version = "0.9.9" +version = "0.9.11" dependencies = [ "derive_more", "futures 0.3.17", @@ -6432,7 +6514,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "async-trait", @@ -6462,7 +6544,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "femme", @@ -6476,7 +6558,6 @@ dependencies = [ "polkadot-node-network-protocol", "polkadot-node-primitives", "polkadot-node-subsystem-types", - "polkadot-overseer-all-subsystems-gen", "polkadot-overseer-gen", "polkadot-primitives", "sc-client-api", @@ -6485,19 +6566,9 @@ dependencies = [ "tracing", ] -[[package]] -name = "polkadot-overseer-all-subsystems-gen" -version = "0.9.9" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "trybuild", -] - [[package]] name = "polkadot-overseer-gen" -version = "0.9.9" +version = "0.9.11" dependencies = [ "async-trait", "futures 0.3.17", @@ -6514,10 +6585,10 @@ dependencies = [ [[package]] name = "polkadot-overseer-gen-proc-macro" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -6525,7 +6596,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" -version = "0.9.9" +version = "0.9.11" dependencies = [ "derive_more", "frame-support", @@ -6541,7 +6612,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" -version = "0.9.9" +version = "0.9.11" dependencies = [ "bitvec 0.20.1", "frame-system", @@ -6570,7 +6641,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" -version = "0.9.9" +version = "0.9.11" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -6600,7 +6671,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" -version = "0.9.9" +version = "0.9.11" dependencies = [ "beefy-primitives", "bitvec 0.20.1", @@ -6649,6 +6720,7 @@ dependencies = [ "parity-scale-codec", "polkadot-primitives", "polkadot-runtime-common", + "polkadot-runtime-parachains", "rustc-hex", "scale-info", "separator", @@ -6681,7 +6753,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" -version = "0.9.9" +version = "0.9.11" dependencies = [ "beefy-primitives", "bitvec 0.20.1", @@ -6692,7 +6764,7 @@ dependencies = [ "frame-system", "hex-literal", "impl-trait-for-tuples", - "libsecp256k1 0.6.0", + "libsecp256k1 0.7.0", "log", "pallet-authorship", "pallet-babe", @@ -6731,7 +6803,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" -version = "0.9.9" +version = "0.9.11" dependencies = [ "bitflags", "bitvec 0.20.1", @@ -6774,7 +6846,7 @@ dependencies = [ [[package]] name = "polkadot-service" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "async-trait", @@ -6788,6 +6860,7 @@ dependencies = [ "kvdb", "kvdb-rocksdb", "log", + "lru", "pallet-babe", "pallet-im-online", "pallet-mmr-primitives", @@ -6875,7 +6948,7 @@ dependencies = [ [[package]] name = "polkadot-simnet" -version = "0.9.9" +version = "0.9.11" dependencies = [ "frame-benchmarking", "frame-support", @@ -6907,14 +6980,14 @@ dependencies = [ [[package]] name = "polkadot-simnet-node" -version = "0.9.9" +version = "0.9.11" dependencies = [ "polkadot-simnet", ] [[package]] name = "polkadot-simnet-test" -version = "0.9.9" +version = "0.9.11" dependencies = [ "frame-system", "pallet-balances", @@ -6928,7 +7001,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" -version = "0.9.9" +version = "0.9.11" dependencies = [ "arrayvec 0.5.2", "assert_matches", @@ -6957,7 +7030,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" -version = "0.9.9" +version = "0.9.11" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -6966,7 +7039,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" -version = "0.9.9" +version = "0.9.11" dependencies = [ "futures 0.3.17", "parity-scale-codec", @@ -6992,34 +7065,26 @@ dependencies = [ [[package]] name = "polkadot-test-malus" -version = "0.9.9" +version = "0.9.11" dependencies = [ "assert_matches", "async-trait", "color-eyre", "futures 0.3.17", - "futures-timer 3.0.2", "parity-util-mem", "polkadot-cli", - "polkadot-node-core-backing", "polkadot-node-core-candidate-validation", - "polkadot-node-core-dispute-coordinator", "polkadot-node-core-pvf", - "polkadot-node-primitives", "polkadot-node-subsystem", "polkadot-node-subsystem-test-helpers", - "polkadot-node-subsystem-types", "polkadot-node-subsystem-util", - "polkadot-primitives", "sp-core", - "sp-keystore", "structopt", - "tracing", ] [[package]] name = "polkadot-test-runtime" -version = "0.9.9" +version = "0.9.11" dependencies = [ "beefy-primitives", "bitvec 0.20.1", @@ -7084,7 +7149,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" -version = "0.9.9" +version = "0.9.11" dependencies = [ "frame-benchmarking", "frame-system", @@ -7253,9 +7318,9 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fdbd1df62156fbc5945f4762632564d7d038153091c3fcf1067f6aef7cff92" +checksum = "1ebace6889caf889b4d3f76becee12e90353f2b8c7d875534a71e5742f8f6f83" dependencies = [ "thiserror", "toml", @@ -7705,7 +7770,7 @@ dependencies = [ [[package]] name = "remote-ext-tests-bags-list" -version = "0.9.9" +version = "0.9.11" dependencies = [ "frame-election-provider-support", "frame-support", @@ -7728,7 +7793,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "env_logger 0.9.0", "jsonrpsee-proc-macros", @@ -7805,7 +7870,7 @@ dependencies = [ [[package]] name = "rococo-runtime" -version = "0.9.9" +version = "0.9.11" dependencies = [ "beefy-primitives", "bp-messages", @@ -7813,10 +7878,12 @@ dependencies = [ "bp-runtime", "bp-wococo", "bridge-runtime-common", + "frame-benchmarking", "frame-executive", "frame-support", "frame-system", "frame-system-rpc-runtime-api", + "hex-literal", "log", "pallet-authority-discovery", "pallet-authorship", @@ -7834,6 +7901,7 @@ dependencies = [ "pallet-membership", "pallet-mmr", "pallet-mmr-primitives", + "pallet-multisig", "pallet-offences", "pallet-proxy", "pallet-session", @@ -7988,7 +8056,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "log", "sp-core", @@ -7999,7 +8067,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "derive_more", @@ -8026,7 +8094,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8049,7 +8117,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8065,7 +8133,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -8081,9 +8149,9 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -8092,7 +8160,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "chrono", "fdlimit", @@ -8130,7 +8198,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "fnv", "futures 0.3.17", @@ -8158,7 +8226,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "hash-db", "kvdb", @@ -8183,7 +8251,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "futures 0.3.17", @@ -8207,7 +8275,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "derive_more", @@ -8250,7 +8318,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "derive_more", "futures 0.3.17", @@ -8274,7 +8342,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8287,7 +8355,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "assert_matches", "async-trait", @@ -8321,7 +8389,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "futures 0.3.17", @@ -8347,7 +8415,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "sc-client-api", "sp-authorship", @@ -8358,7 +8426,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "lazy_static", "libsecp256k1 0.6.0", @@ -8384,7 +8452,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "derive_more", "environmental", @@ -8402,7 +8470,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "log", "parity-scale-codec", @@ -8418,7 +8486,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "cfg-if 1.0.0", "libc", @@ -8427,7 +8495,6 @@ dependencies = [ "parity-wasm 0.42.2", "sc-allocator", "sc-executor-common", - "scoped-tls", "sp-core", "sp-runtime-interface", "sp-wasm-interface", @@ -8437,7 +8504,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "derive_more", @@ -8474,7 +8541,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "derive_more", "finality-grandpa", @@ -8498,7 +8565,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "ansi_term 0.12.1", "futures 0.3.17", @@ -8515,7 +8582,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "derive_more", @@ -8530,7 +8597,7 @@ dependencies = [ [[package]] name = "sc-light" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "hash-db", "parity-scale-codec", @@ -8548,7 +8615,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-std", "async-trait", @@ -8599,7 +8666,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8615,7 +8682,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "bytes 1.0.1", "fnv", @@ -8642,7 +8709,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "futures 0.3.17", "libp2p", @@ -8655,7 +8722,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8664,7 +8731,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "futures 0.3.17", "hash-db", @@ -8695,7 +8762,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8720,7 +8787,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "futures 0.3.17", "jsonrpc-core", @@ -8737,7 +8804,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "directories", @@ -8802,7 +8869,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "log", "parity-scale-codec", @@ -8816,7 +8883,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8838,7 +8905,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "chrono", "futures 0.3.17", @@ -8856,7 +8923,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8885,9 +8952,9 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -8896,7 +8963,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "futures 0.3.17", "intervalier", @@ -8923,7 +8990,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "derive_more", "futures 0.3.17", @@ -8937,7 +9004,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -8965,7 +9032,7 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baeb2780690380592f86205aa4ee49815feb2acad8c2f59e6dd207148c3f1fcd" dependencies = [ - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -9011,6 +9078,26 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +[[package]] +name = "scroll" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fda28d4b4830b807a8b43f7b0e6b5df875311b3e7621d84577188c175b6ec1ec" +dependencies = [ + "scroll_derive", +] + +[[package]] +name = "scroll_derive" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aaaae8f38bb311444cfb7f1979af0bc9240d95795f75f9ceddf6a59b79ceffa0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "sct" version = "0.6.0" @@ -9265,7 +9352,7 @@ dependencies = [ [[package]] name = "slot-range-helper" -version = "0.9.9" +version = "0.9.11" dependencies = [ "enumn", "parity-scale-codec", @@ -9285,9 +9372,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" +checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309" [[package]] name = "snap" @@ -9369,7 +9456,7 @@ dependencies = [ [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "hash-db", "log", @@ -9386,10 +9473,10 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "blake2-rfc", - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -9398,7 +9485,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "parity-scale-codec", "scale-info", @@ -9411,7 +9498,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "integer-sqrt", "num-traits", @@ -9426,7 +9513,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "parity-scale-codec", "scale-info", @@ -9439,7 +9526,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "parity-scale-codec", @@ -9451,7 +9538,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "parity-scale-codec", "sp-api", @@ -9463,7 +9550,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "futures 0.3.17", "log", @@ -9481,7 +9568,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "futures 0.3.17", @@ -9500,7 +9587,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "merlin", @@ -9523,7 +9610,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "parity-scale-codec", "scale-info", @@ -9534,7 +9621,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9546,7 +9633,7 @@ dependencies = [ [[package]] name = "sp-core" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "base58", "blake2-rfc", @@ -9591,7 +9678,7 @@ dependencies = [ [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "kvdb", "parking_lot 0.11.1", @@ -9600,7 +9687,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "proc-macro2", "quote", @@ -9610,7 +9697,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "environmental", "parity-scale-codec", @@ -9621,7 +9708,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "finality-grandpa", "log", @@ -9639,7 +9726,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9653,7 +9740,7 @@ dependencies = [ [[package]] name = "sp-io" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "futures 0.3.17", "hash-db", @@ -9664,7 +9751,6 @@ dependencies = [ "sp-core", "sp-externalities", "sp-keystore", - "sp-maybe-compressed-blob", "sp-runtime-interface", "sp-state-machine", "sp-std", @@ -9678,7 +9764,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "lazy_static", "sp-core", @@ -9689,7 +9775,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "derive_more", @@ -9706,7 +9792,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "zstd", ] @@ -9714,7 +9800,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "parity-scale-codec", "scale-info", @@ -9729,9 +9815,9 @@ dependencies = [ [[package]] name = "sp-npos-elections-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -9740,7 +9826,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "sp-api", "sp-core", @@ -9750,7 +9836,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "backtrace", ] @@ -9758,7 +9844,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "rustc-hash", "serde", @@ -9768,7 +9854,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "either", "hash256-std-hasher", @@ -9790,7 +9876,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9807,10 +9893,10 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "Inflector", - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -9819,7 +9905,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "serde", "serde_json", @@ -9828,7 +9914,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "parity-scale-codec", "scale-info", @@ -9842,7 +9928,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "parity-scale-codec", "scale-info", @@ -9853,7 +9939,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "hash-db", "log", @@ -9876,12 +9962,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" [[package]] name = "sp-storage" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9894,7 +9980,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "log", "sp-core", @@ -9907,7 +9993,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9923,7 +10009,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "erased-serde", "log", @@ -9941,7 +10027,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "sp-api", "sp-runtime", @@ -9950,7 +10036,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "log", @@ -9966,7 +10052,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "hash-db", "memory-db", @@ -9981,7 +10067,7 @@ dependencies = [ [[package]] name = "sp-version" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9997,7 +10083,7 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "parity-scale-codec", "proc-macro2", @@ -10008,7 +10094,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10030,7 +10116,7 @@ checksum = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" [[package]] name = "staking-miner" -version = "0.9.9" +version = "0.9.11" dependencies = [ "env_logger 0.9.0", "frame-election-provider-support", @@ -10204,7 +10290,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "platforms", ] @@ -10212,7 +10298,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.17", @@ -10234,7 +10320,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-std", "derive_more", @@ -10248,7 +10334,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "async-trait", "futures 0.3.17", @@ -10275,7 +10361,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "4.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "futures 0.3.17", "substrate-test-utils-derive", @@ -10285,9 +10371,9 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", @@ -10296,7 +10382,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "ansi_term 0.12.1", "build-helper", @@ -10322,9 +10408,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.76" +version = "1.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6f107db402c2c2055242dbf4d2af0e69197202e9faacbef9571bbe47f5a1b84" +checksum = "5239bc68e0fef57495900cfea4e8dc75596d9a319d7e16b1e0a440d24e6fe0a0" dependencies = [ "proc-macro2", "quote", @@ -10391,7 +10477,7 @@ dependencies = [ [[package]] name = "test-parachain-adder" -version = "0.9.9" +version = "0.9.11" dependencies = [ "dlmalloc", "parity-scale-codec", @@ -10404,7 +10490,7 @@ dependencies = [ [[package]] name = "test-parachain-adder-collator" -version = "0.9.9" +version = "0.9.11" dependencies = [ "futures 0.3.17", "futures-timer 3.0.2", @@ -10430,14 +10516,14 @@ dependencies = [ [[package]] name = "test-parachain-halt" -version = "0.9.9" +version = "0.9.11" dependencies = [ "substrate-wasm-builder", ] [[package]] name = "test-parachains" -version = "0.9.9" +version = "0.9.11" dependencies = [ "parity-scale-codec", "sp-core", @@ -10449,7 +10535,7 @@ dependencies = [ [[package]] name = "test-runner" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ "frame-system", "futures 0.3.17", @@ -10502,18 +10588,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.26" +version = "1.0.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93119e4feac1cbe6c798c34d3a53ea0026b0b1de6a120deef895137c0529bfe2" +checksum = "602eca064b2d83369e2b2f34b09c70b605402801927c65c11071ac911d299b88" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.26" +version = "1.0.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "060d69a0afe7796bf42e9e2ff91f5ee691fb15c53d38b4b62a9a53eb23164745" +checksum = "bad553cc2c78e8de258400763a647e80e6d1b31ee237275d756f6836d204494c" dependencies = [ "proc-macro2", "quote", @@ -10643,9 +10729,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4efe6fc2395938c8155973d7be49fe8d03a843726e285e100a8a383cc0154ce" +checksum = "c2c2416fdedca8443ae44b4527de1ea633af61d8f7169ffa6e72c5b53d24efcc" dependencies = [ "autocfg", "bytes 1.0.1", @@ -10725,11 +10811,12 @@ checksum = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860" [[package]] name = "tracing" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ba9ab62b7d6497a8638dfda5e5c4fb3b2d5a7fca4118f2b96151c8ef1a437e" +checksum = "84f96e095c0c82419687c20ddf5cb3eadb61f4e1405923c9dc8e53a1adacbda8" dependencies = [ "cfg-if 1.0.0", + "log", "pin-project-lite 0.2.4", "tracing-attributes", "tracing-core", @@ -10888,8 +10975,9 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/paritytech/substrate?branch=master#e30db04a7ec3b259e66d7b0334e42e538ed69b96" +source = "git+https://github.com/paritytech/substrate?branch=master#e6b015062e60cc713ed5b0158d8c540c231852dc" dependencies = [ + "jsonrpsee-ws-client", "log", "parity-scale-codec", "remote-externalities", @@ -10899,9 +10987,12 @@ dependencies = [ "sc-service", "serde", "sp-core", + "sp-externalities", + "sp-io", "sp-keystore", "sp-runtime", "sp-state-machine", + "sp-version", "structopt", ] @@ -11275,15 +11366,15 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.78.2" +version = "0.79.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52144d4c78e5cf8b055ceab8e5fa22814ce4315d6002ad32cfd914f37c12fd65" +checksum = "5b5894be15a559c85779254700e1d35f02f843b5a69152e5c82c626d9fd66c0e" [[package]] name = "wasmtime" -version = "0.27.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b310b9d20fcf59385761d1ade7a3ef06aecc380e3d3172035b919eaf7465d9f7" +checksum = "8bbb8a082a8ef50f7eeb8b82dda9709ef1e68963ea3c94e45581644dd4041835" dependencies = [ "anyhow", "backtrace", @@ -11312,9 +11403,9 @@ dependencies = [ [[package]] name = "wasmtime-cache" -version = "0.27.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d14d500d5c3dc5f5c097158feee123d64b3097f0d836a2a27dff9c761c73c843" +checksum = "d73391579ca7f24573138ef768b73b2aed5f9d542385c64979b65d60d0912399" dependencies = [ "anyhow", "base64 0.13.0", @@ -11333,9 +11424,9 @@ dependencies = [ [[package]] name = "wasmtime-cranelift" -version = "0.27.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c525b39f062eada7db3c1298287b96dcb6e472b9f6b22501300b28d9fa7582f6" +checksum = "81c6f5ae9205382345c7cd7454932a906186836999a2161c385e38a15f52e1fe" dependencies = [ "cranelift-codegen", "cranelift-entity", @@ -11348,14 +11439,14 @@ dependencies = [ [[package]] name = "wasmtime-debug" -version = "0.27.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5d2a763e7a6fc734218e0e463196762a4f409c483063d81e0e85f96343b2e0a" +checksum = "c69e08f55e12f15f50b1b533bc3626723e7224254a065de6576934c86258c9e8" dependencies = [ "anyhow", - "gimli 0.24.0", + "gimli", "more-asserts", - "object 0.24.0", + "object", "target-lexicon", "thiserror", "wasmparser", @@ -11364,15 +11455,15 @@ dependencies = [ [[package]] name = "wasmtime-environ" -version = "0.27.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f64d0c2d881c31b0d65c1f2695e022d71eb60b9fbdd336aacca28208b58eac90" +checksum = "005d93174040af37fb8625f891cd9827afdad314261f7ec4ee61ec497d6e9d3c" dependencies = [ "cfg-if 1.0.0", "cranelift-codegen", "cranelift-entity", "cranelift-wasm", - "gimli 0.24.0", + "gimli", "indexmap", "log", "more-asserts", @@ -11383,11 +11474,11 @@ dependencies = [ [[package]] name = "wasmtime-jit" -version = "0.27.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4539ea734422b7c868107e2187d7746d8affbcaa71916d72639f53757ad707" +checksum = "d0bf1dfb213a35d8f21aefae40e597fe72778a907011ffdff7affb029a02af9a" dependencies = [ - "addr2line 0.15.1", + "addr2line", "anyhow", "cfg-if 1.0.0", "cranelift-codegen", @@ -11395,10 +11486,10 @@ dependencies = [ "cranelift-frontend", "cranelift-native", "cranelift-wasm", - "gimli 0.24.0", + "gimli", "log", "more-asserts", - "object 0.24.0", + "object", "rayon", "region", "serde", @@ -11416,13 +11507,13 @@ dependencies = [ [[package]] name = "wasmtime-obj" -version = "0.27.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1a8ff85246d091828e2225af521a6208ed28c997bb5c39eb697366dc2e2f2b" +checksum = "d231491878e710c68015228c9f9fc5955fe5c96dbf1485c15f7bed55b622c83c" dependencies = [ "anyhow", "more-asserts", - "object 0.24.0", + "object", "target-lexicon", "wasmtime-debug", "wasmtime-environ", @@ -11430,14 +11521,17 @@ dependencies = [ [[package]] name = "wasmtime-profiling" -version = "0.27.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e24364d522dcd67c897c8fffc42e5bdfc57207bbb6d7eeade0da9d4a7d70105b" +checksum = "21486cfb5255c2069666c1f116f9e949d4e35c9a494f11112fa407879e42198d" dependencies = [ "anyhow", "cfg-if 1.0.0", + "gimli", "lazy_static", "libc", + "object", + "scroll", "serde", "target-lexicon", "wasmtime-environ", @@ -11446,9 +11540,9 @@ dependencies = [ [[package]] name = "wasmtime-runtime" -version = "0.27.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c51e57976e8a19a18a18e002c6eb12e5769554204238e47ff155fda1809ef0f7" +checksum = "d7ddfdf32e0a20d81f48be9dacd31612bc61de5a174d1356fef806d300f507de" dependencies = [ "anyhow", "backtrace", @@ -11508,7 +11602,7 @@ dependencies = [ [[package]] name = "westend-runtime" -version = "0.9.9" +version = "0.9.11" dependencies = [ "beefy-primitives", "bitvec 0.20.1", @@ -11557,6 +11651,7 @@ dependencies = [ "pallet-utility", "pallet-vesting", "pallet-xcm", + "pallet-xcm-benchmarks", "parity-scale-codec", "polkadot-parachain", "polkadot-primitives", @@ -11689,7 +11784,7 @@ dependencies = [ [[package]] name = "xcm" -version = "0.9.9" +version = "0.9.11" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -11701,7 +11796,7 @@ dependencies = [ [[package]] name = "xcm-builder" -version = "0.9.9" +version = "0.9.11" dependencies = [ "frame-support", "frame-system", @@ -11724,8 +11819,9 @@ dependencies = [ [[package]] name = "xcm-executor" -version = "0.9.9" +version = "0.9.11" dependencies = [ + "frame-benchmarking", "frame-support", "impl-trait-for-tuples", "log", @@ -11740,7 +11836,7 @@ dependencies = [ [[package]] name = "xcm-executor-integration-tests" -version = "0.9.9" +version = "0.9.11" dependencies = [ "frame-support", "frame-system", @@ -11769,7 +11865,7 @@ dependencies = [ [[package]] name = "xcm-simulator" -version = "0.9.9" +version = "0.9.11" dependencies = [ "frame-support", "parity-scale-codec", @@ -11785,7 +11881,7 @@ dependencies = [ [[package]] name = "xcm-simulator-example" -version = "0.9.9" +version = "0.9.11" dependencies = [ "frame-support", "frame-system", @@ -11843,18 +11939,18 @@ dependencies = [ [[package]] name = "zstd" -version = "0.6.1+zstd.1.4.9" +version = "0.9.0+zstd.1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de55e77f798f205d8561b8fe2ef57abfb6e0ff2abe7fd3c089e119cdb5631a3" +checksum = "07749a5dc2cb6b36661290245e350f15ec3bbb304e493db54a1d354480522ccd" dependencies = [ "zstd-safe", ] [[package]] name = "zstd-safe" -version = "3.0.1+zstd.1.4.9" +version = "4.1.1+zstd.1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1387cabcd938127b30ce78c4bf00b30387dddf704e3f0881dbc4ff62b5566f8c" +checksum = "c91c90f2c593b003603e5e0493c837088df4469da25aafff8bce42ba48caf079" dependencies = [ "libc", "zstd-sys", @@ -11862,9 +11958,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "1.4.20+zstd.1.4.9" +version = "1.6.1+zstd.1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebd5b733d7cf2d9447e2c3e76a5589b4f5e5ae065c22a2bc0b023cbc331b6c8e" +checksum = "615120c7a2431d16cf1cf979e7fc31ba7a5b5e5707b29c8a99e5dbf8a8392a33" dependencies = [ "cc", "libc", diff --git a/Cargo.toml b/Cargo.toml index 5ea0f98eef6d..114d7ab2e986 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,7 @@ path = "src/main.rs" name = "polkadot" description = "Implementation of a https://polkadot.network node in Rust based on the Substrate framework." license = "GPL-3.0-only" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" readme = "README.md" @@ -18,7 +18,7 @@ parity-util-mem = { version = "*", default-features = false, features = ["jemall [dev-dependencies] assert_cmd = "1.0.2" -nix = "0.19.1" +nix = "0.20.0" tempfile = "3.2.0" [workspace] @@ -43,6 +43,7 @@ members = [ "xcm/xcm-simulator", "xcm/xcm-simulator/example", "xcm/pallet-xcm", + "xcm/pallet-xcm-benchmarks", "xcm/procedural", "node/client", "node/collation-generation", @@ -72,7 +73,6 @@ members = [ "node/overseer", "node/overseer/overseer-gen", "node/overseer/overseer-gen/proc-macro", - "node/overseer/all-subsystems-gen", "node/malus", "node/primitives", "node/service", diff --git a/README.md b/README.md index 034a23a59e62..5ea7ac433562 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Implementation of a node in Rust based on the Substra This repo contains runtimes for the Polkadot, Kusama, and Westend networks. The README provides information about installing the `polkadot` binary and developing on the codebase. For more specific guides, like how to be a validator, see the -[Polkadot Wiki](https://wiki.polkadot.network/docs/en/). +[Polkadot Wiki](https://wiki.polkadot.network/docs/getting-started). ## Installation @@ -170,7 +170,7 @@ If you want to do anything on Polkadot, Kusama, or Westend, then you'll need to some DOT, KSM, or WND tokens, respectively. See the [claims instructions](https://claims.polkadot.network/) for Polkadot if you have DOTs to claim. For Westend's WND tokens, see the faucet -[instructions](https://wiki.polkadot.network/docs/en/learn-DOT#getting-westies) on the Wiki. +[instructions](https://wiki.polkadot.network/docs/learn-DOT#getting-westies) on the Wiki. ## Hacking on Polkadot diff --git a/bridges/.config/lingua.dic b/bridges/.config/lingua.dic index bfdb7a08e015..ee369c0f1095 100644 --- a/bridges/.config/lingua.dic +++ b/bridges/.config/lingua.dic @@ -65,6 +65,7 @@ isn io js keccak256/M +keypair/MS KSM/S Lane1 Lane2 @@ -101,6 +102,7 @@ parablock/MS parachain/MS parameterize/D pallet_message_lane +plancks polkadot/MS pov-block/MS PoA diff --git a/bridges/bin/rialto/runtime/src/lib.rs b/bridges/bin/rialto/runtime/src/lib.rs index bc7a4d8f7073..e0a1e176c3ae 100644 --- a/bridges/bin/rialto/runtime/src/lib.rs +++ b/bridges/bin/rialto/runtime/src/lib.rs @@ -353,6 +353,7 @@ impl pallet_grandpa::Config for Runtime { type HandleEquivocation = (); // TODO: update me (https://github.com/paritytech/parity-bridges-common/issues/78) type WeightInfo = (); + type MaxAuthorities = MaxAuthorities; } parameter_types! { diff --git a/bridges/relays/bin-substrate/Cargo.toml b/bridges/relays/bin-substrate/Cargo.toml index 830f592ec4e1..99f56cc3be48 100644 --- a/bridges/relays/bin-substrate/Cargo.toml +++ b/bridges/relays/bin-substrate/Cargo.toml @@ -32,7 +32,7 @@ bp-wococo = { path = "../../primitives/chain-wococo" } bp-runtime = { path = "../../primitives/runtime" } bp-westend = { path = "../../primitives/chain-westend" } bridge-runtime-common = { path = "../../bin/runtime-common" } -finality-grandpa = { version = "0.14.1", } +finality-grandpa = "0.14.1" finality-relay = { path = "../finality" } headers-relay = { path = "../headers" } messages-relay = { path = "../messages" } diff --git a/bridges/relays/bin-substrate/src/cli/derive_account.rs b/bridges/relays/bin-substrate/src/cli/derive_account.rs index dff62c21f6fe..c7ac8761f133 100644 --- a/bridges/relays/bin-substrate/src/cli/derive_account.rs +++ b/bridges/relays/bin-substrate/src/cli/derive_account.rs @@ -27,7 +27,7 @@ use structopt::StructOpt; /// since messages sent over the bridge will be able to spend these. #[derive(StructOpt)] pub struct DeriveAccount { - /// A bridge instance to initalize. + /// A bridge instance to initialize. #[structopt(possible_values = &FullBridge::variants(), case_insensitive = true)] bridge: FullBridge, /// Source-chain address to derive Target-chain address from. diff --git a/bridges/relays/bin-substrate/src/cli/encode_message.rs b/bridges/relays/bin-substrate/src/cli/encode_message.rs index 213c8377678f..79b7b9a42cd3 100644 --- a/bridges/relays/bin-substrate/src/cli/encode_message.rs +++ b/bridges/relays/bin-substrate/src/cli/encode_message.rs @@ -40,7 +40,7 @@ pub enum MessagePayload { /// A `MessagePayload` to encode. #[derive(StructOpt)] pub struct EncodeMessage { - /// A bridge instance to initalize. + /// A bridge instance to initialize. #[structopt(possible_values = &FullBridge::variants(), case_insensitive = true)] bridge: FullBridge, #[structopt(flatten)] diff --git a/bridges/relays/bin-substrate/src/cli/init_bridge.rs b/bridges/relays/bin-substrate/src/cli/init_bridge.rs index 20e6daa500e5..25f220d7f6ce 100644 --- a/bridges/relays/bin-substrate/src/cli/init_bridge.rs +++ b/bridges/relays/bin-substrate/src/cli/init_bridge.rs @@ -25,7 +25,7 @@ use structopt::{clap::arg_enum, StructOpt}; /// Initialize bridge pallet. #[derive(StructOpt)] pub struct InitBridge { - /// A bridge instance to initalize. + /// A bridge instance to initialize. #[structopt(possible_values = &InitBridgeName::variants(), case_insensitive = true)] bridge: InitBridgeName, #[structopt(flatten)] diff --git a/bridges/relays/bin-substrate/src/cli/mod.rs b/bridges/relays/bin-substrate/src/cli/mod.rs index 49bc5dc8c837..042ae320d502 100644 --- a/bridges/relays/bin-substrate/src/cli/mod.rs +++ b/bridges/relays/bin-substrate/src/cli/mod.rs @@ -72,7 +72,7 @@ pub enum Command { /// The message is being sent to the source chain, delivered to the target chain and dispatched /// there. SendMessage(send_message::SendMessage), - /// Generate SCALE-encoded `Call` for choosen network. + /// Generate SCALE-encoded `Call` for the chosen network. /// /// The call can be used either as message payload or can be wrapped into a transaction /// and executed on the chain directly. @@ -235,7 +235,7 @@ pub trait CliChain: relay_substrate_client::Chain { /// Bridge Message Payload type. /// - /// TODO [#854] This should be removed in favour of target-specifc types. + /// TODO [#854] This should be removed in favor of target-specifc types. type MessagePayload; /// Numeric value of SS58 format. @@ -354,7 +354,7 @@ where } /// Create chain-specific set of configuration objects: connection parameters, -/// signing parameters and bridge initialisation parameters. +/// signing parameters and bridge initialization parameters. #[macro_export] macro_rules! declare_chain_options { ($chain:ident, $chain_prefix:ident) => { @@ -385,7 +385,7 @@ macro_rules! declare_chain_options { } impl [<$chain SigningParams>] { - /// Parse signing params into chain-specific KeyPair. + /// Parse signing params into chain-specific `KeyPair`. pub fn to_keypair(&self) -> anyhow::Result { use sp_core::crypto::Pair; diff --git a/bridges/relays/bin-substrate/src/messages_lane.rs b/bridges/relays/bin-substrate/src/messages_lane.rs index 7efea545f9a6..458b08f6014f 100644 --- a/bridges/relays/bin-substrate/src/messages_lane.rs +++ b/bridges/relays/bin-substrate/src/messages_lane.rs @@ -59,7 +59,7 @@ pub trait SubstrateMessageLane: MessageLane { const INBOUND_LANE_LATEST_RECEIVED_NONCE_METHOD: &'static str; /// Name of the runtime method that returns latest confirmed (reward-paid) nonce at the target chain. const INBOUND_LANE_LATEST_CONFIRMED_NONCE_METHOD: &'static str; - /// Numebr of the runtime method that returns state of "unrewarded relayers" set at the target chain. + /// Number of the runtime method that returns state of "unrewarded relayers" set at the target chain. const INBOUND_LANE_UNREWARDED_RELAYERS_STATE: &'static str; /// Name of the runtime method that returns id of best finalized source header at target chain. diff --git a/bridges/relays/bin-substrate/src/on_demand_headers.rs b/bridges/relays/bin-substrate/src/on_demand_headers.rs index 58ef268a29f7..4a2b04328b86 100644 --- a/bridges/relays/bin-substrate/src/on_demand_headers.rs +++ b/bridges/relays/bin-substrate/src/on_demand_headers.rs @@ -248,7 +248,7 @@ async fn background_task( } } -/// Returns `Some()` with inclusive range of headers which must be scanned for manadatory headers +/// Returns `Some()` with inclusive range of headers which must be scanned for mandatory headers /// and the first of such headers must be submitted to the target node. async fn mandatory_headers_scan_range( best_finalized_source_header_at_source: Option, diff --git a/bridges/relays/client-substrate/src/chain.rs b/bridges/relays/client-substrate/src/chain.rs index 4cc8a0394d9a..886b1bde1ce6 100644 --- a/bridges/relays/client-substrate/src/chain.rs +++ b/bridges/relays/client-substrate/src/chain.rs @@ -56,7 +56,7 @@ pub trait Chain: ChainBase + Clone { type Call: Dispatchable + Debug; /// Balance of an account in native tokens. /// - /// The chain may suport multiple tokens, but this particular type is for token that is used + /// The chain may support multiple tokens, but this particular type is for token that is used /// to pay for transaction dispatch, to reward different relayers (headers, messages), etc. type Balance: Parameter + Member + DeserializeOwned + Clone + Copy + CheckedSub + PartialOrd + SaturatingAdd + Zero; } diff --git a/bridges/relays/client-substrate/src/client.rs b/bridges/relays/client-substrate/src/client.rs index f0b7158ecbe3..e4f503b91752 100644 --- a/bridges/relays/client-substrate/src/client.rs +++ b/bridges/relays/client-substrate/src/client.rs @@ -79,7 +79,7 @@ impl std::fmt::Debug for Client { impl Client { /// Returns client that is able to call RPCs on Substrate node over websocket connection. /// - /// This function will keep connecting to given Sustrate node until connection is established + /// This function will keep connecting to given Substrate node until connection is established /// and is functional. If attempt fail, it will wait for `RECONNECT_DELAY` and retry again. pub async fn new(params: ConnectionParams) -> Self { loop { @@ -224,7 +224,7 @@ impl Client { /// Get the nonce of the given Substrate account. /// - /// Note: It's the caller's responsibility to make sure `account` is a valid ss58 address. + /// Note: It's the caller's responsibility to make sure `account` is a valid SS58 address. pub async fn next_account_index(&self, account: C::AccountId) -> Result { Ok(Substrate::::system_account_next_index(&*self.client, account).await?) } diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 371c8b285dde..d52b547a9b3f 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-cli" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] description = "Polkadot Relay-chain Client Node" edition = "2018" diff --git a/cli/src/lib.rs b/cli/src/lib.rs index b7b45ed66a56..c07722d97540 100644 --- a/cli/src/lib.rs +++ b/cli/src/lib.rs @@ -29,7 +29,7 @@ pub use service::RuntimeApiCollection; pub use service::{self, Block, CoreApi, IdentifyVariant, ProvideRuntimeApi, TFullClient}; #[cfg(feature = "malus")] -pub use service::create_default_subsystems; +pub use service::overseer::prepared_overseer_builder; #[cfg(feature = "cli")] pub use cli::*; diff --git a/core-primitives/Cargo.toml b/core-primitives/Cargo.toml index 9b469657bde1..e3c1a5e8d478 100644 --- a/core-primitives/Cargo.toml +++ b/core-primitives/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-core-primitives" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" @@ -9,7 +9,7 @@ sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } scale-info = { version = "1.0", default-features = false, features = ["derive"] } -parity-scale-codec = { version = "2.0.0", default-features = false, features = [ "derive" ] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = [ "derive" ] } parity-util-mem = { version = "0.10.0", default-features = false, optional = true } [features] diff --git a/doc/docker.md b/doc/docker.md index b5cafd7ef420..0ffe6ef09aea 100644 --- a/doc/docker.md +++ b/doc/docker.md @@ -4,9 +4,9 @@ The easiest/faster option to run Polkadot in Docker is to use the latest release images. These are small images that use the latest official release of the Polkadot binary, pulled from our package repository. -**_Following examples are running on westend chain and without SSL. They can be used to quick start and learn how Polkadot needs to be configured. Please find out how to secure your node, if you want to operate it on the internet. Do not expose rpc and ws ports, if they are not correctly configured._** +**_Following examples are running on westend chain and without SSL. They can be used to quick start and learn how Polkadot needs to be configured. Please find out how to secure your node, if you want to operate it on the internet. Do not expose RPC and WS ports, if they are not correctly configured._** -Let´s first check the version we have. The first time you run this command, the Polkadot docker image will be downloaded. This takes a bit of time and bandwidth, be patient: +Let's first check the version we have. The first time you run this command, the Polkadot docker image will be downloaded. This takes a bit of time and bandwidth, be patient: ```bash docker run --rm -it parity/polkadot:latest --version @@ -65,7 +65,7 @@ services: ] ``` -With following docker-compose.yml you can set up a node and use polkadot-js-apps as the front end on port 80. After starting the node use a browser and enter your Docker host ip in the url field: __ +With following docker-compose.yml you can set up a node and use polkadot-js-apps as the front end on port 80. After starting the node use a browser and enter your Docker host IP in the URL field: __ ```bash version: '2' @@ -118,7 +118,7 @@ To get up and running with the smallest footprint on your system, you may use th You can build it yourself (it takes a while...) in the shell session of the daemon: ```bash -cd docker +cd scripts/docker/polkadot ./build.sh ``` diff --git a/doc/testing.md b/doc/testing.md index 8230ea352c0f..6709d1b9bdeb 100644 --- a/doc/testing.md +++ b/doc/testing.md @@ -185,6 +185,7 @@ struct BehaveMaleficient; impl OverseerGen for BehaveMaleficient { fn generate<'a, Spawner, RuntimeClient>( &self, + connector: OverseerConnector, args: OverseerGenArgs<'a, Spawner, RuntimeClient>, ) -> Result<(Overseer>, OverseerHandler), Error> where @@ -213,7 +214,7 @@ impl OverseerGen for BehaveMaleficient { ), ); - Overseer::new(leaves, all_subsystems, registry, runtime_client, spawner) + Overseer::new(leaves, all_subsystems, registry, runtime_client, spawner, connector) .map_err(|e| e.into()) // A builder pattern will simplify this further diff --git a/erasure-coding/Cargo.toml b/erasure-coding/Cargo.toml index f2d9475cc5d1..2cf311f022eb 100644 --- a/erasure-coding/Cargo.toml +++ b/erasure-coding/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-erasure-coding" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" @@ -8,7 +8,7 @@ edition = "2018" polkadot-primitives = { path = "../primitives" } polkadot-node-primitives = { package = "polkadot-node-primitives", path = "../node/primitives" } novelpoly = { package = "reed-solomon-novelpoly", version = "1.0.0" } -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["std", "derive"] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = ["std", "derive"] } sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } trie = { package = "sp-trie", git = "https://github.com/paritytech/substrate", branch = "master" } thiserror = "1.0.26" diff --git a/erasure-coding/fuzzer/Cargo.toml b/erasure-coding/fuzzer/Cargo.toml index f1bc4fb047ab..cf2e512e861e 100644 --- a/erasure-coding/fuzzer/Cargo.toml +++ b/erasure-coding/fuzzer/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "erasure_coding_fuzzer" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/client/Cargo.toml b/node/client/Cargo.toml index 63dd404ffcde..077429838c38 100644 --- a/node/client/Cargo.toml +++ b/node/client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-client" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" @@ -29,7 +29,7 @@ sc-service = { git = "https://github.com/paritytech/substrate", branch = "master pallet-mmr-primitives = { git = "https://github.com/paritytech/substrate", branch = "master" } -beefy-primitives = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master" } +beefy-primitives = { git = "https://github.com/paritytech/substrate", branch = "master" } # Polkadot Runtimes polkadot-runtime = { path = "../../runtime/polkadot", optional = true } diff --git a/node/collation-generation/Cargo.toml b/node/collation-generation/Cargo.toml index 70d466ebd553..9ff9621fcbf8 100644 --- a/node/collation-generation/Cargo.toml +++ b/node/collation-generation/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "polkadot-node-collation-generation" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" [dependencies] futures = "0.3.17" -tracing = "0.1.27" +tracing = "0.1.28" polkadot-erasure-coding = { path = "../../erasure-coding" } polkadot-node-primitives = { path = "../primitives" } polkadot-node-subsystem = { path = "../subsystem" } @@ -15,7 +15,7 @@ polkadot-primitives = { path = "../../primitives" } sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-maybe-compressed-blob = { git = "https://github.com/paritytech/substrate", branch = "master" } thiserror = "1.0.26" -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["bit-vec", "derive"] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = ["bit-vec", "derive"] } [dev-dependencies] polkadot-node-subsystem-test-helpers = { path = "../subsystem-test-helpers" } diff --git a/node/core/approval-voting/Cargo.toml b/node/core/approval-voting/Cargo.toml index 06d6fce4c336..2b12c4279210 100644 --- a/node/core/approval-voting/Cargo.toml +++ b/node/core/approval-voting/Cargo.toml @@ -1,14 +1,14 @@ [package] name = "polkadot-node-core-approval-voting" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" [dependencies] futures = "0.3.17" futures-timer = "3.0.2" -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["bit-vec", "derive"] } -tracing = "0.1.27" +parity-scale-codec = { version = "2.3.1", default-features = false, features = ["bit-vec", "derive"] } +tracing = "0.1.28" bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } lru = "0.6" merlin = "2.0" diff --git a/node/core/approval-voting/src/approval_checking.rs b/node/core/approval-voting/src/approval_checking.rs index 17a5cda64c87..644d820f38e5 100644 --- a/node/core/approval-voting/src/approval_checking.rs +++ b/node/core/approval-voting/src/approval_checking.rs @@ -58,6 +58,8 @@ pub enum RequiredTranches { /// event that there are some assignments that don't have corresponding approval votes. If this /// is `None`, all assignments have approvals. next_no_show: Option, + /// The last tick at which a needed assignment was received. + last_assignment_tick: Option, }, } @@ -66,18 +68,22 @@ pub enum RequiredTranches { pub enum Check { /// The candidate is unapproved. Unapproved, - /// The candidate is approved, with the given amount of no-shows. - Approved(usize), + /// The candidate is approved, with the given amount of no-shows, + /// with the last counted assignment being received at the given + /// tick. + Approved(usize, Option), /// The candidate is approved by one third of all validators. ApprovedOneThird, } impl Check { - /// Whether the candidate is approved. - pub fn is_approved(&self) -> bool { + /// Whether the candidate is approved and all relevant assignments + /// have at most the given assignment tick. + pub fn is_approved(&self, max_assignment_tick: Tick) -> bool { match *self { Check::Unapproved => false, - Check::Approved(_) => true, + Check::Approved(_, last_assignment_tick) => + last_assignment_tick.map_or(true, |t| t <= max_assignment_tick), Check::ApprovedOneThird => true, } } @@ -85,7 +91,7 @@ impl Check { /// The number of known no-shows in this computation. pub fn known_no_shows(&self) -> usize { match *self { - Check::Approved(n) => n, + Check::Approved(n, _) => n, _ => 0, } } @@ -107,7 +113,7 @@ pub fn check_approval( match required { RequiredTranches::Pending { .. } => Check::Unapproved, RequiredTranches::All => Check::Unapproved, - RequiredTranches::Exact { needed, tolerated_missing, .. } => { + RequiredTranches::Exact { needed, tolerated_missing, last_assignment_tick, .. } => { // whether all assigned validators up to `needed` less no_shows have approved. // e.g. if we had 5 tranches and 1 no-show, we would accept all validators in // tranches 0..=5 except for 1 approving. In that example, we also accept all @@ -130,7 +136,7 @@ pub fn check_approval( // that will surpass a minimum amount of checks. // shouldn't typically go above, since all no-shows are supposed to be covered. if n_approved + tolerated_missing >= n_assigned { - Check::Approved(tolerated_missing) + Check::Approved(tolerated_missing, last_assignment_tick) } else { Check::Unapproved } @@ -170,6 +176,8 @@ struct State { uncovered: usize, /// The next tick at which a no-show would occur, if any. next_no_show: Option, + /// The last tick at which a considered assignment was received. + last_assignment_tick: Option, } impl State { @@ -192,6 +200,7 @@ impl State { needed: tranche, tolerated_missing: self.covered, next_no_show: self.next_no_show, + last_assignment_tick: self.last_assignment_tick, } } @@ -226,6 +235,7 @@ impl State { new_assignments: usize, new_no_shows: usize, next_no_show: Option, + last_assignment_tick: Option, ) -> State { let new_covered = if self.depth == 0 { new_assignments @@ -246,6 +256,7 @@ impl State { }; let uncovered = self.uncovered + new_no_shows; let next_no_show = super::min_prefer_some(self.next_no_show, next_no_show); + let last_assignment_tick = std::cmp::max(self.last_assignment_tick, last_assignment_tick); let (depth, covering, uncovered) = if covering == 0 { if uncovered == 0 { @@ -257,7 +268,15 @@ impl State { (self.depth, covering, uncovered) }; - State { assignments, depth, covered, covering, uncovered, next_no_show } + State { + assignments, + depth, + covered, + covering, + uncovered, + next_no_show, + last_assignment_tick, + } } } @@ -356,6 +375,7 @@ pub fn tranches_to_approve( covering: needed_approvals, uncovered: 0, next_no_show: None, + last_assignment_tick: None, }; // The `ApprovalEntry` doesn't have any data for empty tranches. We still want to iterate over @@ -384,6 +404,11 @@ pub fn tranches_to_approve( .filter(|(v_index, _)| v_index.0 < n_validators as u32) .count(); + // Get the latest tick of valid validator assignments. + let last_assignment_tick = assignments.iter() + .map(|(_, t)| *t) + .max(); + // count no-shows. An assignment is a no-show if there is no corresponding approval vote // after a fixed duration. // @@ -397,7 +422,7 @@ pub fn tranches_to_approve( drifted_tick_now, ); - let s = s.advance(n_assignments, no_shows, next_no_show); + let s = s.advance(n_assignments, no_shows, next_no_show, last_assignment_tick); let output = s.output(tranche, needed_approvals, n_validators, no_show_duration); *state = match output { @@ -459,7 +484,7 @@ mod tests { clock_drift: 0, }, ) - .is_approved()); + .is_approved(Tick::max_value())); } #[test] @@ -502,21 +527,36 @@ mod tests { assert!(check_approval( &candidate, &approval_entry, - RequiredTranches::Exact { needed: 0, tolerated_missing: 0, next_no_show: None }, + RequiredTranches::Exact { + needed: 0, + tolerated_missing: 0, + next_no_show: None, + last_assignment_tick: None + }, ) - .is_approved()); + .is_approved(Tick::max_value())); assert!(!check_approval( &candidate, &approval_entry, - RequiredTranches::Exact { needed: 1, tolerated_missing: 0, next_no_show: None }, + RequiredTranches::Exact { + needed: 1, + tolerated_missing: 0, + next_no_show: None, + last_assignment_tick: None + }, ) - .is_approved()); + .is_approved(Tick::max_value())); assert!(check_approval( &candidate, &approval_entry, - RequiredTranches::Exact { needed: 1, tolerated_missing: 2, next_no_show: None }, + RequiredTranches::Exact { + needed: 1, + tolerated_missing: 2, + next_no_show: None, + last_assignment_tick: None + }, ) - .is_approved()); + .is_approved(Tick::max_value())); } #[test] @@ -556,8 +596,12 @@ mod tests { } .into(); - let exact_all = - RequiredTranches::Exact { needed: 10, tolerated_missing: 0, next_no_show: None }; + let exact_all = RequiredTranches::Exact { + needed: 10, + tolerated_missing: 0, + next_no_show: None, + last_assignment_tick: None, + }; let pending_all = RequiredTranches::Pending { considered: 5, @@ -566,20 +610,27 @@ mod tests { clock_drift: 12, }; - assert!(!check_approval(&candidate, &approval_entry, RequiredTranches::All,).is_approved()); + assert!(!check_approval(&candidate, &approval_entry, RequiredTranches::All,) + .is_approved(Tick::max_value())); - assert!(!check_approval(&candidate, &approval_entry, exact_all.clone(),).is_approved()); + assert!(!check_approval(&candidate, &approval_entry, exact_all.clone(),) + .is_approved(Tick::max_value())); - assert!(!check_approval(&candidate, &approval_entry, pending_all.clone(),).is_approved()); + assert!(!check_approval(&candidate, &approval_entry, pending_all.clone(),) + .is_approved(Tick::max_value())); // This creates a set of 4/10 approvals, which is always an approval. candidate.mark_approval(ValidatorIndex(3)); - assert!(check_approval(&candidate, &approval_entry, RequiredTranches::All,).is_approved()); + assert!(check_approval(&candidate, &approval_entry, RequiredTranches::All,) + .is_approved(Tick::max_value())); - assert!(check_approval(&candidate, &approval_entry, exact_all,).is_approved()); + assert!( + check_approval(&candidate, &approval_entry, exact_all,).is_approved(Tick::max_value()) + ); - assert!(check_approval(&candidate, &approval_entry, pending_all,).is_approved()); + assert!(check_approval(&candidate, &approval_entry, pending_all,) + .is_approved(Tick::max_value())); } #[test] @@ -617,7 +668,12 @@ mod tests { no_show_duration, needed_approvals, ), - RequiredTranches::Exact { needed: 1, tolerated_missing: 0, next_no_show: None }, + RequiredTranches::Exact { + needed: 1, + tolerated_missing: 0, + next_no_show: None, + last_assignment_tick: Some(1) + }, ); } @@ -820,6 +876,7 @@ mod tests { needed: 1, tolerated_missing: 0, next_no_show: Some(block_tick + no_show_duration + 1), + last_assignment_tick: Some(block_tick + 1), }, ); @@ -838,6 +895,7 @@ mod tests { needed: 2, tolerated_missing: 1, next_no_show: Some(block_tick + 2 * no_show_duration + 2), + last_assignment_tick: Some(block_tick + no_show_duration + 2), }, ); @@ -905,7 +963,12 @@ mod tests { no_show_duration, needed_approvals, ), - RequiredTranches::Exact { needed: 2, tolerated_missing: 1, next_no_show: None }, + RequiredTranches::Exact { + needed: 2, + tolerated_missing: 1, + next_no_show: None, + last_assignment_tick: Some(block_tick + no_show_duration + 2) + }, ); // Even though tranche 2 has 2 validators, it only covers 1 no-show. @@ -943,7 +1006,12 @@ mod tests { no_show_duration, needed_approvals, ), - RequiredTranches::Exact { needed: 3, tolerated_missing: 2, next_no_show: None }, + RequiredTranches::Exact { + needed: 3, + tolerated_missing: 2, + next_no_show: None, + last_assignment_tick: Some(block_tick + no_show_duration + 2), + }, ); } @@ -1256,43 +1324,50 @@ mod tests { exp_next_no_show: None, }) } -} -#[test] -fn depth_0_covering_not_treated_as_such() { - let state = State { - assignments: 0, - depth: 0, - covered: 0, - covering: 10, - uncovered: 0, - next_no_show: None, - }; - - assert_eq!( - state.output(0, 10, 10, 20), - RequiredTranches::Pending { - considered: 0, + #[test] + fn depth_0_covering_not_treated_as_such() { + let state = State { + assignments: 0, + depth: 0, + covered: 0, + covering: 10, + uncovered: 0, next_no_show: None, - maximum_broadcast: DelayTranche::max_value(), - clock_drift: 0, - }, - ); -} + last_assignment_tick: None, + }; -#[test] -fn depth_0_issued_as_exact_even_when_all() { - let state = State { - assignments: 10, - depth: 0, - covered: 0, - covering: 0, - uncovered: 0, - next_no_show: None, - }; + assert_eq!( + state.output(0, 10, 10, 20), + RequiredTranches::Pending { + considered: 0, + next_no_show: None, + maximum_broadcast: DelayTranche::max_value(), + clock_drift: 0, + }, + ); + } - assert_eq!( - state.output(0, 10, 10, 20), - RequiredTranches::Exact { needed: 0, tolerated_missing: 0, next_no_show: None }, - ); + #[test] + fn depth_0_issued_as_exact_even_when_all() { + let state = State { + assignments: 10, + depth: 0, + covered: 0, + covering: 0, + uncovered: 0, + next_no_show: None, + last_assignment_tick: None, + }; + + assert_eq!( + state.output(0, 10, 10, 20), + RequiredTranches::Exact { + needed: 0, + tolerated_missing: 0, + next_no_show: None, + last_assignment_tick: None + }, + ); + } } diff --git a/node/core/approval-voting/src/criteria.rs b/node/core/approval-voting/src/criteria.rs index ea88c30e3bc3..21c4bd9f9d0c 100644 --- a/node/core/approval-voting/src/criteria.rs +++ b/node/core/approval-voting/src/criteria.rs @@ -236,6 +236,14 @@ pub(crate) fn compute_assignments( config.assignment_keys.is_empty() || config.validator_groups.is_empty() { + tracing::trace!( + target: LOG_TARGET, + n_cores = config.n_cores, + has_assignment_keys = !config.assignment_keys.is_empty(), + has_validator_groups = !config.validator_groups.is_empty(), + "Not producing assignments because config is degenerate", + ); + return HashMap::new() } @@ -254,7 +262,10 @@ pub(crate) fn compute_assignments( }); match key { - None => return Default::default(), + None => { + tracing::trace!(target: LOG_TARGET, "No assignment key"); + return Default::default() + }, Some(k) => k, } }; @@ -266,6 +277,12 @@ pub(crate) fn compute_assignments( .map(|(c_hash, core, _)| (c_hash, core)) .collect::>(); + tracing::trace!( + target: LOG_TARGET, + assignable_cores = leaving_cores.len(), + "Assigning to candidates from different backing groups" + ); + let assignments_key: &sp_application_crypto::sr25519::Pair = assignments_key.as_ref(); let assignments_key: &schnorrkel::Keypair = assignments_key.as_ref(); diff --git a/node/core/approval-voting/src/import.rs b/node/core/approval-voting/src/import.rs index 52b0211a86ac..710c1ab55cfd 100644 --- a/node/core/approval-voting/src/import.rs +++ b/node/core/approval-voting/src/import.rs @@ -324,7 +324,7 @@ pub(crate) async fn handle_new_head( } }; - match state.session_window.cache_session_info_for_head(ctx, head, &header).await { + match state.session_window.cache_session_info_for_head(ctx, head).await { Err(e) => { tracing::debug!( target: LOG_TARGET, @@ -1236,7 +1236,7 @@ pub(crate) mod tests { h, RuntimeApiRequest::SessionIndexForChild(c_tx), )) => { - assert_eq!(h, parent_hash.clone()); + assert_eq!(h, hash); let _ = c_tx.send(Ok(session)); } ); diff --git a/node/core/approval-voting/src/lib.rs b/node/core/approval-voting/src/lib.rs index b7588710b1a3..985cc9d6c541 100644 --- a/node/core/approval-voting/src/lib.rs +++ b/node/core/approval-voting/src/lib.rs @@ -96,6 +96,7 @@ const APPROVAL_SESSIONS: SessionIndex = 6; const APPROVAL_CHECKING_TIMEOUT: Duration = Duration::from_secs(120); const APPROVAL_CACHE_SIZE: usize = 1024; const TICK_TOO_FAR_IN_FUTURE: Tick = 20; // 10 seconds. +const APPROVAL_DELAY: Tick = 2; const LOG_TARGET: &str = "parachain::approval-voting"; /// Configuration for the approval voting subsystem @@ -1287,10 +1288,21 @@ async fn handle_approved_ancestor( ); }, Some(a_entry) => { - let n_assignments = a_entry.n_assignments(); - let n_approvals = c_entry.approvals().count_ones(); - let status = || { + let n_assignments = a_entry.n_assignments(); + + // Take the approvals, filtered by the assignments + // for this block. + let n_approvals = c_entry + .approvals() + .iter() + .by_val() + .enumerate() + .filter(|(i, approved)| { + *approved && a_entry.is_assigned(ValidatorIndex(*i as _)) + }) + .count(); + format!( "{}/{}/{}", n_assignments, @@ -1399,13 +1411,21 @@ fn schedule_wakeup_action( block_number: BlockNumber, candidate_hash: CandidateHash, block_tick: Tick, + tick_now: Tick, required_tranches: RequiredTranches, ) -> Option { let maybe_action = match required_tranches { _ if approval_entry.is_approved() => None, RequiredTranches::All => None, - RequiredTranches::Exact { next_no_show, .. } => next_no_show - .map(|tick| Action::ScheduleWakeup { block_hash, block_number, candidate_hash, tick }), + RequiredTranches::Exact { next_no_show, last_assignment_tick, .. } => { + // Take the earlier of the next no show or the last assignment tick + required delay, + // only considering the latter if it is after the current moment. + min_prefer_some( + last_assignment_tick.map(|l| l + APPROVAL_DELAY).filter(|t| t > &tick_now), + next_no_show, + ) + .map(|tick| Action::ScheduleWakeup { block_hash, block_number, candidate_hash, tick }) + }, RequiredTranches::Pending { considered, next_no_show, clock_drift, .. } => { // select the minimum of `next_no_show`, or the tick of the next non-empty tranche // after `considered`, including any tranche that might contain our own untriggered @@ -1586,6 +1606,7 @@ fn check_and_import_assignment( block_entry.block_number(), assigned_candidate_hash, status.block_tick, + tick_now, status.required_tranches, )); } @@ -1790,6 +1811,8 @@ fn advance_approval_state( let block_hash = block_entry.block_hash(); let block_number = block_entry.block_number(); + let tick_now = state.clock.tick_now(); + let (is_approved, status) = if let Some((approval_entry, status)) = state.approval_status(&block_entry, &candidate_entry) { @@ -1799,7 +1822,10 @@ fn advance_approval_state( status.required_tranches.clone(), ); - let is_approved = check.is_approved(); + // Check whether this is approved, while allowing a maximum + // assignment tick of `now - APPROVAL_DELAY` - that is, that + // all counted assignments are at least `APPROVAL_DELAY` ticks old. + let is_approved = check.is_approved(tick_now.saturating_sub(APPROVAL_DELAY)); if is_approved { tracing::trace!( @@ -1864,6 +1890,7 @@ fn advance_approval_state( block_number, candidate_hash, status.block_tick, + tick_now, status.required_tranches, )); @@ -1893,6 +1920,7 @@ fn should_trigger_assignment( match approval_entry.our_assignment() { None => false, Some(ref assignment) if assignment.triggered() => false, + Some(ref assignment) if assignment.tranche() == 0 => true, Some(ref assignment) => { match required_tranches { RequiredTranches::All => !approval_checking::check_approval( @@ -1900,7 +1928,7 @@ fn should_trigger_assignment( &approval_entry, RequiredTranches::All, ) - .is_approved(), + .is_approved(Tick::max_value()), // when all are required, we are just waiting for the first 1/3+ RequiredTranches::Pending { maximum_broadcast, clock_drift, .. } => { let drifted_tranche_now = tranche_now.saturating_sub(clock_drift as DelayTranche); diff --git a/node/core/approval-voting/src/tests.rs b/node/core/approval-voting/src/tests.rs index c40d62ecedf1..2582db301a60 100644 --- a/node/core/approval-voting/src/tests.rs +++ b/node/core/approval-voting/src/tests.rs @@ -172,7 +172,13 @@ impl MockClockInner { self.wakeups.iter().map(|w| w.0).next() } - fn has_wakeup(&self, tick: Tick) -> bool { + fn current_wakeup_is(&mut self, tick: Tick) -> bool { + // first, prune away all wakeups which aren't actually being awaited + // on. + self.wakeups.retain(|(_, tx)| !tx.is_canceled()); + + // Then see if any remaining wakeups match the tick. + // This should be the only wakeup. self.wakeups.binary_search_by_key(&tick, |w| w.0).is_ok() } @@ -786,8 +792,8 @@ async fn import_block( RuntimeApiRequest::SessionIndexForChild(s_tx) ) ) => { - let hash = &hashes[number.saturating_sub(1) as usize]; - assert_eq!(req_block_hash, hash.0.clone()); + let hash = &hashes[number as usize]; + assert_eq!(req_block_hash, hash.0); s_tx.send(Ok(number.into())).unwrap(); } ); @@ -1412,6 +1418,8 @@ fn subsystem_second_approval_import_only_schedules_wakeups() { .. } = test_harness; + clock.inner.lock().set_tick(APPROVAL_DELAY); + let block_hash = Hash::repeat_byte(0x01); let candidate_hash = { @@ -1425,13 +1433,41 @@ fn subsystem_second_approval_import_only_schedules_wakeups() { let validator = ValidatorIndex(0); let session_index = 1; + let validators = vec![ + Sr25519Keyring::Alice, + Sr25519Keyring::Bob, + Sr25519Keyring::Charlie, + Sr25519Keyring::Dave, + Sr25519Keyring::Eve, + ]; + let session_info = SessionInfo { + validators: validators.iter().map(|v| v.public().into()).collect(), + validator_groups: vec![ + vec![ValidatorIndex(0), ValidatorIndex(1)], + vec![ValidatorIndex(2)], + vec![ValidatorIndex(3), ValidatorIndex(4)], + ], + needed_approvals: 1, + discovery_keys: validators.iter().map(|v| v.public().into()).collect(), + assignment_keys: validators.iter().map(|v| v.public().into()).collect(), + n_cores: validators.len() as _, + zeroth_delay_tranche_width: 5, + relay_vrf_modulo_samples: 3, + n_delay_tranches: 50, + no_show_slots: 2, + }; + // Add block hash 0x01... ChainBuilder::new() .add_block( block_hash, ChainBuilder::GENESIS_HASH, 1, - BlockConfig { slot: Slot::from(0), candidates: None, session_info: None }, + BlockConfig { + slot: Slot::from(0), + candidates: None, + session_info: Some(session_info), + }, ) .build(&mut virtual_overseer) .await; @@ -1446,6 +1482,8 @@ fn subsystem_second_approval_import_only_schedules_wakeups() { assert_eq!(rx.await, Ok(AssignmentCheckResult::Accepted)); + assert!(clock.inner.lock().current_wakeup_is(APPROVAL_DELAY + 2)); + let rx = check_and_import_approval( &mut virtual_overseer, block_hash, @@ -1453,7 +1491,7 @@ fn subsystem_second_approval_import_only_schedules_wakeups() { validator, candidate_hash, session_index, - true, + false, true, None, ) @@ -1461,11 +1499,8 @@ fn subsystem_second_approval_import_only_schedules_wakeups() { assert_eq!(rx.await, Ok(ApprovalCheckResult::Accepted)); - // The clock should already have wakeups from the prior operations. Clear them to assert - // that the second approval adds more wakeups. - assert!(clock.inner.lock().has_wakeup(20)); - clock.inner.lock().wakeup_all(20); - assert!(!clock.inner.lock().has_wakeup(20)); + futures_timer::Delay::new(Duration::from_millis(100)).await; + assert!(clock.inner.lock().current_wakeup_is(APPROVAL_DELAY + 2)); let rx = check_and_import_approval( &mut virtual_overseer, @@ -1482,7 +1517,8 @@ fn subsystem_second_approval_import_only_schedules_wakeups() { assert_eq!(rx.await, Ok(ApprovalCheckResult::Accepted)); - assert!(clock.inner.lock().has_wakeup(20)); + futures_timer::Delay::new(Duration::from_millis(100)).await; + assert!(clock.inner.lock().current_wakeup_is(APPROVAL_DELAY + 2)); virtual_overseer }); @@ -1524,7 +1560,7 @@ fn subsystem_assignment_import_updates_candidate_entry_and_schedules_wakeup() { assert_eq!(rx.await, Ok(AssignmentCheckResult::Accepted)); - assert!(clock.inner.lock().has_wakeup(20)); + assert!(clock.inner.lock().current_wakeup_is(2)); virtual_overseer }); @@ -1566,14 +1602,14 @@ fn subsystem_process_wakeup_schedules_wakeup() { assert_eq!(rx.await, Ok(AssignmentCheckResult::Accepted)); - assert!(clock.inner.lock().has_wakeup(20)); + assert!(clock.inner.lock().current_wakeup_is(2)); // Activate the wakeup present above, and sleep to allow process_wakeups to execute.. - clock.inner.lock().wakeup_all(20); + clock.inner.lock().set_tick(2); futures_timer::Delay::new(Duration::from_millis(100)).await; // The wakeup should have been rescheduled. - assert!(clock.inner.lock().has_wakeup(20)); + assert!(clock.inner.lock().current_wakeup_is(20)); virtual_overseer }); @@ -1772,10 +1808,6 @@ fn import_checked_approval_updates_entries_and_schedules() { assert_eq!(rx.await, Ok(AssignmentCheckResult::Accepted),); - // Clear any wake ups from the assignment imports. - assert!(clock.inner.lock().has_wakeup(20)); - clock.inner.lock().wakeup_all(20); - let session_index = 1; let sig_a = sign_approval(Sr25519Keyring::Alice, candidate_hash, session_index); @@ -1801,10 +1833,10 @@ fn import_checked_approval_updates_entries_and_schedules() { // approval. let candidate_entry = store.load_candidate_entry(&candidate_hash).unwrap().unwrap(); assert!(!candidate_entry.approval_entry(&block_hash).unwrap().is_approved()); - assert!(clock.inner.lock().has_wakeup(20)); + assert!(clock.inner.lock().current_wakeup_is(2)); // Clear the wake ups to assert that later approval also schedule wakeups. - clock.inner.lock().wakeup_all(20); + clock.inner.lock().wakeup_all(2); let sig_b = sign_approval(Sr25519Keyring::Bob, candidate_hash, session_index); let rx = check_and_import_approval( @@ -1838,7 +1870,6 @@ fn import_checked_approval_updates_entries_and_schedules() { // The candidate should now be approved. let candidate_entry = store.load_candidate_entry(&candidate_hash).unwrap().unwrap(); assert!(candidate_entry.approval_entry(&block_hash).unwrap().is_approved()); - assert!(clock.inner.lock().has_wakeup(20)); virtual_overseer }); @@ -2195,15 +2226,15 @@ fn subsystem_process_wakeup_trigger_assignment_launch_approval() { .build(&mut virtual_overseer) .await; - assert!(!clock.inner.lock().has_wakeup(1)); + assert!(!clock.inner.lock().current_wakeup_is(1)); clock.inner.lock().wakeup_all(1); - assert!(clock.inner.lock().has_wakeup(slot_to_tick(slot))); + assert!(clock.inner.lock().current_wakeup_is(slot_to_tick(slot))); clock.inner.lock().wakeup_all(slot_to_tick(slot)); futures_timer::Delay::new(Duration::from_millis(200)).await; - assert!(clock.inner.lock().has_wakeup(slot_to_tick(slot + 1))); + assert!(clock.inner.lock().current_wakeup_is(slot_to_tick(slot + 1))); clock.inner.lock().wakeup_all(slot_to_tick(slot + 1)); assert_matches!( @@ -2435,9 +2466,10 @@ fn subsystem_assignment_triggered_by_all_with_less_than_threshold() { assignments_to_import: vec![1, 2, 3, 4, 5], approvals_to_import: vec![2, 4], ticks: vec![ + 2, // APPROVAL_DELAY 20, // Check for no shows ], - should_be_triggered: |_| true, + should_be_triggered: |t| t == 20, }); } @@ -2450,6 +2482,7 @@ fn subsystem_assignment_not_triggered_by_all_with_threshold() { assignments_to_import: vec![1, 2, 3, 4, 5], approvals_to_import: vec![1, 3, 5], ticks: vec![ + 2, // APPROVAL_DELAY 20, // Check no shows ], should_be_triggered: |_| false, @@ -2481,6 +2514,7 @@ fn subsystem_assignment_not_triggered_more_than_maximum() { assignments_to_import: vec![2, 3], approvals_to_import: vec![], ticks: vec![ + 2, // APPROVAL_DELAY 13, // Alice wakeup 20, // Check no shows ], @@ -2717,7 +2751,7 @@ fn pre_covers_dont_stall_approval() { // The candidate should not be approved. let candidate_entry = store.load_candidate_entry(&candidate_hash).unwrap().unwrap(); assert!(!candidate_entry.approval_entry(&block_hash).unwrap().is_approved()); - assert!(clock.inner.lock().has_wakeup(20)); + assert!(clock.inner.lock().current_wakeup_is(2)); // Wait for the no-show timer to observe the approval from // tranche 0 and set a wakeup for tranche 1. @@ -2749,3 +2783,164 @@ fn pre_covers_dont_stall_approval() { virtual_overseer }); } + +#[test] +fn waits_until_approving_assignments_are_old_enough() { + // A, B are tranche 0. + + let assignment_criteria = Box::new(MockAssignmentCriteria::check_only(|_| Ok(0))); + + let config = HarnessConfigBuilder::default().assignment_criteria(assignment_criteria).build(); + let store = config.backend(); + test_harness(config, |test_harness| async move { + let TestHarness { + mut virtual_overseer, + clock, + sync_oracle_handle: _sync_oracle_handle, + .. + } = test_harness; + + clock.inner.lock().set_tick(APPROVAL_DELAY); + + let block_hash = Hash::repeat_byte(0x01); + let validator_index_a = ValidatorIndex(0); + let validator_index_b = ValidatorIndex(1); + + let validators = vec![ + Sr25519Keyring::Alice, + Sr25519Keyring::Bob, + Sr25519Keyring::Charlie, + Sr25519Keyring::Dave, + Sr25519Keyring::Eve, + Sr25519Keyring::One, + ]; + let session_info = SessionInfo { + validators: validators.iter().map(|v| v.public().into()).collect(), + validator_groups: vec![ + vec![ValidatorIndex(0), ValidatorIndex(1)], + vec![ValidatorIndex(2), ValidatorIndex(5)], + vec![ValidatorIndex(3), ValidatorIndex(4)], + ], + needed_approvals: 2, + discovery_keys: validators.iter().map(|v| v.public().into()).collect(), + assignment_keys: validators.iter().map(|v| v.public().into()).collect(), + n_cores: validators.len() as _, + zeroth_delay_tranche_width: 5, + relay_vrf_modulo_samples: 3, + n_delay_tranches: 50, + no_show_slots: 2, + }; + + let candidate_descriptor = make_candidate(1.into(), &block_hash); + let candidate_hash = candidate_descriptor.hash(); + + let head: Hash = ChainBuilder::GENESIS_HASH; + let mut builder = ChainBuilder::new(); + let slot = Slot::from(1 as u64); + builder.add_block( + block_hash, + head, + 1, + BlockConfig { + slot, + candidates: Some(vec![(candidate_descriptor, CoreIndex(0), GroupIndex(0))]), + session_info: Some(session_info), + }, + ); + builder.build(&mut virtual_overseer).await; + + let candidate_index = 0; + + let rx = check_and_import_assignment( + &mut virtual_overseer, + block_hash, + candidate_index, + validator_index_a, + ) + .await; + + assert_eq!(rx.await, Ok(AssignmentCheckResult::Accepted),); + + let rx = check_and_import_assignment( + &mut virtual_overseer, + block_hash, + candidate_index, + validator_index_b, + ) + .await; + + assert_eq!(rx.await, Ok(AssignmentCheckResult::Accepted),); + + assert!(clock.inner.lock().current_wakeup_is(APPROVAL_DELAY + APPROVAL_DELAY)); + + let session_index = 1; + + let sig_a = sign_approval(Sr25519Keyring::Alice, candidate_hash, session_index); + let rx = check_and_import_approval( + &mut virtual_overseer, + block_hash, + candidate_index, + validator_index_a, + candidate_hash, + session_index, + false, + true, + Some(sig_a), + ) + .await; + + assert_eq!(rx.await, Ok(ApprovalCheckResult::Accepted),); + + let sig_b = sign_approval(Sr25519Keyring::Bob, candidate_hash, session_index); + + let rx = check_and_import_approval( + &mut virtual_overseer, + block_hash, + candidate_index, + validator_index_b, + candidate_hash, + session_index, + false, + true, + Some(sig_b), + ) + .await; + + assert_eq!(rx.await, Ok(ApprovalCheckResult::Accepted),); + + // Sleep to ensure we get a consistent read on the database. + futures_timer::Delay::new(Duration::from_millis(100)).await; + + // The candidate should not be approved, even though at this + // point in time we have 2 assignments and 2 approvals. + // + // This is because the assignments were imported at tick `APPROVAL_DELAY` + // and won't be considered until `APPROVAL_DELAY` more ticks have passed. + let candidate_entry = store.load_candidate_entry(&candidate_hash).unwrap().unwrap(); + assert!(!candidate_entry.approval_entry(&block_hash).unwrap().is_approved()); + assert!(clock.inner.lock().current_wakeup_is(APPROVAL_DELAY + APPROVAL_DELAY)); + + // Trigger the wakeup. + clock.inner.lock().set_tick(APPROVAL_DELAY + APPROVAL_DELAY); + + // Sleep to ensure we get a consistent read on the database. + futures_timer::Delay::new(Duration::from_millis(100)).await; + + assert_matches!( + overseer_recv(&mut virtual_overseer).await, + AllMessages::ChainSelection(ChainSelectionMessage::Approved(b_hash)) => { + assert_eq!(b_hash, block_hash); + } + ); + + // The candidate and block should now be approved. + let candidate_entry = store.load_candidate_entry(&candidate_hash).unwrap().unwrap(); + assert!(candidate_entry.approval_entry(&block_hash).unwrap().is_approved()); + assert!(clock.inner.lock().next_wakeup().is_none()); + + let block_entry = store.load_block_entry(&block_hash).unwrap().unwrap(); + assert!(block_entry.is_fully_approved()); + + virtual_overseer + }); +} diff --git a/node/core/av-store/Cargo.toml b/node/core/av-store/Cargo.toml index 9b72f74c09f0..ebd6529d85c5 100644 --- a/node/core/av-store/Cargo.toml +++ b/node/core/av-store/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-core-av-store" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" @@ -9,10 +9,10 @@ futures = "0.3.17" futures-timer = "3.0.2" kvdb = "0.10.0" thiserror = "1.0.26" -tracing = "0.1.27" +tracing = "0.1.28" bitvec = "0.20.1" -parity-scale-codec = { version = "2.0.0", features = ["derive"] } +parity-scale-codec = { version = "2.3.1", features = ["derive"] } erasure = { package = "polkadot-erasure-coding", path = "../../../erasure-coding" } polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../../subsystem" } polkadot-node-subsystem-util = { path = "../../subsystem-util" } diff --git a/node/core/av-store/src/lib.rs b/node/core/av-store/src/lib.rs index 34b26df3c958..96c0266a4fa6 100644 --- a/node/core/av-store/src/lib.rs +++ b/node/core/av-store/src/lib.rs @@ -1074,19 +1074,18 @@ fn process_message( }, } }, - AvailabilityStoreMessage::StoreAvailableData( - candidate, - _our_index, + AvailabilityStoreMessage::StoreAvailableData { + candidate_hash, n_validators, available_data, tx, - ) => { + } => { subsystem.metrics.on_chunks_received(n_validators as _); let _timer = subsystem.metrics.time_store_available_data(); let res = - store_available_data(&subsystem, candidate, n_validators as _, available_data); + store_available_data(&subsystem, candidate_hash, n_validators as _, available_data); match res { Ok(()) => { diff --git a/node/core/av-store/src/tests.rs b/node/core/av-store/src/tests.rs index 1101edde928f..428ed51aecde 100644 --- a/node/core/av-store/src/tests.rs +++ b/node/core/av-store/src/tests.rs @@ -420,13 +420,12 @@ fn store_block_works() { }; let (tx, rx) = oneshot::channel(); - let block_msg = AvailabilityStoreMessage::StoreAvailableData( + let block_msg = AvailabilityStoreMessage::StoreAvailableData { candidate_hash, - Some(validator_index), n_validators, - available_data.clone(), + available_data: available_data.clone(), tx, - ); + }; virtual_overseer.send(FromOverseer::Communication { msg: block_msg }).await; assert_eq!(rx.await.unwrap(), Ok(())); @@ -474,13 +473,12 @@ fn store_pov_and_query_chunk_works() { erasure::obtain_chunks_v1(n_validators as _, &available_data).unwrap(); let (tx, rx) = oneshot::channel(); - let block_msg = AvailabilityStoreMessage::StoreAvailableData( + let block_msg = AvailabilityStoreMessage::StoreAvailableData { candidate_hash, - None, n_validators, available_data, tx, - ); + }; virtual_overseer.send(FromOverseer::Communication { msg: block_msg }).await; @@ -521,13 +519,12 @@ fn query_all_chunks_works() { { let (tx, rx) = oneshot::channel(); - let block_msg = AvailabilityStoreMessage::StoreAvailableData( - candidate_hash_1, - None, + let block_msg = AvailabilityStoreMessage::StoreAvailableData { + candidate_hash: candidate_hash_1, n_validators, available_data, tx, - ); + }; virtual_overseer.send(FromOverseer::Communication { msg: block_msg }).await; assert_eq!(rx.await.unwrap(), Ok(())); @@ -610,13 +607,12 @@ fn stored_but_not_included_data_is_pruned() { }; let (tx, rx) = oneshot::channel(); - let block_msg = AvailabilityStoreMessage::StoreAvailableData( + let block_msg = AvailabilityStoreMessage::StoreAvailableData { candidate_hash, - None, n_validators, - available_data.clone(), + available_data: available_data.clone(), tx, - ); + }; virtual_overseer.send(FromOverseer::Communication { msg: block_msg }).await; @@ -663,13 +659,12 @@ fn stored_data_kept_until_finalized() { let block_number = 10; let (tx, rx) = oneshot::channel(); - let block_msg = AvailabilityStoreMessage::StoreAvailableData( + let block_msg = AvailabilityStoreMessage::StoreAvailableData { candidate_hash, - None, n_validators, - available_data.clone(), + available_data: available_data.clone(), tx, - ); + }; virtual_overseer.send(FromOverseer::Communication { msg: block_msg }).await; @@ -899,26 +894,24 @@ fn forkfullness_works() { }; let (tx, rx) = oneshot::channel(); - let msg = AvailabilityStoreMessage::StoreAvailableData( - candidate_1_hash, - None, + let msg = AvailabilityStoreMessage::StoreAvailableData { + candidate_hash: candidate_1_hash, n_validators, - available_data_1.clone(), + available_data: available_data_1.clone(), tx, - ); + }; virtual_overseer.send(FromOverseer::Communication { msg }).await; rx.await.unwrap().unwrap(); let (tx, rx) = oneshot::channel(); - let msg = AvailabilityStoreMessage::StoreAvailableData( - candidate_2_hash, - None, + let msg = AvailabilityStoreMessage::StoreAvailableData { + candidate_hash: candidate_2_hash, n_validators, - available_data_2.clone(), + available_data: available_data_2.clone(), tx, - ); + }; virtual_overseer.send(FromOverseer::Communication { msg }).await; diff --git a/node/core/backing/Cargo.toml b/node/core/backing/Cargo.toml index c8e90d3eedf9..83a665da943f 100644 --- a/node/core/backing/Cargo.toml +++ b/node/core/backing/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-core-backing" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" @@ -14,7 +14,7 @@ polkadot-node-subsystem-util = { path = "../../subsystem-util" } erasure-coding = { package = "polkadot-erasure-coding", path = "../../../erasure-coding" } statement-table = { package = "polkadot-statement-table", path = "../../../statement-table" } bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } -tracing = "0.1.27" +tracing = "0.1.28" thiserror = "1.0.26" [dev-dependencies] diff --git a/node/core/backing/src/lib.rs b/node/core/backing/src/lib.rs index 338f333efbfa..bd24244a01f8 100644 --- a/node/core/backing/src/lib.rs +++ b/node/core/backing/src/lib.rs @@ -294,20 +294,18 @@ fn table_attested_to_backed( async fn store_available_data( sender: &mut JobSender, - id: Option, n_validators: u32, candidate_hash: CandidateHash, available_data: AvailableData, ) -> Result<(), Error> { let (tx, rx) = oneshot::channel(); sender - .send_message(AvailabilityStoreMessage::StoreAvailableData( + .send_message(AvailabilityStoreMessage::StoreAvailableData { candidate_hash, - id, n_validators, available_data, tx, - )) + }) .await; let _ = rx.await.map_err(Error::StoreAvailableData)?; @@ -321,7 +319,6 @@ async fn store_available_data( // This returns `Err()` iff there is an internal error. Otherwise, it returns either `Ok(Ok(()))` or `Ok(Err(_))`. async fn make_pov_available( sender: &mut JobSender, - validator_index: Option, n_validators: usize, pov: Arc, candidate_hash: CandidateHash, @@ -347,14 +344,7 @@ async fn make_pov_available( { let _span = span.as_ref().map(|s| s.child("store-data").with_candidate(candidate_hash)); - store_available_data( - sender, - validator_index, - n_validators as u32, - candidate_hash, - available_data, - ) - .await?; + store_available_data(sender, n_validators as u32, candidate_hash, available_data).await?; } Ok(Ok(())) @@ -409,7 +399,6 @@ struct BackgroundValidationParams, F> candidate: CandidateReceipt, relay_parent: Hash, pov: PoVData, - validator_index: Option, n_validators: usize, span: Option, make_command: F, @@ -427,7 +416,6 @@ async fn validate_and_make_available( candidate, relay_parent, pov, - validator_index, n_validators, span, make_command, @@ -484,7 +472,6 @@ async fn validate_and_make_available( } else { let erasure_valid = make_pov_available( &mut sender, - validator_index, n_validators, pov.clone(), candidate.hash(), @@ -719,7 +706,6 @@ impl CandidateBackingJob { candidate: candidate.clone(), relay_parent: self.parent, pov: PoVData::Ready(pov), - validator_index: self.table_context.validator.as_ref().map(|v| v.index()), n_validators: self.table_context.validators.len(), span, make_command: ValidatedCandidateCommand::Second, @@ -1033,7 +1019,6 @@ impl CandidateBackingJob { candidate: attesting.candidate, relay_parent: self.parent, pov, - validator_index: self.table_context.validator.as_ref().map(|v| v.index()), n_validators: self.table_context.validators.len(), span, make_command: ValidatedCandidateCommand::Attest, diff --git a/node/core/backing/src/tests.rs b/node/core/backing/src/tests.rs index 86282c38f91c..68c1e30dfd31 100644 --- a/node/core/backing/src/tests.rs +++ b/node/core/backing/src/tests.rs @@ -336,7 +336,7 @@ fn backing_second_works() { assert_matches!( virtual_overseer.recv().await, AllMessages::AvailabilityStore( - AvailabilityStoreMessage::StoreAvailableData(candidate_hash, _, _, _, tx) + AvailabilityStoreMessage::StoreAvailableData { candidate_hash, tx, .. } ) if candidate_hash == candidate.hash() => { tx.send(Ok(())).unwrap(); } @@ -495,7 +495,7 @@ fn backing_works() { assert_matches!( virtual_overseer.recv().await, AllMessages::AvailabilityStore( - AvailabilityStoreMessage::StoreAvailableData(candidate_hash, _, _, _, tx) + AvailabilityStoreMessage::StoreAvailableData { candidate_hash, tx, .. } ) if candidate_hash == candidate_a.hash() => { tx.send(Ok(())).unwrap(); } @@ -853,7 +853,7 @@ fn backing_misbehavior_works() { assert_matches!( virtual_overseer.recv().await, AllMessages::AvailabilityStore( - AvailabilityStoreMessage::StoreAvailableData(candidate_hash, _, _, _, tx) + AvailabilityStoreMessage::StoreAvailableData { candidate_hash, tx, .. } ) if candidate_hash == candidate_a.hash() => { tx.send(Ok(())).unwrap(); } @@ -1027,7 +1027,7 @@ fn backing_dont_second_invalid() { assert_matches!( virtual_overseer.recv().await, AllMessages::AvailabilityStore( - AvailabilityStoreMessage::StoreAvailableData(candidate_hash, _, _, _, tx) + AvailabilityStoreMessage::StoreAvailableData { candidate_hash, tx, .. } ) if candidate_hash == candidate_b.hash() => { tx.send(Ok(())).unwrap(); } diff --git a/node/core/bitfield-signing/Cargo.toml b/node/core/bitfield-signing/Cargo.toml index 316ae45e9b70..eae0881d2da3 100644 --- a/node/core/bitfield-signing/Cargo.toml +++ b/node/core/bitfield-signing/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "polkadot-node-core-bitfield-signing" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" [dependencies] futures = "0.3.17" -tracing = "0.1.27" +tracing = "0.1.28" polkadot-primitives = { path = "../../../primitives" } polkadot-node-subsystem = { path = "../../subsystem" } polkadot-node-subsystem-util = { path = "../../subsystem-util" } diff --git a/node/core/candidate-validation/Cargo.toml b/node/core/candidate-validation/Cargo.toml index e1a3e0fa4ec3..334166bbfb2a 100644 --- a/node/core/candidate-validation/Cargo.toml +++ b/node/core/candidate-validation/Cargo.toml @@ -1,16 +1,16 @@ [package] name = "polkadot-node-core-candidate-validation" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" [dependencies] async-trait = "0.1.51" futures = "0.3.17" -tracing = "0.1.27" +tracing = "0.1.28" sp-maybe-compressed-blob = { package = "sp-maybe-compressed-blob", git = "https://github.com/paritytech/substrate", branch = "master" } -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["bit-vec", "derive"] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = ["bit-vec", "derive"] } polkadot-primitives = { path = "../../../primitives" } polkadot-parachain = { path = "../../../parachain" } diff --git a/node/core/chain-api/Cargo.toml b/node/core/chain-api/Cargo.toml index 076087592e4e..ffea3a4e559a 100644 --- a/node/core/chain-api/Cargo.toml +++ b/node/core/chain-api/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "polkadot-node-core-chain-api" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" [dependencies] futures = "0.3.17" -tracing = "0.1.27" +tracing = "0.1.28" sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "master" } polkadot-primitives = { path = "../../../primitives" } polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../../subsystem" } @@ -17,7 +17,7 @@ sc-consensus-babe = { git = "https://github.com/paritytech/substrate", branch = [dev-dependencies] futures = { version = "0.3.17", features = ["thread-pool"] } maplit = "1.0.2" -parity-scale-codec = "2.0.0" +parity-scale-codec = "2.3.1" polkadot-node-primitives = { path = "../../primitives" } polkadot-node-subsystem-test-helpers = { path = "../../subsystem-test-helpers" } sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/node/core/chain-selection/Cargo.toml b/node/core/chain-selection/Cargo.toml index 68d421153f49..64a84cdf29be 100644 --- a/node/core/chain-selection/Cargo.toml +++ b/node/core/chain-selection/Cargo.toml @@ -1,14 +1,14 @@ [package] name = "polkadot-node-core-chain-selection" description = "Chain Selection Subsystem" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" [dependencies] futures = "0.3.17" futures-timer = "3" -tracing = "0.1.27" +tracing = "0.1.28" polkadot-primitives = { path = "../../../primitives" } polkadot-node-primitives = { path = "../../primitives" } polkadot-node-subsystem = { path = "../../subsystem" } diff --git a/node/core/chain-selection/src/tests.rs b/node/core/chain-selection/src/tests.rs index c7d204df83b4..396e11520733 100644 --- a/node/core/chain-selection/src/tests.rs +++ b/node/core/chain-selection/src/tests.rs @@ -164,6 +164,13 @@ impl Backend for TestBackend { where I: IntoIterator, { + let ops: Vec<_> = ops.into_iter().collect(); + + // Early return if empty because empty writes shouldn't + // trigger wakeups (they happen on an interval) + if ops.is_empty() { + return Ok(()) + } let mut inner = self.inner.lock(); for op in ops { @@ -521,13 +528,13 @@ async fn finalize_block( block_number: BlockNumber, block_hash: Hash, ) { - let (_, write_tx) = backend.await_next_write(); + let (_, write_rx) = backend.await_next_write(); virtual_overseer .send(OverseerSignal::BlockFinalized(block_hash, block_number).into()) .await; - write_tx.await.unwrap(); + write_rx.await.unwrap(); } fn extract_info_from_chain( @@ -1701,9 +1708,11 @@ fn approve_nonexistent_has_no_effect() { .await; let nonexistent = Hash::repeat_byte(1); - approve_block(&mut virtual_overseer, &backend, nonexistent).await; + virtual_overseer + .send(FromOverseer::Communication { msg: ChainSelectionMessage::Approved(nonexistent) }) + .await; - // a3 is approved, but not a1 or a2. + // None are approved. assert_matches!( backend.load_block_entry(&a3_hash).unwrap().unwrap().viability.approval, Approval::Unapproved diff --git a/node/core/dispute-coordinator/Cargo.toml b/node/core/dispute-coordinator/Cargo.toml index 367cf9824447..0cb6bcc2bf3f 100644 --- a/node/core/dispute-coordinator/Cargo.toml +++ b/node/core/dispute-coordinator/Cargo.toml @@ -1,13 +1,13 @@ [package] name = "polkadot-node-core-dispute-coordinator" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" [dependencies] bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } futures = "0.3.17" -tracing = "0.1.27" +tracing = "0.1.28" parity-scale-codec = "2" kvdb = "0.10.0" derive_more = "0.99.14" diff --git a/node/core/dispute-coordinator/src/real/mod.rs b/node/core/dispute-coordinator/src/real/mod.rs index 84c6060e9941..e6f2ef8d0ef5 100644 --- a/node/core/dispute-coordinator/src/real/mod.rs +++ b/node/core/dispute-coordinator/src/real/mod.rs @@ -38,7 +38,7 @@ use polkadot_node_primitives::{ use polkadot_node_subsystem::{ errors::{ChainApiError, RuntimeApiError}, messages::{ - BlockDescription, ChainApiMessage, DisputeCoordinatorMessage, DisputeDistributionMessage, + BlockDescription, DisputeCoordinatorMessage, DisputeDistributionMessage, DisputeParticipationMessage, ImportStatementsResult, }, overseer, FromOverseer, OverseerSignal, SpawnedSubsystem, SubsystemContext, SubsystemError, @@ -479,22 +479,7 @@ async fn handle_new_activations( new_activations: impl IntoIterator, ) -> Result<(), Error> { for new_leaf in new_activations { - let block_header = { - let (tx, rx) = oneshot::channel(); - - ctx.send_message(ChainApiMessage::BlockHeader(new_leaf, tx)).await; - - match rx.await?? { - None => continue, - Some(header) => header, - } - }; - - match state - .rolling_session_window - .cache_session_info_for_head(ctx, new_leaf, &block_header) - .await - { + match state.rolling_session_window.cache_session_info_for_head(ctx, new_leaf).await { Err(e) => { tracing::warn!( target: LOG_TARGET, @@ -538,7 +523,7 @@ async fn handle_incoming( statements, pending_confirmation, } => { - handle_import_statements( + let outcome = handle_import_statements( ctx, overlay_db, state, @@ -547,10 +532,10 @@ async fn handle_incoming( session, statements, now, - pending_confirmation, metrics, ) .await?; + pending_confirmation.send(outcome).map_err(|_| Error::OneshotSend)?; }, DisputeCoordinatorMessage::RecentDisputes(rx) => { let recent_disputes = overlay_db.load_recent_disputes()?.unwrap_or_default(); @@ -647,16 +632,11 @@ async fn handle_import_statements( session: SessionIndex, statements: Vec<(SignedDisputeStatement, ValidatorIndex)>, now: Timestamp, - pending_confirmation: oneshot::Sender, metrics: &Metrics, -) -> Result<(), Error> { +) -> Result { if state.highest_session.map_or(true, |h| session + DISPUTE_WINDOW < h) { // It is not valid to participate in an ancient dispute (spam?). - pending_confirmation - .send(ImportStatementsResult::InvalidImport) - .map_err(|_| Error::OneshotSend)?; - - return Ok(()) + return Ok(ImportStatementsResult::InvalidImport) } let validators = match state.rolling_session_window.session_info(session) { @@ -667,11 +647,7 @@ async fn handle_import_statements( "Missing info for session which has an active dispute", ); - pending_confirmation - .send(ImportStatementsResult::InvalidImport) - .map_err(|_| Error::OneshotSend)?; - - return Ok(()) + return Ok(ImportStatementsResult::InvalidImport) }, Some(info) => info.validators.clone(), }; @@ -796,15 +772,12 @@ async fn handle_import_statements( // // We expect that if the candidate is truly disputed that the higher-level network // code will retry. - pending_confirmation - .send(ImportStatementsResult::InvalidImport) - .map_err(|_| Error::OneshotSend)?; tracing::debug!( target: LOG_TARGET, "Recovering availability failed - invalid import." ); - return Ok(()) + return Ok(ImportStatementsResult::InvalidImport) } metrics.on_open(); @@ -822,11 +795,7 @@ async fn handle_import_statements( overlay_db.write_candidate_votes(session, candidate_hash, votes.into()); - pending_confirmation - .send(ImportStatementsResult::ValidImport) - .map_err(|_| Error::OneshotSend)?; - - Ok(()) + Ok(ImportStatementsResult::ValidImport) } fn find_controlled_validator_indices( @@ -933,8 +902,7 @@ async fn issue_local_statement( // Do import if !statements.is_empty() { - let (pending_confirmation, rx) = oneshot::channel(); - handle_import_statements( + match handle_import_statements( ctx, overlay_db, state, @@ -943,11 +911,10 @@ async fn issue_local_statement( session, statements, now, - pending_confirmation, metrics, ) - .await?; - match rx.await { + .await + { Err(_) => { tracing::error!( target: LOG_TARGET, diff --git a/node/core/dispute-coordinator/src/real/tests.rs b/node/core/dispute-coordinator/src/real/tests.rs index 2f78a5c48707..c8709da92916 100644 --- a/node/core/dispute-coordinator/src/real/tests.rs +++ b/node/core/dispute-coordinator/src/real/tests.rs @@ -26,9 +26,7 @@ use overseer::TimeoutExt; use parity_scale_codec::Encode; use polkadot_node_subsystem::{ jaeger, - messages::{ - AllMessages, BlockDescription, ChainApiMessage, RuntimeApiMessage, RuntimeApiRequest, - }, + messages::{AllMessages, BlockDescription, RuntimeApiMessage, RuntimeApiRequest}, ActivatedLeaf, ActiveLeavesUpdate, LeafStatus, }; use polkadot_node_subsystem_test_helpers::{make_subsystem_context, TestSubsystemContextHandle}; @@ -170,33 +168,22 @@ impl TestState { ))) .await; - self.handle_sync_queries(virtual_overseer, block_hash, block_header, session) - .await; + self.handle_sync_queries(virtual_overseer, block_hash, session).await; } async fn handle_sync_queries( &self, virtual_overseer: &mut VirtualOverseer, block_hash: Hash, - block_header: Header, session: SessionIndex, ) { - assert_matches!( - virtual_overseer.recv().await, - AllMessages::ChainApi(ChainApiMessage::BlockHeader(h, tx)) => { - assert_eq!(h, block_hash); - let _ = tx.send(Ok(Some(block_header))); - } - ); - assert_matches!( virtual_overseer.recv().await, AllMessages::RuntimeApi(RuntimeApiMessage::Request( h, RuntimeApiRequest::SessionIndexForChild(tx), )) => { - let parent_hash = session_to_hash(session, b"parent"); - assert_eq!(h, parent_hash); + assert_eq!(h, block_hash); let _ = tx.send(Ok(session)); } ); @@ -236,8 +223,7 @@ impl TestState { ))) .await; - let header = self.headers.get(leaf).unwrap().clone(); - self.handle_sync_queries(virtual_overseer, *leaf, header, session).await; + self.handle_sync_queries(virtual_overseer, *leaf, session).await; } } diff --git a/node/core/dispute-participation/Cargo.toml b/node/core/dispute-participation/Cargo.toml index 65c56e2423f2..5b1843d02b9c 100644 --- a/node/core/dispute-participation/Cargo.toml +++ b/node/core/dispute-participation/Cargo.toml @@ -1,13 +1,13 @@ [package] name = "polkadot-node-core-dispute-participation" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" [dependencies] futures = "0.3.17" thiserror = "1.0.26" -tracing = "0.1.27" +tracing = "0.1.28" polkadot-node-primitives = { path = "../../primitives" } polkadot-node-subsystem = { path = "../../subsystem" } @@ -15,6 +15,6 @@ polkadot-primitives = { path = "../../../primitives" } [dev-dependencies] assert_matches = "1.5.0" -parity-scale-codec = "2.0.0" +parity-scale-codec = "2.3.1" polkadot-node-subsystem-test-helpers = { path = "../../subsystem-test-helpers"} sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/node/core/dispute-participation/src/lib.rs b/node/core/dispute-participation/src/lib.rs index c79d10462e06..85b31f0a86f4 100644 --- a/node/core/dispute-participation/src/lib.rs +++ b/node/core/dispute-participation/src/lib.rs @@ -248,13 +248,12 @@ async fn participate( // we dispatch a request to store the available data for the candidate. we // want to maximize data availability for other potential checkers involved // in the dispute - ctx.send_message(AvailabilityStoreMessage::StoreAvailableData( + ctx.send_message(AvailabilityStoreMessage::StoreAvailableData { candidate_hash, - None, n_validators, - available_data.clone(), - store_available_data_tx, - )) + available_data: available_data.clone(), + tx: store_available_data_tx, + }) .await; match store_available_data_rx.await? { diff --git a/node/core/dispute-participation/src/tests.rs b/node/core/dispute-participation/src/tests.rs index 40bfdd3f7b61..e2c98af53b5e 100644 --- a/node/core/dispute-participation/src/tests.rs +++ b/node/core/dispute-participation/src/tests.rs @@ -150,13 +150,7 @@ async fn fetch_validation_code(virtual_overseer: &mut VirtualOverseer) { async fn store_available_data(virtual_overseer: &mut VirtualOverseer, success: bool) { assert_matches!( virtual_overseer.recv().await, - AllMessages::AvailabilityStore(AvailabilityStoreMessage::StoreAvailableData( - _, - _, - _, - _, - tx, - )) => { + AllMessages::AvailabilityStore(AvailabilityStoreMessage::StoreAvailableData { tx, .. }) => { if success { tx.send(Ok(())).unwrap(); } else { diff --git a/node/core/parachains-inherent/Cargo.toml b/node/core/parachains-inherent/Cargo.toml index 9322c203067e..4a40d3f1e383 100644 --- a/node/core/parachains-inherent/Cargo.toml +++ b/node/core/parachains-inherent/Cargo.toml @@ -1,13 +1,13 @@ [package] name = "polkadot-node-core-parachains-inherent" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" [dependencies] futures = "0.3.17" futures-timer = "3.0.2" -tracing = "0.1.27" +tracing = "0.1.28" thiserror = "1.0.26" async-trait = "0.1.51" polkadot-node-subsystem = { path = "../../subsystem" } diff --git a/node/core/provisioner/Cargo.toml b/node/core/provisioner/Cargo.toml index 8be473ee9e71..a5313e348226 100644 --- a/node/core/provisioner/Cargo.toml +++ b/node/core/provisioner/Cargo.toml @@ -1,13 +1,13 @@ [package] name = "polkadot-node-core-provisioner" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" [dependencies] bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } futures = "0.3.17" -tracing = "0.1.27" +tracing = "0.1.28" thiserror = "1.0.26" polkadot-primitives = { path = "../../../primitives" } polkadot-node-subsystem = { path = "../../subsystem" } diff --git a/node/core/pvf/Cargo.toml b/node/core/pvf/Cargo.toml index 78b8c51ac516..51f4c8a7b173 100644 --- a/node/core/pvf/Cargo.toml +++ b/node/core/pvf/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-core-pvf" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" @@ -10,17 +10,17 @@ path = "bin/puppet_worker.rs" [dependencies] always-assert = "0.1" -async-std = { version = "1.8.0", features = ["attributes"] } +async-std = { version = "1.10.0", features = ["attributes"] } async-process = "1.1.0" assert_matches = "1.4.0" futures = "0.3.17" futures-timer = "3.0.2" -libc = "0.2.101" +libc = "0.2.103" slotmap = "1.0" -tracing = "0.1.27" +tracing = "0.1.28" pin-project = "1.0.8" rand = "0.8.3" -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] } polkadot-parachain = { path = "../../../parachain" } polkadot-core-primitives = { path = "../../../core-primitives" } polkadot-node-subsystem-util = { path = "../../subsystem-util"} diff --git a/node/core/pvf/src/artifacts.rs b/node/core/pvf/src/artifacts.rs index 1a3429f7ab11..dfe08afe1a70 100644 --- a/node/core/pvf/src/artifacts.rs +++ b/node/core/pvf/src/artifacts.rs @@ -150,7 +150,7 @@ impl Artifacts { /// Inform the table about the artifact with the given ID. The state will be set to "preparing". /// - /// This function must be used only for brand new artifacts and should never be used for + /// This function must be used only for brand-new artifacts and should never be used for /// replacing existing ones. pub fn insert_preparing(&mut self, artifact_id: ArtifactId) { // See the precondition. @@ -159,7 +159,7 @@ impl Artifacts { /// Insert an artifact with the given ID as "prepared". /// - /// This function must be used only for brand new artifacts and should never be used for + /// This function must be used only for brand-new artifacts and should never be used for /// replacing existing ones. #[cfg(test)] pub fn insert_prepared(&mut self, artifact_id: ArtifactId, last_time_needed: SystemTime) { diff --git a/node/core/runtime-api/Cargo.toml b/node/core/runtime-api/Cargo.toml index 77290fddfc76..ed730f70d492 100644 --- a/node/core/runtime-api/Cargo.toml +++ b/node/core/runtime-api/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "polkadot-node-core-runtime-api" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" [dependencies] futures = "0.3.17" -tracing = "0.1.27" +tracing = "0.1.28" memory-lru = "0.1.0" parity-util-mem = { version = "0.10.0", default-features = false } diff --git a/node/jaeger/Cargo.toml b/node/jaeger/Cargo.toml index 6e95dc170080..308a76d494f8 100644 --- a/node/jaeger/Cargo.toml +++ b/node/jaeger/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-jaeger" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" description = "Polkadot Jaeger primitives" @@ -16,4 +16,4 @@ sc-network = { git = "https://github.com/paritytech/substrate", branch = "master sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } thiserror = "1.0.26" log = "0.4.13" -parity-scale-codec = { version = "2.0.0", default-features = false } +parity-scale-codec = { version = "2.3.1", default-features = false } diff --git a/node/malus/Cargo.toml b/node/malus/Cargo.toml index ef45fc4517f6..78a7bec74309 100644 --- a/node/malus/Cargo.toml +++ b/node/malus/Cargo.toml @@ -2,7 +2,7 @@ name = "polkadot-test-malus" description = "Misbehaving nodes for local testnets, system and Simnet tests." license = "GPL-3.0-only" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" readme = "README.md" diff --git a/node/malus/src/tests.rs b/node/malus/src/tests.rs index 00c39dd7b2b5..57072336852b 100644 --- a/node/malus/src/tests.rs +++ b/node/malus/src/tests.rs @@ -20,8 +20,8 @@ use polkadot_node_subsystem_test_helpers::*; use polkadot_node_subsystem::{ messages::{AllMessages, AvailabilityStoreMessage}, - overseer::{gen::TimeoutExt, Subsystem}, - DummySubsystem, + overseer::{dummy::DummySubsystem, gen::TimeoutExt, Subsystem}, + SubsystemError, }; #[derive(Clone, Debug)] @@ -48,34 +48,38 @@ where } } +#[derive(Clone, Debug)] +struct PassInterceptor; + +impl MessageInterceptor for PassInterceptor +where + Sender: overseer::SubsystemSender + + overseer::SubsystemSender + + Clone + + 'static, +{ + type Message = AvailabilityStoreMessage; +} + async fn overseer_send>(overseer: &mut TestSubsystemContextHandle, msg: T) { overseer.send(FromOverseer::Communication { msg }).await; } -#[test] -fn integrity_test() { +fn launch_harness(test_gen: G) +where + F: Future> + Send, + M: Into + std::fmt::Debug + Send + 'static, + AllMessages: From, + Sub: Subsystem, SubsystemError>, + G: Fn(TestSubsystemContextHandle) -> (F, Sub), +{ let pool = sp_core::testing::TaskExecutor::new(); - let (context, mut overseer) = make_subsystem_context(pool); - - let sub = DummySubsystem; - - let sub_intercepted = InterceptedSubsystem::new(sub, BlackHoleInterceptor); + let (context, overseer) = make_subsystem_context(pool); - // Try to send a message we know is going to be filtered. - let test_fut = async move { - let (tx, rx) = futures::channel::oneshot::channel(); - overseer_send( - &mut overseer, - AvailabilityStoreMessage::QueryChunk(Default::default(), 0.into(), tx), - ) - .await; - let _ = rx.timeout(std::time::Duration::from_millis(100)).await.unwrap(); - overseer - }; + let (test_fut, subsystem) = test_gen(overseer); let subsystem = async move { - sub_intercepted.start(context).future.await.unwrap(); + subsystem.start(context).future.await.unwrap(); }; - futures::pin_mut!(test_fut); futures::pin_mut!(subsystem); @@ -88,3 +92,49 @@ fn integrity_test() { )) .1; } + +#[test] +fn integrity_test_intercept() { + launch_harness(|mut overseer| { + let sub = DummySubsystem; + + let sub_intercepted = InterceptedSubsystem::new(sub, BlackHoleInterceptor); + + ( + async move { + let (tx, rx) = futures::channel::oneshot::channel(); + overseer_send( + &mut overseer, + AvailabilityStoreMessage::QueryChunk(Default::default(), 0.into(), tx), + ) + .await; + let _ = rx.timeout(std::time::Duration::from_millis(100)).await.unwrap(); + overseer + }, + sub_intercepted, + ) + }) +} + +#[test] +fn integrity_test_pass() { + launch_harness(|mut overseer| { + let sub = DummySubsystem; + + let sub_intercepted = InterceptedSubsystem::new(sub, PassInterceptor); + + ( + async move { + let (tx, rx) = futures::channel::oneshot::channel(); + overseer_send( + &mut overseer, + AvailabilityStoreMessage::QueryChunk(Default::default(), 0.into(), tx), + ) + .await; + let _ = rx.timeout(std::time::Duration::from_millis(100)).await.unwrap(); + overseer + }, + sub_intercepted, + ) + }) +} diff --git a/node/metered-channel/Cargo.toml b/node/metered-channel/Cargo.toml index 2741d95b9a68..dfbea6ba9586 100644 --- a/node/metered-channel/Cargo.toml +++ b/node/metered-channel/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "metered-channel" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" description = "Channels with attached Meters" @@ -9,6 +9,12 @@ description = "Channels with attached Meters" futures = "0.3.17" futures-timer = "3.0.2" derive_more = "0.99" +tracing = "0.1.28" +thiserror = "1.0.29" [dev-dependencies] futures = { version = "0.3.17", features = ["thread-pool"] } +assert_matches = "1.5" +env_logger = "0.9" +log = "0.4" +tracing = { version = "0.1.28", features = ["log"] } diff --git a/node/metered-channel/src/lib.rs b/node/metered-channel/src/lib.rs index 4fe1bcd22526..9646cbaee901 100644 --- a/node/metered-channel/src/lib.rs +++ b/node/metered-channel/src/lib.rs @@ -24,6 +24,7 @@ use std::sync::{ use derive_more::{Add, Display}; mod bounded; +pub mod oneshot; mod unbounded; pub use self::{bounded::*, unbounded::*}; diff --git a/node/metered-channel/src/oneshot.rs b/node/metered-channel/src/oneshot.rs new file mode 100644 index 000000000000..bf1a52682462 --- /dev/null +++ b/node/metered-channel/src/oneshot.rs @@ -0,0 +1,418 @@ +// Copyright 2021 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Metered variant of oneshot channels to be able to extract delays caused by delayed responses. + +use std::{ + ops::Deref, + pin::Pin, + task::{Context, Poll}, + time::{Duration, Instant}, +}; + +use futures::{ + channel::oneshot::{self, Canceled, Cancellation}, + future::{Fuse, FusedFuture}, + prelude::*, +}; +use futures_timer::Delay; + +/// Provides the reason for termination. +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[repr(u8)] +pub enum Reason { + Completion = 1, + Cancellation = 2, + HardTimeout = 3, +} + +/// Obtained measurements by the `Receiver` side of the `MeteredOneshot`. +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct Measurements { + /// Duration between first poll and polling termination. + first_poll_till_end: Duration, + /// Duration starting with creation until polling termination. + creation_till_end: Duration, + /// Reason for resolving the future. + reason: Reason, +} + +impl Measurements { + /// Obtain the duration of a finished or canceled + /// `oneshot` channel. + pub fn duration_since_first_poll(&self) -> &Duration { + &self.first_poll_till_end + } + + /// Obtain the duration of a finished or canceled + /// `oneshot` channel. + pub fn duration_since_creation(&self) -> &Duration { + &self.creation_till_end + } + + /// Obtain the reason to the channel termination. + pub fn reason(&self) -> &Reason { + &self.reason + } +} + +/// Create a new pair of `OneshotMetered{Sender,Receiver}`. +pub fn channel( + name: &'static str, + soft_timeout: Duration, + hard_timeout: Duration, +) -> (MeteredSender, MeteredReceiver) { + let (tx, rx) = oneshot::channel(); + + ( + MeteredSender { name, inner: tx }, + MeteredReceiver { + name, + inner: rx, + soft_timeout, + hard_timeout, + soft_timeout_fut: None, + hard_timeout_fut: None, + first_poll_timestamp: None, + creation_timestamp: Instant::now(), + }, + ) +} + +#[allow(missing_docs)] +#[derive(thiserror::Error, Debug)] +pub enum Error { + #[error("Oneshot was cancelled.")] + Canceled(#[source] Canceled, Measurements), + #[error("Oneshot did not receive a response within {}", Duration::as_secs_f64(.0))] + HardTimeout(Duration, Measurements), +} + +impl Measurable for Error { + fn measurements(&self) -> Measurements { + match self { + Self::Canceled(_, measurements) => measurements.clone(), + Self::HardTimeout(_, measurements) => measurements.clone(), + } + } +} + +/// Oneshot sender, created by [`channel`]. +#[derive(Debug)] +pub struct MeteredSender { + name: &'static str, + inner: oneshot::Sender<(Instant, T)>, +} + +impl MeteredSender { + /// Send a value. + pub fn send(self, t: T) -> Result<(), T> { + let Self { inner, name: _ } = self; + inner.send((Instant::now(), t)).map_err(|(_, t)| t) + } + + /// Poll if the thing is already cancelled. + pub fn poll_canceled(&mut self, ctx: &mut Context<'_>) -> Poll<()> { + self.inner.poll_canceled(ctx) + } + + /// Access the cancellation object. + pub fn cancellation(&mut self) -> Cancellation<'_, (Instant, T)> { + self.inner.cancellation() + } + + /// Check the cancellation state. + pub fn is_canceled(&self) -> bool { + self.inner.is_canceled() + } + + /// Verify if the `receiver` is connected to the `sender` [`Self`]. + pub fn is_connected_to(&self, receiver: &MeteredReceiver) -> bool { + self.inner.is_connected_to(&receiver.inner) + } +} + +/// Oneshot receiver, created by [`channel`]. +#[derive(Debug)] +pub struct MeteredReceiver { + name: &'static str, + inner: oneshot::Receiver<(Instant, T)>, + /// Soft timeout, on expire a warning is printed. + soft_timeout_fut: Option>, + soft_timeout: Duration, + /// Hard timeout, terminating the sender. + hard_timeout_fut: Option, + hard_timeout: Duration, + /// The first time the receiver was polled. + first_poll_timestamp: Option, + creation_timestamp: Instant, +} + +impl MeteredReceiver { + pub fn close(&mut self) { + self.inner.close() + } + + /// Attempts to receive a message outside of the context of a task. + /// + /// A return value of `None` must be considered immediately stale (out of + /// date) unless [`close`](MeteredReceiver::close) has been called first. + /// + /// Returns an error if the sender was dropped. + pub fn try_recv(&mut self) -> Result>, Error> { + match self.inner.try_recv() { + Ok(Some((when, value))) => { + let measurements = self.create_measurement(when, Reason::Completion); + Ok(Some(OutputWithMeasurements { value, measurements })) + }, + Err(e) => { + let measurements = self.create_measurement( + self.first_poll_timestamp.unwrap_or_else(|| Instant::now()), + Reason::Cancellation, + ); + Err(Error::Canceled(e, measurements)) + }, + Ok(None) => Ok(None), + } + } + + /// Helper to create a measurement. + /// + /// `start` determines the first possible time where poll can resolve with `Ready`. + fn create_measurement(&self, start: Instant, reason: Reason) -> Measurements { + let end = Instant::now(); + Measurements { + // negative values are ok, if `send` was called before we poll for the first time. + first_poll_till_end: end - start, + creation_till_end: end - self.creation_timestamp, + reason, + } + } +} + +impl FusedFuture for MeteredReceiver { + fn is_terminated(&self) -> bool { + self.inner.is_terminated() + } +} + +impl Future for MeteredReceiver { + type Output = Result, Error>; + + fn poll( + mut self: Pin<&mut Self>, + ctx: &mut Context<'_>, + ) -> Poll, Error>> { + let first_poll_timestamp = + self.first_poll_timestamp.get_or_insert_with(|| Instant::now()).clone(); + + let soft_timeout = self.soft_timeout.clone(); + let soft_timeout = self + .soft_timeout_fut + .get_or_insert_with(move || Delay::new(soft_timeout).fuse()); + + if Pin::new(soft_timeout).poll(ctx).is_ready() { + tracing::warn!("Oneshot `{name}` exceeded the soft threshold", name = &self.name); + } + + let hard_timeout = self.hard_timeout.clone(); + let hard_timeout = + self.hard_timeout_fut.get_or_insert_with(move || Delay::new(hard_timeout)); + + if Pin::new(hard_timeout).poll(ctx).is_ready() { + let measurements = self.create_measurement(first_poll_timestamp, Reason::HardTimeout); + return Poll::Ready(Err(Error::HardTimeout(self.hard_timeout.clone(), measurements))) + } + + match Pin::new(&mut self.inner).poll(ctx) { + Poll::Pending => Poll::Pending, + Poll::Ready(Err(e)) => { + let measurements = + self.create_measurement(first_poll_timestamp, Reason::Cancellation); + Poll::Ready(Err(Error::Canceled(e, measurements))) + }, + Poll::Ready(Ok((ref sent_at_timestamp, value))) => { + let measurements = + self.create_measurement(sent_at_timestamp.clone(), Reason::Completion); + Poll::Ready(Ok(OutputWithMeasurements:: { value, measurements })) + }, + } + } +} + +/// A dummy trait that allows implementing `measurements` for `Result<_,_>`. +pub trait Measurable { + /// Obtain a set of measurements represented by the `Measurements` type. + fn measurements(&self) -> Measurements; +} + +impl Measurable for Result, Error> { + fn measurements(&self) -> Measurements { + match self { + Err(err) => err.measurements(), + Ok(val) => val.measurements(), + } + } +} + +/// A wrapping type for the actual type `T` that is sent with the +/// oneshot yet allow to attach `Measurements` to it. +/// +/// Implements `AsRef` besides others for easier access to the inner, +/// wrapped type. +#[derive(Clone, Debug)] +pub struct OutputWithMeasurements { + value: T, + measurements: Measurements, +} + +impl Measurable for OutputWithMeasurements { + fn measurements(&self) -> Measurements { + self.measurements.clone() + } +} + +impl OutputWithMeasurements { + /// Converts the wrapper type into it's inner value. + /// + /// `trait Into` cannot be implemented due to conflicts. + pub fn into(self) -> T { + self.value + } +} + +impl AsRef for OutputWithMeasurements { + fn as_ref(&self) -> &T { + &self.value + } +} + +impl Deref for OutputWithMeasurements { + type Target = T; + + fn deref(&self) -> &Self::Target { + &self.value + } +} + +#[cfg(test)] +mod tests { + use assert_matches::assert_matches; + use futures::{executor::ThreadPool, task::SpawnExt}; + + use super::*; + + #[derive(Clone, PartialEq, Eq, Debug)] + struct DummyItem { + vals: [u8; 256], + } + + impl Default for DummyItem { + fn default() -> Self { + Self { vals: [0u8; 256] } + } + } + + fn test_launch(name: &'static str, gen_sender_test: S, gen_receiver_test: R) + where + S: Fn(MeteredSender) -> FS, + R: Fn(MeteredReceiver) -> FR, + FS: Future + Send + 'static, + FR: Future + Send + 'static, + { + let _ = env_logger::builder().is_test(true).filter_level(LevelFilter::Trace).try_init(); + + let pool = ThreadPool::new().unwrap(); + let (tx, rx) = channel(name, Duration::from_secs(1), Duration::from_secs(3)); + futures::executor::block_on(async move { + let handle_receiver = pool.spawn_with_handle(gen_receiver_test(rx)).unwrap(); + let handle_sender = pool.spawn_with_handle(gen_sender_test(tx)).unwrap(); + futures::future::select( + futures::future::join(handle_sender, handle_receiver), + Delay::new(Duration::from_secs(5)), + ) + .await; + }); + } + + use log::LevelFilter; + + #[test] + fn easy() { + test_launch( + "easy", + |tx| async move { + tx.send(DummyItem::default()).unwrap(); + }, + |rx| async move { + let x = rx.await.unwrap(); + let measurements = x.measurements(); + assert_eq!(x.as_ref(), &DummyItem::default()); + dbg!(measurements); + }, + ); + } + + #[test] + fn cancel_by_drop() { + test_launch( + "cancel_by_drop", + |tx| async move { + Delay::new(Duration::from_secs(2)).await; + drop(tx); + }, + |rx| async move { + let result = rx.await; + assert_matches!(result, Err(Error::Canceled(_, _))); + dbg!(result.measurements()); + }, + ); + } + + #[test] + fn starve_till_hard_timeout() { + test_launch( + "starve_till_timeout", + |tx| async move { + Delay::new(Duration::from_secs(4)).await; + let _ = tx.send(DummyItem::default()); + }, + |rx| async move { + let result = rx.await; + assert_matches!(&result, e @ &Err(Error::HardTimeout(_, _)) => { + println!("{:?}", e); + }); + dbg!(result.measurements()); + }, + ); + } + + #[test] + fn starve_till_soft_timeout_then_food() { + test_launch( + "starve_till_soft_timeout_then_food", + |tx| async move { + Delay::new(Duration::from_secs(2)).await; + let _ = tx.send(DummyItem::default()); + }, + |rx| async move { + let result = rx.await; + assert_matches!(result, Ok(_)); + dbg!(result.measurements()); + }, + ); + } +} diff --git a/node/metrics/Cargo.toml b/node/metrics/Cargo.toml index 2146b6525c0d..d12a290c17a1 100644 --- a/node/metrics/Cargo.toml +++ b/node/metrics/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-metrics" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" description = "Subsystem traits and message definitions" diff --git a/node/network/approval-distribution/Cargo.toml b/node/network/approval-distribution/Cargo.toml index c4d620e48b24..cf3c71faf2cf 100644 --- a/node/network/approval-distribution/Cargo.toml +++ b/node/network/approval-distribution/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-approval-distribution" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" @@ -12,7 +12,7 @@ polkadot-node-subsystem-util = { path = "../../subsystem-util" } polkadot-primitives = { path = "../../../primitives" } futures = "0.3.17" -tracing = "0.1.27" +tracing = "0.1.28" [dev-dependencies] sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", features = ["std"] } diff --git a/node/network/availability-distribution/Cargo.toml b/node/network/availability-distribution/Cargo.toml index f54f45b37d91..1f7d89c5ddb3 100644 --- a/node/network/availability-distribution/Cargo.toml +++ b/node/network/availability-distribution/Cargo.toml @@ -1,13 +1,13 @@ [package] name = "polkadot-availability-distribution" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" [dependencies] futures = "0.3.17" -tracing = "0.1.27" -parity-scale-codec = { version = "2.0.0", features = ["std"] } +tracing = "0.1.28" +parity-scale-codec = { version = "2.3.1", features = ["std"] } polkadot-primitives = { path = "../../../primitives" } polkadot-erasure-coding = { path = "../../../erasure-coding" } polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../../subsystem" } diff --git a/node/network/availability-distribution/src/requester/session_cache.rs b/node/network/availability-distribution/src/requester/session_cache.rs index 25b53d25aaa7..5b87d1dcf9ce 100644 --- a/node/network/availability-distribution/src/requester/session_cache.rs +++ b/node/network/availability-distribution/src/requester/session_cache.rs @@ -56,7 +56,7 @@ pub struct SessionInfo { /// validators. pub validator_groups: Vec>, - /// Information about ourself: + /// Information about ourselves: pub our_index: ValidatorIndex, /// Remember to which group we belong, so we won't start fetching chunks for candidates with diff --git a/node/network/availability-recovery/Cargo.toml b/node/network/availability-recovery/Cargo.toml index a7eaf36d8cbf..d23d29a8dd29 100644 --- a/node/network/availability-recovery/Cargo.toml +++ b/node/network/availability-recovery/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-availability-recovery" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" @@ -9,7 +9,7 @@ futures = "0.3.17" lru = "0.6.6" rand = "0.8.3" thiserror = "1.0.26" -tracing = "0.1.27" +tracing = "0.1.28" polkadot-erasure-coding = { path = "../../../erasure-coding" } polkadot-primitives = { path = "../../../primitives" } @@ -17,7 +17,7 @@ polkadot-node-primitives = { path = "../../primitives" } polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../../subsystem" } polkadot-node-subsystem-util = { path = "../../subsystem-util" } polkadot-node-network-protocol = { path = "../../network/protocol" } -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] } sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } [dev-dependencies] diff --git a/node/network/availability-recovery/src/futures_undead.rs b/node/network/availability-recovery/src/futures_undead.rs index 9715916590a6..550f41a9b3cf 100644 --- a/node/network/availability-recovery/src/futures_undead.rs +++ b/node/network/availability-recovery/src/futures_undead.rs @@ -18,7 +18,7 @@ //! futures will still get polled, but will not count towards length. So length will only count //! futures, which are still considered live. //! -//! Usecase: If futures take longer than we would like them too, we maybe able to request the data +//! Usecase: If futures take longer than we would like them too, we may be able to request the data //! from somewhere else as well. We don't really want to cancel the old future, because maybe it //! was almost done, thus we would have wasted time with our impatience. By simply making them //! not count towards length, we can make sure to have enough "live" requests ongoing, while at the diff --git a/node/network/bitfield-distribution/Cargo.toml b/node/network/bitfield-distribution/Cargo.toml index e531e1c9962f..5b951bd8e030 100644 --- a/node/network/bitfield-distribution/Cargo.toml +++ b/node/network/bitfield-distribution/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "polkadot-availability-bitfield-distribution" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" [dependencies] futures = "0.3.17" -tracing = "0.1.27" +tracing = "0.1.28" polkadot-primitives = { path = "../../../primitives" } polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../../subsystem" } polkadot-node-subsystem-util = { path = "../../subsystem-util" } diff --git a/node/network/bridge/Cargo.toml b/node/network/bridge/Cargo.toml index ee39a12bc57f..7758fd7148c7 100644 --- a/node/network/bridge/Cargo.toml +++ b/node/network/bridge/Cargo.toml @@ -1,15 +1,15 @@ [package] name = "polkadot-network-bridge" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" [dependencies] async-trait = "0.1.51" futures = "0.3.17" -tracing = "0.1.27" +tracing = "0.1.28" polkadot-primitives = { path = "../../../primitives" } -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] } sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-consensus = { git = "https://github.com/paritytech/substrate", branch = "master" } polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../../subsystem" } diff --git a/node/network/bridge/src/lib.rs b/node/network/bridge/src/lib.rs index 608a790d2931..0ca63f027fa2 100644 --- a/node/network/bridge/src/lib.rs +++ b/node/network/bridge/src/lib.rs @@ -198,7 +198,7 @@ impl metrics::Metrics for Metrics { prometheus::GaugeVec::new( prometheus::Opts::new( "parachain_desired_peer_count", - "The number of peers that the local node is expected to connect to on a parachain-related peer-set", + "The number of peers that the local node is expected to connect to on a parachain-related peer-set (either including or not including unresolvable authorities, depending on whether `ConnectToValidators` or `ConnectToValidatorsResolved` was used.)", ), &["protocol"] )?, @@ -552,6 +552,27 @@ where network_service = ns; authority_discovery_service = ads; } + NetworkBridgeMessage::ConnectToResolvedValidators { + validator_addrs, + peer_set, + } => { + tracing::trace!( + target: LOG_TARGET, + action = "ConnectToPeers", + peer_set = ?peer_set, + ?validator_addrs, + "Received a resolved validator connection request", + ); + + metrics.note_desired_peer_count(peer_set, validator_addrs.len()); + + let all_addrs = validator_addrs.into_iter().flatten().collect(); + network_service = validator_discovery.on_resolved_request( + all_addrs, + peer_set, + network_service, + ).await; + } NetworkBridgeMessage::NewGossipTopology { our_neighbors, } => { diff --git a/node/network/bridge/src/tests.rs b/node/network/bridge/src/tests.rs index 89551de89c25..40ade08df2b0 100644 --- a/node/network/bridge/src/tests.rs +++ b/node/network/bridge/src/tests.rs @@ -37,7 +37,8 @@ use polkadot_primitives::v1::AuthorityDiscoveryId; use polkadot_subsystem::{ jaeger, messages::{ - ApprovalDistributionMessage, BitfieldDistributionMessage, StatementDistributionMessage, + ApprovalDistributionMessage, BitfieldDistributionMessage, GossipSupportMessage, + StatementDistributionMessage, }, ActiveLeavesUpdate, FromOverseer, LeafStatus, OverseerSignal, }; @@ -337,6 +338,13 @@ async fn assert_sends_validation_event_to_all( ApprovalDistributionMessage::NetworkBridgeUpdateV1(e) ) if e == event.focus().expect("could not focus message") ); + + assert_matches!( + virtual_overseer.recv().await, + AllMessages::GossipSupport( + GossipSupportMessage::NetworkBridgeUpdateV1(e) + ) if e == event.focus().expect("could not focus message") + ); } async fn assert_sends_collation_event_to_all( @@ -1189,7 +1197,7 @@ fn send_messages_to_peers() { fn spread_event_to_subsystems_is_up_to_date() { // Number of subsystems expected to be interested in a network event, // and hence the network event broadcasted to. - const EXPECTED_COUNT: usize = 3; + const EXPECTED_COUNT: usize = 4; let mut cnt = 0_usize; for msg in AllMessages::dispatch_iter(NetworkBridgeEvent::PeerDisconnected(PeerId::random())) { @@ -1219,7 +1227,9 @@ fn spread_event_to_subsystems_is_up_to_date() { AllMessages::ApprovalDistribution(_) => { cnt += 1; }, - AllMessages::GossipSupport(_) => unreachable!("Not interested in network events"), + AllMessages::GossipSupport(_) => { + cnt += 1; + }, AllMessages::DisputeCoordinator(_) => unreachable!("Not interested in network events"), AllMessages::DisputeParticipation(_) => unreachable!("Not interested in network events"), diff --git a/node/network/bridge/src/validator_discovery.rs b/node/network/bridge/src/validator_discovery.rs index 2d6d21668983..7f768044ad50 100644 --- a/node/network/bridge/src/validator_discovery.rs +++ b/node/network/bridge/src/validator_discovery.rs @@ -47,6 +47,44 @@ impl Service { Self { state: Default::default(), _phantom: PhantomData } } + /// Connect to already resolved addresses: + pub async fn on_resolved_request( + &mut self, + newly_requested: HashSet, + peer_set: PeerSet, + mut network_service: N, + ) -> N { + let state = &mut self.state[peer_set]; + // clean up revoked requests + let multiaddr_to_remove: HashSet<_> = + state.previously_requested.difference(&newly_requested).cloned().collect(); + let multiaddr_to_add: HashSet<_> = + newly_requested.difference(&state.previously_requested).cloned().collect(); + state.previously_requested = newly_requested; + + tracing::debug!( + target: LOG_TARGET, + ?peer_set, + added = multiaddr_to_add.len(), + removed = multiaddr_to_remove.len(), + "New ConnectToValidators resolved request", + ); + // ask the network to connect to these nodes and not disconnect + // from them until removed from the set + if let Err(e) = network_service + .add_to_peers_set(peer_set.into_protocol_name(), multiaddr_to_add) + .await + { + tracing::warn!(target: LOG_TARGET, err = ?e, "AuthorityDiscoveryService returned an invalid multiaddress"); + } + // the addresses are known to be valid + let _ = network_service + .remove_from_peers_set(peer_set.into_protocol_name(), multiaddr_to_remove) + .await; + + network_service + } + /// On a new connection request, a peer set update will be issued. /// It will ask the network to connect to the validators and not disconnect /// from them at least until the next request is issued for the same peer set. @@ -59,7 +97,7 @@ impl Service { validator_ids: Vec, peer_set: PeerSet, failed: oneshot::Sender, - mut network_service: N, + network_service: N, mut authority_discovery_service: AD, ) -> (N, AD) { // collect multiaddress of validators @@ -82,39 +120,19 @@ impl Service { } } - let state = &mut self.state[peer_set]; - // clean up revoked requests - let multiaddr_to_remove: HashSet<_> = - state.previously_requested.difference(&newly_requested).cloned().collect(); - let multiaddr_to_add: HashSet<_> = - newly_requested.difference(&state.previously_requested).cloned().collect(); - state.previously_requested = newly_requested; - tracing::debug!( target: LOG_TARGET, ?peer_set, ?requested, - added = multiaddr_to_add.len(), - removed = multiaddr_to_remove.len(), ?failed_to_resolve, "New ConnectToValidators request", ); - // ask the network to connect to these nodes and not disconnect - // from them until removed from the set - if let Err(e) = network_service - .add_to_peers_set(peer_set.into_protocol_name(), multiaddr_to_add) - .await - { - tracing::warn!(target: LOG_TARGET, err = ?e, "AuthorityDiscoveryService returned an invalid multiaddress"); - } - // the addresses are known to be valid - let _ = network_service - .remove_from_peers_set(peer_set.into_protocol_name(), multiaddr_to_remove) - .await; + + let r = self.on_resolved_request(newly_requested, peer_set, network_service).await; let _ = failed.send(failed_to_resolve); - (network_service, authority_discovery_service) + (r, authority_discovery_service) } } diff --git a/node/network/collator-protocol/Cargo.toml b/node/network/collator-protocol/Cargo.toml index d1cbeadc5a36..295a296911db 100644 --- a/node/network/collator-protocol/Cargo.toml +++ b/node/network/collator-protocol/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-collator-protocol" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" @@ -10,7 +10,7 @@ derive_more = "0.99.14" futures = "0.3.17" futures-timer = "3" thiserror = "1.0.26" -tracing = "0.1.27" +tracing = "0.1.28" sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } @@ -30,6 +30,6 @@ assert_matches = "1.4.0" sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", features = ["std"] } sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } -parity-scale-codec = { version = "2.0.0", features = ["std"] } +parity-scale-codec = { version = "2.3.1", features = ["std"] } polkadot-subsystem-testhelpers = { package = "polkadot-node-subsystem-test-helpers", path = "../../subsystem-test-helpers" } diff --git a/node/network/dispute-distribution/Cargo.toml b/node/network/dispute-distribution/Cargo.toml index 0cf8c251ec3a..11443b069a71 100644 --- a/node/network/dispute-distribution/Cargo.toml +++ b/node/network/dispute-distribution/Cargo.toml @@ -1,14 +1,14 @@ [package] name = "polkadot-dispute-distribution" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" [dependencies] futures = "0.3.17" -tracing = "0.1.27" +tracing = "0.1.28" derive_more = "0.99.14" -parity-scale-codec = { version = "2.0.0", features = ["std"] } +parity-scale-codec = { version = "2.3.1", features = ["std"] } polkadot-primitives = { path = "../../../primitives" } polkadot-erasure-coding = { path = "../../../erasure-coding" } polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../../subsystem" } diff --git a/node/network/dispute-distribution/src/error.rs b/node/network/dispute-distribution/src/error.rs index 7b7d7a64238f..00ac06310e8d 100644 --- a/node/network/dispute-distribution/src/error.rs +++ b/node/network/dispute-distribution/src/error.rs @@ -29,7 +29,7 @@ use crate::{sender, LOG_TARGET}; pub enum Error { /// Fatal errors of dispute distribution. Fatal(Fatal), - /// Non fatal errors of dispute distribution. + /// Non-fatal errors of dispute distribution. NonFatal(NonFatal), } diff --git a/node/network/gossip-support/Cargo.toml b/node/network/gossip-support/Cargo.toml index 0087a7d6b089..71df67b3fa9f 100644 --- a/node/network/gossip-support/Cargo.toml +++ b/node/network/gossip-support/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-gossip-support" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" @@ -8,6 +8,7 @@ edition = "2018" sp-application-crypto = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } polkadot-node-network-protocol = { path = "../protocol" } polkadot-node-subsystem = { path = "../../subsystem" } @@ -15,14 +16,18 @@ polkadot-node-subsystem-util = { path = "../../subsystem-util" } polkadot-primitives = { path = "../../../primitives" } futures = "0.3.17" +futures-timer = "3.0.2" rand = { version = "0.8.3", default-features = false } rand_chacha = { version = "0.3.1", default-features = false } -tracing = "0.1.27" +tracing = "0.1.28" [dev-dependencies] sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-consensus-babe = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-tracing = { git = "https://github.com/paritytech/substrate", branch = "master" } polkadot-node-subsystem-test-helpers = { path = "../../subsystem-test-helpers" } assert_matches = "1.4.0" +async-trait = "0.1.51" +lazy_static = "1.4.0" diff --git a/node/network/gossip-support/src/lib.rs b/node/network/gossip-support/src/lib.rs index 52c6ffc165be..0679c3ffe2de 100644 --- a/node/network/gossip-support/src/lib.rs +++ b/node/network/gossip-support/src/lib.rs @@ -24,20 +24,35 @@ //! in this graph will be forwarded to the network bridge with //! the `NetworkBridgeMessage::NewGossipTopology` message. -use futures::{channel::oneshot, FutureExt as _}; -use polkadot_node_network_protocol::peer_set::PeerSet; +use std::{ + collections::HashMap, + fmt, + time::{Duration, Instant}, +}; + +use futures::{channel::oneshot, select, FutureExt as _}; +use futures_timer::Delay; +use rand::{seq::SliceRandom as _, SeedableRng}; +use rand_chacha::ChaCha20Rng; + +use sc_network::Multiaddr; +use sp_application_crypto::{AppKey, Public}; +use sp_keystore::{CryptoStore, SyncCryptoStorePtr}; + +use polkadot_node_network_protocol::{ + authority_discovery::AuthorityDiscovery, peer_set::PeerSet, v1::GossipSuppportNetworkMessage, + PeerId, +}; use polkadot_node_subsystem::{ - messages::{GossipSupportMessage, NetworkBridgeMessage, RuntimeApiMessage, RuntimeApiRequest}, + messages::{ + GossipSupportMessage, NetworkBridgeEvent, NetworkBridgeMessage, RuntimeApiMessage, + RuntimeApiRequest, + }, overseer, ActiveLeavesUpdate, FromOverseer, OverseerSignal, SpawnedSubsystem, SubsystemContext, SubsystemError, }; use polkadot_node_subsystem_util as util; use polkadot_primitives::v1::{AuthorityDiscoveryId, Hash, SessionIndex}; -use rand::{seq::SliceRandom as _, SeedableRng}; -use rand_chacha::ChaCha20Rng; -use sp_application_crypto::{AppKey, Public}; -use sp_keystore::{CryptoStore, SyncCryptoStorePtr}; -use std::time::{Duration, Instant}; #[cfg(test)] mod tests; @@ -56,13 +71,13 @@ const BACKOFF_DURATION: Duration = Duration::from_secs(5); /// https://github.com/paritytech/substrate/blob/fc49802f263529160635471c8a17888846035f5d/client/authority-discovery/src/lib.rs#L88 const LOW_CONNECTIVITY_WARN_DELAY: Duration = Duration::from_secs(600); +/// If connectivity is lower than this in percent, issue warning in logs. +const LOW_CONNECTIVITY_WARN_THRESHOLD: usize = 90; + /// The Gossip Support subsystem. -pub struct GossipSupport { +pub struct GossipSupport { keystore: SyncCryptoStorePtr, -} -#[derive(Default)] -struct State { last_session_index: Option, // Some(timestamp) if we failed to resolve // at least a third of authorities the last time. @@ -75,43 +90,73 @@ struct State { /// potential sequence of failed attempts. It will be cleared once we reached >2/3 /// connectivity. failure_start: Option, + + /// Successfully resolved connections + /// + /// waiting for actual connection. + resolved_authorities: HashMap>, + + /// Actually connected authorities. + connected_authorities: HashMap, + /// By `PeerId`. + /// + /// Needed for efficient handling of disconnect events. + connected_authorities_by_peer_id: HashMap, + /// Authority discovery service. + authority_discovery: AD, } -impl GossipSupport { +impl GossipSupport +where + AD: AuthorityDiscovery, +{ /// Create a new instance of the [`GossipSupport`] subsystem. - pub fn new(keystore: SyncCryptoStorePtr) -> Self { - Self { keystore } - } - - async fn run(self, ctx: Context) - where - Context: SubsystemContext, - Context: overseer::SubsystemContext, - { - let mut state = State::default(); - self.run_inner(ctx, &mut state).await; + pub fn new(keystore: SyncCryptoStorePtr, authority_discovery: AD) -> Self { + Self { + keystore, + last_session_index: None, + last_failure: None, + failure_start: None, + resolved_authorities: HashMap::new(), + connected_authorities: HashMap::new(), + connected_authorities_by_peer_id: HashMap::new(), + authority_discovery, + } } - async fn run_inner(self, mut ctx: Context, state: &mut State) + async fn run(mut self, mut ctx: Context) -> Self where Context: SubsystemContext, Context: overseer::SubsystemContext, { - let Self { keystore } = self; + fn get_connectivity_check_delay() -> Delay { + Delay::new(LOW_CONNECTIVITY_WARN_DELAY) + } + let mut next_connectivity_check = get_connectivity_check_delay().fuse(); loop { - let message = match ctx.recv().await { - Ok(message) => message, - Err(e) => { - tracing::debug!( - target: LOG_TARGET, - err = ?e, - "Failed to receive a message from Overseer, exiting", - ); - return - }, - }; + let message = select!( + _ = next_connectivity_check => { + self.check_connectivity(); + next_connectivity_check = get_connectivity_check_delay().fuse(); + continue + } + result = ctx.recv().fuse() => + match result { + Ok(message) => message, + Err(e) => { + tracing::debug!( + target: LOG_TARGET, + err = ?e, + "Failed to receive a message from Overseer, exiting", + ); + return self + }, + } + ); match message { - FromOverseer::Communication { .. } => {}, + FromOverseer::Communication { + msg: GossipSupportMessage::NetworkBridgeUpdateV1(ev), + } => self.handle_connect_disconnect(ev), FromOverseer::Signal(OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { activated, .. @@ -119,15 +164,189 @@ impl GossipSupport { tracing::trace!(target: LOG_TARGET, "active leaves signal"); let leaves = activated.into_iter().map(|a| a.hash); - if let Err(e) = state.handle_active_leaves(&mut ctx, &keystore, leaves).await { + if let Err(e) = self.handle_active_leaves(&mut ctx, leaves).await { tracing::debug!(target: LOG_TARGET, error = ?e); } }, FromOverseer::Signal(OverseerSignal::BlockFinalized(_hash, _number)) => {}, - FromOverseer::Signal(OverseerSignal::Conclude) => return, + FromOverseer::Signal(OverseerSignal::Conclude) => return self, } } } + + /// 1. Determine if the current session index has changed. + /// 2. If it has, determine relevant validators + /// and issue a connection request. + async fn handle_active_leaves( + &mut self, + ctx: &mut Context, + leaves: impl Iterator, + ) -> Result<(), util::Error> + where + Context: SubsystemContext, + Context: overseer::SubsystemContext, + { + for leaf in leaves { + let current_index = + util::request_session_index_for_child(leaf, ctx.sender()).await.await??; + let since_failure = self.last_failure.map(|i| i.elapsed()).unwrap_or_default(); + let force_request = since_failure >= BACKOFF_DURATION; + let leaf_session = Some((current_index, leaf)); + let maybe_new_session = match self.last_session_index { + Some(i) if current_index <= i => None, + _ => leaf_session, + }; + + let maybe_issue_connection = + if force_request { leaf_session } else { maybe_new_session }; + + if let Some((session_index, relay_parent)) = maybe_issue_connection { + let is_new_session = maybe_new_session.is_some(); + if is_new_session { + tracing::debug!( + target: LOG_TARGET, + %session_index, + "New session detected", + ); + self.last_session_index = Some(session_index); + } + + let all_authorities = determine_relevant_authorities(ctx, relay_parent).await?; + let our_index = ensure_i_am_an_authority(&self.keystore, &all_authorities).await?; + let other_authorities = { + let mut authorities = all_authorities.clone(); + authorities.swap_remove(our_index); + authorities + }; + + self.issue_connection_request(ctx, other_authorities).await; + + if is_new_session { + update_gossip_topology(ctx, our_index, all_authorities, relay_parent).await?; + } + } + } + + Ok(()) + } + + async fn issue_connection_request( + &mut self, + ctx: &mut Context, + authorities: Vec, + ) where + Context: SubsystemContext, + Context: overseer::SubsystemContext, + { + let num = authorities.len(); + let mut validator_addrs = Vec::with_capacity(authorities.len()); + let mut failures = 0; + let mut resolved = HashMap::with_capacity(authorities.len()); + for authority in authorities { + if let Some(addrs) = + self.authority_discovery.get_addresses_by_authority_id(authority.clone()).await + { + validator_addrs.push(addrs.clone()); + resolved.insert(authority, addrs); + } else { + failures += 1; + tracing::debug!( + target: LOG_TARGET, + "Couldn't resolve addresses of authority: {:?}", + authority + ); + } + } + self.resolved_authorities = resolved; + tracing::debug!(target: LOG_TARGET, %num, "Issuing a connection request"); + + ctx.send_message(NetworkBridgeMessage::ConnectToResolvedValidators { + validator_addrs, + peer_set: PeerSet::Validation, + }) + .await; + + // issue another request for the same session + // if at least a third of the authorities were not resolved. + if 3 * failures >= num { + let timestamp = Instant::now(); + match self.failure_start { + None => self.failure_start = Some(timestamp), + Some(first) if first.elapsed() >= LOW_CONNECTIVITY_WARN_DELAY => { + tracing::warn!( + target: LOG_TARGET, + connected = ?(num - failures), + target = ?num, + "Low connectivity - authority lookup failed for too many validators." + ); + }, + Some(_) => { + tracing::debug!( + target: LOG_TARGET, + connected = ?(num - failures), + target = ?num, + "Low connectivity (due to authority lookup failures) - expected on startup." + ); + }, + } + self.last_failure = Some(timestamp); + } else { + self.last_failure = None; + self.failure_start = None; + }; + } + + fn handle_connect_disconnect(&mut self, ev: NetworkBridgeEvent) { + match ev { + NetworkBridgeEvent::PeerConnected(peer_id, _, o_authority) => { + if let Some(authority) = o_authority { + self.connected_authorities.insert(authority.clone(), peer_id); + self.connected_authorities_by_peer_id.insert(peer_id, authority); + } + }, + NetworkBridgeEvent::PeerDisconnected(peer_id) => { + if let Some(authority) = self.connected_authorities_by_peer_id.remove(&peer_id) { + self.connected_authorities.remove(&authority); + } + }, + NetworkBridgeEvent::OurViewChange(_) => {}, + NetworkBridgeEvent::PeerViewChange(_, _) => {}, + NetworkBridgeEvent::NewGossipTopology(_) => {}, + NetworkBridgeEvent::PeerMessage(_, v) => { + match v {}; + }, + } + } + + /// Check connectivity and report on it in logs. + fn check_connectivity(&mut self) { + let absolute_connected = self.connected_authorities.len(); + let absolute_resolved = self.resolved_authorities.len(); + let connected_ratio = + (100 * absolute_connected).checked_div(absolute_resolved).unwrap_or(100); + let unconnected_authorities = self + .resolved_authorities + .iter() + .filter(|(a, _)| !self.connected_authorities.contains_key(a)); + // TODO: Make that warning once connectivity issues are fixed (no point in warning, if + // we already know it is broken. + // https://github.com/paritytech/polkadot/issues/3921 + if connected_ratio <= LOW_CONNECTIVITY_WARN_THRESHOLD { + tracing::debug!( + target: LOG_TARGET, + "Connectivity seems low, we are only connected to {}% of available validators (see debug logs for details)", connected_ratio + ); + } + let pretty = PrettyAuthorities(unconnected_authorities); + tracing::debug!( + target: LOG_TARGET, + ?connected_ratio, + ?absolute_connected, + ?absolute_resolved, + unconnected_authorities = %pretty, + "Connectivity Report" + ); + } } async fn determine_relevant_authorities( @@ -161,22 +380,6 @@ async fn ensure_i_am_an_authority( Err(util::Error::NotAValidator) } -/// A helper function for making a `ConnectToValidators` request. -async fn connect_to_authorities( - ctx: &mut Context, - validator_ids: Vec, - peer_set: PeerSet, -) -> oneshot::Receiver -where - Context: SubsystemContext, - Context: overseer::SubsystemContext, -{ - let (failed, failed_rx) = oneshot::channel(); - ctx.send_message(NetworkBridgeMessage::ConnectToValidators { validator_ids, peer_set, failed }) - .await; - failed_rx -} - /// We partition the list of all sorted `authorities` into `sqrt(len)` groups of `sqrt(len)` size /// and form a matrix where each validator is connected to all validators in its row and column. /// This is similar to `[web3]` research proposed topology, except for the groups are not parachain @@ -253,119 +456,11 @@ fn matrix_neighbors(our_index: usize, len: usize) -> impl Iterator row_neighbors.chain(column_neighbors).filter(move |i| *i != our_index) } -impl State { - /// 1. Determine if the current session index has changed. - /// 2. If it has, determine relevant validators - /// and issue a connection request. - async fn handle_active_leaves( - &mut self, - ctx: &mut Context, - keystore: &SyncCryptoStorePtr, - leaves: impl Iterator, - ) -> Result<(), util::Error> - where - Context: SubsystemContext, - Context: overseer::SubsystemContext, - { - for leaf in leaves { - let current_index = - util::request_session_index_for_child(leaf, ctx.sender()).await.await??; - let since_failure = self.last_failure.map(|i| i.elapsed()).unwrap_or_default(); - let force_request = since_failure >= BACKOFF_DURATION; - let leaf_session = Some((current_index, leaf)); - let maybe_new_session = match self.last_session_index { - Some(i) if current_index <= i => None, - _ => leaf_session, - }; - - let maybe_issue_connection = - if force_request { leaf_session } else { maybe_new_session }; - - if let Some((session_index, relay_parent)) = maybe_issue_connection { - let is_new_session = maybe_new_session.is_some(); - if is_new_session { - tracing::debug!( - target: LOG_TARGET, - %session_index, - "New session detected", - ); - } - - let all_authorities = determine_relevant_authorities(ctx, relay_parent).await?; - let our_index = ensure_i_am_an_authority(keystore, &all_authorities).await?; - let other_authorities = { - let mut authorities = all_authorities.clone(); - authorities.swap_remove(our_index); - authorities - }; - - self.issue_connection_request(ctx, other_authorities).await?; - - if is_new_session { - self.last_session_index = Some(session_index); - update_gossip_topology(ctx, our_index, all_authorities, relay_parent).await?; - } - } - } - - Ok(()) - } - - async fn issue_connection_request( - &mut self, - ctx: &mut Context, - authorities: Vec, - ) -> Result<(), util::Error> - where - Context: SubsystemContext, - Context: overseer::SubsystemContext, - { - let num = authorities.len(); - tracing::debug!(target: LOG_TARGET, %num, "Issuing a connection request"); - - let failures = connect_to_authorities(ctx, authorities, PeerSet::Validation).await; - - // we await for the request to be processed - // this is fine, it should take much less time than one session - let failures = failures.await.unwrap_or(num); - - // issue another request for the same session - // if at least a third of the authorities were not resolved - if failures >= num / 3 { - let timestamp = Instant::now(); - match self.failure_start { - None => self.failure_start = Some(timestamp), - Some(first) if first.elapsed() >= LOW_CONNECTIVITY_WARN_DELAY => { - tracing::warn!( - target: LOG_TARGET, - connected = ?(num - failures), - target = ?num, - "Low connectivity - authority lookup failed for too many validators." - ); - }, - Some(_) => { - tracing::debug!( - target: LOG_TARGET, - connected = ?(num - failures), - target = ?num, - "Low connectivity (due to authority lookup failures) - expected on startup." - ); - }, - } - self.last_failure = Some(timestamp); - } else { - self.last_failure = None; - self.failure_start = None; - }; - - Ok(()) - } -} - -impl overseer::Subsystem for GossipSupport +impl overseer::Subsystem for GossipSupport where Context: SubsystemContext, Context: overseer::SubsystemContext, + AD: AuthorityDiscovery + Clone, { fn start(self, ctx: Context) -> SpawnedSubsystem { let future = self.run(ctx).map(|_| Ok(())).boxed(); @@ -373,3 +468,28 @@ where SpawnedSubsystem { name: "gossip-support-subsystem", future } } } + +/// Helper struct to get a nice rendering of unreachable authorities. +struct PrettyAuthorities(I); + +impl<'a, I> fmt::Display for PrettyAuthorities +where + I: Iterator)> + Clone, +{ + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let mut authorities = self.0.clone().peekable(); + if authorities.peek().is_none() { + write!(f, "None")?; + } else { + write!(f, "\n")?; + } + for (authority, addrs) in authorities { + write!(f, "{}:\n", authority)?; + for addr in addrs { + write!(f, " {}\n", addr)?; + } + write!(f, "\n")?; + } + Ok(()) + } +} diff --git a/node/network/gossip-support/src/tests.rs b/node/network/gossip-support/src/tests.rs index 1ca76728adb9..1220f1a5461f 100644 --- a/node/network/gossip-support/src/tests.rs +++ b/node/network/gossip-support/src/tests.rs @@ -16,7 +16,17 @@ //! Unit tests for Gossip Support Subsystem. -use super::*; +use std::{sync::Arc, time::Duration}; + +use assert_matches::assert_matches; +use async_trait::async_trait; +use futures::{executor, future, Future}; +use lazy_static::lazy_static; + +use sc_network::multiaddr::Protocol; +use sp_consensus_babe::{AllowedSlots, BabeEpochConfiguration, Epoch as BabeEpoch}; +use sp_keyring::Sr25519Keyring; + use polkadot_node_subsystem::{ jaeger, messages::{AllMessages, RuntimeApiMessage, RuntimeApiRequest}, @@ -24,47 +34,124 @@ use polkadot_node_subsystem::{ }; use polkadot_node_subsystem_test_helpers as test_helpers; use polkadot_node_subsystem_util::TimeoutExt as _; -use sp_consensus_babe::{AllowedSlots, BabeEpochConfiguration, Epoch as BabeEpoch}; -use sp_keyring::Sr25519Keyring; use test_helpers::mock::make_ferdie_keystore; -use assert_matches::assert_matches; -use futures::{executor, future, Future}; -use std::{sync::Arc, time::Duration}; +use super::*; + +lazy_static! { + static ref MOCK_AUTHORITY_DISCOVERY: MockAuthorityDiscovery = MockAuthorityDiscovery::new(); + static ref AUTHORITIES: Vec = { + let mut authorities = OTHER_AUTHORITIES.clone(); + authorities.push(Sr25519Keyring::Ferdie.public().into()); + authorities + }; + static ref OTHER_AUTHORITIES: Vec = vec![ + Sr25519Keyring::Alice.public().into(), + Sr25519Keyring::Bob.public().into(), + Sr25519Keyring::Charlie.public().into(), + Sr25519Keyring::Eve.public().into(), + Sr25519Keyring::One.public().into(), + Sr25519Keyring::Two.public().into(), + ]; + static ref NEIGHBORS: Vec = vec![ + Sr25519Keyring::Two.public().into(), + Sr25519Keyring::Charlie.public().into(), + Sr25519Keyring::Eve.public().into(), + ]; +} type VirtualOverseer = test_helpers::TestSubsystemContextHandle; -fn test_harness>( - mut state: State, +#[derive(Debug, Clone)] +struct MockAuthorityDiscovery { + addrs: HashMap>, + authorities: HashMap, +} + +impl MockAuthorityDiscovery { + fn new() -> Self { + let authorities: HashMap<_, _> = + AUTHORITIES.clone().into_iter().map(|a| (PeerId::random(), a)).collect(); + let addrs = authorities + .clone() + .into_iter() + .map(|(p, a)| { + let multiaddr = Multiaddr::empty().with(Protocol::P2p(p.into())); + (a, vec![multiaddr]) + }) + .collect(); + Self { addrs, authorities } + } +} + +#[async_trait] +impl AuthorityDiscovery for MockAuthorityDiscovery { + async fn get_addresses_by_authority_id( + &mut self, + authority: polkadot_primitives::v1::AuthorityDiscoveryId, + ) -> Option> { + self.addrs.get(&authority).cloned() + } + async fn get_authority_id_by_peer_id( + &mut self, + peer_id: polkadot_node_network_protocol::PeerId, + ) -> Option { + self.authorities.get(&peer_id).cloned() + } +} + +async fn get_other_authorities_addrs() -> Vec> { + let mut addrs = Vec::with_capacity(OTHER_AUTHORITIES.len()); + let mut discovery = MOCK_AUTHORITY_DISCOVERY.clone(); + for authority in OTHER_AUTHORITIES.iter().cloned() { + if let Some(addr) = discovery.get_addresses_by_authority_id(authority).await { + addrs.push(addr); + } + } + addrs +} + +async fn get_other_authorities_addrs_map() -> HashMap> { + let mut addrs = HashMap::with_capacity(OTHER_AUTHORITIES.len()); + let mut discovery = MOCK_AUTHORITY_DISCOVERY.clone(); + for authority in OTHER_AUTHORITIES.iter().cloned() { + if let Some(addr) = discovery.get_addresses_by_authority_id(authority.clone()).await { + addrs.insert(authority, addr); + } + } + addrs +} + +fn make_subsystem() -> GossipSupport { + GossipSupport::new(make_ferdie_keystore(), MOCK_AUTHORITY_DISCOVERY.clone()) +} + +fn test_harness, AD: AuthorityDiscovery>( + subsystem: GossipSupport, test_fn: impl FnOnce(VirtualOverseer) -> T, -) -> State { +) -> GossipSupport { let pool = sp_core::testing::TaskExecutor::new(); let (context, virtual_overseer) = test_helpers::make_subsystem_context(pool.clone()); - let keystore = make_ferdie_keystore(); - let subsystem = GossipSupport::new(keystore); - { - let subsystem = subsystem.run_inner(context, &mut state); - - let test_fut = test_fn(virtual_overseer); - - futures::pin_mut!(test_fut); - futures::pin_mut!(subsystem); - - executor::block_on(future::join( - async move { - let mut overseer = test_fut.await; - overseer - .send(FromOverseer::Signal(OverseerSignal::Conclude)) - .timeout(TIMEOUT) - .await - .expect("Conclude send timeout"); - }, - subsystem, - )); - } - - state + let subsystem = subsystem.run(context); + + let test_fut = test_fn(virtual_overseer); + + futures::pin_mut!(test_fut); + futures::pin_mut!(subsystem); + + let (_, subsystem) = executor::block_on(future::join( + async move { + let mut overseer = test_fut.await; + overseer + .send(FromOverseer::Signal(OverseerSignal::Conclude)) + .timeout(TIMEOUT) + .await + .expect("Conclude send timeout"); + }, + subsystem, + )); + subsystem } const TIMEOUT: Duration = Duration::from_millis(100); @@ -91,32 +178,6 @@ async fn overseer_recv(overseer: &mut VirtualOverseer) -> AllMessages { msg } -fn authorities() -> Vec { - let mut authorities = other_authorities(); - authorities.push(Sr25519Keyring::Ferdie.public().into()); - authorities -} - -// Authorities other than ourselves: -fn other_authorities() -> Vec { - vec![ - Sr25519Keyring::Alice.public().into(), - Sr25519Keyring::Bob.public().into(), - Sr25519Keyring::Charlie.public().into(), - Sr25519Keyring::Eve.public().into(), - Sr25519Keyring::One.public().into(), - Sr25519Keyring::Two.public().into(), - ] -} - -fn neighbors() -> Vec { - vec![ - Sr25519Keyring::Two.public().into(), - Sr25519Keyring::Charlie.public().into(), - Sr25519Keyring::Eve.public().into(), - ] -} - async fn test_neighbors(overseer: &mut VirtualOverseer) { assert_matches!( overseer_recv(overseer).await, @@ -145,7 +206,7 @@ async fn test_neighbors(overseer: &mut VirtualOverseer) { }) => { let mut got: Vec<_> = our_neighbors.into_iter().collect(); got.sort(); - assert_eq!(got, neighbors()); + assert_eq!(got, NEIGHBORS.clone()); } ); } @@ -153,7 +214,7 @@ async fn test_neighbors(overseer: &mut VirtualOverseer) { #[test] fn issues_a_connection_request_on_new_session() { let hash = Hash::repeat_byte(0xAA); - let state = test_harness(State::default(), |mut virtual_overseer| async move { + let state = test_harness(make_subsystem(), |mut virtual_overseer| async move { let overseer = &mut virtual_overseer; overseer_signal_active_leaves(overseer, hash).await; assert_matches!( @@ -173,20 +234,18 @@ fn issues_a_connection_request_on_new_session() { RuntimeApiRequest::Authorities(tx), )) => { assert_eq!(relay_parent, hash); - tx.send(Ok(authorities())).unwrap(); + tx.send(Ok(AUTHORITIES.clone())).unwrap(); } ); assert_matches!( overseer_recv(overseer).await, - AllMessages::NetworkBridge(NetworkBridgeMessage::ConnectToValidators { - validator_ids, + AllMessages::NetworkBridge(NetworkBridgeMessage::ConnectToResolvedValidators { + validator_addrs, peer_set, - failed, }) => { - assert_eq!(validator_ids, other_authorities()); + assert_eq!(validator_addrs, get_other_authorities_addrs().await); assert_eq!(peer_set, PeerSet::Validation); - failed.send(0).unwrap(); } ); @@ -241,20 +300,18 @@ fn issues_a_connection_request_on_new_session() { RuntimeApiRequest::Authorities(tx), )) => { assert_eq!(relay_parent, hash); - tx.send(Ok(authorities())).unwrap(); + tx.send(Ok(AUTHORITIES.clone())).unwrap(); } ); assert_matches!( overseer_recv(overseer).await, - AllMessages::NetworkBridge(NetworkBridgeMessage::ConnectToValidators { - validator_ids, + AllMessages::NetworkBridge(NetworkBridgeMessage::ConnectToResolvedValidators { + validator_addrs, peer_set, - failed, }) => { - assert_eq!(validator_ids, other_authorities()); + assert_eq!(validator_addrs, get_other_authorities_addrs().await); assert_eq!(peer_set, PeerSet::Validation); - failed.send(0).unwrap(); } ); @@ -266,54 +323,97 @@ fn issues_a_connection_request_on_new_session() { assert!(state.last_failure.is_none()); } +#[test] +fn test_log_output() { + sp_tracing::try_init_simple(); + let alice: AuthorityDiscoveryId = Sr25519Keyring::Alice.public().into(); + let bob = Sr25519Keyring::Bob.public().into(); + let unconnected_authorities = { + let mut m = HashMap::new(); + let peer_id = PeerId::random(); + let addr = Multiaddr::empty().with(Protocol::P2p(peer_id.into())); + let addrs = vec![addr.clone(), addr]; + m.insert(alice, addrs); + let peer_id = PeerId::random(); + let addr = Multiaddr::empty().with(Protocol::P2p(peer_id.into())); + let addrs = vec![addr.clone(), addr]; + m.insert(bob, addrs); + m + }; + let pretty = PrettyAuthorities(unconnected_authorities.iter()); + tracing::debug!( + target: LOG_TARGET, + unconnected_authorities = %pretty, + "Connectivity Report" + ); +} + #[test] fn issues_a_connection_request_when_last_request_was_mostly_unresolved() { let hash = Hash::repeat_byte(0xAA); - let mut state = test_harness(State::default(), |mut virtual_overseer| async move { - let overseer = &mut virtual_overseer; - overseer_signal_active_leaves(overseer, hash).await; - assert_matches!( - overseer_recv(overseer).await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - relay_parent, - RuntimeApiRequest::SessionIndexForChild(tx), - )) => { - assert_eq!(relay_parent, hash); - tx.send(Ok(1)).unwrap(); - } - ); - assert_matches!( - overseer_recv(overseer).await, - AllMessages::RuntimeApi(RuntimeApiMessage::Request( - relay_parent, - RuntimeApiRequest::Authorities(tx), - )) => { - assert_eq!(relay_parent, hash); - tx.send(Ok(authorities())).unwrap(); - } - ); - - assert_matches!( - overseer_recv(overseer).await, - AllMessages::NetworkBridge(NetworkBridgeMessage::ConnectToValidators { - validator_ids, - peer_set, - failed, - }) => { - assert_eq!(validator_ids, other_authorities()); - assert_eq!(peer_set, PeerSet::Validation); - failed.send(2).unwrap(); - } - ); - - test_neighbors(overseer).await; - - virtual_overseer - }); + let mut state = make_subsystem(); + // There will be two lookup failures: + let alice = Sr25519Keyring::Alice.public().into(); + let bob = Sr25519Keyring::Bob.public().into(); + let alice_addr = state.authority_discovery.addrs.remove(&alice); + state.authority_discovery.addrs.remove(&bob); + + let mut state = { + let alice = alice.clone(); + let bob = bob.clone(); + + test_harness(state, |mut virtual_overseer| async move { + let overseer = &mut virtual_overseer; + overseer_signal_active_leaves(overseer, hash).await; + assert_matches!( + overseer_recv(overseer).await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + relay_parent, + RuntimeApiRequest::SessionIndexForChild(tx), + )) => { + assert_eq!(relay_parent, hash); + tx.send(Ok(1)).unwrap(); + } + ); + assert_matches!( + overseer_recv(overseer).await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + relay_parent, + RuntimeApiRequest::Authorities(tx), + )) => { + assert_eq!(relay_parent, hash); + tx.send(Ok(AUTHORITIES.clone())).unwrap(); + } + ); + + assert_matches!( + overseer_recv(overseer).await, + AllMessages::NetworkBridge(NetworkBridgeMessage::ConnectToResolvedValidators { + mut validator_addrs, + peer_set, + }) => { + let mut expected = get_other_authorities_addrs_map().await; + expected.remove(&alice); + expected.remove(&bob); + let mut expected: Vec> = expected.into_iter().map(|(_,v)| v).collect(); + validator_addrs.sort(); + expected.sort(); + assert_eq!(validator_addrs, expected); + assert_eq!(peer_set, PeerSet::Validation); + } + ); + + test_neighbors(overseer).await; + + virtual_overseer + }) + }; assert_eq!(state.last_session_index, Some(1)); assert!(state.last_failure.is_some()); state.last_failure = state.last_failure.and_then(|i| i.checked_sub(BACKOFF_DURATION)); + // One error less: + state.authority_discovery.addrs.insert(alice, alice_addr.unwrap()); let hash = Hash::repeat_byte(0xBB); let state = test_harness(state, |mut virtual_overseer| async move { @@ -336,20 +436,23 @@ fn issues_a_connection_request_when_last_request_was_mostly_unresolved() { RuntimeApiRequest::Authorities(tx), )) => { assert_eq!(relay_parent, hash); - tx.send(Ok(authorities())).unwrap(); + tx.send(Ok(AUTHORITIES.clone())).unwrap(); } ); assert_matches!( overseer_recv(overseer).await, - AllMessages::NetworkBridge(NetworkBridgeMessage::ConnectToValidators { - validator_ids, + AllMessages::NetworkBridge(NetworkBridgeMessage::ConnectToResolvedValidators { + mut validator_addrs, peer_set, - failed, }) => { - assert_eq!(validator_ids, other_authorities()); + let mut expected = get_other_authorities_addrs_map().await; + expected.remove(&bob); + let mut expected: Vec> = expected.into_iter().map(|(_,v)| v).collect(); + expected.sort(); + validator_addrs.sort(); + assert_eq!(validator_addrs, expected); assert_eq!(peer_set, PeerSet::Validation); - failed.send(1).unwrap(); } ); diff --git a/node/network/protocol/Cargo.toml b/node/network/protocol/Cargo.toml index f3c82abd7f11..9046c232fca4 100644 --- a/node/network/protocol/Cargo.toml +++ b/node/network/protocol/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-network-protocol" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" description = "Primitives types for the Node-side" @@ -10,7 +10,7 @@ async-trait = "0.1.51" polkadot-primitives = { path = "../../../primitives" } polkadot-node-primitives = { path = "../../primitives" } polkadot-node-jaeger = { path = "../../jaeger" } -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] } sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master" } strum = { version = "0.21", features = ["derive"] } diff --git a/node/network/protocol/src/lib.rs b/node/network/protocol/src/lib.rs index 1ed915f1879d..e0fb2d2849d1 100644 --- a/node/network/protocol/src/lib.rs +++ b/node/network/protocol/src/lib.rs @@ -294,6 +294,8 @@ pub mod v1 { UncheckedSignedFullStatement, }; + use crate::WrongVariant; + /// Network messages used by the bitfield distribution subsystem. #[derive(Debug, Clone, Encode, Decode, PartialEq, Eq)] pub enum BitfieldDistributionMessage { @@ -386,6 +388,10 @@ pub mod v1 { Approvals(Vec), } + /// Dummy network message type, so we will receive connect/disconnect events. + #[derive(Debug, Clone, PartialEq, Eq)] + pub enum GossipSuppportNetworkMessage {} + /// Network messages used by the collator protocol subsystem #[derive(Debug, Clone, Encode, Decode, PartialEq, Eq)] pub enum CollatorProtocolMessage { @@ -420,6 +426,20 @@ pub mod v1 { impl_try_from!(ValidationProtocol, StatementDistribution, StatementDistributionMessage); impl_try_from!(ValidationProtocol, ApprovalDistribution, ApprovalDistributionMessage); + impl TryFrom for GossipSuppportNetworkMessage { + type Error = WrongVariant; + fn try_from(_: ValidationProtocol) -> Result { + Err(WrongVariant) + } + } + + impl<'a> TryFrom<&'a ValidationProtocol> for &'a GossipSuppportNetworkMessage { + type Error = WrongVariant; + fn try_from(_: &'a ValidationProtocol) -> Result { + Err(WrongVariant) + } + } + /// All network messages on the collation peer-set. #[derive(Debug, Clone, Encode, Decode, PartialEq, Eq)] pub enum CollationProtocol { diff --git a/node/network/statement-distribution/Cargo.toml b/node/network/statement-distribution/Cargo.toml index 82cec326a5c5..5573363956f7 100644 --- a/node/network/statement-distribution/Cargo.toml +++ b/node/network/statement-distribution/Cargo.toml @@ -1,13 +1,13 @@ [package] name = "polkadot-statement-distribution" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] description = "Statement Distribution Subsystem" edition = "2018" [dependencies] futures = "0.3.17" -tracing = "0.1.27" +tracing = "0.1.28" polkadot-primitives = { path = "../../../primitives" } sp-staking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } @@ -17,7 +17,7 @@ polkadot-node-subsystem-util = { path = "../../subsystem-util" } polkadot-node-network-protocol = { path = "../../network/protocol" } arrayvec = "0.5.2" indexmap = "1.7.0" -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] } derive_more = "0.99.11" thiserror = "1.0.26" diff --git a/node/network/statement-distribution/src/error.rs b/node/network/statement-distribution/src/error.rs index 4eb28eedc0ed..819440e6f29c 100644 --- a/node/network/statement-distribution/src/error.rs +++ b/node/network/statement-distribution/src/error.rs @@ -39,7 +39,7 @@ pub type FatalResult = std::result::Result; pub enum Error { /// Fatal errors of dispute distribution. Fatal(Fatal), - /// Non fatal errors of dispute distribution. + /// Non-fatal errors of dispute distribution. NonFatal(NonFatal), } diff --git a/node/network/statement-distribution/src/lib.rs b/node/network/statement-distribution/src/lib.rs index ffe54342a13b..e2c08c8216bc 100644 --- a/node/network/statement-distribution/src/lib.rs +++ b/node/network/statement-distribution/src/lib.rs @@ -105,7 +105,7 @@ const MAX_LARGE_STATEMENTS_PER_SENDER: usize = 20; /// The statement distribution subsystem. pub struct StatementDistribution { - /// Pointer to a keystore, which is required for determining this nodes validator index. + /// Pointer to a keystore, which is required for determining this node's validator index. keystore: SyncCryptoStorePtr, /// Receiver for incoming large statement requests. req_receiver: Option>, diff --git a/node/overseer/Cargo.toml b/node/overseer/Cargo.toml index bef2d141415e..5345fb031811 100644 --- a/node/overseer/Cargo.toml +++ b/node/overseer/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-overseer" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" @@ -16,8 +16,7 @@ polkadot-node-subsystem-types = { path = "../subsystem-types" } polkadot-node-metrics = { path = "../metrics" } polkadot-primitives = { path = "../../primitives" } polkadot-overseer-gen = { path = "./overseer-gen" } -polkadot-overseer-all-subsystems-gen = { path = "./all-subsystems-gen" } -tracing = "0.1.27" +tracing = "0.1.28" lru = "0.6" parity-util-mem = { version = ">= 0.10.1", default-features = false } diff --git a/node/overseer/all-subsystems-gen/Cargo.toml b/node/overseer/all-subsystems-gen/Cargo.toml deleted file mode 100644 index e33377db3df8..000000000000 --- a/node/overseer/all-subsystems-gen/Cargo.toml +++ /dev/null @@ -1,17 +0,0 @@ -[package] -name = "polkadot-overseer-all-subsystems-gen" -version = "0.9.9" -authors = ["Parity Technologies "] -edition = "2018" -description = "Small proc macro to create mocking level iface type helpers" - -[lib] -proc-macro = true - -[dependencies] -syn = { version = "1.0.76", features = ["full", "extra-traits"] } -quote = "1.0.9" -proc-macro2 = "1.0.24" - -[dev-dependencies] -trybuild = "1.0.45" diff --git a/node/overseer/all-subsystems-gen/src/lib.rs b/node/overseer/all-subsystems-gen/src/lib.rs deleted file mode 100644 index e524985f4543..000000000000 --- a/node/overseer/all-subsystems-gen/src/lib.rs +++ /dev/null @@ -1,222 +0,0 @@ -// Copyright 2021 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -use std::collections::HashSet; - -use proc_macro2::TokenStream; -use quote::quote; - -use syn::{parse2, Error, GenericParam, Ident, Result, Type}; - -#[proc_macro_derive(AllSubsystemsGen)] -pub fn subsystems_gen(item: proc_macro::TokenStream) -> proc_macro::TokenStream { - let item: TokenStream = item.into(); - impl_subsystems_gen(item).unwrap_or_else(|err| err.to_compile_error()).into() -} - -fn impl_subsystems_gen(item: TokenStream) -> Result { - let span = proc_macro2::Span::call_site(); - let ds = parse2::(item.clone())?; - - match ds.fields { - syn::Fields::Named(named) => { - #[derive(Clone)] - struct NameTyTup { - field: Ident, - ty: Type, - } - let mut orig_generics = ds.generics; - // remove default types - orig_generics.params = orig_generics - .params - .into_iter() - .map(|mut generic| { - match generic { - GenericParam::Type(ref mut param) => { - param.eq_token = None; - param.default = None; - }, - _ => {}, - } - generic - }) - .collect(); - - // prepare a hashmap of generic type to member that uses it - let generic_types = orig_generics - .params - .iter() - .filter_map(|generic| { - if let GenericParam::Type(param) = generic { - Some(param.ident.clone()) - } else { - None - } - }) - .collect::>(); - - let strukt_ty = ds.ident; - - if generic_types.is_empty() { - return Err(Error::new( - strukt_ty.span(), - "struct must have at least one generic parameter.", - )) - } - - // collect all fields that exist, and all fields that are replaceable - let mut replacable_items = Vec::::with_capacity(64); - let mut all_fields = replacable_items.clone(); - - let mut duplicate_generic_detection = HashSet::::with_capacity(64); - - for field in named.named { - let field_ident = field - .ident - .clone() - .ok_or_else(|| Error::new(span, "Member field must have a name."))?; - let ty = field.ty.clone(); - let ntt = NameTyTup { field: field_ident, ty }; - - replacable_items.push(ntt.clone()); - - // assure every generic is used exactly once - let ty_ident = match field.ty { - Type::Path(path) => path.path.get_ident().cloned().ok_or_else(|| { - Error::new( - proc_macro2::Span::call_site(), - "Expected an identifier, but got a path.", - ) - }), - _ => return Err(Error::new(proc_macro2::Span::call_site(), "Must be path.")), - }?; - - if generic_types.contains(&ty_ident) { - if let Some(previous) = duplicate_generic_detection.replace(ty_ident) { - return Err(Error::new(previous.span(), "Generic type parameters may only be used for exactly one field, but is used more than once.")); - } - } - - all_fields.push(ntt); - } - - let msg = "Generated by #[derive(AllSubsystemsGen)] derive proc-macro."; - let mut additive = TokenStream::new(); - - // generate an impl of `fn replace_#name` - for NameTyTup { field: replacable_item, ty: replacable_item_ty } in replacable_items { - let keeper = &all_fields - .iter() - .filter(|ntt| ntt.field != replacable_item) - .map(|ntt| ntt.field.clone()) - .collect::>(); - let strukt_ty = strukt_ty.clone(); - let fname = Ident::new(&format!("replace_{}", replacable_item), span); - // adjust the generics such that the appropriate member type is replaced - let mut modified_generics = orig_generics.clone(); - modified_generics.params = modified_generics - .params - .into_iter() - .map(|mut generic| { - match generic { - GenericParam::Type(ref mut param) => { - param.eq_token = None; - param.default = None; - if match &replacable_item_ty { - Type::Path(path) => path - .path - .get_ident() - .filter(|&ident| ident == ¶m.ident) - .is_some(), - _ => false, - } { - param.ident = Ident::new("NEW", span); - } - }, - _ => {}, - } - generic - }) - .collect(); - - additive.extend(quote! { - impl #orig_generics #strukt_ty #orig_generics { - #[doc = #msg] - pub fn #fname < NEW, F > (self, gen_replacement_fn: F) -> #strukt_ty #modified_generics - where - F: FnOnce(#replacable_item_ty) -> NEW, - { - let Self { - // To be replaced field: - #replacable_item, - // Fields to keep: - #( - #keeper, - )* - } = self; - - // Some cases require that parts of the original are copied - // over, since they include a one time initialization. - let replacement = gen_replacement_fn(#replacable_item); - - #strukt_ty :: #modified_generics { - #replacable_item: replacement, - #( - #keeper, - )* - } - } - } - }); - } - - Ok(additive) - }, - syn::Fields::Unit => - Err(Error::new(span, "Must be a struct with named fields. Not an unit struct.")), - syn::Fields::Unnamed(_) => Err(Error::new( - span, - "Must be a struct with named fields. Not an unnamed fields struct.", - )), - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn basic() { - let item = quote! { - pub struct AllSubsystems { - pub a: A, - pub beee: B, - pub dj: CD, - } - }; - - let output = impl_subsystems_gen(item).expect("Simple example always works. qed"); - println!("//generated:"); - println!("{}", output); - } - - #[test] - fn ui() { - let t = trybuild::TestCases::new(); - t.compile_fail("tests/ui/err-*.rs"); - t.pass("tests/ui/ok-*.rs"); - } -} diff --git a/node/overseer/all-subsystems-gen/tests/ui/err-01-enum.rs b/node/overseer/all-subsystems-gen/tests/ui/err-01-enum.rs deleted file mode 100644 index ffcbecd0b3f4..000000000000 --- a/node/overseer/all-subsystems-gen/tests/ui/err-01-enum.rs +++ /dev/null @@ -1,13 +0,0 @@ -#![allow(dead_code)] - -use polkadot_overseer_all_subsystems_gen::AllSubsystemsGen; - -#[derive(Clone, AllSubsystemsGen)] -enum AllSubsystems { - A(A), - B(B), -} - -fn main() { - let all = AllSubsystems::::A(0u8); -} diff --git a/node/overseer/all-subsystems-gen/tests/ui/err-01-enum.stderr b/node/overseer/all-subsystems-gen/tests/ui/err-01-enum.stderr deleted file mode 100644 index 5f61df1057cb..000000000000 --- a/node/overseer/all-subsystems-gen/tests/ui/err-01-enum.stderr +++ /dev/null @@ -1,5 +0,0 @@ -error: expected `struct` - --> $DIR/err-01-enum.rs:6:1 - | -6 | enum AllSubsystems { - | ^^^^ diff --git a/node/overseer/all-subsystems-gen/tests/ui/err-01-generic-used-twice.rs b/node/overseer/all-subsystems-gen/tests/ui/err-01-generic-used-twice.rs deleted file mode 100644 index 7c26eedf875f..000000000000 --- a/node/overseer/all-subsystems-gen/tests/ui/err-01-generic-used-twice.rs +++ /dev/null @@ -1,16 +0,0 @@ -#![allow(dead_code)] - -use polkadot_overseer_all_subsystems_gen::AllSubsystemsGen; -#[derive(Clone, AllSubsystemsGen)] -struct AllSubsystems { - a: X, - b: X, -} - -fn main() { - let all = AllSubsystems:: { - a: 0_u16, - b: 1_u16, - }; - let _all = all.replace_a(|_| 77u8); -} diff --git a/node/overseer/all-subsystems-gen/tests/ui/err-01-generic-used-twice.stderr b/node/overseer/all-subsystems-gen/tests/ui/err-01-generic-used-twice.stderr deleted file mode 100644 index b089e8efdb42..000000000000 --- a/node/overseer/all-subsystems-gen/tests/ui/err-01-generic-used-twice.stderr +++ /dev/null @@ -1,14 +0,0 @@ -error: Generic type parameters may only be used for exactly one field, but is used more than once. - --> $DIR/err-01-generic-used-twice.rs:6:5 - | -6 | a: X, - | ^ - -error[E0599]: no method named `replace_a` found for struct `AllSubsystems` in the current scope - --> $DIR/err-01-generic-used-twice.rs:15:17 - | -5 | struct AllSubsystems { - | ----------------------- method `replace_a` not found for this -... -15 | let _all = all.replace_a(|_| 77u8); - | ^^^^^^^^^ method not found in `AllSubsystems` diff --git a/node/overseer/all-subsystems-gen/tests/ui/err-01-no-generic.rs b/node/overseer/all-subsystems-gen/tests/ui/err-01-no-generic.rs deleted file mode 100644 index d95e0ad3182d..000000000000 --- a/node/overseer/all-subsystems-gen/tests/ui/err-01-no-generic.rs +++ /dev/null @@ -1,17 +0,0 @@ -#![allow(dead_code)] - -use polkadot_overseer_all_subsystems_gen::AllSubsystemsGen; - -#[derive(Clone, AllSubsystemsGen)] -struct AllSubsystems { - a: f32, - b: u16, -} - -fn main() { - let all = AllSubsystems { - a: 0_f32, - b: 1_u16, - }; - let _all = all.replace_a(|_| 77u8); -} diff --git a/node/overseer/all-subsystems-gen/tests/ui/err-01-no-generic.stderr b/node/overseer/all-subsystems-gen/tests/ui/err-01-no-generic.stderr deleted file mode 100644 index 1bbb7a5d51ba..000000000000 --- a/node/overseer/all-subsystems-gen/tests/ui/err-01-no-generic.stderr +++ /dev/null @@ -1,14 +0,0 @@ -error: struct must have at least one generic parameter. - --> $DIR/err-01-no-generic.rs:6:8 - | -6 | struct AllSubsystems { - | ^^^^^^^^^^^^^ - -error[E0599]: no method named `replace_a` found for struct `AllSubsystems` in the current scope - --> $DIR/err-01-no-generic.rs:16:17 - | -6 | struct AllSubsystems { - | -------------------- method `replace_a` not found for this -... -16 | let _all = all.replace_a(|_| 77u8); - | ^^^^^^^^^ method not found in `AllSubsystems` diff --git a/node/overseer/all-subsystems-gen/tests/ui/err-01-no-generics.stderr b/node/overseer/all-subsystems-gen/tests/ui/err-01-no-generics.stderr deleted file mode 100644 index 5ca7ec6c2385..000000000000 --- a/node/overseer/all-subsystems-gen/tests/ui/err-01-no-generics.stderr +++ /dev/null @@ -1,14 +0,0 @@ -error: Generic type parameters may only be used once have at least one generic parameter. - --> $DIR/err-01-no-generics.rs:7:5 - | -7 | a: X, - | ^ - -error[E0599]: no method named `replace_a` found for struct `AllSubsystems` in the current scope - --> $DIR/err-01-no-generics.rs:16:17 - | -6 | struct AllSubsystems { - | ----------------------- method `replace_a` not found for this -... -16 | let _all = all.replace_a(|_| 77u8); - | ^^^^^^^^^ method not found in `AllSubsystems` diff --git a/node/overseer/all-subsystems-gen/tests/ui/ok-01-w-generics.rs b/node/overseer/all-subsystems-gen/tests/ui/ok-01-w-generics.rs deleted file mode 100644 index 879cb6770fa8..000000000000 --- a/node/overseer/all-subsystems-gen/tests/ui/ok-01-w-generics.rs +++ /dev/null @@ -1,17 +0,0 @@ -#![allow(dead_code)] - -use polkadot_overseer_all_subsystems_gen::AllSubsystemsGen; - -#[derive(Clone, AllSubsystemsGen)] -struct AllSubsystems { - a: A, - b: B, -} - -fn main() { - let all = AllSubsystems:: { - a: 0u8, - b: 1u16, - }; - let _all: AllSubsystems<_,_> = all.replace_a::(|_| 777_777u32); -} diff --git a/node/overseer/examples/minimal-example.rs b/node/overseer/examples/minimal-example.rs index 6970054a3013..0ff8201594fb 100644 --- a/node/overseer/examples/minimal-example.rs +++ b/node/overseer/examples/minimal-example.rs @@ -28,8 +28,9 @@ use polkadot_node_subsystem_types::messages::{ }; use polkadot_overseer::{ self as overseer, + dummy::dummy_overseer_builder, gen::{FromOverseer, SpawnedSubsystem}, - AllMessages, AllSubsystems, HeadSupportsParachains, Overseer, OverseerSignal, SubsystemError, + AllMessages, HeadSupportsParachains, OverseerSignal, SubsystemError, }; use polkadot_primitives::v1::Hash; @@ -169,12 +170,13 @@ fn main() { Delay::new(Duration::from_secs(1)).await; }); - let all_subsystems = AllSubsystems::<()>::dummy() + let (overseer, _handle) = dummy_overseer_builder(spawner, AlwaysSupportsParachains, None) + .unwrap() .replace_candidate_validation(|_| Subsystem2) - .replace_candidate_backing(|orig| orig); + .replace_candidate_backing(|orig| orig) + .build() + .unwrap(); - let (overseer, _handle) = - Overseer::new(vec![], all_subsystems, None, AlwaysSupportsParachains, spawner).unwrap(); let overseer_fut = overseer.run().fuse(); let timer_stream = timer_stream; diff --git a/node/overseer/overseer-gen/Cargo.toml b/node/overseer/overseer-gen/Cargo.toml index 90c96672b1b3..dfa1d8a508f4 100644 --- a/node/overseer/overseer-gen/Cargo.toml +++ b/node/overseer/overseer-gen/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-overseer-gen" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" description = "Generate an overseer including builder pattern and message wrapper from a single struct." diff --git a/node/overseer/overseer-gen/proc-macro/Cargo.toml b/node/overseer/overseer-gen/proc-macro/Cargo.toml index 2940499c011a..aa972b0e6a56 100644 --- a/node/overseer/overseer-gen/proc-macro/Cargo.toml +++ b/node/overseer/overseer-gen/proc-macro/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-overseer-gen-proc-macro" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" description = "Generate an overseer including builder pattern and message wrapper from a single annotated struct definition." @@ -12,10 +12,16 @@ targets = ["x86_64-unknown-linux-gnu"] proc-macro = true [dependencies] -syn = { version = "1.0.76", features = ["full", "extra-traits"] } +syn = { version = "1.0.77", features = ["full", "extra-traits"] } quote = "1.0.9" proc-macro2 = "1.0.26" -proc-macro-crate = "1.0.0" +proc-macro-crate = "1.1.0" [dev-dependencies] assert_matches = "1.5.0" + +[features] +default = [] +# write the expanded version to a `overlord-expansion.rs` +# in the `cwd` +expansion = [] diff --git a/node/overseer/overseer-gen/proc-macro/src/impl_builder.rs b/node/overseer/overseer-gen/proc-macro/src/impl_builder.rs index 832e193fd4d1..94074ceb93f8 100644 --- a/node/overseer/overseer-gen/proc-macro/src/impl_builder.rs +++ b/node/overseer/overseer-gen/proc-macro/src/impl_builder.rs @@ -19,6 +19,39 @@ use syn::Ident; use super::*; +/// Returns all combinations for a single replacement: +/// 1. generic args with `NEW` in place +/// 2. subsystem type to be replaced +/// 3. the subsystem name to be replaced by a new type and value +/// 4. all other subsystems that are supposed to be kept +fn derive_replacable_generic_lists( + info: &OverseerInfo, +) -> Vec<(TokenStream, Ident, Ident, Vec)> { + // subsystem generic types + let builder_generic_ty = info.builder_generic_types(); + + let to_be_replaced_name = info.subsystem_names_without_wip(); + let baggage_generic_ty = &info.baggage_generic_types(); + + builder_generic_ty + .iter() + .enumerate() + .map(|(idx, to_be_replaced_ty)| { + let mut to_keep_name = to_be_replaced_name.clone(); + let to_be_replaced_name: Ident = to_keep_name.remove(idx); + + let mut builder_generic_ty = builder_generic_ty.clone(); + builder_generic_ty[idx] = format_ident!("NEW"); + + let generics_ts = quote! { + + }; + + (generics_ts, to_be_replaced_ty.clone(), to_be_replaced_name, to_keep_name) + }) + .collect::>() +} + /// Implement a builder pattern for the `Overseer`-type, /// which acts as the gateway to constructing the overseer. /// @@ -35,6 +68,12 @@ pub(crate) fn impl_builder(info: &OverseerInfo) -> proc_macro2::TokenStream { .iter() .map(|subsystem_name| format_ident!("{}_with", subsystem_name)) .collect::>(); + let subsystem_name_replace_with = &info + .subsystem_names_without_wip() + .iter() + .map(|subsystem_name| format_ident!("replace_{}", subsystem_name)) + .collect::>(); + let builder_generic_ty = &info.builder_generic_types(); let channel_name = &info.channel_names_without_wip(""); @@ -50,6 +89,8 @@ pub(crate) fn impl_builder(info: &OverseerInfo) -> proc_macro2::TokenStream { let baggage_name = &info.baggage_names(); let baggage_ty = &info.baggage_types(); + let subsystem_ctx_name = format_ident!("{}SubsystemContext", overseer_name); + let error_ty = &info.extern_error_ty; let support_crate = info.support_crate_name(); @@ -130,9 +171,13 @@ pub(crate) fn impl_builder(info: &OverseerInfo) -> proc_macro2::TokenStream { &mut self.handle } /// Obtain access to the overseer handle. - pub fn as_handle(&mut self) -> &#handle { + pub fn as_handle(&self) -> &#handle { &self.handle } + /// Obtain a clone of the handle. + pub fn handle(&self) -> #handle { + self.handle.clone() + } } impl ::std::default::Default for #connector { @@ -151,7 +196,7 @@ pub(crate) fn impl_builder(info: &OverseerInfo) -> proc_macro2::TokenStream { /// Convenience alias. type SubsystemInitFn = Box ::std::result::Result >; - /// Init kind of a field of the overseer. + /// Initialization type to be used for a field of the overseer. enum FieldInitMethod { /// Defer initialization to a point where the `handle` is available. Fn(SubsystemInitFn), @@ -238,13 +283,13 @@ pub(crate) fn impl_builder(info: &OverseerInfo) -> proc_macro2::TokenStream { )* /// Complete the construction and create the overseer type. - pub fn build(mut self) -> ::std::result::Result<(#overseer_name #generics, #handle), #error_ty> { + pub fn build(self) -> ::std::result::Result<(#overseer_name #generics, #handle), #error_ty> { let connector = #connector ::default(); self.build_with_connector(connector) } /// Complete the construction and create the overseer type based on an existing `connector`. - pub fn build_with_connector(mut self, connector: #connector) -> ::std::result::Result<(#overseer_name #generics, #handle), #error_ty> + pub fn build_with_connector(self, connector: #connector) -> ::std::result::Result<(#overseer_name #generics, #handle), #error_ty> { let #connector { handle: events_tx, @@ -317,7 +362,6 @@ pub(crate) fn impl_builder(info: &OverseerInfo) -> proc_macro2::TokenStream { #channel_name_tx, signal_tx, unbounded_meter, - channels_out.clone(), ctx, #subsystem_name, &mut running_subsystems, @@ -326,9 +370,9 @@ pub(crate) fn impl_builder(info: &OverseerInfo) -> proc_macro2::TokenStream { #( let #baggage_name = self. #baggage_name .expect( - &format!("Baggage variable `{1}` of `{0}` ", - stringify!(#overseer_name), - stringify!( #baggage_name ) + &format!("Baggage variable `{0}` of `{1}` must be set by the user!", + stringify!(#baggage_name), + stringify!(#overseer_name) ) ); )* @@ -355,6 +399,83 @@ pub(crate) fn impl_builder(info: &OverseerInfo) -> proc_macro2::TokenStream { } } }; + + let mut acc = TokenStream::new(); + + for ( + ( + ( + ref modified_generics, + ref to_be_replaced_ty, + ref to_be_replaced_name, + ref to_keep_name, + ), + subsystem_name_replace_with, + ), + consumes, + ) in derive_replacable_generic_lists(info) + .into_iter() + .zip(subsystem_name_replace_with.iter()) + .zip(consumes.iter()) + { + let replace1 = quote! { + /// Replace a subsystem by another implementation for the + /// consumable message type. + pub fn #subsystem_name_replace_with < NEW, F > + (self, gen_replacement_fn: F) -> #builder #modified_generics + where + #to_be_replaced_ty: 'static, + F: 'static + FnOnce(#to_be_replaced_ty) -> NEW, + NEW: #support_crate ::Subsystem<#subsystem_ctx_name< #consumes >, #error_ty>, + { + + let Self { + #to_be_replaced_name, + #( + #to_keep_name, + )* + #( + #baggage_name, + )* + spawner, + } = self; + + // Some cases require that parts of the original are copied + // over, since they include a one time initialization. + let replacement: FieldInitMethod = match #to_be_replaced_name { + FieldInitMethod::Fn(fx) => FieldInitMethod::Fn( + Box::new(move |handle: #handle| { + let orig = fx(handle)?; + Ok(gen_replacement_fn(orig)) + }) + ), + FieldInitMethod::Value(val) => FieldInitMethod::Value(gen_replacement_fn(val)), + FieldInitMethod::Uninitialized => panic!("Must have a value before it can be replaced. qed"), + }; + + #builder :: #modified_generics { + #to_be_replaced_name: replacement, + #( + #to_keep_name, + )* + #( + #baggage_name, + )* + spawner, + } + } + }; + acc.extend(replace1); + } + + ts.extend(quote! { + impl #builder_generics #builder #builder_generics + #builder_where_clause + { + #acc + } + }); + ts.extend(impl_task_kind(info)); ts } @@ -365,9 +486,6 @@ pub(crate) fn impl_task_kind(info: &OverseerInfo) -> proc_macro2::TokenStream { let support_crate = info.support_crate_name(); let ts = quote! { - - use #support_crate ::FutureExt as _; - /// Task kind to launch. pub trait TaskKind { /// Spawn a task, it depends on the implementer if this is blocking or not. @@ -397,8 +515,6 @@ pub(crate) fn impl_task_kind(info: &OverseerInfo) -> proc_macro2::TokenStream { signal_tx: #support_crate ::metered::MeteredSender< #signal >, // meter for the unbounded channel unbounded_meter: #support_crate ::metered::Meter, - // connection to the subsystems - channels_out: ChannelsOut, ctx: Ctx, s: SubSys, futures: &mut #support_crate ::FuturesUnordered >>, diff --git a/node/overseer/overseer-gen/proc-macro/src/impl_channels_out.rs b/node/overseer/overseer-gen/proc-macro/src/impl_channels_out.rs index f2d6e88b360b..08744e6c520d 100644 --- a/node/overseer/overseer-gen/proc-macro/src/impl_channels_out.rs +++ b/node/overseer/overseer-gen/proc-macro/src/impl_channels_out.rs @@ -94,8 +94,6 @@ pub(crate) fn impl_channels_out_struct(info: &OverseerInfo) -> Result = match message { #( #message_wrapper :: #consumes_variant (inner) => { diff --git a/node/overseer/overseer-gen/proc-macro/src/impl_overseer.rs b/node/overseer/overseer-gen/proc-macro/src/impl_overseer.rs index cddd0534c6ea..54b207eb1960 100644 --- a/node/overseer/overseer-gen/proc-macro/src/impl_overseer.rs +++ b/node/overseer/overseer-gen/proc-macro/src/impl_overseer.rs @@ -56,8 +56,6 @@ pub(crate) fn impl_overseer_struct(info: &OverseerInfo) -> proc_macro2::TokenStr syn::LitStr::new(overseer_name.to_string().to_lowercase().as_str(), overseer_name.span()); let ts = quote! { - const STOP_DELAY: ::std::time::Duration = ::std::time::Duration::from_secs(1); - /// Capacity of a bounded message channel between overseer and subsystem /// but also for bounded channels between two subsystems. const CHANNEL_CAPACITY: usize = #message_channel_capacity; @@ -116,10 +114,9 @@ pub(crate) fn impl_overseer_struct(info: &OverseerInfo) -> proc_macro2::TokenStr loop { select! { - _ = self.running_subsystems.next() => { - if self.running_subsystems.is_empty() { - break; - } + _ = self.running_subsystems.next() => + if self.running_subsystems.is_empty() { + break; }, _ = timeout_fut => break, complete => break, @@ -187,9 +184,6 @@ pub(crate) fn impl_overseen_subsystem(info: &OverseerInfo) -> proc_macro2::Token let support_crate = info.support_crate_name(); let ts = quote::quote! { - - use #support_crate ::futures::SinkExt as _; - /// A subsystem that the overseer oversees. /// /// Ties together the [`Subsystem`] itself and it's running instance diff --git a/node/overseer/overseer-gen/proc-macro/src/lib.rs b/node/overseer/overseer-gen/proc-macro/src/lib.rs index b967acfe8b65..1a0634b29720 100644 --- a/node/overseer/overseer-gen/proc-macro/src/lib.rs +++ b/node/overseer/overseer-gen/proc-macro/src/lib.rs @@ -98,5 +98,28 @@ pub(crate) fn impl_overseer_gen( additive.extend(impl_message_wrapper_enum(&info)?); additive.extend(impl_dispatch(&info)); + #[cfg(feature = "expansion")] + { + use std::io::Write; + + let cwd = std::env::current_dir().unwrap(); + let path: std::path::PathBuf = cwd.join("overlord-expansion.rs"); + let mut f = std::fs::OpenOptions::new() + .write(true) + .create(true) + .truncate(true) + .open(&path) + .expect("File exists. qed"); + f.write_all( + &mut format!("// {:?} \n{}", std::time::SystemTime::now(), additive).as_bytes(), + ) + .expect("Got permissions to write to file. qed"); + std::process::Command::new("rustfmt") + .arg("--edition=2018") + .arg(&path) + .current_dir(cwd) + .spawn() + .expect("Running rustfmt works. qed"); + } Ok(additive) } diff --git a/node/overseer/overseer-gen/tests/ui/err-01-duplicate-consumer.stderr b/node/overseer/overseer-gen/tests/ui/err-01-duplicate-consumer.stderr index edb0ef436951..a66f2fa3e77b 100644 --- a/node/overseer/overseer-gen/tests/ui/err-01-duplicate-consumer.stderr +++ b/node/overseer/overseer-gen/tests/ui/err-01-duplicate-consumer.stderr @@ -7,7 +7,7 @@ error[E0119]: conflicting implementations of trait `std::convert::From` for type `OverseerSubsystemSender` --> $DIR/err-01-duplicate-consumer.rs:19:1 @@ -18,4 +18,4 @@ error[E0119]: conflicting implementations of trait `polkadot_overseer_gen::Subsy | first implementation here | conflicting implementation for `OverseerSubsystemSender` | - = note: this error originates in an attribute macro (in Nightly builds, run with -Z macro-backtrace for more info) + = note: this error originates in the attribute macro `overlord` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/node/overseer/overseer-gen/tests/ui/err-04-missing-error.stderr b/node/overseer/overseer-gen/tests/ui/err-04-missing-error.stderr index 39e6a4a8fdc0..7fa4d832253e 100644 --- a/node/overseer/overseer-gen/tests/ui/err-04-missing-error.stderr +++ b/node/overseer/overseer-gen/tests/ui/err-04-missing-error.stderr @@ -4,7 +4,7 @@ error: Must declare the overseer error type via `error=..`. 16 | #[overlord(signal=SigSigSig, event=Event, gen=AllMessages)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | - = note: this error originates in an attribute macro (in Nightly builds, run with -Z macro-backtrace for more info) + = note: this error originates in the attribute macro `overlord` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Overseer` --> $DIR/err-04-missing-error.rs:30:10 diff --git a/node/overseer/src/dummy.rs b/node/overseer/src/dummy.rs new file mode 100644 index 000000000000..09b594867fc0 --- /dev/null +++ b/node/overseer/src/dummy.rs @@ -0,0 +1,196 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +use crate::{ + prometheus::Registry, AllMessages, HeadSupportsParachains, MetricsTrait, Overseer, + OverseerBuilder, OverseerMetrics, OverseerSignal, OverseerSubsystemContext, SpawnNamed, + KNOWN_LEAVES_CACHE_SIZE, +}; +use lru::LruCache; +use polkadot_node_subsystem_types::{errors::SubsystemError, messages::*}; +use polkadot_overseer_gen::{FromOverseer, SpawnedSubsystem, Subsystem, SubsystemContext}; + +/// A dummy subsystem that implements [`Subsystem`] for all +/// types of messages. Used for tests or as a placeholder. +#[derive(Clone, Copy, Debug)] +pub struct DummySubsystem; + +impl Subsystem for DummySubsystem +where + Context: SubsystemContext< + Signal = OverseerSignal, + Error = SubsystemError, + AllMessages = AllMessages, + >, +{ + fn start(self, mut ctx: Context) -> SpawnedSubsystem { + let future = Box::pin(async move { + loop { + match ctx.recv().await { + Err(_) => return Ok(()), + Ok(FromOverseer::Signal(OverseerSignal::Conclude)) => return Ok(()), + Ok(overseer_msg) => { + tracing::debug!( + target: "dummy-subsystem", + "Discarding a message sent from overseer {:?}", + overseer_msg + ); + continue + }, + } + } + }); + + SpawnedSubsystem { name: "dummy-subsystem", future } + } +} + +/// Create an overseer with all subsystem being `Sub`. +/// +/// Preferred way of initializing a dummy overseer for subsystem tests. +pub fn dummy_overseer_builder<'a, Spawner, SupportsParachains>( + spawner: Spawner, + supports_parachains: SupportsParachains, + registry: Option<&'a Registry>, +) -> Result< + OverseerBuilder< + Spawner, + SupportsParachains, + DummySubsystem, + DummySubsystem, + DummySubsystem, + DummySubsystem, + DummySubsystem, + DummySubsystem, + DummySubsystem, + DummySubsystem, + DummySubsystem, + DummySubsystem, + DummySubsystem, + DummySubsystem, + DummySubsystem, + DummySubsystem, + DummySubsystem, + DummySubsystem, + DummySubsystem, + DummySubsystem, + DummySubsystem, + DummySubsystem, + DummySubsystem, + >, + SubsystemError, +> +where + Spawner: SpawnNamed + Send + Sync + 'static, + SupportsParachains: HeadSupportsParachains, +{ + one_for_all_overseer_builder(spawner, supports_parachains, DummySubsystem, registry) +} + +/// Create an overseer with all subsystem being `Sub`. +pub fn one_for_all_overseer_builder<'a, Spawner, SupportsParachains, Sub>( + spawner: Spawner, + supports_parachains: SupportsParachains, + subsystem: Sub, + registry: Option<&'a Registry>, +) -> Result< + OverseerBuilder< + Spawner, + SupportsParachains, + Sub, + Sub, + Sub, + Sub, + Sub, + Sub, + Sub, + Sub, + Sub, + Sub, + Sub, + Sub, + Sub, + Sub, + Sub, + Sub, + Sub, + Sub, + Sub, + Sub, + Sub, + >, + SubsystemError, +> +where + Spawner: SpawnNamed + Send + Sync + 'static, + SupportsParachains: HeadSupportsParachains, + Sub: Clone + + Subsystem, SubsystemError> + + Subsystem, SubsystemError> + + Subsystem, SubsystemError> + + Subsystem, SubsystemError> + + Subsystem, SubsystemError> + + Subsystem, SubsystemError> + + Subsystem, SubsystemError> + + Subsystem, SubsystemError> + + Subsystem, SubsystemError> + + Subsystem, SubsystemError> + + Subsystem, SubsystemError> + + Subsystem, SubsystemError> + + Subsystem, SubsystemError> + + Subsystem, SubsystemError> + + Subsystem, SubsystemError> + + Subsystem, SubsystemError> + + Subsystem, SubsystemError> + + Subsystem, SubsystemError> + + Subsystem, SubsystemError> + + Subsystem, SubsystemError> + + Subsystem, SubsystemError>, +{ + let metrics = ::register(registry)?; + + let builder = Overseer::builder() + .availability_distribution(subsystem.clone()) + .availability_recovery(subsystem.clone()) + .availability_store(subsystem.clone()) + .bitfield_distribution(subsystem.clone()) + .bitfield_signing(subsystem.clone()) + .candidate_backing(subsystem.clone()) + .candidate_validation(subsystem.clone()) + .chain_api(subsystem.clone()) + .collation_generation(subsystem.clone()) + .collator_protocol(subsystem.clone()) + .network_bridge(subsystem.clone()) + .provisioner(subsystem.clone()) + .runtime_api(subsystem.clone()) + .statement_distribution(subsystem.clone()) + .approval_distribution(subsystem.clone()) + .approval_voting(subsystem.clone()) + .gossip_support(subsystem.clone()) + .dispute_coordinator(subsystem.clone()) + .dispute_participation(subsystem.clone()) + .dispute_distribution(subsystem.clone()) + .chain_selection(subsystem) + .activation_external_listeners(Default::default()) + .span_per_active_leaf(Default::default()) + .active_leaves(Default::default()) + .known_leaves(LruCache::new(KNOWN_LEAVES_CACHE_SIZE)) + .leaves(Default::default()) + .spawner(spawner) + .metrics(metrics) + .supports_parachains(supports_parachains); + Ok(builder) +} diff --git a/node/overseer/src/lib.rs b/node/overseer/src/lib.rs index 2fb9ffd359b2..3a1e5a31458d 100644 --- a/node/overseer/src/lib.rs +++ b/node/overseer/src/lib.rs @@ -62,7 +62,6 @@ use std::{ collections::{hash_map, HashMap}, fmt::{self, Debug}, - iter::FromIterator, pin::Pin, sync::Arc, time::Duration, @@ -70,7 +69,6 @@ use std::{ use futures::{channel::oneshot, future::BoxFuture, select, Future, FutureExt, StreamExt}; use lru::LruCache; -use parking_lot::RwLock; use client::{BlockImportNotification, BlockchainEvents, FinalityNotification}; use polkadot_primitives::v1::{Block, BlockId, BlockNumber, Hash, ParachainHost}; @@ -91,15 +89,14 @@ pub use polkadot_node_subsystem_types::{ jaeger, ActivatedLeaf, ActiveLeavesUpdate, LeafStatus, OverseerSignal, }; -// TODO legacy, to be deleted, left for easier integration -// TODO https://github.com/paritytech/polkadot/issues/3427 -mod subsystems; -pub use self::subsystems::{AllSubsystems, DummySubsystem}; +pub mod metrics; +pub use self::metrics::Metrics as OverseerMetrics; -mod metrics; -use self::metrics::Metrics; +/// A dummy subsystem, mostly useful for placeholders and tests. +pub mod dummy; +pub use self::dummy::DummySubsystem; -use polkadot_node_metrics::{ +pub use polkadot_node_metrics::{ metrics::{prometheus, Metrics as MetricsTrait}, Metronome, }; @@ -115,7 +112,7 @@ pub use polkadot_overseer_gen::{ /// Store 2 days worth of blocks, not accounting for forks, /// in the LRU cache. Assumes a 6-second block time. -const KNOWN_LEAVES_CACHE_SIZE: usize = 2 * 24 * 3600 / 6; +pub const KNOWN_LEAVES_CACHE_SIZE: usize = 2 * 24 * 3600 / 6; #[cfg(test)] mod tests; @@ -141,18 +138,12 @@ where /// /// [`Overseer`]: struct.Overseer.html #[derive(Clone)] -pub enum Handle { - /// Used only at initialization to break the cyclic dependency. - // TODO: refactor in https://github.com/paritytech/polkadot/issues/3427 - Disconnected(Arc>>), - /// A handle to the overseer. - Connected(OverseerHandle), -} +pub struct Handle(OverseerHandle); impl Handle { - /// Create a new disconnected [`Handle`]. - pub fn new_disconnected() -> Self { - Self::Disconnected(Arc::new(RwLock::new(None))) + /// Create a new [`Handle`]. + pub fn new(raw: OverseerHandle) -> Self { + Self(raw) } /// Inform the `Overseer` that that some block was imported. @@ -201,58 +192,8 @@ impl Handle { /// Most basic operation, to stop a server. async fn send_and_log_error(&mut self, event: Event) { - self.try_connect(); - if let Self::Connected(ref mut handle) = self { - if handle.send(event).await.is_err() { - tracing::info!(target: LOG_TARGET, "Failed to send an event to Overseer"); - } - } else { - tracing::warn!(target: LOG_TARGET, "Using a disconnected Handle to send to Overseer"); - } - } - - /// Whether the handle is disconnected. - pub fn is_disconnected(&self) -> bool { - match self { - Self::Disconnected(ref x) => x.read().is_none(), - _ => false, - } - } - - /// Connect this handle and all disconnected clones of it to the overseer. - pub fn connect_to_overseer(&mut self, handle: OverseerHandle) { - match self { - Self::Disconnected(ref mut x) => { - let mut maybe_handle = x.write(); - if maybe_handle.is_none() { - tracing::info!(target: LOG_TARGET, "🖇️ Connecting all Handles to Overseer"); - *maybe_handle = Some(handle); - } else { - tracing::warn!( - target: LOG_TARGET, - "Attempting to connect a clone of a connected Handle", - ); - } - }, - _ => { - tracing::warn!( - target: LOG_TARGET, - "Attempting to connect an already connected Handle", - ); - }, - } - } - - /// Try upgrading from `Self::Disconnected` to `Self::Connected` state - /// after calling `connect_to_overseer` on `self` or a clone of `self`. - fn try_connect(&mut self) { - if let Self::Disconnected(ref mut x) = self { - let guard = x.write(); - if let Some(ref h) = *guard { - let handle = h.clone(); - drop(guard); - *self = Self::Connected(handle); - } + if self.0.send(event).await.is_err() { + tracing::info!(target: LOG_TARGET, "Failed to send an event to Overseer"); } } } @@ -346,7 +287,119 @@ pub async fn forward_events>(client: Arc

, mut hand } } -/// The `Overseer` itself. +/// Create a new instance of the [`Overseer`] with a fixed set of [`Subsystem`]s. +/// +/// This returns the overseer along with an [`OverseerHandle`] which can +/// be used to send messages from external parts of the codebase. +/// +/// The [`OverseerHandle`] returned from this function is connected to +/// the returned [`Overseer`]. +/// +/// ```text +/// +------------------------------------+ +/// | Overseer | +/// +------------------------------------+ +/// / | | \ +/// ................. subsystems................................... +/// . +-----------+ +-----------+ +----------+ +---------+ . +/// . | | | | | | | | . +/// . +-----------+ +-----------+ +----------+ +---------+ . +/// ............................................................... +/// | +/// probably `spawn` +/// a `job` +/// | +/// V +/// +-----------+ +/// | | +/// +-----------+ +/// +/// ``` +/// +/// [`Subsystem`]: trait.Subsystem.html +/// +/// # Example +/// +/// The [`Subsystems`] may be any type as long as they implement an expected interface. +/// Here, we create a mock validation subsystem and a few dummy ones and start the `Overseer` with them. +/// For the sake of simplicity the termination of the example is done with a timeout. +/// ``` +/// # use std::time::Duration; +/// # use futures::{executor, pin_mut, select, FutureExt}; +/// # use futures_timer::Delay; +/// # use polkadot_primitives::v1::Hash; +/// # use polkadot_overseer::{ +/// # self as overseer, +/// # OverseerSignal, +/// # SubsystemSender as _, +/// # AllMessages, +/// # HeadSupportsParachains, +/// # Overseer, +/// # SubsystemError, +/// # gen::{ +/// # SubsystemContext, +/// # FromOverseer, +/// # SpawnedSubsystem, +/// # }, +/// # }; +/// # use polkadot_node_subsystem_types::messages::{ +/// # CandidateValidationMessage, CandidateBackingMessage, +/// # NetworkBridgeMessage, +/// # }; +/// +/// struct ValidationSubsystem; +/// +/// impl overseer::Subsystem for ValidationSubsystem +/// where +/// Ctx: overseer::SubsystemContext< +/// Message=CandidateValidationMessage, +/// AllMessages=AllMessages, +/// Signal=OverseerSignal, +/// Error=SubsystemError, +/// >, +/// { +/// fn start( +/// self, +/// mut ctx: Ctx, +/// ) -> SpawnedSubsystem { +/// SpawnedSubsystem { +/// name: "validation-subsystem", +/// future: Box::pin(async move { +/// loop { +/// Delay::new(Duration::from_secs(1)).await; +/// } +/// }), +/// } +/// } +/// } +/// +/// # fn main() { executor::block_on(async move { +/// +/// struct AlwaysSupportsParachains; +/// impl HeadSupportsParachains for AlwaysSupportsParachains { +/// fn head_supports_parachains(&self, _head: &Hash) -> bool { true } +/// } +/// let spawner = sp_core::testing::TaskExecutor::new(); +/// let (overseer, _handle) = dummy_overseer_builder(spawner, AlwaysSupportsParachains, None) +/// .unwrap() +/// .replace_candidate_validation(|_| ValidationSubsystem) +/// .build() +/// .unwrap(); +/// +/// let timer = Delay::new(Duration::from_millis(50)).fuse(); +/// +/// let overseer_fut = overseer.run().fuse(); +/// pin_mut!(timer); +/// pin_mut!(overseer_fut); +/// +/// select! { +/// _ = overseer_fut => (), +/// _ = timer => (), +/// } +/// # +/// # }); +/// # } +/// ``` #[overlord( gen=AllMessages, event=Event, @@ -403,7 +456,7 @@ pub struct Overseer { #[subsystem(no_dispatch, ApprovalVotingMessage)] approval_voting: ApprovalVoting, - #[subsystem(no_dispatch, GossipSupportMessage)] + #[subsystem(GossipSupportMessage)] gossip_support: GossipSupport, #[subsystem(no_dispatch, DisputeCoordinatorMessage)] @@ -439,318 +492,85 @@ pub struct Overseer { pub known_leaves: LruCache, /// Various Prometheus metrics. - pub metrics: Metrics, + pub metrics: OverseerMetrics, } -impl Overseer +/// Spawn the metrics metronome task. +pub fn spawn_metronome_metrics( + overseer: &mut Overseer, + metronome_metrics: OverseerMetrics, +) -> Result<(), SubsystemError> where - SupportsParachains: HeadSupportsParachains, S: SpawnNamed, + SupportsParachains: HeadSupportsParachains, { - /// Create a new instance of the [`Overseer`] with a fixed set of [`Subsystem`]s. - /// - /// This returns the overseer along with an [`OverseerHandle`] which can - /// be used to send messages from external parts of the codebase. - /// - /// The [`OverseerHandle`] returned from this function is connected to - /// the returned [`Overseer`]. - /// - /// ```text - /// +------------------------------------+ - /// | Overseer | - /// +------------------------------------+ - /// / | | \ - /// ................. subsystems................................... - /// . +-----------+ +-----------+ +----------+ +---------+ . - /// . | | | | | | | | . - /// . +-----------+ +-----------+ +----------+ +---------+ . - /// ............................................................... - /// | - /// probably `spawn` - /// a `job` - /// | - /// V - /// +-----------+ - /// | | - /// +-----------+ - /// - /// ``` - /// - /// [`Subsystem`]: trait.Subsystem.html - /// - /// # Example - /// - /// The [`Subsystems`] may be any type as long as they implement an expected interface. - /// Here, we create a mock validation subsystem and a few dummy ones and start the `Overseer` with them. - /// For the sake of simplicity the termination of the example is done with a timeout. - /// ``` - /// # use std::time::Duration; - /// # use futures::{executor, pin_mut, select, FutureExt}; - /// # use futures_timer::Delay; - /// # use polkadot_primitives::v1::Hash; - /// # use polkadot_overseer::{ - /// # self as overseer, - /// # OverseerSignal, - /// # SubsystemSender as _, - /// # AllMessages, - /// # AllSubsystems, - /// # HeadSupportsParachains, - /// # Overseer, - /// # SubsystemError, - /// # gen::{ - /// # SubsystemContext, - /// # FromOverseer, - /// # SpawnedSubsystem, - /// # }, - /// # }; - /// # use polkadot_node_subsystem_types::messages::{ - /// # CandidateValidationMessage, CandidateBackingMessage, - /// # NetworkBridgeMessage, - /// # }; - /// - /// struct ValidationSubsystem; - /// - /// impl overseer::Subsystem for ValidationSubsystem - /// where - /// Ctx: overseer::SubsystemContext< - /// Message=CandidateValidationMessage, - /// AllMessages=AllMessages, - /// Signal=OverseerSignal, - /// Error=SubsystemError, - /// >, - /// { - /// fn start( - /// self, - /// mut ctx: Ctx, - /// ) -> SpawnedSubsystem { - /// SpawnedSubsystem { - /// name: "validation-subsystem", - /// future: Box::pin(async move { - /// loop { - /// Delay::new(Duration::from_secs(1)).await; - /// } - /// }), - /// } - /// } - /// } - /// - /// # fn main() { executor::block_on(async move { - /// - /// struct AlwaysSupportsParachains; - /// impl HeadSupportsParachains for AlwaysSupportsParachains { - /// fn head_supports_parachains(&self, _head: &Hash) -> bool { true } - /// } - /// let spawner = sp_core::testing::TaskExecutor::new(); - /// let all_subsystems = AllSubsystems::<()>::dummy() - /// .replace_candidate_validation(|_| ValidationSubsystem); - /// let (overseer, _handle) = Overseer::new( - /// vec![], - /// all_subsystems, - /// None, - /// AlwaysSupportsParachains, - /// spawner, - /// ).unwrap(); - /// - /// let timer = Delay::new(Duration::from_millis(50)).fuse(); - /// - /// let overseer_fut = overseer.run().fuse(); - /// pin_mut!(timer); - /// pin_mut!(overseer_fut); - /// - /// select! { - /// _ = overseer_fut => (), - /// _ = timer => (), - /// } - /// # - /// # }); - /// # } - /// ``` - pub fn new< - CV, - CB, - SD, - AD, - AR, - BS, - BD, - P, - RA, - AS, - NB, - CA, - CG, - CP, - ApD, - ApV, - GS, - DC, - DP, - DD, - CS, - >( - leaves: impl IntoIterator, - all_subsystems: AllSubsystems< - CV, - CB, - SD, - AD, - AR, - BS, - BD, - P, - RA, - AS, - NB, - CA, - CG, - CP, - ApD, - ApV, - GS, - DC, - DP, - DD, - CS, - >, - prometheus_registry: Option<&prometheus::Registry>, - supports_parachains: SupportsParachains, - s: S, - ) -> SubsystemResult<(Self, OverseerHandle)> - where - CV: Subsystem, SubsystemError> + Send, - CB: Subsystem, SubsystemError> + Send, - SD: Subsystem, SubsystemError> - + Send, - AD: Subsystem, SubsystemError> - + Send, - AR: Subsystem, SubsystemError> + Send, - BS: Subsystem, SubsystemError> + Send, - BD: Subsystem, SubsystemError> + Send, - P: Subsystem, SubsystemError> + Send, - RA: Subsystem, SubsystemError> + Send, - AS: Subsystem, SubsystemError> + Send, - NB: Subsystem, SubsystemError> + Send, - CA: Subsystem, SubsystemError> + Send, - CG: Subsystem, SubsystemError> + Send, - CP: Subsystem, SubsystemError> + Send, - ApD: - Subsystem, SubsystemError> + Send, - ApV: Subsystem, SubsystemError> + Send, - GS: Subsystem, SubsystemError> + Send, - DC: Subsystem, SubsystemError> + Send, - DP: Subsystem, SubsystemError> + Send, - DD: Subsystem, SubsystemError> + Send, - CS: Subsystem, SubsystemError> + Send, - S: SpawnNamed, - { - let metrics: Metrics = ::register(prometheus_registry)?; - - let (mut overseer, handle) = Self::builder() - .candidate_validation(all_subsystems.candidate_validation) - .candidate_backing(all_subsystems.candidate_backing) - .statement_distribution(all_subsystems.statement_distribution) - .availability_distribution(all_subsystems.availability_distribution) - .availability_recovery(all_subsystems.availability_recovery) - .bitfield_signing(all_subsystems.bitfield_signing) - .bitfield_distribution(all_subsystems.bitfield_distribution) - .provisioner(all_subsystems.provisioner) - .runtime_api(all_subsystems.runtime_api) - .availability_store(all_subsystems.availability_store) - .network_bridge(all_subsystems.network_bridge) - .chain_api(all_subsystems.chain_api) - .collation_generation(all_subsystems.collation_generation) - .collator_protocol(all_subsystems.collator_protocol) - .approval_distribution(all_subsystems.approval_distribution) - .approval_voting(all_subsystems.approval_voting) - .gossip_support(all_subsystems.gossip_support) - .dispute_coordinator(all_subsystems.dispute_coordinator) - .dispute_participation(all_subsystems.dispute_participation) - .dispute_distribution(all_subsystems.dispute_distribution) - .chain_selection(all_subsystems.chain_selection) - .leaves(Vec::from_iter( - leaves - .into_iter() - .map(|BlockInfo { hash, parent_hash: _, number }| (hash, number)), - )) - .known_leaves(LruCache::new(KNOWN_LEAVES_CACHE_SIZE)) - .active_leaves(Default::default()) - .span_per_active_leaf(Default::default()) - .activation_external_listeners(Default::default()) - .supports_parachains(supports_parachains) - .metrics(metrics.clone()) - .spawner(s) - .build()?; - - // spawn the metrics metronome task - { - struct ExtractNameAndMeters; - - impl<'a, T: 'a> MapSubsystem<&'a OverseenSubsystem> for ExtractNameAndMeters { - type Output = Option<(&'static str, SubsystemMeters)>; - - fn map_subsystem(&self, subsystem: &'a OverseenSubsystem) -> Self::Output { - subsystem - .instance - .as_ref() - .map(|instance| (instance.name, instance.meters.clone())) - } - } - let subsystem_meters = overseer.map_subsystems(ExtractNameAndMeters); - - let memory_stats = match MemoryAllocationTracker::new() { - Ok(memory_stats) => Some(memory_stats), - Err(error) => { - tracing::debug!( - target: LOG_TARGET, - "Failed to initialize memory allocation tracker: {:?}", - error - ); - - None - }, - }; - - let metronome_metrics = metrics.clone(); - let metronome = - Metronome::new(std::time::Duration::from_millis(950)).for_each(move |_| { - if let Some(ref memory_stats) = memory_stats { - match memory_stats.snapshot() { - Ok(memory_stats_snapshot) => { - tracing::trace!( - target: LOG_TARGET, - "memory_stats: {:?}", - &memory_stats_snapshot - ); - metronome_metrics.memory_stats_snapshot(memory_stats_snapshot); - }, - - Err(e) => tracing::debug!( - target: LOG_TARGET, - "Failed to obtain memory stats: {:?}", - e - ), - } - } + struct ExtractNameAndMeters; - // We combine the amount of messages from subsystems to the overseer - // as well as the amount of messages from external sources to the overseer - // into one `to_overseer` value. - metronome_metrics.channel_fill_level_snapshot( - subsystem_meters - .iter() - .cloned() - .filter_map(|x| x) - .map(|(name, ref meters)| (name, meters.read())), - ); + impl<'a, T: 'a> MapSubsystem<&'a OverseenSubsystem> for ExtractNameAndMeters { + type Output = Option<(&'static str, SubsystemMeters)>; - async move { () } - }); - overseer.spawner().spawn("metrics_metronome", Box::pin(metronome)); + fn map_subsystem(&self, subsystem: &'a OverseenSubsystem) -> Self::Output { + subsystem + .instance + .as_ref() + .map(|instance| (instance.name, instance.meters.clone())) } - - Ok((overseer, handle)) } + let subsystem_meters = overseer.map_subsystems(ExtractNameAndMeters); + + let collect_memory_stats: Box = + match MemoryAllocationTracker::new() { + Ok(memory_stats) => + Box::new(move |metrics: &OverseerMetrics| match memory_stats.snapshot() { + Ok(memory_stats_snapshot) => { + tracing::trace!( + target: LOG_TARGET, + "memory_stats: {:?}", + &memory_stats_snapshot + ); + metrics.memory_stats_snapshot(memory_stats_snapshot); + }, + Err(e) => tracing::debug!( + target: LOG_TARGET, + "Failed to obtain memory stats: {:?}", + e + ), + }), + Err(_) => { + tracing::debug!( + target: LOG_TARGET, + "Memory allocation tracking is not supported by the allocator.", + ); + Box::new(|_| {}) + }, + }; + + let metronome = Metronome::new(std::time::Duration::from_millis(950)).for_each(move |_| { + collect_memory_stats(&metronome_metrics); + + // We combine the amount of messages from subsystems to the overseer + // as well as the amount of messages from external sources to the overseer + // into one `to_overseer` value. + metronome_metrics.channel_fill_level_snapshot( + subsystem_meters + .iter() + .cloned() + .filter_map(|x| x) + .map(|(name, ref meters)| (name, meters.read())), + ); + + futures::future::ready(()) + }); + overseer.spawner().spawn("metrics_metronome", Box::pin(metronome)); + Ok(()) +} + +impl Overseer +where + SupportsParachains: HeadSupportsParachains, + S: SpawnNamed, +{ /// Stop the overseer. async fn stop(mut self) { let _ = self.wait_terminate(OverseerSignal::Conclude, Duration::from_secs(1_u64)).await; @@ -758,6 +578,9 @@ where /// Run the `Overseer`. pub async fn run(mut self) -> SubsystemResult<()> { + let metrics = self.metrics.clone(); + spawn_metronome_metrics(&mut self, metrics)?; + // Notify about active leaves on startup before starting the loop for (hash, number) in std::mem::take(&mut self.leaves) { let _ = self.active_leaves.insert(hash, number); @@ -851,7 +674,9 @@ where let mut update = ActiveLeavesUpdate::default(); self.active_leaves.retain(|h, n| { - if *n <= block.number { + // prune all orphaned leaves, but don't prune + // the finalized block if it is itself a leaf. + if *n <= block.number && *h != block.hash { update.deactivated.push(*h); false } else { diff --git a/node/overseer/src/metrics.rs b/node/overseer/src/metrics.rs index ab3b2a3bc14b..fa883857e9be 100644 --- a/node/overseer/src/metrics.rs +++ b/node/overseer/src/metrics.rs @@ -17,7 +17,7 @@ //! Prometheus metrics related to the overseer and its channels. use super::*; -use polkadot_node_metrics::metrics::{self, prometheus}; +pub use polkadot_node_metrics::metrics::{self, prometheus, Metrics as MetricsTrait}; use parity_util_mem::MemoryAllocationSnapshot; @@ -110,7 +110,7 @@ impl Metrics { } } -impl metrics::Metrics for Metrics { +impl MetricsTrait for Metrics { fn try_register(registry: &prometheus::Registry) -> Result { let metrics = MetricsInner { activated_heads_total: prometheus::register( diff --git a/node/overseer/src/subsystems.rs b/node/overseer/src/subsystems.rs deleted file mode 100644 index 648528730d67..000000000000 --- a/node/overseer/src/subsystems.rs +++ /dev/null @@ -1,382 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . - -//! Legacy way of defining subsystems. -//! -//! In the future, everything should be set up using the generated -//! overseer builder pattern instead. - -use crate::{AllMessages, OverseerSignal}; -use polkadot_node_subsystem_types::errors::SubsystemError; -use polkadot_overseer_all_subsystems_gen::AllSubsystemsGen; -use polkadot_overseer_gen::{ - FromOverseer, MapSubsystem, SpawnedSubsystem, Subsystem, SubsystemContext, -}; - -/// A dummy subsystem that implements [`Subsystem`] for all -/// types of messages. Used for tests or as a placeholder. -#[derive(Clone, Copy, Debug)] -pub struct DummySubsystem; - -impl Subsystem for DummySubsystem -where - Context: SubsystemContext< - Signal = OverseerSignal, - Error = SubsystemError, - AllMessages = AllMessages, - >, -{ - fn start(self, mut ctx: Context) -> SpawnedSubsystem { - let future = Box::pin(async move { - loop { - match ctx.recv().await { - Err(_) => return Ok(()), - Ok(FromOverseer::Signal(OverseerSignal::Conclude)) => return Ok(()), - Ok(overseer_msg) => { - tracing::debug!( - target: "dummy-subsystem", - "Discarding a message sent from overseer {:?}", - overseer_msg - ); - continue - }, - } - } - }); - - SpawnedSubsystem { name: "dummy-subsystem", future } - } -} - -/// This struct is passed as an argument to create a new instance of an [`Overseer`]. -/// -/// As any entity that satisfies the interface may act as a [`Subsystem`] this allows -/// mocking in the test code: -/// -/// Each [`Subsystem`] is supposed to implement some interface that is generic over -/// message type that is specific to this [`Subsystem`]. At the moment not all -/// subsystems are implemented and the rest can be mocked with the [`DummySubsystem`]. -#[derive(Debug, Clone, AllSubsystemsGen)] -pub struct AllSubsystems< - CV = (), - CB = (), - SD = (), - AD = (), - AR = (), - BS = (), - BD = (), - P = (), - RA = (), - AS = (), - NB = (), - CA = (), - CG = (), - CP = (), - ApD = (), - ApV = (), - GS = (), - DC = (), - DP = (), - DD = (), - CS = (), -> { - /// A candidate validation subsystem. - pub candidate_validation: CV, - /// A candidate backing subsystem. - pub candidate_backing: CB, - /// A statement distribution subsystem. - pub statement_distribution: SD, - /// An availability distribution subsystem. - pub availability_distribution: AD, - /// An availability recovery subsystem. - pub availability_recovery: AR, - /// A bitfield signing subsystem. - pub bitfield_signing: BS, - /// A bitfield distribution subsystem. - pub bitfield_distribution: BD, - /// A provisioner subsystem. - pub provisioner: P, - /// A runtime API subsystem. - pub runtime_api: RA, - /// An availability store subsystem. - pub availability_store: AS, - /// A network bridge subsystem. - pub network_bridge: NB, - /// A Chain API subsystem. - pub chain_api: CA, - /// A Collation Generation subsystem. - pub collation_generation: CG, - /// A Collator Protocol subsystem. - pub collator_protocol: CP, - /// An Approval Distribution subsystem. - pub approval_distribution: ApD, - /// An Approval Voting subsystem. - pub approval_voting: ApV, - /// A Connection Request Issuer subsystem. - pub gossip_support: GS, - /// A Dispute Coordinator subsystem. - pub dispute_coordinator: DC, - /// A Dispute Participation subsystem. - pub dispute_participation: DP, - /// A Dispute Distribution subsystem. - pub dispute_distribution: DD, - /// A Chain Selection subsystem. - pub chain_selection: CS, -} - -impl - AllSubsystems -{ - /// Create a new instance of [`AllSubsystems`]. - /// - /// Each subsystem is set to [`DummySystem`]. - /// - ///# Note - /// - /// Because of a bug in rustc it is required that when calling this function, - /// you provide a "random" type for the first generic parameter: - /// - /// ``` - /// polkadot_overseer::AllSubsystems::<()>::dummy(); - /// ``` - pub fn dummy() -> AllSubsystems< - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - DummySubsystem, - > { - AllSubsystems { - candidate_validation: DummySubsystem, - candidate_backing: DummySubsystem, - statement_distribution: DummySubsystem, - availability_distribution: DummySubsystem, - availability_recovery: DummySubsystem, - bitfield_signing: DummySubsystem, - bitfield_distribution: DummySubsystem, - provisioner: DummySubsystem, - runtime_api: DummySubsystem, - availability_store: DummySubsystem, - network_bridge: DummySubsystem, - chain_api: DummySubsystem, - collation_generation: DummySubsystem, - collator_protocol: DummySubsystem, - approval_distribution: DummySubsystem, - approval_voting: DummySubsystem, - gossip_support: DummySubsystem, - dispute_coordinator: DummySubsystem, - dispute_participation: DummySubsystem, - dispute_distribution: DummySubsystem, - chain_selection: DummySubsystem, - } - } - - /// Reference every individual subsystem. - pub fn as_ref( - &self, - ) -> AllSubsystems< - &'_ CV, - &'_ CB, - &'_ SD, - &'_ AD, - &'_ AR, - &'_ BS, - &'_ BD, - &'_ P, - &'_ RA, - &'_ AS, - &'_ NB, - &'_ CA, - &'_ CG, - &'_ CP, - &'_ ApD, - &'_ ApV, - &'_ GS, - &'_ DC, - &'_ DP, - &'_ DD, - &'_ CS, - > { - AllSubsystems { - candidate_validation: &self.candidate_validation, - candidate_backing: &self.candidate_backing, - statement_distribution: &self.statement_distribution, - availability_distribution: &self.availability_distribution, - availability_recovery: &self.availability_recovery, - bitfield_signing: &self.bitfield_signing, - bitfield_distribution: &self.bitfield_distribution, - provisioner: &self.provisioner, - runtime_api: &self.runtime_api, - availability_store: &self.availability_store, - network_bridge: &self.network_bridge, - chain_api: &self.chain_api, - collation_generation: &self.collation_generation, - collator_protocol: &self.collator_protocol, - approval_distribution: &self.approval_distribution, - approval_voting: &self.approval_voting, - gossip_support: &self.gossip_support, - dispute_coordinator: &self.dispute_coordinator, - dispute_participation: &self.dispute_participation, - dispute_distribution: &self.dispute_distribution, - chain_selection: &self.chain_selection, - } - } - - /// Map each subsystem. - pub fn map_subsystems( - self, - mapper: Mapper, - ) -> AllSubsystems< - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - >::Output, - > - where - Mapper: MapSubsystem, - Mapper: MapSubsystem, - Mapper: MapSubsystem, - Mapper: MapSubsystem, - Mapper: MapSubsystem, - Mapper: MapSubsystem, - Mapper: MapSubsystem, - Mapper: MapSubsystem

, - Mapper: MapSubsystem, - Mapper: MapSubsystem, - Mapper: MapSubsystem, - Mapper: MapSubsystem, - Mapper: MapSubsystem, - Mapper: MapSubsystem, - Mapper: MapSubsystem, - Mapper: MapSubsystem, - Mapper: MapSubsystem, - Mapper: MapSubsystem, - Mapper: MapSubsystem, - Mapper: MapSubsystem

, - Mapper: MapSubsystem, - { - AllSubsystems { - candidate_validation: >::map_subsystem( - &mapper, - self.candidate_validation, - ), - candidate_backing: >::map_subsystem( - &mapper, - self.candidate_backing, - ), - statement_distribution: >::map_subsystem( - &mapper, - self.statement_distribution, - ), - availability_distribution: >::map_subsystem( - &mapper, - self.availability_distribution, - ), - availability_recovery: >::map_subsystem( - &mapper, - self.availability_recovery, - ), - bitfield_signing: >::map_subsystem( - &mapper, - self.bitfield_signing, - ), - bitfield_distribution: >::map_subsystem( - &mapper, - self.bitfield_distribution, - ), - provisioner: >::map_subsystem(&mapper, self.provisioner), - runtime_api: >::map_subsystem(&mapper, self.runtime_api), - availability_store: >::map_subsystem( - &mapper, - self.availability_store, - ), - network_bridge: >::map_subsystem( - &mapper, - self.network_bridge, - ), - chain_api: >::map_subsystem(&mapper, self.chain_api), - collation_generation: >::map_subsystem( - &mapper, - self.collation_generation, - ), - collator_protocol: >::map_subsystem( - &mapper, - self.collator_protocol, - ), - approval_distribution: >::map_subsystem( - &mapper, - self.approval_distribution, - ), - approval_voting: >::map_subsystem( - &mapper, - self.approval_voting, - ), - gossip_support: >::map_subsystem( - &mapper, - self.gossip_support, - ), - dispute_coordinator: >::map_subsystem( - &mapper, - self.dispute_coordinator, - ), - dispute_participation: >::map_subsystem( - &mapper, - self.dispute_participation, - ), - dispute_distribution: >::map_subsystem( - &mapper, - self.dispute_distribution, - ), - chain_selection: >::map_subsystem( - &mapper, - self.chain_selection, - ), - } - } -} diff --git a/node/overseer/src/tests.rs b/node/overseer/src/tests.rs index 7564116e7141..39eb91e0f6d6 100644 --- a/node/overseer/src/tests.rs +++ b/node/overseer/src/tests.rs @@ -32,7 +32,12 @@ use polkadot_primitives::v1::{ ValidatorIndex, }; -use crate::{self as overseer, gen::Delay, HeadSupportsParachains, Overseer}; +use crate::{ + self as overseer, + dummy::{dummy_overseer_builder, one_for_all_overseer_builder}, + gen::Delay, + HeadSupportsParachains, +}; use metered_channel as metered; use assert_matches::assert_matches; @@ -40,6 +45,15 @@ use sp_core::crypto::Pair as _; use super::*; +fn block_info_to_pair(blocks: impl IntoIterator) -> Vec<(Hash, BlockNumber)> { + use std::iter::FromIterator; + Vec::from_iter( + blocks + .into_iter() + .map(|BlockInfo { hash, parent_hash: _, number }| (hash, number)), + ) +} + type SpawnedSubsystem = crate::gen::SpawnedSubsystem; struct TestSubsystem1(metered::MeteredSender); @@ -159,14 +173,13 @@ fn overseer_works() { let mut s1_rx = s1_rx.fuse(); let mut s2_rx = s2_rx.fuse(); - - let all_subsystems = AllSubsystems::<()>::dummy() + let (overseer, handle) = dummy_overseer_builder(spawner, MockSupportsParachains, None) + .unwrap() .replace_candidate_validation(move |_| TestSubsystem1(s1_tx)) - .replace_candidate_backing(move |_| TestSubsystem2(s2_tx)); - - let (overseer, handle) = - Overseer::new(vec![], all_subsystems, None, MockSupportsParachains, spawner).unwrap(); - let mut handle = Handle::Connected(handle); + .replace_candidate_backing(move |_| TestSubsystem2(s2_tx)) + .build() + .unwrap(); + let mut handle = Handle::new(handle); let overseer_fut = overseer.run().fuse(); pin_mut!(overseer_fut); @@ -219,17 +232,15 @@ fn overseer_metrics_work() { let third_block = BlockInfo { hash: third_block_hash, parent_hash: second_block_hash, number: 3 }; - let all_subsystems = AllSubsystems::<()>::dummy(); let registry = prometheus::Registry::new(); - let (overseer, handle) = Overseer::new( - vec![first_block], - all_subsystems, - Some(®istry), - MockSupportsParachains, - spawner, - ) - .unwrap(); - let mut handle = Handle::Connected(handle); + let (overseer, handle) = + dummy_overseer_builder(spawner, MockSupportsParachains, Some(®istry)) + .unwrap() + .leaves(block_info_to_pair(vec![first_block])) + .build() + .unwrap(); + + let mut handle = Handle::new(handle); let overseer_fut = overseer.run().fuse(); pin_mut!(overseer_fut); @@ -256,13 +267,20 @@ fn overseer_metrics_work() { fn extract_metrics(registry: &prometheus::Registry) -> HashMap<&'static str, u64> { let gather = registry.gather(); - let gather = &gather[2..]; - assert_eq!(gather[0].get_name(), "parachain_activated_heads_total"); - assert_eq!(gather[1].get_name(), "parachain_deactivated_heads_total"); - assert_eq!(gather[2].get_name(), "parachain_messages_relayed_total"); - let activated = gather[0].get_metric()[0].get_counter().get_value() as u64; - let deactivated = gather[1].get_metric()[0].get_counter().get_value() as u64; - let relayed = gather[2].get_metric()[0].get_counter().get_value() as u64; + assert!(!gather.is_empty(), "Gathered metrics are not empty. qed"); + let extract = |name: &str| -> u64 { + gather + .iter() + .find(|&mf| dbg!(mf.get_name()) == dbg!(name)) + .expect(&format!("Must contain `{}` metric", name)) + .get_metric()[0] + .get_counter() + .get_value() as u64 + }; + + let activated = extract("parachain_activated_heads_total"); + let deactivated = extract("parachain_deactivated_heads_total"); + let relayed = extract("parachain_messages_relayed_total"); let mut result = HashMap::new(); result.insert("activated", activated); result.insert("deactivated", deactivated); @@ -278,10 +296,11 @@ fn overseer_ends_on_subsystem_exit() { let spawner = sp_core::testing::TaskExecutor::new(); executor::block_on(async move { - let all_subsystems = - AllSubsystems::<()>::dummy().replace_candidate_backing(|_| ReturnOnStart); - let (overseer, _handle) = - Overseer::new(vec![], all_subsystems, None, MockSupportsParachains, spawner).unwrap(); + let (overseer, _handle) = dummy_overseer_builder(spawner, MockSupportsParachains, None) + .unwrap() + .replace_candidate_backing(|_| ReturnOnStart) + .build() + .unwrap(); overseer.run().await.unwrap(); }) @@ -379,13 +398,15 @@ fn overseer_start_stop_works() { let (tx_5, mut rx_5) = metered::channel(64); let (tx_6, mut rx_6) = metered::channel(64); - let all_subsystems = AllSubsystems::<()>::dummy() + + let (overseer, handle) = dummy_overseer_builder(spawner, MockSupportsParachains, None) + .unwrap() .replace_candidate_validation(move |_| TestSubsystem5(tx_5)) - .replace_candidate_backing(move |_| TestSubsystem6(tx_6)); - let (overseer, handle) = - Overseer::new(vec![first_block], all_subsystems, None, MockSupportsParachains, spawner) - .unwrap(); - let mut handle = Handle::Connected(handle); + .replace_candidate_backing(move |_| TestSubsystem6(tx_6)) + .leaves(block_info_to_pair(vec![first_block])) + .build() + .unwrap(); + let mut handle = Handle::new(handle); let overseer_fut = overseer.run().fuse(); pin_mut!(overseer_fut); @@ -475,20 +496,16 @@ fn overseer_finalize_works() { let (tx_5, mut rx_5) = metered::channel(64); let (tx_6, mut rx_6) = metered::channel(64); - let all_subsystems = AllSubsystems::<()>::dummy() - .replace_candidate_validation(move |_| TestSubsystem5(tx_5)) - .replace_candidate_backing(move |_| TestSubsystem6(tx_6)); - // start with two forks of different height. - let (overseer, handle) = Overseer::new( - vec![first_block, second_block], - all_subsystems, - None, - MockSupportsParachains, - spawner, - ) - .unwrap(); - let mut handle = Handle::Connected(handle); + + let (overseer, handle) = dummy_overseer_builder(spawner, MockSupportsParachains, None) + .unwrap() + .replace_candidate_validation(move |_| TestSubsystem5(tx_5)) + .replace_candidate_backing(move |_| TestSubsystem6(tx_6)) + .leaves(block_info_to_pair(vec![first_block, second_block])) + .build() + .unwrap(); + let mut handle = Handle::new(handle); let overseer_fut = overseer.run().fuse(); pin_mut!(overseer_fut); @@ -557,6 +574,103 @@ fn overseer_finalize_works() { }); } +// Tests that finalization of an active leaf doesn't remove it from +// the leaves set. +#[test] +fn overseer_finalize_leaf_preserves_it() { + let spawner = sp_core::testing::TaskExecutor::new(); + + executor::block_on(async move { + let first_block_hash = [1; 32].into(); + let second_block_hash = [2; 32].into(); + + let first_block = + BlockInfo { hash: first_block_hash, parent_hash: [0; 32].into(), number: 1 }; + let second_block = + BlockInfo { hash: second_block_hash, parent_hash: [42; 32].into(), number: 1 }; + + let (tx_5, mut rx_5) = metered::channel(64); + let (tx_6, mut rx_6) = metered::channel(64); + + // start with two forks at height 1. + + let (overseer, handle) = dummy_overseer_builder(spawner, MockSupportsParachains, None) + .unwrap() + .replace_candidate_validation(move |_| TestSubsystem5(tx_5)) + .replace_candidate_backing(move |_| TestSubsystem6(tx_6)) + .leaves(block_info_to_pair(vec![first_block.clone(), second_block])) + .build() + .unwrap(); + let mut handle = Handle::new(handle); + + let overseer_fut = overseer.run().fuse(); + pin_mut!(overseer_fut); + + let mut ss5_results = Vec::new(); + let mut ss6_results = Vec::new(); + + // This should stop work on the second block, but only the + // second block. + handle.block_finalized(first_block).await; + + let expected_heartbeats = vec![ + OverseerSignal::ActiveLeaves(ActiveLeavesUpdate::start_work(ActivatedLeaf { + hash: first_block_hash, + number: 1, + span: Arc::new(jaeger::Span::Disabled), + status: LeafStatus::Fresh, + })), + OverseerSignal::ActiveLeaves(ActiveLeavesUpdate::start_work(ActivatedLeaf { + hash: second_block_hash, + number: 1, + span: Arc::new(jaeger::Span::Disabled), + status: LeafStatus::Fresh, + })), + OverseerSignal::ActiveLeaves(ActiveLeavesUpdate { + deactivated: [second_block_hash].as_ref().into(), + ..Default::default() + }), + OverseerSignal::BlockFinalized(first_block_hash, 1), + ]; + + loop { + select! { + res = overseer_fut => { + assert!(res.is_ok()); + break; + }, + res = rx_5.next() => { + if let Some(res) = res { + ss5_results.push(res); + } + } + res = rx_6.next() => { + if let Some(res) = res { + ss6_results.push(res); + } + } + complete => break, + } + + if ss5_results.len() == expected_heartbeats.len() && + ss6_results.len() == expected_heartbeats.len() + { + handle.stop().await; + } + } + + assert_eq!(ss5_results.len(), expected_heartbeats.len()); + assert_eq!(ss6_results.len(), expected_heartbeats.len()); + + // Notifications on finality for multiple blocks at once + // may be received in different orders. + for expected in expected_heartbeats { + assert!(ss5_results.contains(&expected)); + assert!(ss6_results.contains(&expected)); + } + }); +} + #[test] fn do_not_send_empty_leaves_update_on_block_finalization() { let spawner = sp_core::testing::TaskExecutor::new(); @@ -570,13 +684,13 @@ fn do_not_send_empty_leaves_update_on_block_finalization() { let (tx_5, mut rx_5) = metered::channel(64); - let all_subsystems = - AllSubsystems::<()>::dummy().replace_candidate_backing(move |_| TestSubsystem6(tx_5)); + let (overseer, handle) = dummy_overseer_builder(spawner, MockSupportsParachains, None) + .unwrap() + .replace_candidate_backing(move |_| TestSubsystem6(tx_5)) + .build() + .unwrap(); - let (overseer, handle) = - Overseer::new(Vec::new(), all_subsystems, None, MockSupportsParachains, spawner) - .unwrap(); - let mut handle = Handle::Connected(handle); + let mut handle = Handle::new(handle); let overseer_fut = overseer.run().fuse(); pin_mut!(overseer_fut); @@ -826,32 +940,13 @@ fn overseer_all_subsystems_receive_signals_and_messages() { msgs_received.clone(), ); - let all_subsystems = AllSubsystems { - candidate_validation: subsystem.clone(), - candidate_backing: subsystem.clone(), - collation_generation: subsystem.clone(), - collator_protocol: subsystem.clone(), - statement_distribution: subsystem.clone(), - availability_distribution: subsystem.clone(), - availability_recovery: subsystem.clone(), - bitfield_signing: subsystem.clone(), - bitfield_distribution: subsystem.clone(), - provisioner: subsystem.clone(), - runtime_api: subsystem.clone(), - availability_store: subsystem.clone(), - network_bridge: subsystem.clone(), - chain_api: subsystem.clone(), - approval_distribution: subsystem.clone(), - approval_voting: subsystem.clone(), - gossip_support: subsystem.clone(), - dispute_coordinator: subsystem.clone(), - dispute_participation: subsystem.clone(), - dispute_distribution: subsystem.clone(), - chain_selection: subsystem.clone(), - }; let (overseer, handle) = - Overseer::new(vec![], all_subsystems, None, MockSupportsParachains, spawner).unwrap(); - let mut handle = Handle::Connected(handle); + one_for_all_overseer_builder(spawner, MockSupportsParachains, subsystem, None) + .unwrap() + .build() + .unwrap(); + + let mut handle = Handle::new(handle); let overseer_fut = overseer.run().fuse(); pin_mut!(overseer_fut); diff --git a/node/primitives/Cargo.toml b/node/primitives/Cargo.toml index d8b15b808005..4a6d9abb6880 100644 --- a/node/primitives/Cargo.toml +++ b/node/primitives/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-primitives" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" description = "Primitives types for the Node-side" @@ -9,7 +9,7 @@ description = "Primitives types for the Node-side" bounded-vec = "0.4" futures = "0.3.17" polkadot-primitives = { path = "../../primitives" } -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] } sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-application-crypto = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-consensus-vrf = { git = "https://github.com/paritytech/substrate", branch = "master" } @@ -22,7 +22,7 @@ thiserror = "1.0.26" serde = { version = "1.0.130", features = ["derive"] } [target.'cfg(not(target_os = "unknown"))'.dependencies] -zstd = "0.6.0" +zstd = "0.9.0" [dev-dependencies] polkadot-erasure-coding = { path = "../../erasure-coding" } diff --git a/node/primitives/src/lib.rs b/node/primitives/src/lib.rs index c2c300fca74b..6e8490b67b91 100644 --- a/node/primitives/src/lib.rs +++ b/node/primitives/src/lib.rs @@ -223,7 +223,7 @@ pub struct Collation { pub hrmp_watermark: BlockNumber, } -/// Signal that is being returned back when a collation was seconded by a validator. +/// Signal that is being returned when a collation was seconded by a validator. #[derive(Debug)] pub struct CollationSecondedSignal { /// The hash of the relay chain block that was used as context to sign [`Self::statement`]. diff --git a/node/service/Cargo.toml b/node/service/Cargo.toml index affd8b25b33b..4b2162fa29ee 100644 --- a/node/service/Cargo.toml +++ b/node/service/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-service" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" @@ -8,8 +8,8 @@ edition = "2018" # Substrate Client sc-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master" } babe = { package = "sc-consensus-babe", git = "https://github.com/paritytech/substrate", branch = "master" } -beefy-primitives = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master" } -beefy-gadget = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master" } +beefy-primitives = { git = "https://github.com/paritytech/substrate", branch = "master" } +beefy-gadget = { git = "https://github.com/paritytech/substrate", branch = "master" } grandpa = { package = "sc-finality-grandpa", git = "https://github.com/paritytech/substrate", branch = "master" } sc-block-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-chain-spec = { git = "https://github.com/paritytech/substrate", branch = "master" } @@ -62,12 +62,13 @@ prometheus-endpoint = { package = "substrate-prometheus-endpoint", git = "https: # External Crates futures = "0.3.17" hex-literal = "0.3.3" -tracing = "0.1.27" +tracing = "0.1.28" serde = { version = "1.0.130", features = ["derive"] } thiserror = "1.0.26" kvdb = "0.10.0" kvdb-rocksdb = { version = "0.14.0", optional = true } async-trait = "0.1.51" +lru = "0.6" # Polkadot polkadot-node-core-parachains-inherent = { path = "../core/parachains-inherent" } diff --git a/node/service/res/rococo.json b/node/service/res/rococo.json index b5c28f5289a2..b12bed1b3fee 100644 --- a/node/service/res/rococo.json +++ b/node/service/res/rococo.json @@ -1,6 +1,6 @@ { "name": "Rococo", - "id": "rococo_v1_8", + "id": "rococo_v1_12", "chainType": "Live", "bootNodes": [ "/ip4/34.90.151.124/tcp/30333/p2p/12D3KooWF7BUbG5ErMZ47ZdarRwtpZamgcZqxwpnFzkhjc1spHnP", @@ -32,161 +32,161 @@ "genesis": { "raw": { "top": { - "0x42b50b77ef717947e7043bb52127d6654e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ee41af0530f856db6772616e8036be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0x6a0da05ca59913bc38a8630590f2627c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x1cb6f36e027abb2091cfb5110ab5087fdc6b171b77304263c292cc3ea5ed31ef": "0x0100000000000000040000000000000002", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195012fefbc5e5cee2846173676e80fab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502e5e3ed1cdc323ab626565668402fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0x196e027349017067f9eb56e2c4d9ded54e7b9012096b41c4eb3aaf947f6ea429": "0x0000", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a31727416d0095b96772616e80e1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e887ec3d30b64e896173676e80481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f7aec8a47707294b61756469802c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0x5c0d1176a568c1f92944340dbfed9e9c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x2762c81376aaa894b6f64c67e58cc6504e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950417ebe2c60c84ed5626565668403a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0xd57bce545fb382c34570e5dfbf338f5e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195068dec3fce5ade0966261626580da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa8349": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da99677d775b618280f5c76d192b43ea38c38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0x6a0da05ca59913bc38a8630590f2627c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xda7d4185f8093e80caceb64da45219e34e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba088dcde934c658227ee1dfafcd6e16903": "0x2062475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a040402a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b1602ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a008062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", "0x94eadf0156a8ad5156507773d0471e4a64fb6e378f53d72f7859ad0e6b6d8810": "0x0000000000", - "0x08c41974a97dbf15cfbec28365bea2da4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x31a3a2ce3603138b8b352e8f192ca55a4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb393c0875f4080dabc8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47": "0x4ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dccda6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa834992156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", + "0x08c41974a97dbf15cfbec28365bea2da5e0621c4869aa60c02be9adcc98a0d1d": "0x20034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d6227603a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a530307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d46d2cb2a4d496b46265656684025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0x2ce461329fdf4be12bce01afc0af09bcba7fb8745735dc3be2a2c61a72c39e78": "0x00", + "0xc2261276cc9d1f8598ea4b6a74b15c2f308ce9615de0775a82f8a94dc3d285a1": "0x01", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507d9c46786caf74af6261626580d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", "0xa8c65209d47ee80f56b0011e8fd91f504e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x5f9cc45b7a00c5899361e1c6099678dc4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", - "0x94eadf0156a8ad5156507773d0471e4a4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195075a33a2ed5ac2cdc6265656684034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950636f684eb09a15046772616e80d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509df5f4072c4244956261626580764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe21": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0x1cb6f36e027abb2091cfb5110ab5087f5e0621c4869aa60c02be9adcc98a0d1d": "0x20a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35010000000000000038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f0100000000000000d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a0100000000000000764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe2101000000000000007c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd808130100000000000000bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b0100000000000000720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed783720100000000000000da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa83490100000000000000", - "0xcec5070d609dd3497f72bde07fc96ba088dcde934c658227ee1dfafcd6e16903": "0x2062475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a040402a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b1602ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a008062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0xb341e3a63e58a188839b242d17f8c9f82586833f834350b4d435d5fd269ecc8b": "0x200500000003000000040000000200000001000000060000000000000007000000", - "0x5c0d1176a568c1f92944340dbfed9e9c530ebca703c85910e7164cb7d1c9e47b": "0x9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00", - "0x1cb6f36e027abb2091cfb5110ab5087fdc6b171b77304263c292cc3ea5ed31ef": "0x0100000000000000040000000000000002", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503c75eb9438a505fc6261626580a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb319b9aeb2f5add22992ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f": "0xe1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2aee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e2c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a53", - "0x5f9cc45b7a00c5899361e1c6099678dc8a2d09463effcc78a22d75b9cb87dffc": "0x0000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195043f25e7a03a30387696d6f6e8092156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x2f85f1e1378cb2d7b83adbaf0b5869c24e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da914076ec446ba6876ba5cb99bdb7129be8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb33bb8d7990ae3975438f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404": "0x36be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe218e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b752496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c0307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d58", - "0xcec5070d609dd3497f72bde07fc96ba0e0cdd062e6eaf24295ad4ccfc41d4609": "0x2062475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a0e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfaa076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed3586975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef7430e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477bf49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022afcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d38757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f48a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee81668bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80df6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f34903a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6fe1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2aee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e2c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a5338f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a040436be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe218e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b752496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c0307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b166c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c817c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac0116c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb53102fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a602ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5bc4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff351efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c4c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a004bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11ffab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df036858062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab474ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dccda6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa834992156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", - "0x06de3d8a54d27e44a9d5ce189618f22db4b49d95320d9021994c850f25b8e385": "0x000030000080000008000000000010000000100005000000050000000100000001000000000050000004000000286bee00000000040000000400000000000000000000000000000000000000000000000000000000000000000000000800000000200000040000000400000000001000b00400000000000000000000140000000400000004000000000000000000060000006400000002000000c8000000020000001900000000000000020000000200000000c817a804000000", - "0x94eadf0156a8ad5156507773d0471e4ab8ebad86f546c7e0b135a4212aace339": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e7240ce913e160eb6261626580bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3328718e032416872520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a": "0xfcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d38757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f48a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee81668bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80df6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f34903a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950149cf457032f53e57061726180d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x1405f2411d0af5a7ff397e7c9dc68d194e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xd57bce545fb382c34570e5dfbf338f5e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xf5207f03cfdce586301014700e2c25934e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x3a6772616e6470615f617574686f726974696573": "0x01200e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfa0100000000000000fcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d0100000000000000e1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1010000000000000036be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef401000000000000006c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c810100000000000000d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc3301000000000000004bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf1401000000000000004ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dcc0100000000000000", - "0x06de3d8a54d27e44a9d5ce189618f22d4e7b9012096b41c4eb3aaf947f6ea429": "0x0100", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503eaa3e59477bc9506261626580720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ed0b865484219eb06173676e80244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0x94eadf0156a8ad5156507773d0471e4a16973e1142f5bd30d9464076794007db": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950091b1bd4e8d4c12061756469802496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a9e62b8a5c8760f06265656684033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0x3a65787472696e7369635f696e646578": "0x00000000", - "0x26aa394eea5630e07c48ae0c9558cef75684a022a34dd8bfa2baaf44f172b710": "0x01", - "0x26aa394eea5630e07c48ae0c9558cef78a42f33323cb5ced3b44dd825fda9fcc": "0x4545454545454545454545454545454545454545454545454545454545454545", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19500a3d203cf823b13d6173676e80821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b75": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502d2937d2d9650f057061726180a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3df32aff68041374f02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16": "0x6c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c817c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac0116c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb53102fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195054435a901133fb946173676e8016c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0x2b06af9719ac64d755623cda8ddd9b949f99a2ce711f3a31b2fc05604c93f179": "0x2086975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef74348a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055ee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae86298788e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2cd2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1ac4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff35560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca65192156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66", - "0x50e709b04947c0cd2f04727ef76e88f64e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3c25dd840975e8979fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00": "0x4bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11ffab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da995445d4efb6eae1971fb125f6190c49202a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da90d10cc4959af6a68eba3bc06d5c7bc28520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x08c41974a97dbf15cfbec28365bea2da8f05bccc2f70ec66a32999c5761156be": "0x0000000000000000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9935ae9d4cb148940af99a366d100d5af02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x3fba98689ebed1138735e0e7a5a790ab4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a00d3cb0425699a66772616e804bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19501b1525326b5d47776772616e80fcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0xcec5070d609dd3497f72bde07fc96ba0e0cdd062e6eaf24295ad4ccfc41d4609": "0x2062475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a0e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfaa076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed3586975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef7430e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477bf49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022afcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d38757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f48a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee81668bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80df6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f34903a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6fe1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2aee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e2c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a5338f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a040436be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe218e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b752496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c0307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b166c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c817c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac0116c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb53102fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a602ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5bc4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff351efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c4c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a004bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11ffab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df036858062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab474ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dccda6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa834992156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", "0x1809d78346727a0ef58c0fa03bafa3234e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507f532159f03d44eb6175646980f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", + "0xb341e3a63e58a188839b242d17f8c9f8b5cab3380174032968897a4c3ce57c0a": "0x00000000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da90d10cc4959af6a68eba3bc06d5c7bc28520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "0xca32a41f4b3ed515863dc0a38697f84e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x4da2c41eaffa8e1a791c5d65beeefd1fff4a51b74593c3708682038efe5323b5": "0x00000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195021e85cbadb3ce9a26772616e806c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c81": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0xcec5070d609dd3497f72bde07fc96ba0ff3ae12770bea2e48d9bde7385e7a25f": "0x0000000002000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19502e5e3ed1cdc323ab626565668402fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d31ed6cbd51d9f636265656684039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a53": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", + "0x084e7f70a295a190e2e33fd3f8cdfcc24e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9a606acaa4558183a2102457959a213a192ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195012b62e212b6a7a9c696d6f6e808e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19508248d97b4996007070617261806a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0x08c41974a97dbf15cfbec28365bea2da8f05bccc2f70ec66a32999c5761156be": "0x0000000000000000", "0xc2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80": "0x0000362b4c8ee30d0000000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19501e69501baac264d4696d6f6e80ee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0x2099d7f109d6e535fb000bba623fd4404e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba04e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950438ac98f6d864839696d6f6e80d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950776743a4ae520892617564698064d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950bad35ce880ec90d4696d6f6e80c4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff35": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0xf9922c78cfa3c316d27a3eb48145ab1b4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", - "0xcd710b30bd2eab0352ddcc26417aa1940b76934f4cc08dee01012d059e1b83ee": "0x00", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ab7b30d24546522861756469804e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x196e027349017067f9eb56e2c4d9ded54e7b9012096b41c4eb3aaf947f6ea429": "0x0000", "0x1cb6f36e027abb2091cfb5110ab5087f66e8f035c8adbe7f1547b43c51e6f8a4": "0x00000000", - "0xf0c365c3cf59d671eb72da0e7a4113c44e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x1cb6f36e027abb2091cfb5110ab5087f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x4da2c41eaffa8e1a791c5d65beeefd1f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xda7d4185f8093e80caceb64da45219e34e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x2ce461329fdf4be12bce01afc0af09bc4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", "0xcd710b30bd2eab0352ddcc26417aa1944e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x2b06af9719ac64d755623cda8ddd9b944e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x26aa394eea5630e07c48ae0c9558cef7a44704b568d21667356a5a050c118746b4def25cfda6ef3a00000000": "0x4545454545454545454545454545454545454545454545454545454545454545", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e592f5ef74f560666173676e8068bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80d": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19509df5f4072c4244956261626580764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe21": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", + "0x26aa394eea5630e07c48ae0c9558cef7a7fd6c28836b9a28522dc924110cf439": "0x01", "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da945315c068df2baa1c677b9b3e81f7439fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x94eadf0156a8ad5156507773d0471e4a1e8de4295679f32032acb318db364135": "0x00", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d7ce35a3ce71c3d76175646980160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0x26aa394eea5630e07c48ae0c9558cef78a42f33323cb5ced3b44dd825fda9fcc": "0x4545454545454545454545454545454545454545454545454545454545454545", + "0xf5207f03cfdce586301014700e2c25934e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x63f78c98723ddc9073523ef3beefda0c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f5bc812467e867ac7061726180669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950feca8028a77ba7626772616e804ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dcc": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0x08c41974a97dbf15cfbec28365bea2daaacf00b9b41fda7a9268821c2a2b3e4c": "0x20034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d6227603a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a530307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a068f246c1094c1462656566840307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d58": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d46d2cb2a4d496b46265656684025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19500d1064d79ff558056772616e800e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfa": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e193783dd6b845ea6173676e80ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477b": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195068dec3fce5ade0966261626580da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa8349": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195012b62e212b6a7a9c696d6f6e808e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0x26aa394eea5630e07c48ae0c9558cef7a7fd6c28836b9a28522dc924110cf439": "0x01", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9b483908290ae9b936c519917440306ea62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x26aa394eea5630e07c48ae0c9558cef7a44704b568d21667356a5a050c118746b4def25cfda6ef3a00000000": "0x4545454545454545454545454545454545454545454545454545454545454545", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507acca078b878d43a70617261801efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3d560e0b6940e074462475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a": "0x0e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfaa076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed3586975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef7430e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477bf49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276", - "0x084e7f70a295a190e2e33fd3f8cdfcc24e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x3d9cad2baf702e20b136f4c8900cd8024e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x3fba98689ebed1138735e0e7a5a790abee99a84ccbfb4b82e714617e5e06f6f7": "0xd0070000", + "0x50e709b04947c0cd2f04727ef76e88f64e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x94eadf0156a8ad5156507773d0471e4a4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ef9482dba3e5b0d862616265807c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0x26aa394eea5630e07c48ae0c9558cef74e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x2099d7f109d6e535fb000bba623fd4409f99a2ce711f3a31b2fc05604c93f179": "0x20f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3cf6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f3492c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d2496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26", + "0x94eadf0156a8ad5156507773d0471e4a9ce0310edffce7a01a96c2039f92dd10": "0x01000000", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f8df002813b43b80696d6f6e80560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f7aec8a47707294b61756469802c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da914076ec446ba6876ba5cb99bdb7129be8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da942cd783ab1dc80a5347fe6c6f20ea02b9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00": "0x00000000000000000100000000000000000064a7b3b6e00d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xd5c41b52a371aa36c9254ce34324f2a54e7b9012096b41c4eb3aaf947f6ea429": "0x0000", "0x26aa394eea5630e07c48ae0c9558cef7f9cce9c888469bb1a0dceaa129672ef8": "0x3d8e18726f636f636f", - "0xb341e3a63e58a188839b242d17f8c9f87a50c904b368210021127f9238883a6e": "0x201efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f0e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195009ab51029a10e53570617261800e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0x6a0da05ca59913bc38a8630590f2627c2a351b6a99a5b21324516e668bb86a57": "0x00", - "0xb341e3a63e58a188839b242d17f8c9f8b5cab3380174032968897a4c3ce57c0a": "0x00000000", - "0x4da2c41eaffa8e1a791c5d65beeefd1f028685274e698e781f7f2766cba0cc8300000000": "0x201efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f0e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d000000000000000000000000000000000000000100000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503d7dc9205a149f6a6175646980306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503c0791148c7780b8626162658038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195043d506aedab0d2ce696d6f6e8048a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19508248d97b4996007070617261806a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", - "0x2ce461329fdf4be12bce01afc0af09bcba7fb8745735dc3be2a2c61a72c39e78": "0x00", + "0x2ce461329fdf4be12bce01afc0af09bc4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", + "0x94eadf0156a8ad5156507773d0471e4a16973e1142f5bd30d9464076794007db": "0x00", + "0x2099d7f109d6e535fb000bba623fd4404e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3c25dd840975e8979fa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00": "0x4bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca651042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11ffab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3d560e0b6940e074462475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a": "0x0e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfaa076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed3586975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef7430e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477bf49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276", + "0x94eadf0156a8ad5156507773d0471e4ab8ebad86f546c7e0b135a4212aace339": "0x00", + "0xd8bbe27baf3aa64bb483afabc240f68e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195021e85cbadb3ce9a26772616e806c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c81": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0x94eadf0156a8ad5156507773d0471e4a1e8de4295679f32032acb318db364135": "0x00", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950091b1bd4e8d4c12061756469802496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ed0b865484219eb06173676e80244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", + "0x08c41974a97dbf15cfbec28365bea2da4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950149cf457032f53e57061726180d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503639d22ceafce3266265656684020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0x2099d7f109d6e535fb000bba623fd4404c014e6bf8b8c2c011e7290b85696bb3": "0x20f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3cf6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f3492c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d2496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19501e69501baac264d4696d6f6e80ee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950feca8028a77ba7626772616e804ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dcc": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9b483908290ae9b936c519917440306ea62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb33bb8d7990ae3975438f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404": "0x36be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe218e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b752496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c0307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d58", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e887ec3d30b64e896173676e80481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0x1cb6f36e027abb2091cfb5110ab5087faacf00b9b41fda7a9268821c2a2b3e4c": "0x20a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35010000000000000038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f0100000000000000d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a0100000000000000764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe2101000000000000007c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd808130100000000000000bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b0100000000000000720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed783720100000000000000da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa83490100000000000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d1e1b030b162ca447061726180042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195043d506aedab0d2ce696d6f6e8048a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507acca078b878d43a70617261801efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0x2762c81376aaa894b6f64c67e58cc6504e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x2f85f1e1378cb2d7b83adbaf0b5869c24e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3328718e032416872520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a": "0xfcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d38757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f48a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee81668bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80df6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f34903a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e", + "0x1cb6f36e027abb2091cfb5110ab5087f5e0621c4869aa60c02be9adcc98a0d1d": "0x20a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35010000000000000038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f0100000000000000d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a0100000000000000764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe2101000000000000007c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd808130100000000000000bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b0100000000000000720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed783720100000000000000da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa83490100000000000000", + "0x5f9cc45b7a00c5899361e1c6099678dc8a2d09463effcc78a22d75b9cb87dffc": "0x0000000000000000", "0x1a736d37504c2e3fb73dad160c55b2914e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xb341e3a63e58a188839b242d17f8c9f84e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x3fba98689ebed1138735e0e7a5a790abee99a84ccbfb4b82e714617e5e06f6f7": "0xd0070000", - "0x3f1467a096bcd71a5b6a0c8155e208104e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x6a0da05ca59913bc38a8630590f2627c2a351b6a99a5b21324516e668bb86a57": "0x00", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950585cf1f6f8e46326696d6f6e8086975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef743": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", - "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3dc18ebe8d771cfa002ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864": "0xd9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5bc4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff351efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c4c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d1e1b030b162ca447061726180042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", - "0x94eadf0156a8ad5156507773d0471e4a9ce0310edffce7a01a96c2039f92dd10": "0x01000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195012fefbc5e5cee2846173676e80fab485e87ed1537d089df521edf983a777c57065a702d7ed2b6a2926f31da74f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb319b9aeb2f5add22992ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f": "0xe1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2aee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae8629878a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037244f3421b310c68646e99cdbf4963e02067601f57756b072a4b19431448c186e2c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a53", + "0xcec5070d609dd3497f72bde07fc96ba04e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503c75eb9438a505fc6261626580a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a068f246c1094c1462656566840307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d58": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e7240ce913e160eb6261626580bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9935ae9d4cb148940af99a366d100d5af02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503c0791148c7780b8626162658038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb393c0875f4080dabc8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47": "0x4ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dccda6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa834992156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d481538f8c2c011a76d7d57db11c2789a5e83b0f9680dc6d26211d2f9c021ae4c4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950deeb3985cefbdfa47061726180882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", - "0xd8bbe27baf3aa64bb483afabc240f68e4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x08c41974a97dbf15cfbec28365bea2da5e0621c4869aa60c02be9adcc98a0d1d": "0x20034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d6227603a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a530307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507d9c46786caf74af6261626580d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f6584bfaf470c1b26175646980f6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f349": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", - "0x26aa394eea5630e07c48ae0c9558cef74e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da99677d775b618280f5c76d192b43ea38c38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f308ce9615de0775a82f8a94dc3d285a1": "0x01", - "0x2099d7f109d6e535fb000bba623fd4409f99a2ce711f3a31b2fc05604c93f179": "0x20f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3cf6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f3492c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d2496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d7ce35a3ce71c3d76175646980160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e592f5ef74f560666173676e8068bf52c482630a8d1511f2edd14f34127a7d7082219cccf7fd4c6ecdb535f80d": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0x06de3d8a54d27e44a9d5ce189618f22d4e7b9012096b41c4eb3aaf947f6ea429": "0x0100", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3dc18ebe8d771cfa002ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864": "0xd9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5bc4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff351efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c4c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474", + "0x06de3d8a54d27e44a9d5ce189618f22db4b49d95320d9021994c850f25b8e385": "0x000030000080000008000000000010000000100005000000050000000100000001000000000050000004000000286bee00000000040000000400000000000000000000000000000000000000000000000000000000000000000000000800000000200000040000000400000000001000b00400000000000000000000140000000400000004000000000000000000060000006400000002000000c8000000020000001900000000000000020000000200000000c817a804000000", + "0x4da2c41eaffa8e1a791c5d65beeefd1f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x4da2c41eaffa8e1a791c5d65beeefd1fff4a51b74593c3708682038efe5323b5": "0x00000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ee41af0530f856db6772616e8036be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef4": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950776743a4ae520892617564698064d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0x5c0d1176a568c1f92944340dbfed9e9c530ebca703c85910e7164cb7d1c9e47b": "0x9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00", + "0x5c0d1176a568c1f92944340dbfed9e9c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x4da2c41eaffa8e1a791c5d65beeefd1f028685274e698e781f7f2766cba0cc8300000000": "0x201efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f0e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d000000000000000000000000000000000000000100000000000000", + "0x08c41974a97dbf15cfbec28365bea2daaacf00b9b41fda7a9268821c2a2b3e4c": "0x20034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d6227603a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a530307d29bbf6a5c4061c2157b44fda33b7bb4ec52a5a0305668c74688cedf288d5802fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6020019a8bb188f8145d02fa855e9c36e9914457d37c500e03634b5223aa5702474033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685025e84e95ed043e387ddb8668176b42f8e2773ddd84f7f58a6d9bf436a4b527986", + "0xb341e3a63e58a188839b242d17f8c9f87a50c904b368210021127f9238883a6e": "0x201efc23c0b51ad609ab670ecf45807e31acbd8e7e5cb7c07cf49ee42992d2867c882d72965e642677583b333b2d173ac94b5fd6c405c76184bb14293be748a13b6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac01a8e61ffacafaf546283dc92d14d7cc70ea0151a5dd81fdf73ff5a2951f2b6037669a10892119453e9feb4e3f1ee8e028916cc3240022920ad643846fbdbee816042f07fc5268f13c026bbe199d63e6ac77a0c2a780f71cda05cee5a6f1b3f11f0e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205d822d4088b20dca29a580a577a97d6f024bb24c9550bebdfd7d2d18e946a1c7d", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950438ac98f6d864839696d6f6e80d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0xcec5070d609dd3497f72bde07fc96ba0ff3ae12770bea2e48d9bde7385e7a25f": "0x0000000002000000", + "0x1cb6f36e027abb2091cfb5110ab5087f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x5f9cc45b7a00c5899361e1c6099678dc4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19500a3d203cf823b13d6173676e80821271c99c958b9220f1771d9f5e29af969edfa865631dba31e1ab7bc0582b75": "0x38f3c2f38f6d47f161e98c697bbe3ca0e47c033460afda0dda314ab4222a0404", + "0x2b06af9719ac64d755623cda8ddd9b949f99a2ce711f3a31b2fc05604c93f179": "0x2086975a37211f8704e947a365b720f7a3e2757988eaa7d0f197e83dba355ef74348a910c0af90898f11bd57d37ceaea53c78994f8e1833a7ade483c9a84bde055ee93e26259decb89afcf17ef2aa0fa2db2e1042fb8f56ecfb24d19eae86298788e95b9b5b4dc69790b67b566567ca8bf8cdef3a3a8bb65393c0d1d1c87cd2d2cd2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1ac4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff35560d90ca51e9c9481b8a9810060e04d0708d246714960439f804e5c6f40ca65192156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503eaa3e59477bc9506261626580720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed78372": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0x42b50b77ef717947e7043bb52127d6654e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195009ab51029a10e53570617261800e07a51d3213842f8e9363ce8e444255990a225f87e80a3d651db7841e1a0205": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", + "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da995445d4efb6eae1971fb125f6190c49202a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950d31ed6cbd51d9f636265656684039d065fe4f9234f0a4f13cc3ae585f2691e9c25afa469618abb6645111f607a53": "0x92ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f", + "0x3fba98689ebed1138735e0e7a5a790ab4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xb341e3a63e58a188839b242d17f8c9f84e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a9e62b8a5c8760f06265656684033f1a6d47fe86f88934e4b83b9fae903b92b5dcf4fec97d5e3e8bf4f39df03685": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950e193783dd6b845ea6173676e80ec60e71fe4a567ef9fef99d4bbf37ffae70564b41aa6f94ef0317c13e0a5477b": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", "0x5f9cc45b7a00c5899361e1c6099678dcd47cb8f5328af743ddfb361e7180e7fcbb1bdbcacd6ac9340000000000000000": "0x00000000", - "0x3d9cad2baf702e20b136f4c8900cd8024e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da9a606acaa4558183a2102457959a213a192ef83665b39d7a565e11bf8d18d41d45a8011601c339e57a8ea88c8ff7bba6f": "0x0000000001000000010000000000000000407a10f35a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "0x2099d7f109d6e535fb000bba623fd4404c014e6bf8b8c2c011e7290b85696bb3": "0x20f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3cf6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f3492c57f81fd311c1ab53813c6817fe67f8947f8d39258252663b3384ab4195494d2496f28d887d84705c6dae98aee8bf90fc5ad10bb5545eca1de6b68425b70f7c306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531160ea09c5717270e958a3da42673fa011613a9539b2e4ebcad8626bc117ca04a64d59feddb3d00316a55906953fb3db8985797472bd2e6c7ea1ab730cc339d7f4e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26", - "0x63f78c98723ddc9073523ef3beefda0c4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x3a636f6465": "0x52bc537646db8e0528b52ffd00587cf2041e1346b713541070589c0ef0037d38990596d40bf8dcd604f21f6be13b283e40046902729805d1547369a81a401c42d559e691220f0355686207ba12107399dc367543acecb86fe506fc073e615ffcb4a4edddd6f69652a6246531140f132f14ed95c27985dc55af147edfa167532865ceaa3cd93294ce3f00d1fc7d77bf24e0f7f30302fcbea73bff864c31f2f7ddac7e654a6305f2d761e75238d1c85d7f43a61624993f0cd40ff4336b2499835872e9836ef6be2335a9495f0814e4e5d27b35cfdffbce0b7f6cc873e6784f0a479abddfde030abab9a4031d2337fea145a5f0c726f7771efed890e9cc21bd178e9d49df51cf0bb7771cb6f7bea749a1f75ff8438b0820941bcfc983148e3493bec77b7afe289ccf8df4677f939e2e065b85737b48f38b0a79cd1da13300489f6bd574e966b3e8fdda4fbff6b6b0bfa31ffdae7a32805edf7f7ba7dfddee5aaf7e37d0efafbe7f37f8d34f0033d3bf21cdf3bba19fa6a0a1787777900ff1ffa145454545d93fc8b363ff9a1dcfe8e06fdf73a0ef78a495d216a8be59a38a47b33cfb9528b1ec8fea161533e741a09b38238d65fa740c4ad632fdf92a6fa53ed3f7a7306f15711a25bde5f58ad27712d4adfbfd3d4d9900272dd35779cb3ef5bf610d79f096c52a5fd1a74fd47de44a1466bc800b3f68c11362dfdc6d450d12e4ee57b11acf56391eb939cb2a1e1409faa32ad3a74f61cdeaa74f9bf8d1ac9e4e9347552ee569850b488c2a1acbf3e6d542b57d08ddfc01824c74f26c557d1ad6563901402e2fd109f27c4314442fde8fe2e2978e586546879afbabfd7e8b8368a62f2ae44da7e8660fd08a19b13cad40a10b3df2b452c61259c7ed535ab63f472a826c5bb4895ed9213453184501a8e3adf7af5f9bd55ff1b7caf14873ada18a7e3838c66995fdfaef2d4afaca3e97474a8e9fed77ddf4462195d22a5bdf432ef45a659f6b957d2edba744ae3cfad92cee4778f4bfdfdd9092adb24fc202a479f42325b3fdf9e130fa5128d75148b3875eae61672e44b5ca82adb23f82d9ce59a6b06c9f92cdba6f9f4ae9164892a411a2fdda2cff8b83805cf690a655f63beabd7d0f67c6e9d614edcfafe254abec070370d4c99666fb458068d6b4528612d97e50b3eadb1f82ce40b3fdc9e551c7cb6c7f7a8b8ae3b4326bfd388b90ed8f938c6cc5719e91298dda283a3ab5b03fd63c47afd53ff2c833489e3fa790c9ca6166a55533cf5735cb7ffe8f66d59fbf85dd1c0038afbc20964f795e71810c72b76649926406c491266f3fbb35c511276f3fbde5f28127caf20ad9163b10b7e79a65f3f6db115de40d8f4b74f2c55cabe85b2c0090e69929cee1085d68d5ccf46bb7a648dfc30e6bafe8e300a6f22ca3d0f2cdd30a17aac8f4270eb52f2a44bd55106516c50a7ff7777ff72844d9dddd97907104175301e0151aa4510e3991fb390ffcd1f500d29f0d64feecba2982b33c02f6cdeaef9a6a563f4eb36aeed2083172bfd72d176b1e79e4a6c9fd54a749479f86adc2e923ddcc136704737f47dfe98f4edf7fd257e261e73243b91f0d6bfe6a190a8ba96b8f869e3f28d7a365285e690a01a264feb121d3ef9fdf0e952433cd0124bd66cddcdf516f4e21f4c7b1f39005d2ec3f7f7e3838e6e6a7c32cca748613a7b11230cf1b21a76d4637f36cd6d83fbfbe4c690ab09ffe387fb66ab6aa3e0becdfa15fc9c4b355153bee69a1a607e8a608d61f53d9be4eb3462e48b34650d5ac5127dbb7ffa3599eed152366d93e4db75ae4c9f667b33a8f3cb27db059fdf651cdf2b76fdf6b167dfb13c76225b37c75f327cea893fdbb19d2dcd1ef86da2a8ac720cfb5e97703c539d49fe1cc5d373f1c2e1e3fdfe7fa9bf4545b85c720cfa44f35ab7b7f9a666ddd361ae171f4a41f6d1e98e783cddade1fd5acd1fb77b355ded30f079a6bab3c3c7a4ffa2d9cd90b833c8fbea33da997e616cedc85339346e16cd598caf3396f517971f66ace9c91264f3cdeb7efdff99c33d770a4198acd6391cce1209be7f4727fd7b537bf8b47a17c9f86331cb93cdfbf494ff3472efbcf56cdefea37e7c96b154eabfcb79fada2ffadf29fdf0d5bf51b563cd20cc5f338440ef27c7f8660385bd54fbf1b2e9ead1a511673ad6a30d5ac99fd6b38f3376bbe3fe7ad4a9224498afeaa29c4b33f4ef69f388e95e8e4792344a296896ef280b324d1c8b3249dc83ef22c492972679a38e3e7fef9cd008e35f7f734479fe3a6b766af4630d31fc13c72b9bf366b7eff6cd6f6f36bb3eecfe79a35f3fcee86336f21cdddec0176f307d8b947bf1b361c04bcdfdf0df7e7278099efd32f87ed2f1eb7dfbeeb2f07306f3fbfdaaafaf3bbc17e4f77d4bbe1f6f3f36e7ea4e7c291cbdcdf70f4a47087fb233cd27c7f0bc78d1b6be6fe864a463ff3fc6e187dc7856300f2fd6e7e1c1eb9ccfd0dc759e6fb5b388ee3388ee3b8fd6cd528807c7fb66ae421df9fad1a1b90efcf568d45f2fdd9aa11887c7fb66a7492efcf568d43e4fbb355f77b9c0b95fc785151511a99fb99b770e61b8e3cb97e473d2eacbf8533cf6f8720f97e4ff7f428fcd93287479aa178be781c22dfefa8b78533cfefe220cf16cf568d35d3efe99eaee16c157d0f67ab4654a63f711a2bf93c6f8446b44ae962c0f9f37632e0fc79bbd92cfa2397e7cf66f5cfef3aa4998634d766d19fdf51afc3996bb3eccfefe87783c54140fa1df56c48f3fce877edc900f6cb94a600fdfbedfb7783c54140fa9d7b36a4b93ffaf3f3efe9f9ddd0dfd33dddd33ddd518f86337748f3fc0c3033fd9eee69214aa907baf903ec4c136704b3ffec56ed95fffc6ef600e977c36cd5c865fff9e140f36c957f4fb7409ae9cfd09f79b66afe8c0e5ceee772e3191dfaebf7571c4433c5b35563cdf3fde79703fdc6633ffd9e9e388e958079de083515eaa608f6fbcf668da9ecef9f6ad67c7f9a66d1f7afdda2a23fd8ac7985066964ffd9ac994754f69f388e957c9e374294e2d04d20e02c8d88e5539e575890449ea76ece0f0820ced34a5151def2b4529446a679c27453079cb69b3ec069bbb9034e5b32825e41850c52098a920abe354a534a514a524a4e94884a43a523be31be2f7c6a7c5cf8ba503ac1575422bf277c4ef8a05042a2f481ef0a1f16be257c46f8bcf88ef081f115e123c2d7c5b7c5f7030a18f962e065e16b818786d78597822f04df14df131c0ab8146c62741ae8601d171d10be283e107c2cf8aa6c45200581040412171f172432484d208d411283538344237d41620269099c17bc283c2c7c4e7850b80fbc076ec579e05af80e3c0bc7c2cb2f0d4a059d82b280ae807ac0491326412c41b2800240b1a1061a4a1e2869e0b3c257fbaaf069e18bc267c677c657c627c6978423df10be1d7c3c286580f3a2fbe2db428989d212a50d7054f0a42095f149f19cc07160fb82878557724870497c52a0344fe6c580b405ef06de13bc1a7445f068e0cdc0938107038f8a8e0b1d16484d7856745e7c439d11ee95bb4523e189718dc019a18be2d3e2d341b7c4064647eb94d025e10ba3838294c6474609c64dd9aec051e98670bf2075a09382840152942d8c1119f408dd13dd07465c904c40bbb85c90605f0f3e2b5f79c1e0bee88ec01d81030117a3455e10b8127021a030d8a4c03541b2b25181db00c704a70487018e887a817485b4036ec81382c70517e556e18cf094f0ad80e403520f483cd88a6e0f3e136c5ca05ad8b6c089c0cb62c3022765b302a701cf0aa42cb69a57dbaac01df149b19de101c1fbc13685ad8c7e629b056d577cb08f892bc6e681ad898d031bcc9302cd010f5c191c199c199488c4819b04cf06370caf8a8b048f8cebc53dc206855b84fb030e0bdc156e133c247849f0c0f096e085d111e13bc2a391b4e8a8b838b84fe898b850f0c6205d718140d24033d14b9072b0e580e2a0cb0007eb60b0a941ba018706dd006903a42f90bcc075806b02c7049a810d8d2d0b1fd9cd3c26785e785f6c5ee87e40c24127842d0adc08b62ef4940d07fd812d8dae0b6e096f079e16b4b669e1fae06a71ad7024d8d6e09ce09ee03cc07de0cbc1770597814f09b40434c69980232f11b82570b43b82fbc475e27ee07ae076e03671397037703570619789bbc4cdc055e22641b5b818b8542ed145e24eb94357ca8d728fb8465cd216d92f582fd82ed8352c17ac1a360dbb05ab059b058b86c582bd82b582add92a582ad829d833ac146c141a66cdb0655828d827b413d609960cdb04cb04bb044bb3635825d82458316c18160c8b044a03fb85f58266618f4075608d608b608960bbb043b0332b041b040b04cb85fd81ddc25eb156e815eb03cb03ab85dd81c5c2eac05e6171606f606d606b6069409bb033b0555819d8185818582aac8c6ec1bac056b12de826ec14548cde805d8195c2466155d054a81a940b36051605d604148c26b2315b023b82ee800d8105817dc23a613f603b60396037603560617609cf81cd8055c22661892c12768a9562a3d01dd823680cac1196ac45f50bd50bb50b950b558d9a46dd42d542cd42c542bd02d500fd001501098a2e4a7744670425025705c98a6e0cafa83ee15d18426de03a6810502cb407e8153a891e6a0e7c515a03ad44638022817e41a3408b4097409b40cba04ea069d02c5034a8129aa456a05da06bd0332813a814a819f409140a940c1a06f5a243408d407f40b7f890f07d417940b1a0e59705bda2a5d01b7c3ea032a035a03310829e809a8082808e80868092803ad146d00e502a5409bac40f3e10f9661f1639e409480001758d8ee649474c18b5fb3c314201224e8cf800418448471d09131f22444893fa2ca18091202642f84024e8880f5012244c92102112435a623e5992c448900f12223e3e3ee42029319bf8c024091122807c84f82192c4490e62e21304114678785212d3e70893264c881839c2a48901829808d1e4c8915c431a9a4f9ef82ca921912d232e04510097911a33c8e7890f3e3ee2cb280d244d8ef820b119a1319f10e1a3e409113e3a24201c5d2189934cc4932401202287232b0019d57046559843f83061199d31a5308138d2c489cfcca88c0924c40f497c60d2e40891244eb20f058c882ea3274c1f9a34017242c44912209e00f930a940132244f828c93162c244e2c3e487244f98081164e44813284984f8f1211204d4c4890f5090d11226922444827c9e0009712466449b4f7c920425016a024490104688fc402489936cc4091226468070b0311a63124101224a78b2c487899320808020828489104d28c02449128298343942e427082461cc263ec88cbe984f8298f840f1f162fec0240912263e4e88f8041941920409132347788c8c307d90343952332ac2046ae2c3139f27374644984f828470122444131ca32ea6912023488830699204894fd093244f807c9ce41809613ef1016a7284081141499624a1809125498c4031f2a320cc274e846802f403111b2320cc27404d829e3411801120233ca4465acc0a247192817c94003561c00ee1a89c3e3e42f80871801e90f8fcf083911e768cae984f941cf101e2480de69320263e403e403049f2232b9824f1616634837924c9132649808286f02142c412274e8c1001f241b2248910a292234d968834a32a6610448c0419416224c8a700a7510c2c9064899124414998247119c9a692234d965080884f9010477c86f06119b96002350180078367c426bb62460bf214ea664992990a79ccad5da85da04ee856593b73ceb9c362b1ae6f4ee9d64ebbbba9574ae9d6dd777bd978f875bad5ba757b53774adda973d57ddbacb5be550ac45aba39fdf182b78dba7b538ad2a19b534aaf0fdfb6daa3696fdbe528dd71779d5a43df66b66df34b2bad1dc37da1eebdb5c34029b5f6c5dd5fdca9edeeb9f97d717a299deedddbcbd65e7ddb9c6e75bb9b7bedde9c5ef779dd5adbdd7eda4e27dabd6d278eb69fb6deeacce974dab68df3d389a32fa7939f4ea793fbe974a2d565dae5db4e395b9fdc4fbef9e9744fa7ede47efa4e9b6ff56ebec95419eff6666f36daaf8d7b9bc76d196f99ed56f7cd2bddb6ad56f7ad6e9bb5d676d3cddb7b667319bf94d2a6bd3975dfe1ee973a6d19f7f6ebf9e63adcbdba6d4ab1d3952a078a736ff7995477cf78bbe7796edd5f5e5edcdbaf6f9bb73bf5dbdddddb56da9c44c2f1e2deb7b717d4ddb67add6f38755263ba6da70de77abdd9b6ee523b76bad5b9b96fbef90bf5ed76ddaebf6c1b6d4abbdb5f5e5e36e7dc7df3ad7ddbb66d6bdfdcdbb7de7adbdab7dedadd7d6b4a6bfca57df3da4ebb29757777efa6deb486f56eedd4b7eef6deba69b77757efeecd9bba6f9bbb6fdb8b534ae9db4c4a27a535f4e585d23a29a51ba554666e9b8d1aae69363ae9cca432bef556db3777ea94ce3abd5feab6799ee77925234a51bc05890f900f12a0264458407af824010ad2e1e520c5a4643c25478c5060c99226403a628cf800c9b8d87089697912f424c9103e5e104d543d92f8e003e404a3665c9a340122f2c4e707264680388299f838716224e88891274c8c000511094a1204058478b2f2794224882648981801c2a9a02744940035a940900f139cd2139555c120616284880f90112741345962e44893253f3e244996188142e4c9cd4b1036dac707c80722404d828c1c69b264891197b91344922026420061940f4142d4a086f0018248109324404e881c799224089a1fac9a219a5420c8861223478ef8286101e9d112a4c70e911e3e4a8c2ca100911f982401e28911209e85c90f499e84dcdc7942848f122247922ca180104e5440374eb307129f274f7c809c04d1e40811201f284d8ef800ed286101e9e1e488cf93d60dd027c808900f139f1f88187982e4c88d29c7b7c4078acf1222431809c2a6f4439325447e6092e4871f9a2c89213d2132840f122649883049620488233ef8d0e47790f8dc7473c7470991a0217c98f0f88078928449121f54dedc01e24890110a1009023212d405f9fc90833477808cf82c3942c4e70723404d829e1041b22409104788042d11c2880f3e4888040de1b382c2c4c747b30711264d923c01f2814284081f9200f9402122c30e10203d809e106912e48408a023448286f0b981c2c4c75b661301d424089f202e14263ebe63a2f5b445e64b4848c8855efd7a09d52253682b3285ba22f325b4bdb62242740abd5ef3f57abd8484be22f3f5e28accd7eb3585845e5e44a88b4ca15be445855e2f2ff2a2b388107dbd5e42b5881015a2455ef4458bcc172d22445f54c88bbc5e422f2f325f2f212f22446791398bbce8ebd545e6ebf512f2222f2a44bd1679d197909090902d328584bac814a25d44880a09097991964ba1734e1ac4132333230db1ec3fd26025fbd32085b752d84543cc5baf16b1fb32bb6c9682ddd4fc6928bd750377ddab6ecc6ee0d448ee268643bb51ca706637351aacf016cc0d9acc0d1227d6e1c06e642aecba31c3a9e19037311c1a0d326fc5609c1bb51bb0161c59cc4d7933bb11c38153c2dc9037b41b311c244e7943ded06ed46ee0dc9437b31bb41b244e0c0776d3dd90e1cc587ebca9c9c066ca199c1ace8f383864cc4d4c662643cec4706037b2181acc8f37603238b2999bd94dd9f2e38d1a8c0ad3e0c48d180ea6018653e6a08188c6611ac81b320d729646f6e7f9c25baed5cc5b2d61cbd3b2e380ad38da8aacb5e8a865c71153913766aa5acbe360170e1cb0158cb622cb6821b3e390712a588baacc31c3791dd88503474c45ce54351e9ab77060d971943754319c1c3968ab58761cb3ecaf5ae52873e4c03153c97294396a3960384a552c872c072d07e9c22153c154658e991f57309c15094363c141e3601cd9a2aae1cc6070d458622c306ed6a22a7148989fe28d1f55b11c3fe6a0c96038384a1ccc43746354c960300f2c071e73d458308f132ad58f394a9e98af3c1c73c478c80ec7bf5ac45a761db0956cc77733da4c2cfbaaacf1f8991de40e18cc2c3b0f72472ce76174c87494aa50c73f2cfbef90cd6078d58a560b71ec286f74601d640c1ff288ad6238b06b47e9d24173e9205d3c62c0ab988b870eecda21d3315bc18057b5d58c07b923a62307ebd0115b95bef21db51d3cf00e988e9a0ed86ac70ebc838663c632abc15632da0ed8cc0e52476c55d676c47494313a64ab19b94336aba556341e3019fc6a1159308f155ff98eb205bf5ac419cc53faca75d062308f15be721d640af3c87ce5ab58877978c426165248c1437e91fd471e32fbcf40f3d60b76bdff0c5f78cbe5854bb1e4901d0fd98f98cb8e4c874ca5e12d540a95039be151c210d381fd90a19e05bb72481eb21fb11d990e59f3960915cbce630683ccf4a3cca97539301e250c311dd80f5919def2ba1c190f5a074309930303299353f2a8cdb2cbe4d0608071d89553f2a8c19003032c47c6830643ce0c063227c6630683ec47cee9c74887bc3bb21c92870c8658f7e30fd948077661b6b4b2524e0df5e38f3227c663766128533fc240c6fc9833cb91f1707979f9118659aa93f91106580c66f931879663cc294d3a82c0caecb57f6fc68abd90d93fd59275b4f05f4a980cf72ccfd5b2cf7c4b2cfbcff0cbc85824cb8dcf81f3375a349c160ca6bc7996582dc7ea75b466aa5fb5c81caf62c9707c0e2030203ab0abb5c2ae16a9c22e962c077601c18181d06e60578b86835d2d988be50272838170d8d5aab566b08b350382318b0c42b6642e160d488859b020b056c9aa0179cc8af1a8c9fcf863162b6d8f12ace48396a2a174643b33cbd57c9c7efc511be99433971dda4b8f5ae9c71fe40908e98d682e323fc5910d1e399dd90b7eb588a9e92b1b78a786fa295a3c7d5583c754a63ffa20f1f4150d9ee2ab4534fdf80336aa65203358c9aab1583020651052c6a2b1662c1288ac1673f9b1056395406a40622f3fb6682fad990bce56b4583220b411086c9c41967d062bbc65c2ae1899b73c6c6762d985d0629726c3cc5b32f65b60d95f66961de632cbfeb4ec6fc2ae1962426842624168312bde4a61d37b33dc1fbd8bcc7e61d96d39337d0b76cd009bc9000b32a3cd507a0b854d312eff52cbfe65f64791d9df144426431923f333b5989711224b7dccbb6ad9df55a507984f0589c9209bc12e2132d8252406bb6448615710182c832b48cd57fe2ed825a47409215d41643294ae1948192e76098105296500695f8c44db623576a27d33126c9bc9003bc14a3352b9cd5065204f3f45ef4721654908d9c950da1f83c84c3f063981f84d38cb6aa50fa73c9cad1022eb48181ce15cd6f0ab45dc30e7abfe295e9cadf8ca7f9441967196c257fe53ac78faaa7f0c12cbfe160069ee1f2716524c2c6679debcaa507d9d84ea2b25442f254214ba8933d25a8bfbede783deba3f3fe52d6f7d7d496fc3afe116ba5c9e0b5d30ff6a1137efb777ddeeefbb60d596bed292fb9e8bd9d193de55a507f047efa259d35b3a7b52cbbbbcab4a0f2cdf42239d9ef4ae5973c12e29533ed155a5879787799714221b44979f424557951e50eff22e18eca2325ff9bfe029547441614afacabf05bb28cd57fe2c780a1549d8a5e32bff1376e22bff117615f1953f88a750d162179df9cadf845db4c453a8c86117e82bff0fd398affc37ec9abef2f7f0142a5edc610af3959d55d8bda08d8d7ea4659ddd9fb49fe2fd51679b3591f423a5dd9f2209bf5a44fbe32c47f8d522d69fe2f62325b99f22f7239565dfc21b82bea26fc394afe8d7f07d456b79debc5042b4b759679a39f44d53c87cead2c54c1e29443188fd53aacde421e2217a4b0fd1fe142ab6cce421aa339387c8a3993c44a89ac943446363f210e1888e5ddb13f9f0268f14a21cb1fe942b5ad4e421da5c260f91e965f210c1c04c1e229bd4e421ca213676dd27f271278f94289b48a423f64f71b1e26ff2107569f210914c938788059c3c4432a7c9438445fff92c93874887e8d8659fc887387988acc843f48d260f910b69f210d5889587e88658b1cb9fc8079d3c445c4f1e22d0270f514a9c3c442f360f914aec9f3f274f6357fd578bb86d7def8653d65e0c3a7611f910fd2de67c459fc887e86a112b7645f1a2a222c7d357f45f2d22910fb1f1fb8afefcd7a5d54a478900e7678a47fa339f0810ca967f28997f9e0865ff51283b7e3267ce3873469a6938f31020fd21c059fed83cafe0c00a737e13a5205337223b1e2999e7a703cdb5facf7014caf3e70fcdfe33a44bcc9df9b313328d4ecaf5eb6d42aef8c78b8ab8fa23cc84c323f74b84a8a8e58b3957ae4f9f7b0febcf4f871904263287a3b0dd2b8ff4474c689052e6cb64060196ef8f16c8dc08339964f020450e62f0220b6e88ecdf185022d3e45952b9a108c48d7c51021551cc20ebd328c89a0ca8a08918d08dd80bac90414e2619390a32062fb220a1d020a51cc202f97e14474c32c40d93930c7162d7fc17131298000946748124458b492924e94eb2d7d0bfbff92de0b4042540f185284545e214002afb8bb6bd3de81a96fd3b6400a8e47e8e3c5e4c956895123e5308904e8e62bed07cc2d39f13572c654a8e589fa84554a259a8ec2f53aa028e4b3255a255fe3a4ee0414a7d028e5489ec3f4e27647fd77cd05742e2cc82086850021ac8682429d6779186649d6209141c71822b4429537244fa442de29432a545fb443588f46b485483e8aad2037d170fbef2a73357951eec57eceaf195bfc5ae2a3dd4a7d8f5bef2af58c75765497f9cb3a90524ae4431053058b0842e4a32708a421de0e20a1290008b2f608005718af3479d1e9e2445fa4a342b0785bd5a887a2581d71a5aafd28db3f6fd39fb9bb5b786f48636c3b3ef9fcd424e8534ffd0a25cdfe24a7333e108173a24607f181041fe221dfd893382484c9f378578a9bf1d2aa558a853889d42a8fd7c440272a4b7dd5bee2df7f63bee491cf776f4d65a6bbb51e879964890919f7bff3caf18c145a66915c7fdccf69e3bcf6c9b14b8bf233c5bc56da19d39f3e75767ce7c1ceb32a0646ea2263225f3fcae5beecd99474a0ec18c1da81179e291925ffd1942d1c134a790b156fc63ca739c4579f49fb907907e95cffef3fb01b3634ac280be800929f9017d8222e02c974023df77fa5df74418947b220c0f58e1fedba7037d41be7f3b400587593671c5132a80992756e263030571f9671665fbf71b32cb26aec8d76221523928959d867403447986f48716e539d239738432ed70f4b79f0e7d827cbf7e39f8df9f25134fc8f6fb7e7f3ad4afdf78ce9cfe9ebee148b1bf0dc7ce5da1707976384b269ac83f39048952db11860cf2f8040955744bc86350124c4891208f415294e0cb6310139490e7ffe040aa9120ffcca2a22fe4f93f3a90f22884067e90e7eb10e65108189c20078e24e7a5978b26b2a5227b0ab24da6dfcd0480b30481946cfaa1d97e373f1c1adbaf782c4320cb3da4dfbfc747a1191d2c154aa0b8f8dbf067161515ed6093e9533c0ad9108a8b15366a68a9c81e0675b691fb756825edefd6e2a06e962090410eeaec78ec8742b34df6d0267738330d83ba3c5fc8d23ea3ebef6a07d2494ff573dc3b27c551dcb7558c7c6d1674ee1af96e1e0d3dcf707a21dff07e67bd699d7776a5b5b47d689f7e8f779ebbf99d77eeaaf5ae67c3fadd90049cef1f10e0fcf9ddac9c4d69ac409e98869d6d38d1c81383adca911da75a4585e88b0a55af2cf811a45f5b35eb5b2954ec4f651bd6707e2348ffa1741308587f479e57bc90921fa708104ba4c09246649c912d8f66d96dfbbbe16c1868a3f3bb6df43dbdd19f3f93fbfeaee71c85f71ba759963ef7f4d3818e917f68f86393b7efb8b07f86630fb93fd2195e3cd29f1b9e9347e39ea6d9bff3d0003dfef31be2feded1ef06ce6b409159156bd5c956c543039a65a7150234ab66fb3a196822dbffd12d17ad956c75f2cc66fbbff3ae7af4c3a1fbbba19f7e3af8f78675a06fbfdb429b5367282146de7e66fabffd0de96fe148bfe0857cbfabde16ce9c6a967d10d5556f7e38bcc87cf1e8caf7db0b03f842de9e16e5fb931675d6dbc2b1c97c7f3699373cde9f4634abfd676de48222e4fe8b8416f9fecca6c64aeef7d3b0bed7ef699f98f67f385c1deef71432df7e77c3fe6e87fbfd5ba8e44e1cbe1ceefc8b474afa9eee48e148fa59bba75c388edf854ae66fdfdf90cd01e02c9380e5ede72cc0e827a6dfcf10528e3082cc40a47f22944998f43f6305d6f042517e326752348181dcfd13a1dce1d92a121ea70e233c0e91b7fbe140caf75e6b6dadd5ddbbf3fd8674dedebf21a4fb0da17973fbddb0f5378484e7db6f088914cee8b0fdfce9cd70e651380e31b112ee7f5c79f4cc3d97b7ef692e1cefd3eff1ceb3442296ebe7581b72de236ad1e8200056975215ba3c4b2964e449a384141fce00fad39f73a61e490701b0825d6d158a87668d6f258fb308b97efd5b6ffd11ccdd1441fbe3fc22df54beac911340b346108866dde76996e7fb0d2823df8f40b7aae8f38ba945bea83c06c9f7e7d7d3a966cd728a12f93e4db33adf7bef7bcdc2b958c9acf5199d9b72b87ffdaf6fd6b7e7debadbadbb5068de7efb1bcedc359d3d734f6f5809f7f7bd00dcdfefe90d8f4279a3376c8fc79a6df5e66ca8e4c7c5713b781e857277a6ef6838e34fdfbfc319fffeed3bee3bba3d7d2edc86f46fcf85fd9e43ffb67d4f5bee3b3b1a3d90ff7d2eacddfba33b0aeddfcb7de761d0cdfe371c3bfbdbf79166e7f09c3c7c88f557c2fdf69d03790f14747337fa202f93dcf346fe6ebfa3b43cfa8ec4bd876367eeed9370b0ef3fbf0108e5119e930737d2cc7d7f43ec73d8bfc73da4bf5d6cc3b19f7e473bf73ca44368f6af1824d1519424d0e8254914c1bf3f65aadfd5494fe0d482d21e3ad277a6996bb36cf7f32737e25e278f46618a9b3f85d03cc39f393a79becdc13ee93b52380a65d2b7470a496f7b9a14ce4cbfd1d36f0867a2b9035b357aeeb7a7df0d243c0a6d616a1476368442f348f3e84921149a47a3b7e1ccb52bfd789e19e2997b0effcc994fb30d4758c9f6dc93c299ebf7c315607b0e9bfe6bc0fdf9a49066ae55f38633f777e48e1be151288f1e074ae61f5a72dfe3a49076d49bdf08ff786eaea7fdb1fec53f345b2cb4513ba59b52b80206482a5778f0851588f3035b457fcbd34a511a996621e0f8d4cbf469904c9f3e4fb3b64cffe9e3d01f99bed7acf9deef21034025fe39f298e977730a1975b215b2022065fbb6fee8787c65ff71349b902d8ea2da9f617d1b2e20062fb02812e77b38bab28ff7970889206f3fbeb2fd396798338671964450e4209a37cc6492917fbca8285f1c856bfe4b888a9a583139bab2c5a3ff38cafd3dee618edc51af86f3e7f7801904983873e4f6ee42d5aca12e74373d219799b3ccfeb559f3b929c4fe68954321eb8ca9ec4f5fc75bdcfbabbc35aaadbaef1f640af99973df7f148221d7abfb9cb752bdbaef9f82c9feb34482288f3fb23fcc1442b3bfbddfb557c3996dd856a8dfd3939ebc56f5dfa74fbffb33f569ee3c537f96486021cf12093372aa55f7ed4fcd1b9eadba35acdf0ddccc99b3b4ddb50e8799699e58acd14547d3e812ccbdfe6e984ff32c914023a75a359ffed43c67cec4fdddf0438bf268e6f4f78703cdfefecda721cd93e2cacd9c7e990380b39422451ebdec8da69099fbfbb92984946729850439d5aa7acab39462454e598f86f44b799652aee454f5a6d396da93e8ba6e7e6eff7e67c31bea00daeded2fa01f8f42d9ff25bacfaf01f51bbb8444977f8bbd8535740989f4e77783b7fac78b2d1e69de30f73a80ddfc7aa05fb1eb254ea9f26343be4f451bdabfe1e8d97e87f57bdc8633d7b0c5f9f5e022fd9ef6309ca290bfa8107dd1da315aa626ffce8473fdf9b58734771d72df21e5bea7bbe903ce1203b3dc3df7f427fd70d848df8523e9958cae37bf1b263ddde7be7e07528f0ba71772f5b870ecc2991c2a49e6ef6bf6fc7d879de7970325f3f79d7b5c58fa0e67eeaa17c589e9a3985c42a2e9fdbba17f260752e6f08f294309eadc380ad3977e7a91757267bdf2664167f3b870ae913f4a11268a8a8a8a44d377b6e9f46b6fe98716e528885e34f5b4b46bc97b9ab9708a913da4d90bfb7bbc33cd7952c27df79500423ae8fcc3817ed775dfd35d7f02e8c973f218b99f3f843ec7ddc07d4fd32f07eebbefba52f87d47bd5238a990bb443fc4d25bf71376710f62a7f9ac6b35e6b29e11e10a35caca6157f5c412aef58758b1ebe24af315765599d77c45bb5ce0c1168250c50f8c9851279aa002287811c5ab7d20032a3630842e8440acb8d62acd65b4a43392d29e24024529a39f028adb4f7991f4535462f7537444efa70411abd01f6909a6108a7f6651b6259839a125c1dce9ef423b82b9d34f0aad08e64e3f17da10cc9dfe2db420983b34520a118d28458a14295c1373a7bf031ef8008e38c2519cc662b08d48254a91928125e64e339112391cc5d4b2ada8e80b48f0628b10c4a410fd10a5703f25886891f0c4aac4dce91fbd46852380d184125801439ce2d6c5078e500324803005719322454a14d39417ad14956887e64eff141dd14e993b6d496f6d78ce15fd9b4acd69c98ae75cd94c1ef467b6af94503b4d0dba8933ea88dde8e4f92aa7293d28e3de45cecce7c15bfec9fabdbb2cf583d8556596d6322729cc4a9edba8d6cf523bbdab7f44afedf199af7a963499257dd651d94b599b9534169b3f6bb11a0f5e9691a797b51be36058daebbec12e9d0ab3323a6b5a7ed39aca40ebb59c7a41bdab96fb7be65dfe6157c76cad96947458c32e59674ebc2fac5de6ab9e3f7e086f8d5addcd6efe474a9467a5b9ac76931776c93a8bcd5ac33a666bb5e4e130bf4ef6665b96bb3657637666ea9606513dea52d76e6996a6a5ccd599e1602a8ca5c6ca5c3b5db3ac8d56fbb2bc6bd632b5fbaefebe8143c294b09a9d9a596ca71fc8bb7a7490dfe96761174772a31b046fb2adc695a33bdb621b8d938dc85b6eb06dc659d846faaa370ec6d1fcd67cd5fd1c4bbd9b4b8dd1eecc87dd35efeaefe7b0eb54baa060608c8576835d34ef72d332319ac7d805d650b596d2346381399127cad402d64adb9f9ac1fd5dcff47f885da799cb0c1503652c355f35cddbbccb464dd3d458bec7ffd8f91e3bb1b0bfbf7fb0bed5409ed53f1e48fbf81f2dec3ac958d8e50204bb50e40fec027d6096590fec3ac576b0cb25e66aa9b9401dcce23ac15c2e30570bcd658a01b3c89af455cf60c02c315ff58cb5d048724693f509c6b54beca6865396c8534c0625f351bca8e874d3d222838b7091e180242e8234bb1982f86a116360b91ff41676b18cfa595858de2583ea67215f4814486b39d55c6aa8129cb5c04e34171498835bc898988b4b898239edc452739181a719c965868a9d642f2458929ce652dbba0506ce4eb5d3aa0c16d2e5854cadbed8306ac66335b32db1db75edefe6fa5f4c2fb346f5d3625e6062fa45d6b5975a4af602134bd15e68a9180ced05969abdcc523098194caa44d152244c0943b6c85ea87803d26812baa0628c2d6a32705a09a35db23b50aa810535ae38616731ae46c23c0b651455a1c61956943419578e605b8c36855a1194304617e29d6db5dc8f851150e1c4125e88c1912b27ba5022044354b0224ed1377f6eb6450eb6c882114928218538456b7f142bc9a210630ba2273c204e91447a537ba108527e7086182128a2fe46cab6fe224c0f96de45eab2bfd64f2abd59571bd53a1849e6951d6d44eb4852cc9375b3d18c5423c1bcae1c95241a89f43ad948469a5d538b8c44c294b72b8822952998c3cc2aec05769ad999c760fa76cba7683525c3af96d268d52d760a154718994fa1e2f882a7507195aae55ec56aa84a235c91365c11852b58b872c2574388c1155700210b19299bd1a695269e8005285eb0821256ce48351a82286cc085155c418a59cceb681de98412074f70c14515e2884692014902035dc036503e419ce236924a521849a06009244449429c22c99bc14c9902ad8910ac914657034264650b4f78c11455183bd8118c908228aa00414c9ca2735bad7f9391ed35d92cfdfd2613acc96fe6d54c6497649fcc2b9525b21433c9be98477e25982956aa7db08fd6c546b58d06c64ca5dae883715dccc2be9a2cf717f36c798a994ae4e8ab4d9666a4fe4aaf6637eba3a93c81a0ada3c964024b25dafb5094ed87bc6886a36c387e8a437e86b83d76d9e00521b8483f7e43a3578b083ef823bc8a9546e0e84b3a5e87a9e4f2b88852e94d393ec70f0d993e0af7432e175c84c9a47ad5ddf1531c1aba1f85a33fc5a15111f7feea57bf232402c481713c18aed2f0553f0d9f08e521c07195860e98b74cb85f8713de2ae17e1d44debab85f07e9ad1176a5e12dae4b53e33caa61314df39e0c4c8636238ba1c134640c4c869499cdd46ee099d80c2d261633036b726616239391f9aa656a3d8b898999c9c4463d539631341959a96766b76fbf9433b019daa8fbf6cc69a606c6c0bed4295f51195a0b066f9f3027720df6af62de32e15509d481476e945ae111bc9f55784ce1e9ab7155cbfd39f0f8fd38c2959599d37f017054a591bb57641ab458af9ca0e9afa1d988d9a8d5c468602b584dcd868ca64646435b11d190fd3660366636319a590d8cc6466903ab99d5903668644d438aa1682eb1dc366a17c6d1accca5a606364d8c235134b59a32b70d126cb0615f43e676f9d7cc729fdaa58384233a708420ac600a27ecb2014361d7d4a20b1a78208a0d445902885d45b4fc686396db154409137461c4d0942444f0a76842793fdac45c26258cd18326c4a82121d2bc0917d1b8887fb5882ddd5df3a37e1aca0b38105f2d6211376de351dd5e7fdbf4377e96afc9dcb8bb1bbb304e87355f7588df653373611786b9c2c721cd575d73d994b8f455db604cde3ccd468663036359dfd07e76a306dba0eda00aaeed479a996c6683269bd1642559d6ca1986813f86347236a33014e50b2324e10a718a1ce9474c53030d284824c81588533ce15810ac78c20848356e204e111cc39a9529676c0103532812a748835f2d4f841a9800044eb0020ac4296efdaa2fbce59a798b4b712dbbb17e55cd5b1cf7dd0ff6f79bb02b84dde0c86c6ab132bcc5954add5c7fbb605718bb89e13c7903a6a279cbd4dddfd8d5b57e14aeddd47e06e3d0c2f286ec184e2d94ddc0701e76a349b12b14a10547c881685383c9643760326a70d18517491823168bc16e90b356053586ac64400a4c06bb2171489c9af7a00a1c5481441a421063340b2b1c91c54c0a207011f910fdc77056c92932141c91850c8853ac0dd282b0861948d80217e34d6deea0065b58a3e6012c2461c4a1e5ee23ac78e204454768419c22875d54dcb0cf5c527ffb572fddfe6ef913682a75aa53dddd386632d8952316835d3952d8750306ab5eb0ebc6cc05bb70a09a05e73861970ac4ae1b26ecc251c2ae1c1fce31eabfbd61178e9aaffa3d8c23e6ab7e1276e1b0fd15bb54dedf611ca4afba1b074d56bb635bdb56c1bc65b9b9ce31cbdddecd75b7ff7863969bb42ac357dd2b9aafba2d5e7de1abee8a57335f753b5e59f15537fd716525ebf884eeeb468856ea011a74e04d7d7bb5dbfdd2cf7f4f94322588c8fd88d4791fea5d7e3ee72513786a61f9199188a25c5e5eca949408f352a680a2cc4b99c289319f923245479cc15725dab9435fca9417ebdca13f2710faf3654297b9433f2644cd1dfaa9b065eed087095fe60efd971066eed077095373873e2a8c993bf45b426eeed06709b7b943ff148ee60e7d3024cd1dfaa6b09b3bf44ba13777e87fa1ccdca1ef853373877e17d2cc1dfaa4b066eed01f8536e60e7d2eb4993bf4b7b03477e8dff09b3bf46d689a3bf46b08ce1dfa1e9ee60efd0e59e60efd970cf5593771c689c52c8f60eaf3fce92d151120d08fa73f87b6ed5daf16d1ad7dd7f63e48a477d9d2f7e9a3d41f3a957011a4d150e9a35422c01f9ab31433c77f8a43a5112ee25444a9c70f016e7828caf6435fbfbe5b3c64edcb4d75d916f451c243a552a9eb19add14ca52e5b4667a0939fde3ae1a1d347d97ee8e435adc952875d3da335fae44f6f91f010e9a36cb88828b448ac42f3531c2279ef8a7990c8c7cbbbb81b4fe4437cc1ae97277de76197f7db9b4ad855fad3db7e9a900810883ecd8fc2a63549a98eaf3a76a3638ee3b40c49619119725d6be95ac3661a46c32de421ec099bce66ada4354aa3e4cfc81885e974c3a86cce66d9b51e3f76cce257cbce8fb4bc93367de5e37bbe20b33f8dcc5bf5d5229e60a0c520a365b7ef82657f32bb15a5b7fcb3156f9930e95da67701799d677deb8354f0bb77f1f81d9ff3307c0c4fe403c41b27f32ef05d39fec6ab7ef53a9ec887b871987b57f8fff86f1e0776c160170b7671d8c5fdf62c0ff338df825d33d825835d2076815f5fe667bee563b02b855d1f7675d8d53de9bf4f7dccbf60970b76a1b0cb845da63f3dea5dfee53dec1a61d7c52e8b5df64b7f7ff4defbd3b002a017c2400b6390853ab4d0072cec418630d482c050cbfe2e610c65abccfea850a7c6d2a9657f53e823760a7bc080c4b2bf0e2cfbc78431903190d93f15c630836196fdbf7087cc21b37f17fa9091c21e311eb2ecbf2396fd71c218623862d91f268ca17653cbfe2ce14e0cc77cccc21ee5f728b37f4b18034c072cfbcf84318431d0b2bf4cb8030b61d91f0c7d94618fb0ccfe37421975c19414941c48630434198d842d010660c8c088274800434da746c6d69082194e40c3091a398b81b603eb2103228331c8c001152310a7587ff411032c0a5ba8220b2e9c118538c552e9c718623eb0c10eaa10c30363d8409ce2e954c42886da0fa820c18095e00831718a24d209177177625a884208d058238a28c4296eb808dba3f42964a031b3011632718a15bb4ab888d3ab452cf99865ff2c85b75cff6a112b89e649b52645b201e2226cf0c24c2c62facae66da88923f723ac0048c9aed6189369969d26db6664ac7e6576af25cad2ec9bb0cb6734999d9195f49e2cfb93c8ecbfcdb2575bb3b10fbbbcf46a69d66315566926d2ca62d93fe5b0af761766abc35cf5c26ce92bf70aabb44b5a9993b0ab9275666bb63a6d9391c86f06ce40afd5728391685ff99160b5b1cdd65c56615fa58156562fe931971aeb6a2d654bf0c21cd6f3c57bdc56ded8a8e6038f9cd7612f66048be1645bb79157e6fd0b7671b1adbcb111796b3df0f85ecb368a95d9df2bb33f2dfb0826db36f2ca76f0986ac1443ec4993bdb622f23d9cb56e3663398232f6d9371a392237de597b671b4517967db68e3661b6c14e36eb9351ec13ccef28b1babc5902e314f6666bab2d446bac03c99b28566bae506f362236eabddd906f3a91f3759cb4c372a7fe4682e3b7e8a28fc2367c2303d663a310e669a65ff323bb733d391c570dd0f1f34954e399ac1f4a0713f6a3e6a40c8116d87a6fa41f6a8853f603ab3514dc707b953fb01d3998d6a3e74f04e0d0839a2edd07e903d6a3ae568d6e347cdc78e0e57fb41f341eb31d38971b0d94ee92bdf91ea62a419a9ec6a5e99f23a923723c93c9a07eb4a528c5423c1bc9a17ebc86ed6c1481fd9d13c5907237d6447f364249857f3621dd9cd3c9a07eb4a528c54f33a923723c9ba186946ea6a5e7969a42ed6d5bc925492689dcc23bd194946aa751ecca391621dd97931af46ca1d2c77d993e58fec4864c3745df720cc54966aa96f568a755d87039a4ab496af2cc166b00b8499cad2378b994cb1d24cf5c94a24292bd1be12cc4433c14ae5cc17fb6a30a699a924fb609fc944963ed867a29960bef2d2f7996aa65869f6c94ae4370361a6b2542bc54ab0af044993ac442bcd4ae42733d54c3113ac547eb52f66a265996996ad3091b92cc9b2958ff6c12616992893a712ac813116180b2dc75862a7d98964a981b25309d6c0180b8c85969d68215964271a589e602cb1d3ec44b2d440598681b316184b798a9d6a2719486b89b1902cb3930ca4b5c458489619386b81b194a7d8a9d642b2c84e34b03cc1c0180b8d05762ac1da8904652c3596d86976a29d6060d942b2c858ca53ed1403672db01e5a4baca70c96594f8d85ec49e324ebf902a44d32f2384bd917d9bfc78a1e196a86225b642e31975acfcc4586a2a1602de50b899aa1c816994bcca5d663e505e652a26a2d3354cc4586a2a1602de50bd953b6d05e622e3394cc8544952db517990bcc85862a5b6a2f3217980bad85f6127399a1642ee40bcca544d55a66a8588bcca5e61243cd50240ad652be902e32140d5543c55a662f3097d265e642a2642db497580fec45d6e3840bad27e602eb910255f610b5d47ae4d1065a4994fd6d28c3065a0c9992c1d05e4a18580f19932a616a2f30b118322583a1bd9430301bd28889a56629f2054616932a616a2f30311b6a31b2142d057ba9c1943165aa968ac19030b39832554bc5604898598c2c454bc15e6a3031b154ea8506a3a38c21636429185a079389cdcc6260a9b283a9c9902db2185a2a969ac9a45a52b08729532fb5dcc5c8ca9812db60e56d98a5623c7e8a2cd8862f6699c336580143da00cbfea30d56647f1b9cf016cc5b1c27539389c1c4cc76cc9434301b64de9a659f21656439686231b49a4c2c6656d2c0a4f0d60d1a19cc0c6d06c6c5d464ca1b8fb16b664686261643b321e6ad1be14a86a429676a37646633b150862603a399cdc86848199a0c8c663623a32165489a72a626331393cdd066603135999b1f6366b032472d26230b7f8ca1ad6862aa99590e3207ec864c8913535bd1c85433b49f22fe71a69673fc1471fc3813dbf1a3cc8ca42957b8861ac6af16f1e6479a990ad790068ef0471a3207b681dc3123b38188e54799327ce53230541e6b28cbc8fe3558f1160b7eff1a4a6f712cdc93d96b643434161b339b987f0d346fdd70dc0e1bb41b1bb09ad2464653fb1cd86583ac91d1d06636315ff917de0ab91c36a58d9a0daea666f63bb0cb06cd4629a3a9cdbc0583710dcc6696c38684a9b121c335b59a980d0d061ba50daca65613b3a1d9286d6035309b990d5943b321f395db94366a366ac81a1d3fd2d062366c9035b29a92a676c3466683660366a3665643deb0296dd46c481bb2ffb186c6d5c06ecc6ee01a74fc6843abc1065683ec6d943558c103d7d4e0444d8c94471a6a353891064c4d15b6d8d4be7c4ce2b20698b774741886f364487278f633157685a54dadc4242e6b20f2d60c7e5838533d2d8461d893219efdac0612e63f8663ab3016d26042d9cb702dac6159287b19ae85352cfb8fe158180b69f861e1ec69e19725265bc272c6a636433e9e71b016b2259c853099c7b4877138d612d2f24c1893f9dac76898e1e0578b78e3475ca3e10b5f39cc8f584603edc7b036836928e3c7504683155ff9cb6c0eb355f4bb39679ddf73f69cbd95b629b522ee24c8ee5b7607c27f9c34245e99709f6b34c184162d907121055a101d27bb2f6182ec9b2d32aa56d8ed5a9ab57684016b8562008513d6d002952d9c6103d1de646baf2c41668b7554ad2aa2c4acb3452edeb6304e5ef346b33f82579438e356cf3cd81fe7ac078b1b30ca80948a55ade2418b788bb34f93ad3565bb826c819075b62b379852e44a06625e112068488a784b75e50447d86beb8f1e529e5792d042fef2bc9244189b7f60f4c440095fb53d5fc4c00a6b7988c10ca7eca1013028c3dad1d6138312e47c048358af260ca4e0c00c084979c1195b286108547c2007f84a1261d8e7ec66377bed6d5b9f7e0f958759898421eb5b10ba1fe804d1f9a1e3ad1e2a4a30ead169d4cbe4e9031ed4b8594f6156baa5610ba4baf5c8bab0f5502165db6e180025ba4f574c408200f41cd1e21360eee92c50d0854a9ac0d9cca2ea902419a5e705b56d732d7a35b9e8d5f422f46ae6115c6276610b4f50614a1342080114c22a451be6a1553dd4ef81871e1ea4cce0034894a08a2c06553ce1abacc143f3304bf5bca00c983cb310c119339a5b141035f182210c810661a0c1c5086c5c3022c2066870011220c84209a2b0c5086c6c604404a2347660852f04610455a030418d0d1a548111921045e145196a80000444343bc0916759c5081af8ae30318b40748513b480053f00638b99236460850b37d880ebcca84e10b6d609a2f32388153adeeaf1810e6ad7379500ca0060015421eaf1968e0d99fe7893fb76a7727f3867a061c640bfac5296eaf6fdcf619d56e9f4b4e08b6dbb61005a453370802ac6004194137031450fc496c9dd5a287183dc02c03d5680b327003a3f50cf09a08a347c35b150e308d9e669a50aa23cce7296e78d10476f0884a85949bfffe85d6bed757f0ef4154eb5ea0f90802229487471e5095888607e31b9a7a70f7a40851911ba08638a26c4e47eb0fb4cbb7fd04d1c4ea6d402300c229595d066f94a06d0e98fdcdfeffae39254dec24f067241a4b2ed7efaed0085668a2b0e22952d56521f83cdc4120cc06a10a3c1112df8803872a93c824b0ce1fee0727996547c808a4fe1833a85166ecad30758ec206f796ad1832e985a74ce1d4c757a73b18523cd1b5d011a5232b5e25b0ab68dbecf993333996914356f8d03cddbd3eb51fa743ae5a6906dfb6da394bad7fea6b8b3ccd554fabc8e74e9e80ee162eebda94b6172fd3aaa727d9d1ff553f569eae79acab5eaa4eac7d47b5b58ee3ddd3b04bc30f5de7b6fccbdd7da7b5333a7debf78bc373585d8af1f531f6c1697abcfb26506265bb17ba51cddb2fdc7b1cfd9f72c982d97ade5a610faf647967a6f976e14d36ddbb669e98703c523dd629b4258b2ddb66ddb465ddfa7176f1b3773ecf61b1eb78d9b42eedb1f4d212cf6ea7864743302a0ffc8cd528a34727dce6bd7ae13a7fa60ea1e32670ead15cfce9da7a93473fcbf99e3efcd1c7ffc438b6815709653c8c03e2da359231d23fb531a25a35930d91f24233b0bd0c863cac3c93079f4fce9378425cf99639f8ee1b53cd22db213b09033852a643276a056c099e39f03b5024e21f6fd4f53080bebca1462437a65e67ca703c38e169e0a669c71051da80f9cc0822632b5926d0ef41b32819077a056bc5a9f9c664efd8ac76a85ce30f37c1ac514f2844ac9348a99335fc8137a65e6cca750d8ef6f076a255b28b2b53f67c021b33fb53285582b4fadd0199accf3e91653084b9eb8340548ade411cc2a005f68ab67054f98ab99fd2765f5ac800a5335f36823d319e49947963c823d2ba04dd5ccfe283a43cf0ac89831d814a1bb9967fd643e30f58130df0782e0bba2d87c984846fc7efe5b1047b1c1aed7e7f21df8afd1b7fc7c1a1696ad4a10cda6ff50de975afe354ab16c0eb2ccbceb3572fbddcf47c5cc6c1bfdd7f7332c2eef7aa1deff35fa520ccbf6b5fc0bfc195ca5b77f8dde65aafdd24f218930d82553c255b87fd9df62586648fffabe24f3825d2f972f7928fb2fd0e55d709553c91bfd0b7c140beafe0bc45528a66139611488ab98f0b78a7e09831fc6e97f75dfe12a24ec7a8d7095209a395c719597c5557095975769698b4257bd0657141b19d1ebbba65cd1ffc7e6b50d4174ec9a5212fd895ec4fa43abadef8a62e3f86dc5516cec13c988327e39925702512c3f9f66b37e39925762017f7eca8e36bf1cc903ffe582b25b37f2cb914adecf076bec36fafe85fa8ec62fe7fdcbe54951d4ccc4fcabbe7f2a85a3d85c9f89c1516c9cfb97cbe4024ca491b1dba833fd0bf5dfbba690c4191cc52626855d4432761b3df7ae57f7a477bdbef7def5327d096479f997cba3def5ba6fb751f7994e2eff427dcbbb5edcdb6dd47da6967fa1fef4ae17e9edbb5eafd28fdef502bf7bd78be5bf77bd5efef42fd49bdef53abdbfebd5f2f75daffaa47fb93cf712e234907e97b03610faa8f01b487f4bc83510fa2c214d03e93f855e03a10f86a906d26f0ac10642bf14a21a48ff17a21a087d2f041b487f17a61a087d52e83590fe5148d3402890fe2dfc064281f4db10a78100a1efe16c20fdaf193a32a39bcdda7ef4f351cdea7e7e8aa659cd027f3e4eb3784c21e1cf4841b054b2b6eb46a36debae4137df67790f7f4e0ff4f33364c88fe97fbeffb1deff90fe87fb1ffbf775b0292ad24166c163c53f365064f2098fdb10b2e31f9ba2f1874291c9a6ef69d084c7ffbef4e191c6c3638af41d098f28ee47e0fdede2d1b3dfe18f4d515151b6788422932b1ea1c864c7e3926d08b97fac373786f29229c661a135d6bdb76a7ebe009c78cb7f3e75c25b343f9f96dea2a49fdfe3add1cf07c25b3a7efecfa75678ebc6f4f38378ab64e3e753226f793f9fcabc7503f5f375bcd5f2f31be02d969f397e3e95c25b608ccdbffc7c1af31696c1239765be439ad5ab1ec7dbb0060fcd7ccddff006e76f3efc2d7c3c7471fceab950071e6afb3abe0b6fe0a11be1e3fc17dae8b7cffd29cc8173fc7dd5bb84180fdde0bff130a10d1ed2e1f2dcc7844343364f334b296659e6513c441b365ff3a670c80653d9210e7d6ff3334f9ac1544ae23f0d1e8a79d3d7602a2ee2d0f6339fa279d493be251ca2417dcd976abef4284cc5c5219837fd281caac15472c4a1d3d7949ef4351c2a612a348843dddb9030151a7188f4334f83a9a0c4219aafcf120eb970984a8c38c4fdcc37a6c2894334dfef3a30152a0ea1bee65d30952b0e95dee62da6c2220eb9bce95fc2a115a632230ed1bc55612a38e250ea4d9fe3bd702807a6421287582ea6621287bcb7791c984a1071e8fecc83e150942121f106a692431ca279ff10535989432f6f1a7df8f869388483a9b438047ecd471912126f30951ac421d3dbe0a111ea5b9ee54f0f3e152ada3cc6545ae2d0e867f0d0cc53a16268bfbe7f38448387a85091e66d486f231c6af91a3c4413f3a987f99777792a549cc143434343a62ffdf7de77dfe332e1abcc31e1f4d5fc54a8f2d57c9890075fcd7f0987f0d57c9790c67c351f1572be9adf12eaf86a3e4bd8005fcd3f8594f4d57c30a452f86abe29047d35bf1406f1d5fc2f2ce2abf95e48897c35bf0ba9cc57f34961ca57f347618fafe6732110be9abf8514e6abf937a456f86abe0ddf57f36b28005fcdf7d089afe677489df0d57c1ad2d257f35fa0107dc538b7826e8ae0b462062dd3079b35a65234cdf24ccd98356a005d2703f843679ecd9a2397a7b7e191cb9b673f1d46230fb9fb3072f7b3ebbefb0ecf9943b9908ec21c6618138b9977986b64fa5e0e730979c81c235312cd1d299cdf0d23fb114028cfc9a37b1a8ee1489ffb110d67be61aac6eeb91cbaa7f7b91d3a4cc273aab89f9f0ea3a7f3cba1e6d1e65be87f831c73ad12ea688d55708edc298f2013331e9e98e20b4a4c81c4144db460032f575070061454781c106f804613513801d98524b85c498108a020c14b9e251457701f9071efadb5d67a2f145fe4ebe57bef1d71df8d46a3ef6995b778b8f75e28b6c8f76bb34af93ef7a851947befcdf75334c8d756efc1cbd3ca0cccc836cf1d9466e45135a2160324140a35799046154420831cfcc00428408d4c80012a4e10b3e28a2129c26841c30bb94752202d81462b82c4cb130ba22ccee8264d0108467141f7a8d3038f56515527b6631d55ab6c370f94c8fdd57e3faa59f51bffc5b5bb7f34cb56c72800fb2b0e0272b9a77b9a072932fd1e9a75ad096a1c8b163df8628b5a64f4c5b7c4901a2ca10a1446d84213acb05cb14591920a5e40a31541a202a2fb81ae662f4f4ac5542be2ad911566193ceaf3d03da1bbbbbfa7bf8811ee5a2441cbfe296fa7d18a20a13060c1141128a1046704010bf144832a649a1d070153b9a7c13caac03cb3e002096ea778c23b608017882185185088c20b62802af8800a40d08dcab34c011ab9cb130ba2349a04fec3164a30664be08014c0104d7904f34c51276048542590c841184350011333285d911df1e559a26028737962a103306abfbbbbbbbb3be77ef1cf962b56e2dffd4f8486f877b7854aecc523b76df75a5babe7fba3df1f3b872d8fbefec6e151887e8fdfd07e1a4d3f0eff6c5949fd2742d9be7f43ecd7a7e1b8d12920b703f7f433874725dbcfefbbe16b9e5b38f3cc770201a7955a132c482277d5a3b4a35f0ef7291e95f8f7df57e2f7e9e77f4325db673115e2e8a5811523fc80438111f526cff2044ac8df10609b9d4235c3946779822c2c13dd38ad8c9e8eff8f6e4d9e3c5f35813aae552fddc49974066f28cf9f74d666cd4c9ff3308f3c7fe2d027b0bbdd8d93a28126bc6842156863e800085f195bc207eebdf79236036d4414c6b8e204114c3186f7022284a0beaa55f4755a556f1e51b9a70891600806600c915185358e20f673cdea727721c6951764c1cb730760d068bd339833550d469db7717ea1b3fda8e2d12a17741b96e27e21d8689dd2f9b4d24af58afe6c5d5a05e83ffec87349aadfbf36ab598dbd56d1f7df422e9cbdeaaf616be4517fbad3194ec5691cb14a571c9a04c8c306fa3e0fadea6ed88056f5d02aca83b754bea2ff5eb6a96ccb133491ed570e85c72538d95e5b2906c039e3a159fef47b7056e3973cb3e0c28c5cf32c4ff08149cbf346e8522732e569c50556e6a752b351f6e97732805eab96a46e003d14aa943ed1fd73c6eb53c72d44c7ddb6dddbbd7defb66deeb6b97abbfbb6edb6b76db7b53a79aa5a359f54eb6ff7dedb3dea91fba847eea3510df2aedb765756758e6b8e06d52affeefe99e34fa380fe7fbfb95abbb7de6add7aab75ebad56ced6daf8de7bfbd6ea9df5e6d77874e5fec959afac5a7b865aab90db6157addddcdd396f36abde5adddd47a377afacea97661b5112e992dc9df4e950ca17c7cc9cf9d6ddddbd5ecfdddd7dfbeabbbbdfea71df77fdd6fe2a8bd495bceceeeef75eefafb2aa7b3d43ada54b83a9c9a35170f27c9a564dba5dcb95523367fef6eeddb56bad5d6bf576afb58e5ebeb4defaddb5d6dab5dada6dab6d5b6ddb6adbde1eefaebbd65a2bab7acfd06350cdeeb5a2e6562d674775546bb5b5badf5a6badb5d67ab76a6badb6563bf311dd6c96f7cc9cf93c41baf7dec3ee922ac9bf559e6a95fb7bad72d277e18893bdbbbb9bebbf4feaafa4ee4bbaf7de7befbd97fbf1de7befbdf7de7befbd97abadf2ea85e3129cdcefdddd7deffd91278f56cd7bef55b9bbfb7577779c564d6ff7ae2cf77b7b867baf3fbdf7de8b83f7a3e742efbb5bbfeffb847cf77eee5dfbde7baffbbdf75e777f1269ab3f5ac53d8f56712f045255e6fe5bc53d4fe6fcde7befbdf7de7b71aa555c57e7ccb9edeeeeeeeeeeeeeeeeddee247fda5ddd6b37e6ac7b87a39739ee7bdafdfee83e84e6203387237947aaac9e81c47521291c85e3129eeccf7577777773db7795d67c6bcfe07e2f7577da786e9bff0efe4aaeed462e53fab47adbfbd4fde2fae3fd79edc5a1ba4f8fce40ebbaeefe0c474f31f773befdfadbfc1de6934824128944c720cf73dbe6dcb639dfa3dff6a3b5d66e73629a56cd47b56afe281c3f4fd0f3b8564d6badb5355b6b2da5d45afaa3b5d6526aadb51473f53b1b8ef6a9fdcdfe0ef67fac2c5b29a5d42babbaed4cb91f29a5d67e4f4f21dc8f9436672daead9a3fe9d31fb96e0cb299fee4a80b11941a5487d0ff9945454135531c63c2e3b3e6253cb9fe4c6d1efa35533ca3037dfbb4e2dab40494e6c64e8d986fbf95d86eb2e8e79abbb2aab71715f50cad0488e6a0cef48b329dcdb2f547fb9d0d2909d26c71b01dd43664fa4e9d09ddc4196d3985f8d34c341a4fade9abd13a91fbc7983c9fce96257dd59408707a1e8eb4e6fb1b6293fd69f8436968fc696a42204a1346b1bdbd010eaec8810e6c5049d2c5c5a05a19d82aec0c2c0dac15b60616f75b174c1e22ee05938708944d1ea214159387e8613079885455264fc5ae28930857a8d16fa1983c52a29844221d71fb29514c1ea22ac5e421f256307988502c983c4434534c1e229c164c1e221e26983c44dc09260f118882c943944ac1e4217a156cdf6f639367c3ae2817236183c861978b14edfdd1bb284ae41e091bc40ebb90b041246197500bb240a2621711433620a2620b1914892e246c10613eca1665fb28dbc5d55ed2bbaa4555afe2cde55f2aeddb1e855d3a764682dd7d12764d5a8ea6f010b98fb2bda02002309c90e20b0e88513617ec927a1255b2bc8b08256e4faa33d8357a19cc438f93537d10bb28ad44b64e59e35278f4f2a07f5c0c768d3e85298c76398587b8d58acc1979472f9885348ac9da05bbeea370d37ae634f655985b16cc05a6b9a8d4489695468ad239a60c8d00490000500063160030301c1a8c05535510a3f514000c699c7a66569e4b9420cd625021640c1101010000108108939800762b4e8a620942f03609777cdd5880fbf616e2cf941762257fa9b86e08a784781893255c40bfd49806c902f2a0cce1c7329b12fa0002baa346e90620f189f017bad630ef06e06bfae09c47257e3fdd9c063b2e677f3ac477fa1aa8ec1d94c323ff9bbc5d72c0b96ea0dd784836397bd83fc8f3a89b0e1e1c610f9ae82ce35fb919ee342cb9bff3492e2a71acaa58e88c7fbd68db670ae39e1c70a5a28db1419b5ae853bbbff30e02190a6e30f028cfc57740c978f63a24d2d2d21f38e796f37ef7cf5b2fe14fa830777a7c411865f4b3461afd56910eeca622ab55a69b00b03e810585ea8de02c6931b0a5ef4f935d03678563ef2e8d02794bb31dc77544e1029c70ed37245c42ba332bf8f0747baf410bf507a4480a9ab89d12829e7fe9442807902459a9ff81df3ce17c6ede03efd3b19d428eba90c7f1cfe073e59bf5911bd68f3ff07e38552c69c4a85625b0f139ae88148f3167c03384b2c7507b31b138f3a44faf20497fa247da13d119e46f96a77e1f1ff579748d06c84f4ef6a00e6aeb36d4e35316ec3391c71a89b17997c0f227ea468fb7be2e0eb822aeb439649d58c8d2c343ab7ff56ddc1c9afd53ac3546eef3a4ca2e5e6edc325b20cec8d94f4505a59c7f880d8d6dae48a77b75e1465de5d5be94e35dc310f6131eb243ad3ff04cf1486ec697f88262e17360473031f32615de75e3216b445214f7c0a311f3dcc9bd618d52fff008dc90080150992e6375f950fb3f7b0bb9b19fd03fb871470f758e165a5a5f3d9c968b4224f47dcde39eecd05eb594313483e318ce54754b6a04a623373b701f0f8aaf99082fb3982b80fe4cbc360bdbd6c343c91b1b62b30c70305b89e2de7089b4ee384dd80afb233f4eb961e1c573ab5a18ca4e66285196bb5a871b06895f59cdd34a55e72b80363a13ac95b748a46f12842070f88ffa09bc67c4e6b758f3f604eef7a19d7059cce5edc027460b846de77c74d6f6eefe23a8c62df0d8a563e94edbdbe65ae045b2092fe5c1d0586c2ced5d8f21cdff8368f115382b8c8c5e2ebcad468656c458656b7466934b6427b8e7745ee3460107c0c7c0935129634a7ba5b86be03ae5202aaa7190c1ec12155ba7f809ddb032871b2cb0b994a3bb4e7288afe8c4ba72da7d3adcb7509066d9cf594021df347d806fad004e00c2ffbd99b85f1aa304c82c74a78671e99ea9663ae023065e962b60db0f96f92f0c16f5e99bf7604338add35e3d6185cfd994b613c5ffc287460003c59d2bda2b56244fc745d98b2e49c2477922404923469dda9c750e43111a13564140b041cd158905ff8510027f5b992f8f8a1ac586962fa01459dfaeca2d93ae081c1f011305709d28a5b485525cbeb2622b51d845439a42ac5c8efedbd20982ec37afdeabb1289051afcae2c09259a9fac99a1be8f51a130e9e9eaefe342186b39a5b40a67ef9e3aa6b9ae1840f860307cb470a063b94f944d9bdd89198d9624f1b514db231bf5d9c2c03e5922e438e52a4383b9d93c4a44eafc04fc4de76022f3b259e67262d61a3c5d94909372424df5ed2a1c01531df56869a38f9c333e9f86f66fbdc2d33f951f85a2c801f4ff274e0ac1ea5b8d0b85b42ab45ef41a34faf0a708b2380ec4cf58c3e4c70e47db1050b844ea905ee39c20e145cf487cd78cf1705267a4b10756f876f0e8e6065df7379b17080cc43d7e2d8d6be7bd6e3763dd4849da899517ba62b99a9bd6d7093580fef49a4bd8ba10d2f31b577358f1e1e2d3f801edc189c8761fd8e061a9cf55e13c260a0dfcbe47ec36b069842a0f057f780d3284c1e50689adedd48456c1f0fec91b4e49cc0d34c5b5401c8e889426b2146703abe5059aa714bdcd04e507726a8895dd8a857967e7cd466810e171faba0f4395f31986d0d8836108be7f00941cc406b4b4d8c066b5451d91390cf5d9015c82ef4a078045f18492e16d74b8b5ee0e9bd01eadff22110e53a64f50ba60153132bceabe43cc6cad0e07ab17a627af0e88d7e6e2fe0dcc8e48523560dea5570d595b50f3f1cee7e53a97760529cd3e1af0aca88db21a7960209ee4a2ef4f28a607171eef16cf4c685827689d358b36c651c9d11298661d78b4a8fea01aceae4e21ca0987585387b520773569fca1d363dcec5787994747c979c8d6077fed88b1a43374c5e606fdc4fc6c9579a5a632472d0887ca431bfb6c29d7c1ebc8312e1c4bfc5e995e2c0146b6ec00c875e6896158921c680a9100c8441bd868dd314961dfb2ddad9300e65b5618460d23ea5291d9163de8ca4b4dfa190ac57692bfac6c5bacb4ec6df336a255fa1c13404ace66ae52785119957001c53579bc36a01e12e47b8c8d527c2a8f168d4899420ebb93b0540e1f2138884cfe895d278d62536d0f153ffea007e2755bdd27d8f139837fd1e04ae2badfbeb864bd0011f1d33c1bfe21cfc2ebcb900c44546b7e28efc1ede401de1c2bf0f07e64d8c927ed4f4d4cfa1059b11db03ced6e57bd61a1098761ea175b4c70c46cc830164fa8058cb1e0d1a749c9ad7385187243efcaf4b8d1e3e4e64100824735f2511647b2837a0709a23e05ba3044d3478c9909c7a192f9f2320579312b6fae82366c60a20f610e2d18331d48df9253b264caafb013b9e99d88656863ed06c12bd2813539dd54dd056d1ab26f5358d15a019fea35758004d01b99a13187f300145b6c0c26901c234f849812b83eb68f11e776ac5518e2e25dfc06833fe2a496e999027333fc482cf91a72740bd1e245e824a18b3c1516777f304761a1a97971822aa884fa2fe33bb0f9d178879c44d0ba737549e9b16371eaabdf0e6018bb89bea9158d1672a067770d67e328921d721713d3d1b9dfebdb18edd3a258bb9d2d331ff4594a793a7b2b8d7f159d2d1784f56aedcb93ba283bef0083f7d28e2ee37688d579edfa876b90990b9378add8395e766eba675a3f53782decd077e1480a80d9801e93d0707ed0289f18db72c2a1b608c08a9e797d7fa753faa89ef5995d1be8b91c3b9992c91b0916a4870dfebff64b9a68929ae438bb84e66eb2cebf24dd2a5fba9f14be993249cb1913785e7a1ef24e894a8a8385ef840332edf62f57ae77def2b3a744f42ef39cacb8d5017e7c54f6e1f2c6464b78d1cf0800980f37dcfbfed71a14de86aa0eaffc757382a2bedcb5eb4d944b4a94a2a77c4ce6cff981b882fb4b81e72dc2ca1972be1b6ff4d88ae8a41b5d2d0d15301cd2cf82d45bf42c9d9a388bc94ed3393d3e9924f00a274a066e8d014adcfc32d62601c3c06c46ad5f4bf5e40a292fc42ca862e3eca2258d6bb707dffcdfda7bc1fd8efccf2df699c80af4ac8ca8a0707490c143517b14463805d699e540e626e8300871144a0d58d2063e765bc066189ba3505443e9b62bb6631e6833083b3fc6f34b948a80cd810b9e8cb4984d308846a913ae770cd7c86691b1abb464e5d83f53c707820c4779a2afbac1ecd0d54a02286c5fe2c44ab6ccd52740c7dc96e8bc8d7f99712c7b0483b3933f7ed028396333df0d0edf3cd2caf00f7b6c21f5b3a4520c0cca71d1749230567ed67c2e9e31ab754d06d89013aec38c1b8a432f111e549feacba7be16694510d690f40cd468c2a42b5e5946d6ac979993e6aa16852ef312d4dbaaf2eaa13f03c7f2790cc5897b8baa7a78b7dc02dc856ce7e4f1945cae6ff8b4a2dabd23ae7501339e13fe96204c55fcc7b38a7ee2e9c86fc7b80965005c99db09de8fcc68dae29116ce9c82b1a9a74e76c34732d195e73f1ba0b061902235582e8d7805c745b0017b28c229b651aa0fd9171570c19353e0276d4df3347ba8736c491c400039452a2a5c19728162b8ed0fa55817eaf94c71bdf20c94ad641747a13ad9c18055f275118d47b3f6de4dbac2017bd7dcfd56d45019c7b2d340746f01ae12a5982ba2602112acb7a7ff868ac526d41258d549a78ea8f54584e59de73c23ec12e5eac397a77d0009780d4ef006cadbf7de57ebfdd00fb3f7b49bda41fd0f87783e9dfc8bd1f08faf680773394fbdeed4f2dd84aa50a07ea864c3a781aec5a6b400d4bba8fa2c3351afef255a1971616a15bd3931fe541a5510c8e88fda3dd80123d716474a575683a40cff706908bd6557cb38a90f53d5e45d103b0dacad59699c47d3706dc46a590444aad6735da8b8b4fe5abbf745a17fa651d0e82a1aafd1ac52599f8888b8d6e3a9caef349baeb9ba13b103b7717b5b28bfae886a214a8c0f82ded0f526b5d5acb09a1b846381cabbe75a918c63b0769aa5e9be7d410e80b995e5c0973e98c6e77f9b30a3b5441422d622de5de29f2e60a4c9ab0ee69b6acc202a984f6a8c3e7ce7116995e1891a5375749eeff96f712cda04e647f65b412bdae71e96b4ac635f9f9926fe6c0b03f201d3638997a63a4b2808803cc47f36871aa720e1acb3e02b391e50efe4f129507ff83ea21eb8e074b0da2d15a6df2c7dc73fe286a5607fd05eb9605ed78c392ac3bdef93c0fcf8efd9271ad9f2c9a933cfd11f16e187b9183573500c2d2b79ebd37c43fceea8276a682b6133f3f9165c4658e12908416e15ed067b34caf23ad018868591cf48d79291a85ec54446fa1803b698c7e8a0847e8be44cb654bbd7ac1846baec8105c8c127eb946f5c21a2970eea7211423b30415fbd3d8fb6dfcf2d72d6e7ebba18abf075072afd4066ea81f8711d1251e8eca66389be7bc714d1dd8a42ae26ce3cb41bb132597e6678c27dbddc59656e8f12434dbd3cf5a08f855bb9ed8e75addcbf9cf48bef5d98f5a4da99579c9666ff3701da29ae29a480c96b21e74492d6a2d0bec9e21a0a4ea37852a6e1f49d57fe1eb8868517093e60f7ed0dc95ec77224547095a83ce8e0d5bcf77190f89c6345f03826301da485aefbd281893ec339f82bcce34efc49027910d073f4e6542c851ea5a32fabb119193499c26bb65055c016c7e8945db3a83648c564fd98808d98e3416fda726eea3012afed82be154b3fe944f27b4797ee1e0c69a0876aeeea78c16d1cfe24678f01df4edf22fcc849b63b4dbc99ca087426d9fd6a112a8f5580b1a9c2a27cb6686ecabdcc4c39c0fd036d7b1d8a82b672f808eb43560bb04aca9ec26caf8ef7a328ea2265cdb2c54c88962fb57ab630ef397b9dcf6016a79e5eab221da312b29982a868e6d54e70ec91829c298e012439a6271116c66e12eb2c510a980c0c3746adda640329d19d0d88dd1dd896219cf4487b91cb5abe8f9e6a1f4ecc295f55f6ec9bd80f97149cced6e1213d8b1664b22dc08ef2367f8ea0b65144366f171d2ac77b403c2ad4dafae6e4a7d9d91221720a4f50834c9c5abbde05e1c7fdd3167ec1271a8c6cea40b43d4c98dee60fec47157addde969caf9c2c3dc5f657bbb98f31d8b104df983328198fe29caad870e92692115dfc9a4ec1a5810c70ba30b9024d421912d9183618d18a957f788fa7a3bf075d5c893ffb9ceba0c740231d60bc802296d58f922c2f25eeb2bf6aba99530d18f47c1718606d4bb7d98e27c9a13f148ee7f4ba720e5a8a1dc4ede008f839472329be568512f78e2b48f5024e751a1147982585a473b07eb17f1ebca3c823f4bb12b35b53c89a1294a537d0218655fb85c06d83af1058f5b7de0cd2958116730eb119d88f417bebddc0a083159feaf6298054850456f2b59887f0429a55c60ee9614e3df28f10a65b86eb123b63bae3ca8f58a39242690902784b36f3cac6053a9044f92af4e7f81b497140fc54e45e38c760c4e464c4b1f9e3cdd721a93d1c37fa1f82446ddc69e34e809b345644e173e0ddf111c5581161557684ab41001205b68f4023f43bc4f35fd10ada20e9b846a56a1bdb63aa213506575b846695309d77a6dbfb41da178b46c2da8e03e45c925535d58d714a873aae8a014ed5ea8fa586068d8a9289197c0bc1c770851b9029e72f644e5f20d9fd2b2c6cc222a7a1d4c19e2569f754dadeffcdd3582634154671e44ce3eabb84f9843de723389892f48021454be279a47d082c2b7c8f032461b36cc3d2f3b4c2cd10b3db563a163484fc0a4515fde8feb4de2b0facdd05551432f3df46990c81bb867b7cb96765da4e7a61a75bb80d8090eb97c820be985b8faaa3e43aaea2192a09a301b662821e52eb63f44703423e833aaf8191a72dd58d49223894e6f42fe58947b283e395c7839ef14bdb7ae77098534de7f88ee5395bb8180ad85d80c06a5c48a076d29cde8fbdf9692173a089d818fd12e2b78b15670080268636d662062c0c953d03393a23c695479d2e0ed945a65e526284fb4cd952215656895a710d4edf89acbc0c96e268a75350114aaf126f8672d070a3fb93cc6703faad1241e170506ba1b62741d3ee6a8b71c31cb5f93e57e2c91336667f9338255995f3e1453f2dca8aa927c7e45314a0d55055a8b550c706415ffc7cefc572cada8a7a0259d4ff87d12afc557f3fea6811214ae7ac20e68f9c187e5695d4a17a24ad91d146cb073f4bd34b63e45f73bbb93cb820e384c6ce0cd3185804c8807af4a88908c826675d1ccde64d092e8eacee53038f4b6d54c5c7986eecc8b842369f4fc4bccd051c371d641bc0ebe48c3d2b9694b084740da7b787918f9baf58685082362ed9214cc8601f21160ca97bb41968eba0212d7d3e5f98bdc2c9dd4f30e6c012d10fb80212153b0f4975564fd00c589c2fae919ec684c7cc0b8a98b84e94bdc425588d6f4b69c2e8e9ba90fadb451c60edd849f3e6137cffc1bb2b26039b8c0bcbdbdbc147c5547fda4c1d0ddb4499825a4e10081d2bd78cc01e105b0009e03de5af58a653a823f7b7645c901c84e402fea193918aa8d33c74bc30fc66eaf79129dbb9196e08d2056ef12489817b6b503225060268ddf6315300a3d46750071ffd07b983ba5cbc6dfb820103551c5210f96356702fd19c62258ce4ee4372489c193c68f7cdd0800d480f39f49be1f23e20d4cc41aec5158fe7e6f0d6ff17b76e80781e026eebddec7778b1c927d4ebbf47dbea8e783d6247ff038e730ba7cb09df1f657dccc3951d0e0bdc68b9edbc4b8bea006ff61575ad1f8e94f303abe74b299923426af1153aa40687f28a5fd64228e05548da0775b81735972babe5f183f7cdbe78cef6340c2924e6842683530c7d30ba82307c655b5fc2cc401fb2b9ac1821895d58828aa4068ff743c7c08278245a5990121236be054dcad86261770cb5711df218a2733af681752e38f7ecfc4ba8276b5995424de0f5b0c39f6be6b52101ad2292c228a11c6ddc77be74471d936d2589070af6fced2243c808c95dbc37434f6275285ca6cfe38a4487d4f57757b6ac47a81735abb4d4ec835bd56116101b75567ba233e1baf4a773aaff2d42a9096367aa5196717c4dbff05da0b84f38e17b5e882f4f98a2210dbfd4187e3831bf69e6daaab03217a87f5a8c0ee33dcb2222b68699bb132ca020f954ea749fbe8a35e4e9b340b5e043b630870e5442d7bc916a00126f3c59fa9b1494d7f80a3df9fbfc68413860ca0f693971288de500ff3c1658b45382c3c9390e10623cc20b85560da342bcef972b7ecc4a55bb8d5a24982cafb21d6b063bf05f69c47be0981a8c3d97d03d16734dc69f6ed867a07417b7baf55ba59db2d421117a333f8792f23e873cf50ced4dc2dc042cda1cb5300badc74a14656de07494ace52e2dd5bf215921fd3181935167ce58752832f624cdce328b8f9c9df1dd6a8e356015410b12e63053416fe13ebbb40de9e4e49fb31cbd3b4b119f260582e9a27f0daded4bdc555bdad88af3b89135a48daa8d9e9b28ba9f6298ce9c260ad778d6b9f1442467c5683c2ff50d89cac174573de6d57a740e552a2fe4e10ea641bc82b5d7d48977bc261070eda1208c9395feadbf47e3e8dc795fda549524da36173b9091d632b333cd1cf42ec8eae73a91fb3d804f08ec30e409d4beeee817abd7334e41cd09b52f1614ba9df5d9c3907eac0dfe759210d3e15288dbb9f4637dab8dd349f9563e95056c5896607774bc2b701f8ecb9bacbcd1e430cc4cfc6cfbc9ed8e6f4b7aa70df40162b606a57bd054b1393b26790a40d3c55509016017700d9d6a554ab07dff293f3a0f4d6d0bbe8e1b169ec81d2cd7548920287b97da678aaa7a2e9d1947cc1a6faa216dd577cf9c73a8cd2c89ce50d2bb2332f4b719bd5938a42fe49eecf29dbb5a67e1e87f3a990062582ad41bdce1f07a9505b16243e786181e931f6260f163da4ea45453163688da57aa5147c804bdd07f708d5bde4118d5dcdddaadbfd991391cef90fbbd23ec7863f4bda652df967124fd7c610f55716806288673ada5452c3bd7a67d0efd92ab84f99779f81c8c20e59a0d4c12a353217fb2f66584f6b49271ec2f602275d76df7ede2840f5abc35d667edb98cb69a820a03725a484cf68d805752682a15b067914b978e7005b5760b1034fa58ba6f1a03b8c4b2185c95807baf84471f917d3a810be241aa1bcb85e6db1d1294010728ccdf10b9312bb7e10969890e3681077648033fb53383a20f8628a596c65b1abdd803d91695725c12a8d3b06f99153e61c79892316288440258a76d096e14f95ea166aa142f1546d31e6a663fdf31b9d748ec10e8edaeceb894828e5355a12cc29a2cb807439cf1acf2fc2a5d6dae465067bbbc3fb15e1526c211203028534b32d2f43b9e6f76275ec8a1e3e1cf4eb5f2fed2592e2219b7f6d873d3dd88a9877b5e6d0845936febba0160b10843b3d77c8aa31e2086311272d5d85703efeb669456094a7b958b60f4a79b2483b24a224fb96d0ad0722058bc57c9e3f176d901395495713b15899efa036798138bd4bfef9f47683b8faf6916131317159a97d61f75f7e6915e8d0b444479e385f8c1fd329addb91eee6035e42c7d95e15c28f8d83f3a39d378550778b3e29a55f59ce0913a573b8a29b390761b35b33e248209a85c186102dd007e6e9c15143763b82cfe3e0407e59204bdec23f54f4025086f92ae55943da582730cf4c882408f67323688466f3186a416152823340996d041ecef4d1ea36ee06979a0f81927174622cbd9a41c4474c880c1748418053357f52b937c6c4102b15a2970dbe8c8f56471ff3075c74cddb3ab560f4207a86d488ddd1ac66aa7bd733a15acc07df74690cebefbe1b9dd7343d06a6f98099b02392cbd689a9284a0c40150eca19bc016726597b88c323424b767a3257231e3d0f68502c868e97160c003d93fce709a0c3acf854ce0a1412fa7db6e4bca8449b3318c381536d34eba7eeb17f400c4cc1c8ce1c4684e41402a2b98a0fbd51f7764bbb76dffa9bf8af4c9e3a7efbfc8958422a2f7cd91c951c5516fe7d1d598f8752fc9ac56cca001dbd746e8a11dd1e23e6dc06cc92fcf25501533ac04b15dbe00e89468b7423e647f5eb9bb1771db0a1815cdd52079023841355911e01be0ceb6e1f03e84bba05089019c5cca14a4e8da0dfafc650fb8aeccdfec223b88e8c48dc037f0fdc1ef1815bde1089eb0c172e81f82dfa1eeec4de1abdc8310a9a2442b928785dc3060bf7db5e2e12c64e0af0c92eb008ce1000bd2168a030a097d53d81e09507481febf2b5e92f47f54444cce15fcb4c46257be5ad4f88d608af79cf9717d426e610a005476235a706642ee1fc99fbde576acebb170547ba85032e2eaf1121f4ad8590224d4a4537a81da0204c11d6e0c553d814f51c2f3e3a823e8897955415a521d9cca31de82b99708a364d692b4050e92c2ee52022fb5264e87233ae27b3691e8b9f728c2d591480227f87f0cca68fe1f49373326b7283e73659e12ac44bb54a05d583b24cd5006555478eaf7f6a22e648c2dba707f0fd04aa41f2c488c39c1a70e4bfb2f720c0d601e3b2632eca5d897f374c4865e3fdee257940262c860c606c8bc27820c78a4be10fb0cca8fb9bae567a534c1a217f8e46b9eb15aff08999a5a955ca95e73caee1c04617ece2955027a69908d60a37fe622b44c01e454f549d68554a97caec969da04079a04eeb00084a439931c9f1783a698016a796ece7054c7d28f077e3ae3189b80deb163b78190eb78da0b0171146627a9265245f9bc732afd9706d24365ff6fb7148d0f49928c61d35ed605a270691421b8afb66c7bd57e7c2d2e89d15e89cb433322381271c944e1ac18f154acb0da1e337bc56a28d255c7c71efe415df539822332981139f0e87ce1ca17d4dedbd88d1366da1285882204a45ac259bbda662160c9bc69de4547c6b9cafd05cdd12b6ecfd89c9143568b1bb42a8535dfe3eb221eb69d1207d228fef7e9d3170551d981fe51fd07bb4d00a3fd187a0142239a41ee50ea1b0a2ad7e7d78ff7f986f6617e2ea61398af26abe14191d1d357bce7e938c991e6c1aae59a35b58463c8bc3850b792541426549bc2b0d7567e1da0d7163a0c8d9ef113d67a6b88cb522aca8b79776a493a5ad2831788cfd96a47a6e484ba5478a8c5fb35921da446b3ddd52f59c11aea982445dc98f8e10cfa83182513c6f1d1e53f93c71b0c9a70b93c1fd58cad037853d2dc0d2da60a9501af01dbb9a241435e9e8c59bef523180d2050c343ce4bf3a50fa3862c306b72581b36b3cc26c53c1ced605c8a4c9549a5b1ba715b489d47acd103580875abde50e2a5de692f1c9800881907172ebd3dfe3f43945f1cd4a96f9f77cc35e3b2179ef2fac12b151af72b71ad46a66c17b84153b72694f087fb6aeb74d082943e5ade263ac1f2e38ef74d66675bba2c351db56b1fe77faadf294c0748028a1fcb4105d68084b8fb19d19c29f10a133f8e44ac7d105ad458ef8c72fb48d847ec7fe08c74795e3bad523a2d084a7a9b0714c0a3795b9238b1cd2d140302753b377743fe9770d177320151441073398df4ae48479dd2d947516bea982491c8250e1cdc7ee6c04ff49adb7119575c173aee8c560a9a1278acea23e7ce584a3e78567f48720249d7cc4eeead8ba2cf755493994b733efda8904dccc1f2670f7944b38d7a2ebee8b72b8516824c877be1e0d88fc5108052d7b09bd8c6238f2e26febda6a9b246f2c952e622b7cbfd3eaddd83fc93dc9681c19e5dc2aac1a1bc99befeabece638e1b38ff8e20e711df1bdb54ab9b298158d0bfc0723efa94b63f8026d8e36049b5ab09a4593503dd9e4a0116227d336bf415cdf488c4527948a091a8a5014834403adede0ea9166b4032f973939d8248ad2c12b5a4d1f60c808901361f35823bf17ed906636ab30415e6079bd61bc01367b117c638e17e2ce6cb24b152d14731ee8ba1937e3d4bb6eb7a606661435d6db2527e61e2c57c0a87a6944c61f953b481592ec8d248173ddcf5fc19b24ecc1673fd9d08d0d03e1ba091035ff73729e70a30bd9e6002ca56de58c7f6719652ccc64058c704156fb7f3a2932ab8549a60c4f933b3650352f943aa0e6d8f0da64ab8e33e2669d165fcd27c6ef8c67a556258d0d0373cb171f791a7ba4eadd228195953c9100366f56909b1ea5977b9626a1d49c98670bc699be0c6366b63564c45a795c39cca6b9fdcc825551008618dae8f9df54a2bcbf6a79ed2b80d9beb9134a5a3903748ae758de4a17ca7dcd764b6283e187615cbadfca62f520bcc02623f359e444eae442773109be17ccd8cf5da9c35b75456f756e56e4f3d1d63e1845d023ecf3ad0ce2dd3384e58d21ea02f219841a7d00a68f62ffc11a24a9c24402b09caf09a056cb88eae87a0a43396cc751c232d063d1fd171bbcc9f2508819df6fa451aafe56bb7c0113989b1319b34439323c15d7829064245145725f29e8a82859b364427b93cfbbb06ab98666c25f9309e7a650d8bcf7b78a9274dd1a375f664ac50547a39ff2028048dc182c14aedfe8bd50b41e75bf7873501532c022398c2a64db2efa3767936fd4fb23b64a8ac035214a95142a89aa9743c039ae3080e601d94a3edc5846c9c64406c85049055440848a1ab57bdf3ba8d57e7d0381c0f9ab5d2c9070ab4369df8d6a826a513d242bd3054670630d13d751ca9453471f52911103bc33146b84a31d206d79ed5a2e56a9de50a9dbe87564586b0905a85e79abea7840d79844de56436f790617d4f02c3a7cbc2283349098a81b87b5049f9b24c6e6e9a76c12a8bd471cebcf88f2c5c1605536b2148741c24a0a6fa10684d67fa2648c5506747428cc590b1a04930493199c3094ce39facb678e336f7f22314fc5ad841f358b2ba3e293030f5532f430a47d2d3b0e6fbbb7abfd5810a8be15aad89d02e4ae4f8c361b20ba46e4f051ba7cb17d7814dd898243ecbc025a73861c1cb4131294bb70d1f395afdb1f09880e025954961eddeda42e11d036c94355c63a6b2eca6f801aab04ed12e3f518743fd416edba3cfabe68c2fd2d30d6b88551527b87c018a851d70f09cdbd3c1447ad04a7dcca716488a2ec67593d25dec481b24768887d89633b007ec509252c0991e3cf7b9eb780f706c7c6df37f18cae936f9d31b26f8aa0161535ae1e4bd900aaa8d3ad048b7366346f89a984d7129ffd8efabb9bf11e6a2afc71f6eea3f8f2029d6deb8d3a4a803647f59ce2d79247eee1b09670f22f40b11ef6ac2ec9a4fc2c26398d102b98d5876445cb622322ba801259932eacc28306c85c3ac85fb505e0e044424a42a03269605c33ec518d361640d052bd274b224632ea41649a96fccd3d5df7613f7df19b8d43032a7a633d854272133b6b6c28fd0217409183307359116f727c82af1566aab07583da2242f236cfe84d6fa25cae2c499c4fca05e90309ebbe41ca3acb05894e1d477f154a2d9e3f19a03a190d8197197c303ec53411ac4e79bce48dfb8042a6c9642ab84448ed1d341191392b7aa5d4569cefc3605bcb5b2c44eb615e2469be7a036621c45c6271d37916ecad92a9fccac86eef6a927c315cf733eb37586bac80036bb38d0da86184888950d74640069472ef5a8a897a686f4262f03e96ba80e92f08b3e175d6fd8091c78e7b4149a1c9a21fc9f7f996151027d61cd5dde1bf28bbec47287ff3e7be63b1ab94152f34282f3382b5b4670c3b67b924bc19e2b169fc86e3a7957c804f8f62435783be15a42d7240b1c9f58373c5956c44a63efa4d3f7d251ce534a0052949f7a118b3f420a83382ae2023ff19bae40c46f4abfa575aef0024f3f24b9f0f1ce7049c7d04b4216fc37e9e102342a41cac34687a98736cee47f1b97713a4146c4943c0c56d7fecdcc024102ba79531d9fedaf2c141b9bd8f910d4cf4a14d16a0c558279a3979d5779df22002646becba11eba53ba6d65ecf81e71594e839aef9e686a3a1bce05989909e6fbebb8c50fd0fbd9641e479835964eec0ce87cbf1649c2fc8bd15de39b97c8477b716db219537cdf7e9224a329c623e1da4a7a7b478b39a4a2a29cef608593585e30c81b47d0a911b11c6c0ccc7102e3fbcdab57fa79b7550abe1fe609bed219c17c0ff1fe4b0ddad3592568e5a040cf637cc95d851606af788ac7fb4600a1ac6b580fe57323a754aa6854f77a760043ce121186527050ff310af9cfe028bc06e812eb6b9e4d6d0d0bed8038d17f7f1fe86f098a5a70448ac1cf0503d081a10723b14640f5720fe503de860a5dbe0327206e193aa1d43475468c9465498df8d9dd8967ba2784f208bb99582cac2a23a1f0fdc4dce2a44bd913e116db6b821325850b4f9828d233117ab245a4fd5687136ed818eebb32937004233df9967e56c72c6cbd9f9fc5bf10d517fe7969cac25dae3064fa8cd8adcf174e9447c59196004b7cfd05e3b6118c24e7eedd0466652f02316b799c7bb7d4c2990697f7dc9164b350a04e84b2e59c9451f3f67b9551cfdd9b87b24374448631af4b4c91ec219bce1da4a5c9339ee923ab2c1508914d41d2d1514feea5522222cedd1592c41a0908dbb907e2773282080c4abc2c9170cd260216c6dfc3a71cad48e83ae46c0d5e0340d845e270903f77cdc620761cd7197809326948ee46ea0090e75b93bf78acd8215439ffbd2b1ab553dd274f1bc5ee6c7abec0b555128c387d8fd5d4336efcbc7a5b4a32cce8214c2a5f02693d7762b3538ba332f9f131b2d0e046cb5771d0162c0aaf627ec43d99da1415779c4cd99350de3fa84f07898f016bf4a0262d474669e14dcd7dd8e814c674d6c1d12a4736fe1dd16067b7fc5e91b40946fad82a27a5efb64300a7891eb57dc51ce7f75d31ed1306ddd49378843c823e695082721eeba3e857d47b12a9525d8e38e0744d9e8d11707fb788eb3f357cfd0fb887294223f485f8bd9301a59a8e86cfaea610992619d538d56eb3ac62a09822ed2d6d915820689f6b6cd2e292abd89f7daedb7a2c0c8b8b6b16dc0c07a12e2969946bcf5e8103661a6fcbb42817b0782e95dd2f2ae4784d4cab4873c5eced95344dbccdaedbf52e009da4449070153316e7a24e42d20b67dc6b90580f09a6901ce64b050ae9d58cb3cd325f898718008fd869aa2807d22126f43ef872412ccb024279784ebcc5385a1920ee65dd5d6ecca6256fc9124b29eb3aa24bbcaa92c12eb272e592bba7b86ce0af30e4b8abc5ad1cdc92269c60a73c6100849ab4f8f1085e6d47e5a00a9833b424131a3f17bc84a7748b7042613d4d6d1ddb2ba4cf7df71c9317a9f8dd1b7741fc46022585ddbf7a60a2e8c5d3249394af7c4b3c4562d47a31882cda2d19cf497619bb26233ab68681a2ea7259752e9f5bf14b4907712bf2961a4ad4b512f6afa1c332ae72496c20b96bba12d3ea94a77ba6d0a3dc7ffc66434e76fc57eade817a1fb3918c189b61d99162cfa872d8e5b8f7ce323b16c99025075d21afb706871db7f286d32feab83179d1efddf703556c3956d9ff520fc124460d97dda5068edb55d7bb5562b47c63219bba1c799e4a02bd67eaeedf3145d4bb19fb4560e8588cf18c3d8793b0228761ef840124b1ca6b85a25b12deba3ea4de11028533118c5d65ed90df2f19056959d79b10415d3913e5ab7f4612b5ae201a1533e65a52cdbb0fe573322f547f79bc04636701c8f25794e82b0261af4b365a3d88a0870f7c8a5a171e37eecedbfaced0fa62972c02a9820e85d7993486ab5e6f68940e2d0f027fb7fbc9b151f789f5fbd3aa8873fdadf6930c05b4ef0ee167869b5b1da28a7d8f6baf1aad88e50ae05f3381896537bf16360e5c9f2e1d27d45b4771308578c0b62df3dee20a8109b7215bc834bb0937158bc9afe7a4197e514c8640835c1111afcc41a41a9a9bba510b987188f25d1659ff26728c73b1dffe88b82d715e5f05794f8e1cea51d5d49cc3963008106a193a8cc21dedfacc8ac758632455c081bd860f58b6c06659c93be356005e4271e559218cdfd6be0d930d92c0f42e56a3aa61587c723780aba9986ad19e5ce210ee83d305a9bc11ed33e00db59b5bcd2d38482bf3aedfdaf4f58dec30da4cdc3610665c12a43823f6873abd3aff4f5e5329b5f1ac681bf34e600ca2568277af09af1db56f60d51a0b757faf1cb120d877b79828d8afb245d9c700ba0301b557f283d35527c60f54188c6b474a186284eab13ac28608c68f885f4f2038f4fbdde401fa73219fed37c6ec6590b2c06cb2c33b3f58c1e3dbaace04408c319c5e1599d9a5b93cb6722d91f691c689a38c59e316cdb0a00a3624d0dec80ed28be024302483dd01ac5a45475368250ceebf1654c7df0251e142503d61e0a58268b9f6856f7a3c8dcb281f3335b5174130dd2bf8e256820ba2ba69651d7117a9c183e4b40d77aeaba1be4246a2998667ab4e8cae9a35da98ab04a9378bbd542f285c274a241939da1254fee603586b7370d50c8376a7963ab843e228090e6aac471fc243bec69a5abc3e9725b1d443b5b23ea9a4e6020ed09f58c2016f6addddc83cca8b105c2fc14a09dfc624c14a492897b3515d77410522a4a6582609e026d318bddd014d80da2238f884be77120dd0ddf77b78ed6b582313517692f98ee143a12bfaaa5336d9f05650ee15375d47c56abf98104cda5d7e34c76efabb80426f3f8275095a6d6451c1606dfe595855e3768ba7b5b06155e90f91a99fba28fa8914a248f82c205c2aef2b8531ec8742f8f4b1e4bc3a125d56c28c533db1c612c13387d026e6a438d154e536a934150d4f42a1b158396f0670e8c30115476c9ffa54b1b35d8f0a47061aa8d296faf1f5aafa020bc0cd9fc68103f842c88d736ff75fa87fa1786f3ed7ef07869a8ac76463fd58f78d341ec4af827142575063041670f18643ce6f2ae629ab0846e2d8212ded1154a708125fe94a05c2228221756493b34b48e141765b09fc5e4509aefcdd40210da4ec91bd2a5735a6b5106dd2ff32d4e39d5c7105d9e92bbb2a3d94488a8f5546169e1106ed8eb3cea3672bf4aa1a416c66694153d47475aa425128c371e8c85d4d3956258a1d74948bd4c45daaf6383020eb4741fbafaa84a8d8b1a912753bf0fc94659d86e0a7f2b4f1fb773b5f54ac3e0fd8e5fc35f3aba22c6e7672740af064ecd40028fa60f2fe1c9c0716743bdde4b017fa93f9a3812a7c9c03087e3a278ba07af54013653be79f5bb9b27eba884fb288e175c2e640bebef11f497d8d533e4f196360bc6ccaadd9aafb015450a3bd2ec671cba572329887a1705078684f1f2cbc4920f31d67bbbb00d9d21bf02e4e20dedf8faf23c80ca378ef8ed8c71877d7e971d2b1bce118320724d3c65cbd302ad9de38d28b07a23f718ca27ba19393a574b108ebc99d2941f9bff8a67b8f2923143e48bc361b3ebf7b6d685b09847b1e70f6554a93e1b71194b331c90f813f363961f503a35650db9aef7155577a9f77e4486ba92d726725bf8a27171bfcaa7494c80bff64fb30999c4e42f2cf4c29d3c844ba71f38c2a541c3b7b19944a4b6a9b72825673f37c78506686370b24e1f55871a7977aef14a482cffbe89f945004c3a62d3fc6ac0cd3fdb3793c34732573babcd7140bab57712dd3958ded8c34c72df01b821ac9ca08c88a5297149fc4e0d90d7a5cff01e3b9eb894de5e07ca1378a9b916ce4f15bf12c802ae1a6f6022dcaafcd45ca2f52643ab7aa9e3df9556fa895c14380509f876aa56a86a195f2a4b546fbfac212ca5160a9e2adeb7da32a8687b985abd1d70b74de76ed6d20d3f41dd698885edf118d040f77938fb11bd7752386443350e50b8b5afd54908052539670697414afa51d461e613032b1a65a66d897fdfed46e78ee7401b91a5ee8d262ba198bfc97a1a654096c3a02807c25ad2845482a515789427e34cc785e2daf76d121187e9020d83e379c7bfefba10d0706ae0b9806e3e3d404946166af29271d795b8be081e79e2b35bf1625810171e248a0d511e3b499e0ea60763dd406c91e91431e71b93828e4844d4826eb30ad83691d26d939b12d3559f5e8ca071973bca09004da789ce398811f978b2e420819fc36e257249faa31174bbf09eb86368e58e9bf2ae6c1bc8e0428d1b7221236b464b9a11528eba5a230c980d86e9191ece626994bcc621e3a28ca2819784891bd46769f78d544817cb64505fe50f6b46c8eea8b5f10b354b77b55c800ce6c5af86ce211716cce6f08182438197e7abea664bd5c9bea0e97fb49dfaf7ec957a070cc045beee4d68694b582e0332767602d00c3c155f8bd2d04a5f0e7e71f823f0b00d0c679c41cdf0006985b9b25fec8ca4ab6fc9a9cd19251672e81a48468bda38c239bcfc1a3991c8274a06750616e31ba7312a0a2e10271a011d1ae1f2c9b3a0de64b2b87e005ebfcd8109a1932cc8dc1cf0a94a28c46aa619433eda32b7f8f35c3b7a42553a19a415bb6acad15c2a895c0acac0298555e948145c22587670496248c32590c632557339f742e9abf4bdbeaa5c204c65772d4fb5e98f6f6f54fee3707bc6899f6ef82525ea71e249d81e58516aa69df25078291cd128fcd98c68cf462bd6730b113525bc726802ef612fbcf52f85ffa96611c297667542fcf84c4cba9952007d1f39466f13239e96d0775722588029c6f80d74369e8c6a38140eb486977b42115422cf01dae0e24c4e2b1038892231784aab17c85c51bf76831b2ba61e7a19367e1e08f0bd020963986c5b1eb7181f8cffae584c220f6404b75fa436fbf965199b30b9330e948cb16e2eef4eaf6545a8e95c130c71907c67e81501769b26104be6947930c1960ddc53c20f80b2c69f318bcbb3eead807fae6c3496ce18520684c17d14d00f2d9a8a387badeb0420815ef0a77154e9084c668eb0e49055172904e9a121e044c34811d62e4571c0051277405ef6107e116654a560966bb0d44699e71b272a43be62b98458601c807566762cc7f292e2305a2d7c07e8a8f22e00308cf7e92c71a964ed7199d37ec10c77b60c95278123f9101c04b93034502b5521f4970df7b803b0bc66a46e20997b634751e4af80953b2843be9e7ad0fade640665886e64d9939c33109d3651028e9568a4472ea5e8c5ec25e59d833520272f810d525804c02d55cfa733fc3c71e3ed9cf58f5ef8c34302cbff1049a481a42d205d7280a97cff8944756b362961b20e2d9318939df2dd75e1c7217c46a7550f149e0ba6d57ed6cf2096222c816659285da752271bea3242453f5b404bd3164406ec94843caf0f1593794cd7a165f3aa1caac6771d0588a2b02a48fa56188a80d4d35a384249836fcf2f505b8349591c9a645bad145558c50ad0742559232c6364ccc84a9246180705524196da52d494d1683c933ca1797cfa978d8c70c3565e1843ba23bf753e17b4d7ff45726350c95e70df34808cebf37b7fc146271eb6263ad5c3059f36252971c8bdc56bfc86e115fc05d81e04fd84de56523b3dea7aa8368435d50274d6d6a08303ef0388fff243dcce005fd6933e6cc6ea946b367e0c2c41a95da0d929742d0831cc48eab290ff2205669557732334a4fbf4c75dfbc3e10e25a7b64cf7631c710520d39466dc088292c75328cb3870d8b902e716cb030da40908d7feafc7d395639efeee31125f6952035a305dbda9665b4c680840e955243e147ca188d166002a7a6a345f8214a8da50d0809c78d36a018813265a82d4124716c121925b480c75822d5640cb2850d33a1aac930680b1bcc42552363d08a3568b43893b2e44b07eff767d52bd0c8950b73c25f09d4a6b4315933d0314d07221b9b9520a4a616d033a33b343b8b9194a14d156863a623126bc3992620b3804435342b4621a21e32924c32012cfb9b5962ae564b63e44df6332657d90cbd0ad2ec8f11576cc6cc66a1d95f55ae4a337ac932ee68b3bf8cf630ed9faba9a11f91ec9983fda8982c5422bf25b84126f895806a6e378435808e7799746896c160280704015de67421f18142450117564093994e90ac0567b480cc0094d4608d10920a7cfd79e7d365143493e1bee8417cb348b65d352458af902695df5db06b4b8e985b97a60405e809d59880a0b8d3cfc92591ccf2211d3f051b25253f8ceaf1e595d8d8649f2a54b9fe98345166f41b4e03e3c88950a78492a7c2f25d057f240ea253696159b599ad643831c06dcbde712aceaecac2458547f5d55dbd41373d8b966a3fa5325515086cab3963e05b05f1744d49159d14da0228cc752f96ab4e4209fcefbbfd14b249ae380bb13bc255115e98d5c3aca9d8fe3129e7d7e837b824e1da80dc0c9614a19e18127256c9b87edb5b97aaa2fcd4769f556d4b98f9384078abcdea696cbc69a940fba89ec3ab096c2949054e07b1fc880de0c558a04b929797d5586e91de07b04a621319b244a023ed8c407e5af7d4b814033c0e56aa4205f55dacf4ad831416622d836f55c2b5505d4d3847c1a91a6c8ba953f13e3f14fbc82da313733a4ec109e46aaf9500ba9b0c2b7bb0e31932cc6f9c84a67893560a41d067080f61ad85799e5d7164fed36e9aa310ef3f7441eab8cc89a207ae48c5ca9aa4cfbaead8efe779e4b99b78634342239fff6ec911773e5782e897ce5da7c2ec974ea4ff9b85ca83a1fac349fe6265365dfda5caea657364bad44633b3932ce41805eef293fb30d218c8d83a0358e479ab457afb522083873f879687c567ff7b9a817261c6bf9f38d9451454c3ff892bdc11252275fb7765b782687d107d567d1d8453ed4ed213b71db3e2bd761ea93cad013ed403427200cecad69c0d7fc277839a9ed5e966d68ec7d84c627ae50a844254d33feff1f20daa5ac002653ca7242bab360131407036756402c8c97c97224033d0ac20912adc15900d88b2725098551fb9ce8abb257354ea489a09e1365dff9b0d51d2db01264e67ba99a05dfd392352ecef7e2bf5f6f3f97990a833e11430a741d41a64e3301df164578a63a65e7a5ea9f860c00cff2de423b6e4f6ea8de995ac0756f5802e009347b030a9877e1d504fa96c42772a8d1910aa041d842b65e9f09a8c2120ffb40968a3536de62e804b7623351d7bc3e1bb719684843508f9926061065dbe97847a3aa6278400246a16c4e6bb648a39593f9f32a69cd25b3f6094b387a2144d91ff5afa6ea2a0372e391ec8f804e29864c167f5fe1727b818217c92bd70529be8cc23e42c4ed872193389c8286342d80ddd1b32ffdb58aa072620c034d99f0e7a23f03e9c50bc21f10bbc1f268c7184097c5f5eb35095ac2c283527e9e2c79e80a3abf0a7caaa18cd88be4efe269fde0843069c70668a07d4ff753e522f39f591bbb2c9fd3142dd0bad514b79b5ac42c177f006e6a6842a3f711537d9e2dfa32398ede3a4f8b6d65b1382e6cefe3463d7bc65cb179a80bbe75d4d228e3744ed7e5c325a54efc274a0218c7795417330c8a34207fcc9259109cb1020bee5a12039e585274ae5dad1dfbfc1155ece5f43e6fdf5d5730cdabdebb7e971ba7c91f1432042d4411afb563dcf8b090c61b1cd7c8125a43c50e68abb6a7a5ede60f7c54e99e85cae5c62cf4d02a7143acc2a2bcfd80f75e018a79562fb95276fa1a24c3631edeac1b2da55e50cc47d8b6a3e7380e63a65c3d43d3e2ccdc15dd319f561944800995904a64352ebc85015201c3ded2c651658076632191c1214fa4b383bb1387df484b33affa9fa152d196bab85e7125861e20998095f533ba0e9aa6b4e6cc01d295c8b96479aa9c2fde279fdee187e4ab85fb87437d646a0d49a5b4fe07031e14f7d3b864b47651d06815acf771b3e1231fcbfcb799f53a97519cdca1455450753ee5e264609870c3a2ad7a76c255dbb06ef0223c2d2f472f1469815ba1746967d2d9b7b23b5e56aee3e722a7018e9fd1008f5d1b71829c91a869b8c466c843a084a238de5b3a79264eaa84b5910b9ec50e95ab014c77fbda6344ae9241c1d043479f285d3fbfea9546b43815718cd18d88a1fc99163858c6da24ef68cf36c9a254d7ae86371807b7e43ce04bad27448b2017f248319590bf6980e37eb1146f159329a0662facf17b2ff8e3b2cc7fe66bcd33d3a1f6f31518076b19c1e25f2c2bc1534e70c436fa8d967405a6680efd75c398449661fdddfcd6082f7d10386b5633a15240cd0eba55e65f94fd181f2bb08d6026a64867c392ade0ee4c3c115abb261607873b8096b7cc9c241b0e83c1806d49d7e9c288075a76afa2c78cd7fb6e022a9fffd437810c15672d91ddb12cb9e177208ef4125891d858225f6b6cef7f6bd8118879423c8526b71308a6f4cb0bdf09d81264d40791667cae2c9abb9c80782d8c9f0321e2c81f6fab0405ff27c7ba9ccb200c8f6992b10c58d251d54c28011fc0bce1859a178852f0bd49d5539c7efc337a0451a2d53ef52a2c85df739fee89178c7c2bf11bb0e5f5ae64c7f3b6cf801d3737b6f7867dcdb1bc423c721df45c2d7397dd712d5b13855f8077c3b0d69718067a804d98fd91830316705ce052b1821f5c9a4f44b6e46c11bbd77d6f358f94193d19722cb739bf9d4b81015ea67ac59b8f3dc6f11f394b1379e556d4b99fc1c2548df10c09aac0fc3b0102b359ca734504f60893612f9786f4aa508d4a704fb4c63df6c1f77e2d5806762c2b9b26d6914c4408647e683140f9fc3fbe8fe396863990975d125ba21b49f6d92b18edc4bf938fdb462394d6b3fc649cf34cfb7560a0f4621561200532650b42f7db27408a45429e43c4d4865fe315142929e035faf59f10c1709dbf4922df4a94b0f1b971b030878427a632bdeea4e9dab580c4274f076a8a1c5a88f205fc4e0bc0c8235adc8b1e11d08665c48a513f9d7601e1d863d420699af448e7e2f2943c89ca1a6612fd551cd1f845de6899284e9f35c64d2fc142e8ec415f4916363414d6108dec57b0ae59a8d8aeee8e0445560f381e804f95f651297a4ba46c53b72081679f8b2958f38ac8fd10abfd8ce2ca35b6abbffef22fdb1a913413f21eab4c5590fdc49a3dd10fbc1c06363de5718f3605f04af3472147c5c08469e72c8474a2f33baeec361d79f875a04a274cd38d16efe62fe2cfa0a0b61022e8971a4643d9855150412c70837c064aa9fe6aff64738ff7ea049f0123a8aec8cb632eb4a47ccb57734f058071b7edd4303180a29948ea5ec86e4d15cb06b565b0d1bbceec06591f7d5a6ece6ed5e721344c8517c8a5b51835cc6f541654c2c64ac0bd2318991fc2fa7cd63b5b2343bfa4ccc2e24812bb22d8a1a54a8acffad1e55be0da36824b1ec58f1ad14841523558b7ef9581fdbdac08f867fad32630a21217b98052e63d8117a3511fded5a26c94d3abaf1e3c3a9a8e49327de96b2577a88fc0f6a0c9d58d627326019a2f76bdff6b7be5b22c14a820957e43afc0578f6428f461ebd8260383b22545c5fc156a0ff1ead4b7e618d94ce57ae91bc9cfd4a9e439187ef435c70db99972aea55dfde0ee013985be6767a652a1e2c35ff2cfa29238422040330bed835b4f873f74b91c3b1f1aeae76da3ea23811e553e670e31f86c580f278a2752cb2dafa2d7ac108dab2e54d68673c9156a846e55c89b4296fdda5c5896a363f6bd88adf08683533c5fc445ee4fe248e7d707a3b09e1e14c500400f8f12e0106fe71ae0f1479efa8d62ec8011032c298e62e068d471ad254e4bd6aaeee6fc3f363e81ae2c2132967d3cf4f5bf1326bf77102b3424e6cb90a2db6cdfa30f7e5248babec0fea3528bcd385fc2a5c98296624b778eaf3c068ccaaac127551e9111ae7077614aaa8a85e4bbcb54282b0f5b1eb4df2a013b770e608dfd615f30e508b08c04a3cd1a2a303dac4048bb973d45b8ca9327c6e66e0bd4a6fe5bbdf700bf5b67212a06e1a45103fb2977fbe98b885f333f0275064b7dab0901cb70b1e10917f157fc6e790edabaaab00b3e2a4048776f5d2a31f63be973707c7be59429f390456d8a76eec13e74b32316efa7ff8cc5121c17f69fc61d41c6ef28d14ebd5cacb9262681371a3d44f5bfdebaca86210b21bf38ea0dbd555b78fd2fb687836223a709455dc814e04a9f85247d96d02d8f6cb9c850349d5433125c70b972095914e8161e65adfab7669293247721ea8e26e3ea99699faf3307336a79a5e2b210f22184d7cc5a959cafe34638ef4eb236740736f9e79db86a284172d7d227752c95a17b137cd375e315dd68a37393148b81672776fc988f0c449d77c9f22c645c8356f82b09a74f187bbd4482e62857a5785d4ebbcd63ac0765d3d2428242074a55d96fbd536849d3e2831bc922c24b14b0ddc098a04c028a140a7dd5377afe1e408915316b4481b76edd687c8ee4f61fd33dc8d678ffa88ee0dd80a193f41429202446059ec84f6866e3fd3ac6117ac1df53c7a4847a134f596232f4e5709cdf045e1e30b963652b67e68efedc56e5fb1ace6ffaff3a9045d0a07469724c5565fe133b988a24717108fd4c87a6385f3095a6a54d540252e8dd3412045595a97478a5098458ae884210a2294ea9fe1652faa1d4df377dd7deeee356281fa93778369ec50f10a8d9cdb3f6ab4b45b95f166b4bbbcc6b0af6b74ab18fe10177a7211df98c0560476df1428ae9410c3c6b22aeeea24c0dd312c578a93329f060123728c5876bdc77d5c5cf59418bad473768b0245b300915a83aa14ed87b89233342eb8efde07a90543ed4a19c432af2c42f3a8d99ce503459ea2781f5d6fa31b20525c353bd106589917c27f613bedfe2207248304849fd15397209f82f8f62fdc036876414e96d04658e1f0020d31751fcbafbf650549194f219ab73a76f49ef2c075bae50396ee868a082b0e37cb0173767fb7c979b6ec2f79f7e57e02089655969f88b0ca322ccc5d5f3a434b9bb1e869fabdbf5437e4d8589526fd545a922e89477fc3e907b864f15aef03636d022c4aef77d6a28aa8ec2112311c40050f34e62afa47ebeb6753788069dc878f50781e5849deae2869920790164e95783a56c6b26cc68b8fe3c7aa3f695964b7442d325204a240f01229bbba07ee18dd1ded86318c7585e33233cde908b439881bac2a88b40c9fee251d8d2e9c20be041e8256ece597e2944499b5c49914526beba787f6d81570bfd85d01c455990628662bb43d890175d2cd1462e835d3cd9d662300dde7a036002ed3be649e84a9c20b5671096f690654ceda6ec692ad8cb698fada09c56ac698d5933263930ac2d115c019c7c5f19fa41522ffebf3551981c023e06653c121122305ce9bd00883c283ae7f737fb9827bca9dec80441de9c0f5d7611b670cddceb780ccd473e1055c347aa6da2a6a56aeb007fd6949f5ffdc4924c21f074b06bc66d52d2761c3b05638645261f06b58f857e4977fe6c078a97425582186281a0e01b90a3e20176e044963728732bc04d99a15755128fb3379969526d365f87ce4c3fca429fea140df45b68126b97edcd4ba835ab32024da3363c88470bcc2883d36fe398bffe35868da6a5bc78f5d38c6a55734a883e82cccfefe29cc01928957fc5e02c955890fdde8f7553a127a2c3e448e35b664ce41f1c1984f6d0a7603b6de0a12a47b3a62a04c9b28601d00b882effbe0ee8ee7228b7afb60729491914db5871a2f05cb4b6bee71c31fb7b33c23d693086a5463463ae452f018cca0ce27bec304d935a88f9c36040d3293a58d1e963288e78e3cf376a8696808056b40e5e250863f77a3cefab0f450ec51dd97cfec703416b1c4f476d2322b3cc986c65f2b6bbcec46f9898f2399bb8e81cfcd4fba2135bd5afe6641ca6c36815e53dda2da5272774821878d594c1d00802ace17a2a449d1914eab391843f9270a209ac53f2ea402cece36938838a9ff3d07a4e138755638f603c847bc2b68876e8b55becc423f735665e4465405ebe427ad96865ea39178ad80dd3b72f18386648d6ef20170353fd652ee120d8e9c442f8066f7179cf24e27fb428ea5a34179966d027a7d38abfb9cf7cd79bdbe6517dc40584b79a6bc1da720c71e3eb7691b96a97bc03aa547bdf224009b1b60ed7b319520cac02cdbe457e0de01956791e30b73287ee03f34e6f9a328fda19705d363ddddb3ff426d7060a847a69958cdfc8f6a7d23eebf0b8a2b9c70baef72d7f4a38f0a6894115096c17f77de0b8ef86a9620eff5d2dabc0043ab45808118481991011bbb42069f1f14fb864766a4694ebc4f046b6b0a910e045eeca3c2cab2c42f822fe7ef05caf38109489c3dc6d612056fcbb6d22454bb4d14910a99f32c00fde34dd9b153f78f8ffd7b5db0e71fd6e23ff379655c3cf127aa3e4b866bf7e67bf871660139862b9fd74b469f6716d90bf146a75c6bd8fa2486c6022939809b7813b399c76bfc02ab86570be43a76f07f23fd902d3427af8486fc0922bdb89e03bb6b736fb4bf61be7e3f218e93063b2d339f6dc1e797a14d206f41ccf93ae97740c2e80444f6c3d017d9b4da334c6dec5437c8f1943f798806106755bd9f18a71a7de8b44a42af9ef42adf00872434b8313d8712ba6ae6c4b4eac2b79b95d9b682dca016f3df07d2364ac67a91918f8bd98f9a9d94c594a38a00e2b417361dddb94c0303c7b508054f374a6a05625665f8d360c00ab31fd689332d775251212bee9b6740d9610eaf8b687c64d2908646a615602d298ab43166339e65d0c4c8d2d6869df57ea8886a23a5d303645c89d713f7300fb7b2aa43a1608ef3839c142e1cacf008c867bd788024f0933570991bc7ac4442fc8b3fd866a0201ea0d019fdd9f6ee74e93d7478d524c01b8707b2bd521b80f87fe5faf0f6fb8f4c8398d00e58fb7dcea3aff41699c590ac270aa01a438feda19b6f7a096c1800be82d14750130698a5ff7ec0af383cce5c480ec5bf95ca201662d0fecebdbad65e29d891355bd5e4410b5890460f08a47a25d25b323fc2e046f64d8eef4bac9d4a1c6d201457594461ea9a2f07737706abc82d0ef669e95153da385377202b20dc5b6f87095e00ec7662f7c0e6c58334011e8f4e91a0fa072c1f64645b587a981627eaa3d64f3cc8f07d273d8de2bdf22aa7c2fafc2468c24400effed1e20010f4a196bf977d6311c19296c7d8ddd7e01c7a64b81bfd36a42222fe26036b1f031941c759377e0fc7c088404df7b153232e988972468af24d420459559e430b6666e109f39a0625f88232155c57ddadc4290d1b447269137d968cddcfff8193d8c183848d53e0c0d5c61a1f51c93d53f61e850104c3e607176d1c1a666509ba941e90601e7f2d2196d4a31dcaec718220adc91f98aa192a2e55b1468acc01291f1994c8835c984fe9cf18e4d3ab37c63412d1998cbfb2acd6fa49fcf322aef558a5477e79282b32933a51134ed4a5f9394d62f500c3b89974c43ed0ca55051e5278affdf7090ddf97e841e8fa503a214a0f2cc72be814fc255cbf46381a1e3900ef40a18805db7c37c6a9fac93adc376e4c7b5b6827f434b8c968c6099d3f73ccd82245bbea02b131682584c08a5625279926738e6f2143ce2e5885a85132ea12e8205230ad7dd7f1b1ebb797e086afe40bb6ed4d2fcafa033531c3a5976275f88ac158d2a1e3c858f780283007226e6cc75326ea6ca432b173666f3af43f2d0d26dc5a5c5a7ce7fc9f7d6a074fb161051a683a996325934e1d292267051636f6534f0d5c6d6a1dca53764ce185890096d066d0d159dccf78bd038fd1101e45ae0754ac03a708f56b923df9b0ca567201d5859980e9083548dcd315287e07c9c700e5a976d1988c0d6992532540424997d4076de2249ba0e38a494c3c84f906de2abf31b5166ef7efdff2730382e3fbf532b575a1128e3cc4f0b49ce6e8cdba2b1c2cdf597d06b888964307ca9a3be054608ed8492fa247fcbd2cca03f53c29c0932af3692ea648def6836f2d73ce7a1bfda07352cd1b9682f893fcdee3736964af7aee078caffdd82336fd88e6a8faff3bef6016c2cfdc4c3f5af3cfde3cdfa55d0725b174fea8f1ef0cef83a2cda07e5db54438e423428b4e900dcaf86b9652a70efa4dec9d6e8c024aa66570a44b8668178e5acec556a1b3ba9d907eaf73b6ed700e2125da476e4b0c8172c08bd6702b176d1474b4186f71b896bd0f30e59f08709babc3d1cc5b5e80d0a2683b5288dd584411e723f1002f78d327c89c1fb623afc7af16168efe613db29c734e458c2094c40ee826ed0e895cb2d62843ffe93f4a0dc7d2dc94a6ce2c2082de3517bfa2f4e1b4ba7f51f199afedce924ea7b7ccaa2bb9f2b525c0016172cbf38db16869c0c62cc65fe4ac44e3ef1204018e16f72907cdbec4191a67fbddcd598d614efe1365ee9fee94e0e8cbfa64f863c4a0c9a411493b1ee8042f83dbcc8a3363137f1d6819b9d6f88a256c47aecc32bd101a9b42aa3e426fcdf897bec78f062727e543ce2292fab1d5312e74e872f6d44729dc00f33f6b212cf783b125275a0b685b90f5199695116c2b51909d4ea4614d53ba46e0df0a8d717a8714e10610c51187e56739ea3c7a1e8aaf2c4a7ae9596ec5dd06d757d4fd78cd7d0b7ee1491c8dd8c4684281b648b2db581260e20a61929205a18fd5f63dda49afa0dc861eb2c3c76790caf56586dd39396c22fad4b0b3fd343cb8cccd85cafde7b9a6a16b0370688f5b7fedb168e20c8bf25103a1ea4f647d639241dc701898d711720e7b8d9c21af6cb53827998a34fa8f774b91ac0320fbaa94fb0a6756ffdd4f9a33343fafd322e4a39514324ac39f152191ffd3fc5f001253329a6bc5b6f2e790e804f7266f1e7fa082d29a1bf9ab379bf4f0af63999511f70d211fd2ddae1663671842c2512766acf8677a8a06695668be9766d16a1630954ba40e74ddd06fb7751392eacb4cea9cd55b66dadbed948a9283c139e41e65b70f1cb553ec309ad6be1e835961f86a1720259d260437c53391b24be7870d49950b9b3f3285dc9fe33c8f4477af39a5634c2b60dde843ab51a229b9a34bf8950d1d9461bab10c1a148f91f5e2b34b9f24c7c2b2820b24acc3b0fdd1e31a9c1ad474812c26456c98b58a758a7fc05c412d2637d0b58d69f7101ead9ea569be959eddd56472708a2cfd680190f960c9eba2693640e07d64678e24df9ca6a67b45c2233d076008193f03ac0690c9d3d1b4615d79930f011e0780f85eab1f3e966ac5a55f90043f305b4ce56cbced39f6d987730693d1440e27368bcc3934f820eddcb5498c5197df57141d4a57d30cc24deb7107d9d9b1436e7a18c780d77e4dfb6ca6a2b57bb13604936eacb95bf88a2bfb59b1bc2cfd0db8b919244fbd02fca4026a4f0a775d4052324e075a12d556548a15d194eaa21da564575d32849cda857b4b5a2fe75074f0adf9af7935c7fb92251312627188da7d40f6003827f00794de48a6c8b5ac736ae0d76e13901532d85e3236ac40bff82fadedbdf7965bca94929401b207ae07f8062606e58cfbce8e5492458a0d40d953f9860996603e9d16598ea05986c0d2834bba11cb183c58415ef9f36d7c254dfaebe1732aa330df5f72956d42fa9bf4e6c4fa31af6a3f4d57da4cca2fd4becae07c3afdceccdadb269f7303557eaadcee4d4a326c889302dfc888eacc8acb15fd2e36bba175b9a1a57143dbb20736c41940bc998f93420c12eb159b823b5be0cdd247d147ffa45eb88ed8a688c28c432485680427c07a0086185ff418c1c31839b18a9943a6c4871bf400e8a7891b0861092a6a40c50fb820053183213091620c0cd480a7ca0c3a70650623e0a638e2882d454b402194734506af2b556c41baf14a6b0b1e608941896289994e4aee03d34462c8988846040b11da77e3d00bbcc0c27343b0f630eaacf8400cba8a420b78e3caca1656ace880078f7700ebc0dc6cc516aeab035f1c0a7019f0377e9c412b73dd9e336a05dbdd38f4c594eb370e7d21c42ca3c066e518e86cff42d08b02002309f2a9954be90c0cb2365073050b95196860cd4083134e80d8ae35345dfe42192557431b9a3ca2f8bb33f9c56f0710fba18ddb1fc6dcfeb0bbfd33deccdf71b39a55cce5caa734e62723ca6390930ab23f0439a1df18859422a8b8fd3bae10e66e29b8a09a141320c20e07c248a2080fa0a0005094000a294440b828618453df7177efc9000d0eca60a21aa30c318a08a0049631680073e34a8a0f144a3dddb812daa2c5b6bb1371945d06a218305a6d953bdfeb9cfed539e79c13a352aea8fef5a0a1c24220a4014c088839ba7115850cd60f518480b513111189e1e5c655941bdc10e40c98200746f0f820650c264203b05f34ed9e0cd927b230617982891a589cd000141db0a92d3ac083032fa610010b2c52a832021514152069008b1600e107297620c6951b08004a0da0f880524a77464734a0073f14690962e8024041a4806285d6534515587600861327c400924508a12c41a060bb7115050624193cc9b0a08086014c8807483141058e4882c5e4089cd5142aeec65514157806b8c05ca03c6121922862278a103610f200949b2c4f84b18a42650a15171810019354057e0094c410586073858a2d2344a1e240d09c64376221430becc6002a28fa4010105010061939a109851b3e133e249f170f2a5001cf143bf871654546e9462c64f0203ffb2df3b408c43afdd0545ff37963c5bed0ded02f345d0fe795ef1ef9e60239f3f318a4df2b90820d58b9fe11c7665708b7e7d147924cf2131b102b6bb5567e2f564913f93d7c4e93036c406c649019e4818dcc3fb899b11af7a79f7f3dae0465d8efde1fcb6e76ec333128ebb67da1bdfd71edce8e39b7855cc5e88718e655ec19fb9c41a645382903cbef5fb5340bd7db2c4b2ea5947ed3033240b04015249ad802c4095b2eed2c3ed3eb47841d41290c7cd0c096238250b988c8a1265c4a5742aa4ba7d340050b6a70ed8d2ba1d40d41d734a2bf512c844b2881680829885865f980139f122ebfed9164881370915245f10494226a6a3ab52385c50f131f78020a26480862a60a1e37aea4687129942453ca20234a14440081045002c0854b9495940e6061cd5471ba7108085b782d08ea81184036d8220b1f417861012b58b02a428911b47a70ac01143094581123858509006e6c20634194236e6c2063419511d5cfeff5f66783bd73082e76dcb882228c762ffa17d9bbf9731b6f8e2c6f94cddf496428a880ea8b2c5ca0258a1f524a8c30e4c5152b3e90620315f08d567c20855f6ebc524512a31bafcc60043d3e78417ce3c61594226ebdf14a155b64c12012dbfc8be34616433a7a588eab2c965c66b76c13729751974d575e13165b2eff0ce85fd73811e00a8b30aedf5805931f94c41c6ca08b1f6411c68a091bf0187a82870a294bdcee462c63d04004507ea87132748535cd8037caf9b66f669679439aa7e6f84f4f490f3839fe3c35676211ab40f38534d65e68e4d22cbef665990d275cccb3817e0ee81bdfded8b5107170e30774a27f24ae7220e00f81e936defc1e3fc6189fbecbf8b1fd63778a1f91f9f48321e624a000359c847b62d9a28e2a4eb0aecd8d559c60e26e51a6c0f2d7a0d0243b22fdac43a93724be7fa1e4a939edbf550f931950bf90cebcd0ef0ed7b1fa4d1b602ef56cf0cf0137762df0b8f3038280db787397e132ca286f2ca38c9c8e73c63923507fec1250809cfe9e229149647b0edc9d41974358acfc59bd7463f418dda93b1656f27b8c31d6ebc9e823ba7bbb778c363182a512cc8ca9b1ae2cb3c84de3249195efeed30b4dedde2693b531a2e2cb2ff48f61fdeb8fe3dad0ecf3039b65f491e4dcdd3d568d7377f7a871eeee1eb5172ab68d27c56a56332f8cab970c6af14f51f7f0a458c5aa17c6d54b06c916ff70114f8ad130ae5e3248b6f867d2f992412d9e1e572f19c4df615cbdd80be34aaec0ca8fee618d35f376ef4e52654645e886754b162f540ab0b18a93d60d6be84fb45cfe1aab3829ba45687ad2fcfc40458d065935600fd03fb44d5c2f5d77f709ba7b15c2fd63dfe40c71f164890bf030c61739bee3babfa908d7a7113ee79c33b8fb939debeffea5223a7ab066a0e1e5c62c2d2b37e6c6d5135fb8a811b1bbe78cdd31d6ef392533b7eceef666f7ee6e6ee6a61c7ba15fe6b9611cb76c8c632f9497bbbbb999bbc6c8dccc1d39469ea3e852e605f1594629a394524a29a594324629a58c71fa9cde2e9b07db46a7c7c831b2db784f8e1f3273fc9039c6d8217333374966891f2c022b3ff49437eb869eba7c83f35ccbceec3ced3c5c7fe82c638b3a421cae1b9fc82fdc218855d6e94baf88ec74fc632119d4a8253a2cc436cd556053ae3f2625daf00a5bc59b1fef8f0dc51b14de1f138a414878e7a17bf3a1efc49bc96a141811ec0f5bcbf5ef2da2cdf4f79e7863c2fb7b2ade9cf0fecd8a370078ff6ec59b1eefdfae7853f3fefd8a3725bc7f17c520a8f710c7e643b026decc9b2c65e34da6f29731888ff7f768b3e3fd6bb4e1f1fe5cb4a1c1882ef61cc4200b01590ebafde463a115db64425c45b4c9a488607fc843b77fb2fa862b6a948b6db81683138c68c37d11c19b2f9cafdb9fa5fac6f664aabeb13f8deab7f9b2948e4f756b70aa51fd3ddcc3aada01f14fd3f838eb80788777344d33a1348d7a33b62274f2f5ba1d737978a72d2717d7e9ecf84e2dae932e17107bb2a2731a62b0bf3bad889c8480589d25b6a31ecc2dc13b110d7dff6d267832e7044fb63a20c9da384a1ed198e0c51ce7e9ba173807c74a049ab671dbb651efe587775a9d84a28fb661e3862965ea9179c9b8645aac46cdf0de9b81a314f48f822787e44a93298a41505feae17e54341a75409248129148d6c55a9b71d47399222444b2d6e5c5c5c5c5de1f1e8e20d5cc4cc633b3d35a0905a97cc793a020f768ac8b8e8c8b415e624fbf4998979717ea916e8d775a0905a9a20f1a346a98764e7db25ad82206a3252af594868849b8bcbcc09464ec110c0c4ceb8eaeed8181b14f727ce41bfb8451fd391e050fc70f0f07091e8e4c8a4ca8f461b6da39bd5635de49e814a4fa893efab9a298981932af4675ad322c998f7c23c37af74a291e5fa9472ef9f9a1b144a60f2d51a9a7d443c344a57a81e180581d172fb1a18c8c91b147322d2096bfd4e9945a0c362dc2325bae27d3850cabbb3dbcd3ea24740a8a3eecb77531f1c874c1603f0f4f86c5e04bf7d271457d63891ad55cd1ed13bc999e122c510d095e8c3e3c8944ec64aa75613a15f89e5a21e038ea7124d2374fad301dd00ef1852a819eece9744a1d90e4e9df3a8e664bddd14c4f6fdc6fdcc76497c6a3610656911a5a3acce88cf46fa41d9e02643a19fa37cb510fbb349e0184f4f3f00ec0c2500c0cf69b3a229b0bc7c3a379ead16b7fd826001f0e48766e001efc7e9ac76ca079fa4ef3d8b7e3b71ab17381e6a947f3f1eef8984e67c78763697e93dc0e4fded8d1c0742cc44bf334ba21345f0f06fb69742083fd200e8d0ea88646d7425f1f3e68d4a8518397d8797b78388270a870fc441f3700f87eee8bbedaf7732db68911d4beb70f39d7e9e5c974c1a8966121619fc125acc4111483e8084b3da756dfccefd5ed7e7e322c19968e1a354e1c10bbe34f3cfed4e9f0a03b9eeed84a1cf5fc76a9875a55df8ce06f55c82efd80c09f9b7d28c39ae139b97a5ec872c0efd4020186c24ea7190e88c57ea6d329e23c97fe4ca7437fdb42e7099de7fa0fa13b10898d0abb088845e23a83e1919feb4ad8f0c84f782475bb75b1672f2ce23c97e6695e08cff4e5e101814fe301f17c0ef8b6a76f64586d7fec12abb24cd88646c74fafc60e4808b38f95a72ddec9750a83c17e1956fdfea8e39be954f0fb037aa646f5cf7440b651fdec63e5873686a31edbb03183a39ebc714386a35ebc3cbcd2100cf6d378a514833bbe52cf072c4ba60bbe396d61547f3f8e4ec7bf532b092bff4d3233624c2518d38b8b258d3a6ed34cd9cc88be0e7feac5e84307d6e9609f33e85f0e2f07bfa1fdb9fd9f179e8a6ebfe7856d456871782178c30b4d3fb7df86179ea4dcfe99532bb435bc10a421c392f142bfa17d72fb67c8b0c2ae72431956f8373cb542bb0a4d2e32acf0e444d8568cbcb0e686a756ddbcd074c3532bc4a1c4edcfbc10bce1a9656f786add7eef74f8b1ae85fafc846d6ec0883888857ef31b3bf70f687eec80783e677e4830a29c2627ff6ec088ae331871b8689246d21f129984b3213390f725189979a8894aa257629b78c5e51e7688381632e09c88bb4f01844b77b7112258704d34a5688a121b61ede0d26187293f46302c48707d4a29588d8a2c2c8e783122c54fa3e2e53a82cb880e23dc9885083d726744830c03417821858a1f385901102a4081cb8907010010d48009221388c182304eb065450406564505fc02497c7c18ca41162900838c941564106121430b2c7e406273f9d464cd9c73ce39e7c43eb0a607789b369d73ce392791cc897a1081317b3661b54c22e20b7c30810f9ae8000fa84c31444596121757b8a0a00211c58911bc60092b5a21f8214b9428a8684db2259fd562c3c146655404c875e1d6458bcb3df281b92e41031090c00b145cc003398c250a9e2c556ce04aa410c1bb717505962b82ea0e66e8e93c430d2c1a68f37029a594d64f06067918810a131e68208a941cd8e08a63b3073843df645f9d42884aad9812848bdd68c51446542ab247be91c94a8684a04dad2c692b4cdaca93b63285ce6ecadad9d9e9618ccb984f1715456054545281b04398906054154b18e53573ce495fee08b161d182c879e26086cf4054038b861aaa28a902c49cec1265ce39a7055c987b1881874811a989b064208a41861512ab25467ad85c2cb8333333b333e5138cb0c93310d5c0a2a1062a41938a5028a70fee4d404085105841f8c8808c1cb772ddad98c288ebd857ddb3971fa5bb112c8bd0cb34b2830e3bb05ad448dfc81d76cca97bcc42826efa8f1013a8b00bb8db986208d7797e688a43d774032ad8a494ccbce5c6efee1611d6b5758a6525e6744a2bbf30acd3915f9d62435b6be5aaf51d539d62b94e8704c45a06e3779d4e91aed391fc523eabac2c82113d2b61437b632d9148a6d20ca95b415e6b5d5c48405e3a9d222f9d8efc4297524a96f2484a7a61b78af006f302e362616060606068c02c81113546d4c468a5834190419e1f3ba97d7fb3fa26fbee55c4862e47a146793227f3b457c584525bcf654c08bbda2b1573320ff3801aa865e411ad34b6ab5ffcafa38bfa8673fc65e7423ffd19674ca1897fdb91da4b7bc911ed1ead9812b1451de10b733146ae53a1af6b7173f01b36cbbb8b4ea75b0cf2125b3f76dd2c069b47fdb2a7c7188436abbb601bff6e5dc63c25d8f7f039d8d7a4bffee48058efd91faf7ff76ff187955776fddd0d995f5c22de1013ba3cd25e97dfb16f24d42876a913258fe8f39dce3c9ac2281e098523a1cb37dd45b39ac59147f45f76e81038c628b9db7d4eea6a713befb4cf492986d5974f3a2956b5cdb7ad596e14ab35cb346dcb346ddb584542aed6d02ba3629372c8c5304f46b09fa937c47776b81bd29727471dc01d021ac3a827afe42bb6a823ecd5e5e7644f8ad5ccb3ac5966b466daa671dd884472798129c5784c4cb38c899131b1c969d4f0939f4ecdf2544711276a118956294456d4b24a0127ba80e0d12135447ce9604465652589e415414c5492258b205f3c4a644b76215992534f2e3f0771fb14ffb9fc1309069953d107ff0c177f93dced3e27edc961d9d6e9d851b98859dc72bd7aa779542a954aa55219a97181ad67998a703ad5aa0e6a218c4e6f1c1c1c1c1c1c9ca86d1cd775a311c9be94b09faab24126a15f8143354cd452a9542a954a6504070707070787c52dd7ab779a874e671c1c1c1c1c1c9ccb1f5d5e60604aa5989819319c0c0d2a5bae17ef300fa76e2a954aa55229954aa552a9544658c5412cc42b1e62a2e92a954aa5524923d1155dd1155dd12563a241a3468dd369c686dbb0d12c6dd0e04e36665015b22bd3d01311c9a2144bb2542a954aa572bd788779b88753de9f4aa552a954aa191b376ee0c0f1ef7dfe7dcdf2bbc1bde7c89d542a954aa552b25a6b32fd835248aee49024924592d5a9542a954aa5248b2559922559922559ef7d5f8e1c3a74eca0711a9a6649f3719d53e3025bcf62a2ca5f772c8fa9e753e08f5471b54444449faa298c53a999f254a77270d2cbc1371d5b2eff8ed60e1a9ad7e5e711c6e5df7870921fec569097b560907f8b2847a19a25aa8e9828fae0e71cee3ed6f4c77f1ec944a32facdd1756ee0bedf68556fb4253fdc20f9f7e21087e61cd0d9ba766c746c3758fb526d33f08d6dc5873431c9ee6893e9ae7f26f58cd46f4fb26cb91dd491c7ed8626c550b75aa7b6e7c9f14ab5e6bb3ac3152acc69a691be71cd72c398f1917b58deb463e1a35cb518c5c37e2b8e8c591ebc6df46241217bdb077a21732ebc67779f1979766f95274e30b0db18a7f78877b5cada1222119247be48fdc79c5a2f66ec521c9dced3ea953da2c691d49ee769f93628e61cd12f3492986d59a69ae69cd52c36a9669dab6715dd72c3b6de3b8ae1b8d48d6ad6d96b6e3e48893241227ade5a4cb0b8cc3c0344b98172ec270b114bdd0c61933b828637293a9599a5c38e9bd70d283d9604a254e7a313aaefc2d8693de8c6e0579655c46a659cad4514c1df5e861f32360bcc94a917ade5f1c7ee3dab81b9db9a75be36e75cb64eeb66d5ce96ea38db4d9ed6514e6706944f9c37443eaadbfc170981773a847ba1bcc56da62b6abddcdb4d1d86a70d4c3e8dd66361bdb8d0dc7f65c8ec771c3c6cca9060d93cc8c9812ccf78de6471a81197dcc9f12c83c1951f097dd10bf757eb7bffee9c5e8c36fb00fab4471fc800dadbdd1c1287e4ea29d7ecfef7ecea09c8e79608b7dd3847e8dc1a70450e8f931c89a3de0b28c432a0e5d4611aefcee1020cbb8384c4672bdcd39eac9c0d304079c6b037893e4d4df623764fe573d25f57b688203cecd925ccebc184b0893dc5e21c9e51c0fbd10c9f58bbd772dc05cbff2cbc15f877a73d0c15e1949e8f7f0c8c5b8d8b9d094ebae72b489039a76373647d8e7006e963da2977e38f4f597d1477f110927a1ec4f6cde0ad87c4a29a593d223a9b05b217fec0e068cf582cc59419631c280ad9d0ab28cdbb110efe602f6d9c76efb464dd8530bd8679ff910970271e9c3207334868173b4df9ac3bc6e183a477377183c47fb39e78461e668bf510ef328a594c24073b4df300ef3300cc3300c062c47fbad729887fd74aac5a241ac7ab956429347ee105d4abf76df08081b7aead2ac83a1e668bf695172fba4581d3590e63d973ed661df6948f6d8af907d45d147d844977e921b3bcc85ecb15002af5bc4792e3fd7de362096bee41864896118d7aebf30896530f49decc37e69fe31ec96c9bf8bfa66be7fa17bb65ae118e4c77efbc28abdf68516fbec0b4d3734fd0d4d978b6e772f70cefcb0fc5bb71236acfd63c37a67bba7c0234b1e45069bba27a77457d7743aaf9b837fb5e5c3d5ae59b76d40ecf69b949552ba7dddbab9714cebd39791763af3eb0f58f95ca7e3a325969d58f9b18321e6c446f596751256be10262161e56f96fea4535e998303628fe4c8d1e91c914aa60e055c7fe975cb8e31ce5198a4888edb2f4b980efeed15e15cf0db773b026eeee258af8379eeeb869663f54d6db57ffc39c2f0408ed6e17db147f473f4e0a27bda16000e48e7c20838484881840e8741fead86939d67774ea7b33e9d4ffbe76f14009d4ef7d77443fcfbf1d5b8574be8743a60b1595d6c535ddd87dcfcf95ec474b3efdf32afba8eb0d987b555b730c8f3b5a7f3b7a7df792312d8f9dad7fdfced04ce84ce7f0362bb979d0bf3b7df366f7ebcdd97d0e9741f8e9ddda499dfcc4637e7bc4dfb12ba21fef4a77fbcda93d0e96852c79bd00df14f87091cef6602e75e6d21a0d62d6c7383a9e5e2e9a3d369ffb0ffb00f8929a7c9a985fafdfddd60aa5f0f06f94d60f7e8c5bcba8551fc27742af0edafb618e4ef940d6b0be3dc9b93041d3f4a3f3a6bdd735ab303856e88fc3847a1ab7dfda5749b6e48bdad71eef1c53cf954befffc6e88941f6fbf099d4ef3b8e98648bfe1703a175acb174350e0f6fb119c6e88df0d8836a23fe904804f2cd336ae1b7593accb0b4c976266c8749b68d4e83e358ef764a46144ff068d9d1b732099495240c2491a49cfca1ce8c17724878447bea6c85757d92e5f550acbc9304a372ef6314f14ccc3235fd5ca977cf94e169bc7589d9392b99d3d25e4f2795e412f8f59ca67d6c272916e791c64434ba7d72b9ef2d4466227ec849d441c500c6b010e6efdd0a53b9d229d6a69d1eaedd2af5fd1070bfad5af56accd18a5add675d6c6713eb7d7e5bad3e2b92d22ace59c13db4457f384c4211c9c596ba7c33659e5aac9be09acb9d82562c4ec74e6ac3f6a575303c4cee73a9dfeeeae1f4df65a0ac5ca4c623db00e74a21b61231217fd076bb51ac5588b646737b91bfa72d22f6ef3473d9b762c38e1d22f302352c78de66f41dc105070ef4f46947b4ff76cce12fadd3dc9f5e9c5eb9ecde9eedd73ce4f083b6d170177bb672de34acbb6ccd6d8adcb5845aed6905091d0cb0b779732fa98328273b6d33967f7bb534a3f764f5e679ba6b2952453326c5881582d748a86d01b9f92616bdd46f20b99924f82f807895e4df11f247a52ac66b466dac6695c3722c59cb2550a414ca6f8a41996693e9a8fe6a3f9683e9a8fe6a3f9681bc775dd6844b299e6a3f9683e9a8fe6a3f9683e3299e6a3f9683e9a8fe6a3f9d8c8341fcd47f3d17c349f2fd37c341fcd47f3a1c9341fcd47f341659a8fe6a3f94ce9b23f07c14e58f22fc4302a368c5b3f2c79a753c4bbfb15d45e917eadc05dfa39cf132b3f07bffdaa961da34cf9d5afeb4eec740bc1b03c9582045a9e12f2d4751aa39432feb093eb1b1c216c2344e6c376993eec178d1aefef3cf10626e6fd6b782c78264fc68b8d9a11cedc12c9c5bebf35459b174f6dee09c18982735360a16f5ca851fd75c617563bfa42db7da1e9ba962db73dcb32eacd171436dc5c57b8966ca32e54abb59b0bddfe2b2e37bdcdd52809c5fe60b0bf86c1fe1a4fde924bb8809267a30ffab2d3b14662bc1a51f4658700ec96be700798970adc25b59e502b57db5c0c7ea3ee852c870402fd1373ce984c9334aa256b47d6c5c5657aa456a3482d069b707162c3aaea365713bbb9d8092b3797ea852c67e3126c616c2f067548dfe66a6273911ea6d329d2afebf2309d8e0bfdc2233c97f62b487aa4a75e917e5dfbb1d3b1f24eb9f543d772fb5f48ad469580b485c17eeb915c0c923e52ab092b3f2495ea88fee865f772f4759f37b7b94843b75fdb5c24ee86a4560a6c7383a770d806b3d930fa42987aca53178675630e24de219149b8be64d936203632b13ec5de609e1b1908e93157f9ea2ee7a414c3a854acd6ba75a976b5ab5d36466e9f3406e1b4d0ca6d939d0e7bb2a703923c3cbcc4c620da8ddfbf755d7f38b65d3707e91fd7c344f7d00db99e17b21c9bd13003ab480d2d1dbace88cb4501323866003e00c7c020bfed8830c8443206997fe38696799464dfc3e7645f93fe9081b8d125fd2d86ba0ea52948c7a997ee703d46141d52afb7d077fe24f112eb456c134ddccc24bad78bbcc88b4c607f30c85fd38a41b66799fae91becd98bbc4822f17359a6bca8c8b5f04d5d527f18e4af3f31313133b818646e1f7611567fb81e6dd32a8d31dab4bcc9e2fc7619c1f92fdd10772d8ce287e974244c09f3c046b97440df287e1919191a3c6332994ca61ab2642d0d1a9d4e111a9dce8cddddddddfd42b8dfbb1eb68971dadc703d56670aeb5a58d73f2ffa29bafcf5a72ee11b6e0876e974fae37a92e8b9fc9b75217523faddce9cf9628b2658ec48cfe5763129d2aeebeda1bcee5f588492c03a83dd835bbf3b15ba8b7dbe137df4331356be90f61ce40d7de7b2cd0d5ddbd52eccd5019a12a834ec588b7a142a452400000020001317002020100c0805a3519825c2dc0314800e6b92426256329346a3a11c45511c8551186588210010020c010019a4d0d80ee03e4f846f8830e1cfa2cc6567155d280307d7619934805778c901939b898a93bac3251f03021480a3646e20243bed12dd8ff683f5fe1124ca48c89c2dca092c22eeb101caec82b235be18d1cf63e05197ac420e07f52242fde50149ce0ed185dbc694da1dfb92811704c1d8276667a56980a520ef9fb1c77854a3f248f2e3409c4e31567f659ce931730bafb6ac60ada9ebaa947013883a7febaf0b4d552c7c3e3c605a2092856c586f4badd7100191fcf3aba4f7151bfc701fc13fcad07ffece54f463f34aa4bc1d8727ef3f3e735714771c37efad150333a3218efe63788ca3b7014fc1306e3143145023364209d7be1260f845651efbf8849cc460020cd950624a68f0bccfe3dc81d5a2d6b447428f212d0c5b96464efa6bf39704da6aa49bc56f9181e68d6f66f3b2146b9826d403e92c673689d8fe7ca614bc84a24ef31878ade15c8e50c3c77d080284efd86aaf7fb8007efbb66ada3f9733f3989d6bbb8d9547adc9eafe834afdad18d63b64a70322729e086d31ecc58827e237f235d61ab53e430dedfe7f36e9b780a367df23e076ba366f7e5503e190001216618b62135456fd2cda4b3b11f3048526436d04b89c5002b211f762ed46e79a8010d830658d0681e3b021003c77d557405068415482420cf23231bd3b66f28dc3fb18d818c02cd218b8088df1b047d9682935507519be9e7e089a9877939e86e4533475a559fa70a1cded8faf6b17069bca10504b01139a17e66e92b104ffc7a7956c5f1a61bac340c1cd3ee4015d994043a65e2a33224c0547d2260bbee40f3a93575ea62d60de7bf9d5138aca312872122bc392261d67962dd3f0f0d60ae450ba023a56204dfc61999d8700ca14a62d5a267933c378c10fa7cc356fd82bc24f4c3cd0ee1d4416bc12d4e508fa5c5e48ec33e8fbca84a1d7ac4a80293fdeb0320cd0b64c878435547c76e692cdd8299b0f0940443594817953da1d2c887ccbda8cff08235b7cbe9505b217a80d87f9c3624943cbd4719f277ed02ed559fc59a8048f16a4f6694ae6689f44325cefb1a7d9c11f565a88bc2c0bac5c3e5709c3d09305c655d0a088e138762bc91efe0db15d336ee3e353244f24e3d0e47ff92efca26f6cd5a2901d5c33bda16dda97e39f16ace6cb981e705253c014947bc37ab35684d07e4c2f173597b645765e311f84add75419e7ca62a5798de94bdac83fc2acb20254a5d2ae94620db6b7960f22a2251e4014688e199b8e25ecd1f2015e7a25ae8fcbc45aa3dfc3986b1d0fe40913844dc4685bdb636c6122810b0c9de71d836e722703a535b367c2e440671491c23565e17f20e8c3afe24d59d0d80faca4af4cc196f89fb542452ad5384556262873493640673330f9cd32928b8519f13bfc76b9aa4c5fb89404069f350a70aef74ad427894a6b9bed0eaddd14d8be10632a59e9d53daf28f0cee1a6770ac8d2320ae489753fb408a47cc239a9f16971a031fcbba7420a058f6840834749ff82538fe5cc31285f01146e4cc26fa5c24d45a8af3e58e5744787e28142b12adc286048925948bc004c7ceed3a43617efbca24993ae3ab82d090a0f333fe301c8afc657ad136c83c7b21482d2c678164ea846a2b64d661b987b008e130e834bcbddff54c5a5e1e89680ac151a5eb6280ca5a1b4b89ce8f9074f63d08c6933768fb49b427b16e2dc8f5178dbb2d068c17d73e8f9bc8ea0bbe3f6c7d7fbf5082d558b8553866e3e5e06b77cd6510da9d53f825912a46cb5a6ec85758523e2cf013b4907cf068f59a10324589bb8e9f3ee94a555aaa53527d31212d73c06725144b64dc4f1e73e33a93ac5a4fc5516dd213eb3974d6e5cacdea39588af7c1ca6ccaf0b01853e0462446a068b54cdd8a255d6848243e807a07816eb70c667e5458d5b8debac82a469f652e1cc4b07d489a93b9d534f1a5b40ce3b64ae6e0fd9ab0cb6f712f175ac7bbd1b8bcd43a3e675f490d38e1c95128be4b1851aaf0535c2667e71cb64dcd28e4113341106a98e762622a86cc1416952bf2b7b1166edf1a75960845bc833af06e29f94928a2e43b0e976bc1a86080480dfb47a0628be4481ee5a075f7116cea61fd80c225783e163aa56db9a7016bb5e0b8fc68c95c809c766f3129ee40927b145d6260e476693463dc5a01b44733fa2f0d1c557ea887e7ec28daa9a568c8c0857f008ce7892819e963047147e01b714f1826fb1de4bd8d3f90f877444be5c0993b6aec1a1ff89e3c2e64530ab4a34483ae007f5ceb1cd42adebab71c4f89430935cf1cba2b7b8036e926278435f4444a5842f471d8dd47b84125e0c4aa8042860f80bbaa3b19c2190cf6debef93a1186784deb927acfb9da73dabd927373640bb7ce21a47c09c8499e58abf1c6feb445049b411185ad1236812969c2fd4ece5c024c88d84392e10afcb8d11a35f4725a16294844403c790999e717cb7f42f331d23c56d920088fc47572ec48d0a49428b4591045c36990a02f596b762fd4888bb2e8eb4518a55d787b7a7a20aee8d8488ead0083eb72d454dabbb50e8f729ea82ee7e5e7aa727d67942b3be367fae06cf2110dc5545c269060e6bbf8db5b6dab083029135c5043e1ae21b4b3d91f034487a4b3cc74807d21f0b92e07645303d2a84e02a30aedc86f51db79724f4c94b82966b4b303b214696b247a143b3d314b4505f0f0532b5b85761cc29e28bd60e88926652817730a7c7645f65722881eea5ba04b709761101323821642e9f4ce78d4a15aa9f05817771501d70e8f0b1aaa54c6772f5acf92b9b1493ee0ea50e6ee38f869c41b525333b5968d8e9a6d38175bc4421336897ec4f37d66d0ab117a4837be38f4a02351971ad7ceae08ea72fd0fc29d041a1efcb5af57fcc97f839083aa0d5016d0e6e45d41c602396e298df90391074cfd59a98831354d4b7c4e580a2f948ae2c070105e2763630030f90f7319503a177191d1a85eca8f785b6798cd8f6bf239c30e2000d4863ba3b4c398808ab43ed2427c57923c3b943215b1e268413a44677031353ff6f9853ac30d0a11215773c964f0e4e3494c2b8e7a0d92d764cf7bf714e58f1a2994b0e661eb06664733062eaffc63b62c5c0a23c7260620b54a39e0fddeeb0b1a5ef27871ce06e5af5d826d898d8e6e58f835074b961efefa6e3e40bb382ec384bc21a5ef2e3ee3830173930373539f0c03ca464cdde7d4d73d2e37b8900ec4b48320999fc6412976a037947c531415dc7b4e27a8485d2d5ff26494202df24a935f64450dd809b72e0e09e5479028addea504b30f7e252564e143c0c9746cb945367c2a5e2a9b6fe1e95e8047ba8c166947360c285ff364180f568a6f9ed0667e81334674a3cb0730cf077af660b7134307e721f1af48b7ab82a6bb6b1cbde1b5600044ca8cf88911dd5c6c7efc416b319a3679b0ad554a5e9d144769f99709440025458195d9829a480875558bba2aaac895fe54cfa5a7886e04f58dc7d7704e07f195937e4842bcc5f18a946cf77e7d5a2c516f751afab56bffefdc4c24286e8f0f481eb1aab92962f048973bc71f8aaa373146dd1c2f61486cbe46414b48fbb8a68e28ba5e0168a9aace5eadca46fc0b5e41edfd6efa85b19a04c27f109d740d5bc1f2b9398961c409ab262978044762c1f95bfde12fa389123faa395c35c636078295c6d6100e0855981dfba7e0aae4f05eea8ab3660f188838d50b2f0e191f9ef49e6706e7e7b9189ace95f7c2fa5e3ac59fb811d21baf682e0aa36460626d5b5cfb1facb318ea331dc0e9abb0ad786b4d4686a18828bf77cb32ed64b80d50486c205358af03949f5cdea4b97a1cb65246611c3b529b836e55f0efbda38dda760257a75572d49b875e9a776b91796f527ea53768992585e5c810968d230df241c44eab2818b554381a312dbc620b1ce964b907392b63b22fcff0e5ab9283e2eaca746808cf37c5b2e2904aa25874c2fb05a66969f31237770607445eb4f0ace69ee20fa9aef2ecde465441851c249ced0098eb55b593e18e3878de083d380c6dd75d948940731f13c9a3b22d994ae2d7096374adcb935b2d610890a4ee4272cfde02b3769fc56262eea03d5d799313a2c7eb32de8909c42808197b683eb8aa8ba12df43b00ddcccb558ec0294a03eaa09225baf30107541231a558f73a7c83507467f5ac88199ac66222d8054aa4b91b58144f519723668698f3b146b9a1f0ee02c84ae18fda1e5eca7a92d16cc94aa3c24fd44f7e53ada60bae64aa9891b714a20165bf66a9f3f1145a2295a4284f02c11c151e1fa9b2d213b474e532d348312f86f615212ba657718d74de93277ce82e8fe59a67ca70950f7823347ed6b80cf2b8b2c622a267dd6034e8e41d8ccb65008ca06d18a0dc9505f80e531e89771392c77e097faf3d233f9d7d804eb45a0c74b32caa61b582d4540f5e8b83f6b5e3d8fe2700f874af8ce99789172d34a3136167c1079d34ad8c2b0fb62d6f329e57d1d0e655e569cea7ca12740b4fb9a1f04c6da28d38779585de734198715e8d62a9350650e993882b143260db33d82a1e141140884bd6f9d25fd05ea85d08f8605543fa56e5759c3c8ccb5181980f804720c5f9c58f64a168a08750c1afe38cf061b9c90ab52c01f0dbecff02fcfaaac58ab680ca6ceef41cb64310ba54b9cc201cda1bcd50eab08f46747eeae58f99f821532ff8b7c678df0fb1784af81e64d788052c9818c41758036b26879c0aed7323c86bde4ff14d23984d0a2b6847edeec80f06f475ca121f09fd10c063d29a256ede611f3eaf85ac18375f50d470676fef9b9b02bf657293e76a65f469b2d36faf49a240a5f62ec3591c7e0a687c27f61fa34daf86cad554540054504ca2a5d5c68f6c660b46ce0da5f7b526f64f855297002b40355428087313a4bd366278cb16898f06c7880bc0dac4823d3d33f27e6813cb888abaa72ff86408a952413883e4815e7dda57e8fb1ac3b7570309294cd3c6e8c0c7657bc8ef124b70a87bfd1fb5ca67857b360ea0775cc72dcf43ca9febeddf2c2e11ba3d7d482fcef564d919f31a02421085f32c5469c3f3a7fc95351165f6650b9ee9470664d683de8c880db51480c51affdcdfa3e6891a3a92a202e5e1032b59b8c173d1309e93e7e3c5618417ffc3a20808a20de0f0fa1104c47edb0dd3f21a38431a4ae0957b0ee9cc71dd8b57528706813e67c9f7a5bd26e76ac231c83a00e65f327cfef090ef9520bc7f6f48f08f0483da1d628315be0d9fe66fcbd45530e8ce8c3494132648d0b5319cda811776604ca9277a378fdc85c2a89b2a90cc9afcc956e5cee4f7adecb874211a168e329b6465c9bfe1530148801c55db4cfeae7b17a40f53c543d31d71d317e78247f4ada8ff1d0cc276b2434edee0d89044bff4307ec92a8faf1bc35bf540de6c9e5ce7655c29ba49efcb26f38c0b39e8487b85f72e75d9d21ef9684c098250231c47670278e2ade25afd26c1ccc8f596d50fe8467a33122518417d015c8a0a33b361ceaf081851ed7b96de2aae145c1051e9d24f535693b9252a7d654c9fd9e4b0454205bfaa08f84b2c5d844a0b3cb085e891e8b2c8521514ff0bb447b41901d82001a4c00c03eeb64a36db745e409b878a91e44cc905e546a1ce3fbe74402610cdae2232ed6f2add607108536f599f81246064f6b5e1c2064349bd69c3a1145e4d94090d6ec8d496446020de4a96080f30970957d95b7ca0500f5fa0b75ca9593e52aa2b7cc2a0f79d6de7498c7eb0711720c4829b1e661153fdfc7d888e7802c968b56983aa0c4c5f64985ff687f924c16c27f5c3ce8482431bbb714d6c07953408a1c3d2dcdb1ee0242f058b9d092c94576b0ae02a471f84610ea889538c5fd1efd07bf1e9b43415fec21e4068032e53622f1420950e8e75d9126b9d1ab90530bd8749a2e34951bc7abd90f8eec869f54bfc380ed1ca4508b2e0c882446e5218dba8d24b6183ae9ac74cfb4b4830da7c53a5f6f67659a53ff62fc98e2b700dbed53307b9008826a85e03d681d026a3bb1d8f016837e468428378dbefeb7f3311b97ae4ec0f1e059131f8941ff98166cc799d8fe94f85e7cfffb477820ff9369e28fcb3bb7b858966cf28f2cf280c43d69fac400124f7cca66c7891e11a4d9f3bb24390169269ed7461ffb9513989900e6631c3707704bd334e81bf9ebd2f72b5a346089c6273f6f29f1aa8dd8cfb224ba4fef4eaf2896a6b93dd5eca53855cb34ea64ea94f901b6b38eec34136c0f8313bb37d5d086d8974e0b4c969237c54d73c2db54112cc9e692c16eca182650e6d751a02102cd35cae86a05a8d0d8c08fb8e0e919ba7833b61ab039bb95c2bfa454b96edfde3ebd42b1ae986b400ccc4a9838c01bdcece9ed11d1a8a2afb2e2dd6c85bc61f24ec70ce70251b5b9a5910aed0f068bace6ff77c4b6aed7d90b73b8155d9552a4da6b54817d16e681fe01778cce816892be8114ed2e0af2184dab3d9ec3b76f648b2c4f9f32e4650c2c4555acec1dba519787810a129b5c29ecca1605462371ceb590453af84a5ccc870a8344e00ae4f8dc8e203f43a0d819728a720786347e21fe706f9976f83562e1da475811632a687f8d31432c75f6d583a919ab571ec28e165249f80bacb160b9b3671acc3a0a654b56bbc060da5342a05aedd0e5eed7b76cc1509abff383ac307fde5a1000c02774b57e60ac91a3229c3ee58e9b18190862d064f36f5d58dfe936ca56d4399abe32f74561026de2a99c6d7bcb73338ab78a8d6aa66854d5b821eee069395ec9fda359a0bf609aab00e7820808443488d303e8feefebc36b6988868c819aa5dda0f4ea6631df1e9fa8640c284f86e5606dc7b2d8cb9dbf1f5ff44950e009a522e667c7a87a05a07a074ea1d00753f5b58de9d6af72db731fb0aa30322e05383b02bc4f73cce32eeaae6b2d78e08ed95ded3eb2a47219f72b11a6d49845fb20b751dbdb33f137f1cb36a4d82bcd390350c70e6629b0d949a3f9e0e6fe04a04d4aa9f4d526c10ffdf4866f6af7d09171de9ec67616b0da6d931fe76b644f10d9dc31632d43612fa68caad0e67735f9206cbdee136071023a94ad1ee87b285e8d4d5c18eb064ff604d5986fab0c274331ed8644f76028040c92cb4ffb13642f8f68337fb40727bff0e81e0a249679256170576b28d36b3c218734304f60007526d5a36661523ecefb48550ae1d4420679e930bc298d25f987487f9e6c1922ece20620171674a9b23a9bf16ae9f9869c5fa296630d3207d771374d9af1a0e526d93a97c0732028464753ef010340033c4ed4184d20a29b4e30b78d1e7cdcb383d84c42b041212acb10bef3106f46449708b74484254624c623a43149ec844a302998a8cc267cfefe8c2814abb07324beb43453e0b540bd2586acfb7a041b464529c4db973780da50a3b05e02e6eac8c2d8dc1060409c280cddc84f66f64814bac012a44ef040009143d882f453487e1e099e2da4c2a0bbab3594e9b32125a34c0f283023b9432f7c27a4d12b411489f8a7c8797a459ea7a984d6a514cbbe080a16ddc6a8ef857bcc482603dd355a5563b4377a8e0b2203b12ed78fb3dcf771be45f0d38d07eebcd0d1b45ca5ea7c46dd2e51432172368f0420f784e35a2aac296ac1090503a60937ccc6cf555f1daba135c1145aab92ece1ab23cf416f642c22fae08cadb8e9618c0eb8fd96401257fc2ad3f6eeed8e6ee1d073a8d102c01944d4b7ed4017eba2a2cb47d2ffdb0a200112d67aaa6e01028379e4e596062afae3ca5a4595ecd8bfbad63da926a825135cdf9ea56d6f44b7e950e0138fe8adb424d79018f830b8c3e80a400cfcb642e8fcf69edccb3bc450d40f39c181c065867fb1d5c7d293a84f2b4206a414bd22234f31e41f2b3295068827620f82dd3bd4e2a3612fe406f5c319985a32c29e8a771df1e36c3090c5021eea8a15f3a38d061b2ecd30a13dd95e22268939a8658e35f4264266b59be6f0184beb85ef08bbce3b4e1691166956815648a3c2a16dcee218cef0efacce36017f03da843882893883a4606c1f1d2606998f43908a4de3a8bcd05a69cd331645095bcff506c2691814f9ef1c9c2d075cf00707ccbd635bd9a8f0de4466f400ef4b5a4fa5a5a94c3a0ae99852085f1492d6f9f7166fcb7ec0805be49a0c50f8f2c2081a9c13b250c0da963e66b975282645414bcdcfddce5e0e30c96e9c8d3a340d41abca7ecf8bd76ab8a8ae0f0100f503c4bbc7b35b0e6e905319af06d9977731234ba83e4c2d0f25494f6854b1d56c06dde58695bab23d4027afc54fa579859eaa9a60457b4e73af0af81f5b81de624fc1a3b7f5d2b304a860d7a37e98d0e6929bdd7b5ac9f054c1e4ad32cf37c5d527956cbff625b9d1679c82d71993c2e406a18176f9cd4405ad88293fcd0273e0d807da2a1d064cc6702f4c3f9cb206ef0ced9d47ca10f7216a803f3a3c8401e559132120248308e1e7adad9164996084fe0218df4cb9d3496e2167642aa1177b1e5cca5c9fd14d6adcae4659ad5e7adbd43f5902f42db4ddf27965d1739d206ad45c4e3f64267b9e9f1fc278657316b0e6c119524f820d9581fed39f16385c780067df14f0b5df187006f1766ceab73e16598674ad43aaabbbcbea54787b3b24c53e691589ff38e38fab0fc5828d5e8b3239c663f4e735065538d43af946e65baa604a54ee617b1306440aeb25f9ed67cad540252b4201a62d2ea4584e81d0ee67fcf695798c26a55c0e1ef5bc3e29dc41a6bf181223ccdb7a14c33c5f5b892e8479efd7a9aff01b596c35db230567a36a159ee14599be64b6b592638850f357f806cc0cf7b13f3dd899535b0c7688625147f9eca372d862a315d58fc017661f4e2336e2ef612be766be8a0b674a53e3ba5027b95de57700067d851bb1333d8270569871a9cf5018be4aac5e79f9721082bfc28c28723d82f0b6ce787e48aa85809c3b44fe21679af164ee7828cdb02dde0ffff73e61480a3ea9dab98a5014923f19d1cd27e70c1c4419acda8b0fcd4d3db258208df593514ce603de71d5204e584985d50f063ce6643e7282cc358e94d888365157a7d0b6bfb3d84083e9075238e662de9b05e9c76c16ae2436e7fef28c0c5e48ba1eb8cffa30836d6a048a0acea70276a3848f1e013957733f555fe4a47f14c276497f7c09f5a1aa395945f44ccd7d5449919f906d3bb1679ec42032f253c2373080cfef690d88ac2570a918e4d185be127f10ab7c870e8f8735b0288b0837f74067dcf90cea5334ecf62877af85333755a2758fe31fa9d38b1fe2b9af0eebd62a030a58ed9f30758e42babe9db29401240131f5d659b13bad1b65eeecf374dd26c50dd44a51c43406e319883ee2b66fe89ccba4244ab34bbf2228715206ead3122da243118dc69e10ee5c9ee3abb0294cc3633494b27cedb72c390ad38f118f394fce0bbb4b356334a7ddeeca27a96b118f2b5f2500c1f508c9156a9b761772f282361c4a13eb5c0509aa68293ec745535bbb9b1c179446380f9b075277f322aedb020c61c66c97abb459fcebfbb1c615f663668bbed538bc49987c988ec54ff42f255be0c37984b35602cb6e6532e17e98465e3c86274852974d3a99743a8c16b2b8479c86ce7e694f743368d2e9d580cd2faaced782c77c2f555823e188a86a9c5b2ca7f56313e6ace8f8e12ca122c52709ed6461ba064ba46016bb4f3e6682e59c59e7a0638964779cc27dd572606479c8fd75f7bc262bd1b1655d6c2b84c5c05a2adf514ee10ebd50bbfc0f56e6258411139c58a09b3aa80d7b5f313929e5d272705c765367ebeaa5a7e6a882c7b2f1fabc93eda7c0cdddccb8fce8b15479c123a76953e75cbb5c9ecaecaeff30e9dff554a7481510eb8f978ec3fb18ee17de99507baa9de009dcad29474f088fc87c4ba750018801e7898368009e4be76cf0dcc644a45131a4114617e5ea8afaa958d9ef0c5b44ce7bde1f8affba51b55456a5c69d526b9f41148b8900fcca3ac490f02f5cf19a2d79d705dd6cb353635630df4119993c84d74354302e404d90b8ba8e8f60b132ba6c9555481bac4f1b261d1b120f4256ac388e0627a06e2a0adc6653a86c67eab2e071b4980529d145e0c94aa360b858ca619e2f37b793352ae42552328111885e9b5b30fe6162d281f964dccb1fa766c258422998c907fe41754f6fa1c3235301b3daeea39cc592268cd75529cd0d5dec534a13cdb8affa59006b5cd57aaf7fb2358c9cec7274cb3ccc952439f7f5ea9a6a62c9cbd12a6a38e13214c81e1ed23a9c6f32ad6e395344eb8260fa369f716b7f0f48f65d1ec10fb0558c3b2daf9b5635cf66ef1a3e00012d476d166556bb88239cdb987e27ed5ad4448db180400b5850987c209427d7b938fec33d19797616843c6ebf1a1865b058eae3e9454bc6a0d2dce79817b363b2f9b6621704b19c7c9858cf0d52874f8cc9953bc9503731bef18553dcf63817528ba2b01e95cd6b48b0a38205270518fb0485c1e8c73ecf25e9c2841f1ec26b3a8b0c13a32ef705a114736ddaa2983c96eb70b22cfa3ba200d4cd36d91cc226b04d683d0f7b13d4f6e8ae12b8e0b8922f13ce54c4191aeb53665a80eb86b5f3ed2f54ce4cc3f53896d4a5fd79a2a55c807235b61f1766416468c51820ba0946aa709bfd657252fe1ddcda50894b6df13a1000e25ec462742edc63452639c5d6d4ec54c7a840a2bdf5bda281d7ebe816f784003b51bc04b707627ce84d407ef7e7203e1c3c4e81690d79e86d80cd8b8ec45470db0264cce02cae24fc417be43e28ea6874acd67702b9c863b76ac567a8b06b350138b2b49c1c358744a47eec5f657409b20703143a1171dac71c34d3e3f6bfe0b3ef0c76c8cc68f44bd9121842197abe63904ba6d20aab952d7f3748332e0bf9c6071133f498e0989681e8d4eab01d407b7be00b315cc19ac3e908a812b7a53ab3a361e5888130e440d3a854dff9279e210111e9498a7eaa0201377112afd35c0acd840f2af7065b75c3179391225de81df1ba047c8fe6e1dc7b9c20ba5185bcdcc739d23f33413bf0eb44435e140138047886ca3bf860a31eea734103737090150c9ab3a201488ba54cbc26a8a0e9b70cc0a3894700453683b91e88385c9fdf8916658c9deb8e7c18195fafbcebe8a3eeb27ec4b71b4f03f681df55b7995eeec1b6f31ffd21723cd78d8f02a7cba1311ecbb7f42cec8e009696ccecb6f87c97d79bf99005d9993d76f9163b08e4396d623b105326c8d50c37517531ed7f66a5cfcc913597801a6bea27360d3111b73ff4eb78174bb33060f87c6aa586db30a28e8abd8dbb876290fe66410121187e6896970e20012791ec096fd6e239f8c92d70db9fd47750375f5bc5cf6bf52d79777788be465197b7e27bea05c6b659876a23e66df65ab11ee9cbc897bb2665f0875930f54229e0f26c56cc10a8ef099262ce5e54efb8f19100722edb90742ded4002983f56b0a7cdd8e4b83a886b3396236f957512f16de3caaafa15a919eea092cf89665367ad8e102c97d4ce5b168634b87d3fe86a0459f56f643a0a59de3ca98eb62aa05fee981a8207a2943409104f3072b1823382165b97675e3de53e1c856e589f03dc9af8256b6b314c849021a4e027d8169c39fe75994b06a189209e23b1789e349afa88782008de4ab5ccdaa705d1f6d9d10d4342860e226ec6ae9d4f25651dd717ac865eb829ec9a8d8e532c2de8568e2d0d335be60a04a5fc8c5eefd0f4e86c7e406f1828f32316056164efc7579c622eb31aca2d08b1f62eca06e8e15b9dd87f1a014e633113f00aebf76d2a1d425a69193ec0aad550c3d057c151e4e0ed4fcd71a714ae9d4db71e949b0231a283fd417bbbf48c9709f14e1b63a70b1a9b8cf91a6fa67d819678f1c71d142693b8fd20f49a07a223bfd18ce26f7e70986c6a1be085460c1ea5f62f73ba4912c3f145dacde9be4989d4cba2b58614512bace2ecaec6989fcdcfbb596a57732c9cfad6f7c62f9200a03f88c6db8d3fb276a11bf15656968c2227707f02e8aecdc772f88f7000de5219c1dfce600eeb145d297b5a6db007445395b82aa6fb47bafb7e848e7cd1d96fd245be866eae05bf319c50d5584c04aa4547ee421f833141a7bdce16200ee5829a1bfb44efb519642eab81b80ecf5386b07dde7d89e36e856355b095dcc8a5c4c945277b3fc90f12ee8376865a0ca02f15f0d89129e0d0868072f764aedc878b07548a7ba890bed32f967e483ec6c34eb71c0d82a9bd3558ee315386a543d603a0a4ccc02196af1836bbdfd09460b226064ae4e5958a7d12d9bf59764ce12a68bee8c01383b2e2b17087b018e83f2246e422294f035331007e680c3d9ed68fd67bd813fea82b33aca47568de634551f7043619c924b39e53cdc72d2a0a10d621c632a0d38f6a8d2821bfedf3b8e01c0b073624892f45ad2631056ec1f18a048616527f0c63a494ded14b1eebdcdde06121f078c22421cdb8060fb9fa46d12998c1f8178b85369d6ecf61118665b94f49abe93e95fedcd29f0efc372351a086d853f27d836bc4ffe329fc445d1b220799d5959cb0c16ff1dc50f310af5d75ecef2db7ede1fad50e76d4f77098faa45add0f296cdfc231c40b6e7fdeef953afd5c0c0cf6d5c73c16af0daf20dd461b2c05468fd33f04a07e2f253de8090353a7b11f07c92a20fd269a9f557f12e1780f6c6196dad342ab87e6f443e2f4455b118efe6791a26530e7255861c7eb4586d85fe1c12e46834f0b695e8f974e39e7c6ae203247feb8b86e4c9c28e46d85008c07d87e8558da4c2793a64e9c1897fea261bc6e24a71ba844cf42631c3652670c7d9a75a74b4817e4d3a55c217eb471014108df078d5c96d13513eab24aa653fb3fb5a0cedb192f34098d7b1159ec8c057df46e91186ceca919209090652835536d0c22ba17039bf10a5712c982f60e9848c09d7b70b88f87fbaa9c3bf0181fc65a5a96485d2381933b0f3f7e7e5be84d138f296b31b0156266957956455386472d4a1a43a0110f71db5efeaf0504e52a7bcc91505153c80341b23887c1be995210f8e5b0e5b645e0a98607125ba8f5fb0fcc558de12fc2780ca3a63f51208804ec0c8bce4c112ebea1d1132207ca910559c4c507fb111ab71e1df8ff10aefb45ac2cb3eeb1914f17d1fac843599fe39c644f229b383cddfe1044d0be395762eeeaddcc0ea69be809c88f1b072476880db27f4cb7ce5939fec3109bb3ea30b737325e349cc9ea224b5b50739a0a991f2bc09088da7179a814f0f15ca465595b656126e6eb3a4f99d5d473a478f75412491344209a05e5ca068495443b22b048671b173c4b759d58a57700b12fdc351e04770287be3ffc4f3b6667cb4fff3f55d4992b791988960181274fb7a7e9cba37d708c5367bba01d960f8f733165fffce00167186f379953597409c70e6253e73d2b6e4a002aeaa7226026a61772dd0ad3e97ec81d2bef243cf02567847053954a62c77ebdc655e407a6c9a3c426b107749be3a5ff98a364d9326a0027de1c7c1dd4f70fe3a88430aa89293fc1532d07296ddc08b9a4575de77c501d8771933b7b56cd6d4a02468839824e954e3657724d3e295e95e79165c312f4106094adf45fb4e507d23340fef52f27937026417d1a2f403d379352f6e7bd652f96b24a12c40df5a1dfb654053724c146d970b9a9edb13b53bd717acb959431e0285ad03043648b06359db00546fc6d13ebdbcdc26bd95e41572ce9ff9f2e9d0414d652d36d931bfbee41e1aca2b990ca44520b94952f9cb6817f174c4dc606ac1acb03dbe172584dbccc9766ea3c5897eb6e01fc8b3f40e1c5579edfd90b95a5f4730b4ce3963cb8e839883108cacd14f8d0e3d0526589910d5dc63616032ee9d21d4b01deaf9085295ff2693847eaaa0284c0375dbd207bf09baa1bfbe3979c9832dbe5581ccab550813650a3c90904b9493e28a533150c1c0a92f312ecd58484a4c1a8556502d46402987cb1cff30281972896c8e16be60b07a48a85d0a28c9685636440abdf67d38fcff32b3c396b5094f047f09b596c391cd6e1fbb6c04513c2fff49165788e0dd5aaabe9b99977a55a393c5bdb42f632cb3103ffe29e8a0a29935baa33ce739354f1f7f1ea09cab8c44fa3d66ead4c4d39a2aa3113abaced2d346308d0c5ef2f8270425b5ca0dd2394f67f989cc747b2e301c3830fcbbca9c5b1264d00bbbb4cceb949df8f9915368c9667231503b04fa4e6fdb9c97c5c74306c3fd9a3987d854c721b865b17493921b40c1ba875d3a87b9e6d933bf4a57011aeb31d609088d3b33fc0763b0c725b576642ddc00de50ccf4c7f3015b5eb1292d704a7c1b3e8b109023b1ba9fca1dd5652df0115f1fb69ab2ae03623d578929b187bd67322773474b051060def029e4c9554a11f9636509c8e97eca823b51d2932bad805991f9dea178a890e754e5e340adc9d59a1725d40981942e654a1802a3f2c4320b87120469e4c45e51ad8379a2bc29b2fe502f336c222b75799254103bd6fdc0fe5769cfcbb95ad1f9b4557731fbe03c50f53d249d37bf897a1a696b2f6730f66c6fdb3b48a7570072335806d396d392e5ce2647612763c36728b55bca81eb3613a133bc6cd0930c4659ef11acf77c632ce095ba0733854fb06905c39b76ea3ee1e9beedcb227ffe2c03ac6b6b1eeebcbc3e222bdff8f91be5624b13243c2c58fee0f45222675ffccabee12fe678a0c4c8c17bc30516067ec9ca33166604634138f791ee032be1a5ce703a09a137ee99e71337b80ae0a0ddb8b89c5c97294788dafcbe7964cf08067e37d9f4d2969786bc0e83a45b11ae4e13155f65ad988a6ec10a65c200ecc311b8c845c2ad3de9e031378eb86ab65c168fbaf6d4924a6246a6968edf8356bf35f870a7f1bb2834167260d13373bb64af550d13c8c5282b52034bf4f70670f0225cbcf26cc07b4b30947e55e8bdd537b5950ef158345345230ebe2561437733f70af2843900485f60e15a38599197199329612138d78e62c1390f790a1432bca322dc9cb275a1232c8ce0d89f2145ac425ea0cbfc2a6635c6498829d1d60449f133a4670d2847090030773e29d6610b1120f388ead3d648e373f2a6501b8e563b8063231034604aec3409c501d96ae3a63d7782476aeccf055891649383f009115b4495376a41f9009f217fe374150002858b5c89e62bd4d31a4aac55b42ed96da9834fb0577571174e7664718377e4ec614364534d05eae533079c3c40a8a25c3f6e8f977d7fcfe66dc6b8266db72a69bafb8bba85b010af596aefe538b98cb25a6c9cda8c90a71c830ffabceaf49798bb963df91b933b8e059dbb9e3bab69be2224c5ae2848e2c1882e6e310473bc97b68a2000419c379a582ec514ae4d91fe074eaaee195f54b717082d4537d04fb50485b85326611c8fc442e1426702832ae0cdd54dd048d8425f0446b4c7488763ae75c63e7e54dd04be1629a0f696c22145d57c111fa6583133851b159d0e1171acfea1a4b68441f96b6f7c6a28b004341d8e29626a0e2c90ad7f4c8f55cbfd442fa2adcf0753d171d389263e55a212556fdd4d87739ae8e86254b9b0639a54f9875d20c6e3c01c11bb73a3e1d912274e6870d79204561018b309cdb7b20ea4161012b7861327d7f65132dc067adc29bec37895558a95e0b3eafab9bc87d2caf5901d8881009ae09cea72bd00e956837c56ce44c2b5bdd38bb3e5fce31f6fd0a0c5b3b3f1a83d1dfb5ec8d36512c13468e2cfdd1783701cf4a9334cb97ef2e0660a9ed38c59ea445436d1e5f911881139dd1f9012fa595210b089053a84ab3fa54182c50a616ff9976a247e422980fc41636870c36ad2e0189dd7cd4300b17360879bc0a02596c9b1c694c466585c1f839ef142e81d70659331dd794f1405fbb4d5e3561d0ec3d58834746f136330338a6731695f2f167cf6245cb209ee586eb373539907d1e725f16cbcfdb261ea9a0c64b68023b235c075e4fbebbaa0c7f9bf7a0f9cad5fdc5e92a7b1de6ae0e66118c45b6b50123497eb372fcc9af808fa823cceef615f37352b44dac7d9f203ec5dcf89c715f6905f8b532ed583d6d27f6ca630a5e957e7d6eba5afa4a6026d9b03198f2452c5679cc5535b1d2bcd3e2d44ede01dcc034aa9173f708282171a0545ad94bdefe9e371cf5682b8a2a11df89edbf8b329dca7f71168ee7966900095400b711c3596c86271eff851ecab5abf227385e85b60202b998371e77acb0180963cd14dea8343c3d98ef6e92c7827092159618bd89669338be6fdb55968f43d2ac28dac56cb17c08fe137697d9f922179de1913079c7cc94480f97a2ab282ebac82cc4f62d22ab39b6b3d9b3c5ff996a5b923f1a1719aaf896b9e82c723bf63db22b692ee6a4adc3f0ebde4f283df20852745360131cc351ccf1cf93966e1f5b1878d142dc50bac18cb7e50c910d2966a01d10676e18f9cebb873048a09605cfe801cc4e537b192723417b09e2678d9ac19dab09b1581cf4a5bd61b545bf34e85df05cc2bc350c8e9843fdd222a9b1e26338390cc8d05132c22d0cbc2580cd95405b3d90de61c27b3d27be310b05e224ca92bd47d14bcf9f9ba8805b1daa5ae8a75313b4e8331e9072688acd6163a07e076ff371fa08d4d41f52db86d81abcaaa603255b3d3c46b1ed29a9a2a55c572cbeb2f39a0e91e2dae38b5b89dfaa6e9ddbe5469b487001697ae199d3ccc502934f37e482281bf89ed2bd9e7d235d4c7c8b5182e86efc30e2e6d4f7643ec3d3803ab14010725e97fcc98498cd72a2bdab4998cb9db585abf0ed1e761e816aeddb973d5618541566d7f4800883a6cbb7aa6d3a617dfb0366956fd971a6cc4108e52a212f8156e4d0bbb7425e0281bca981fd5332a7bdf08b862b21cbde357ec7e2fa51313e4125efe0b688170471a94985c0826551969c3082618b6a8f30456da69fe7576afa578c58b190befc3a3c37c19ea2dd49fc4b41e2f78722fedbc41d9708283b014b71841c105e040046a557c040d701c5a6ccf212075009164d32d9cd64cab5ee284f2f51f9c383b58a4c91cb31ab55b0d3483c905461df1a0faf4169a1508faf4829c3ba4aa81172fbb6ec925a926a676f8efb697efde46b323d59aabebe83e9df6b6cf6255a30145f71b407893e301f21522cb546aa174ec56d8a6cc701d4a8e780c809dd63973550eb6e70e57bb808f84467fdb036444027a2e07d048614221409579f7a1b0dd7d3575b6bd94ce2077abb345a8b98d44152c1cf0962463ddd3df13cdcb3c9864aca47b6862241f9e30e7d30fcbb57772510d43a16768fcd9fda3a6526f154a73cf8ea2cf87df20b73b197a17c461585b8901baaa133499924e6fa5e6fbfc940de00f0befcf28e9be893f7aaf1de69227a6987e178add681fdfc2f4c9a56cba8cbb08055cdcd841839cfa4488b8dd6db367dfc2af96500fe96872e2f93d2085691d7f5005ccc8a922202be68b32a01a148348eb6c12b65f0bb30f9cf0e1f2179b00b8a1f2e81c8edb47ab1b423d1127a6649b80302df7395ad7aa05009160ac96b4f7462f9e9bd8e3ba550025671598ebad36f8fb57d3fbf61429f5fb458d43d26f599978216f99f210aacd4a40b872264707fa613250e77003252954ebc03366001469771d7ffc72b66c1143265e812e7187828ea59bf0405590a70bb2341a7e34ad05d5080d39b00daf30fbe9d1728391df5b366db81436b562f716e187ab26bf8c63ebd026bb8b41f410c0f909b8710831370b0382e9e1384d3ae1c2cc4cd1d4e000a78e454502038815ed756c6830ee5dca46e570562b2655968c3b7313a6320fbee600c08b8c5b3d5004772fa8231296c2b2072b687b3f61b8e1706a06238ef309244babe581de6b9264e8863a6ed94dbb8b7412cac4252c698e0859f00968cdbc49ed5b06648185d58c55328f54816157b31fac4c43ca9b022b6f8cf184346fa4ef74b1b8b9df09583c6bdeeef53f1c61c033012a8c30df7efc8980b9f365826c2de8550e0204a738fe5e94b2ec16a1c0590237743b07807882f914c0a7640deee38da910823f96deccac0ccc6cb4de3fbf6dcea85f935bb5331fd7e8ae39740a0618296518bbff580cb1fc0b68386cb9e00b846905a5e28765a5f92bfd1f3bbaa4c77fe92ecf17a87a397f4d4d87c742116dd1548e55917283a70e8cabf2ef6c82bc933e7dd918b478eb97e206e40535b773081c865820fab0ac030455bbf6a02ca6c16c9bd6d48e83d731738e76016caf08bd6e70e4fe35c80b62fb7f166ee8a977779b1952f906fd806a5cb9e9ba32d5cee646f0e1246f93878ef4195dd2d46f1a205269404bd89a6872e000b18ba0f0a928243876f6e00e03f59202a77817d9161267ed0bee02990af48642587e5dca4a1e6421b72fbb4275384babb554cbedb731f14b1b0ac80f107d4c23795ae43611d42813e45f2e0140ba3404b64720192acf95ef823988c62b6ab455affc55fdc7db216022aef33dc67e86a7f32400314ccd0efdfce3f7861c028b1cf77beccec9ce0386f0a5ab7b42a6ef7b54c016d9030306fe7d769c85e9d74d206dd4136d5432d455faaa577d4dd00351ac7a24dff41e87d0fa415a7dbf8a84b958fb930303161b3cc140eae4e99d99cb63c926379504a93b95dade51139e483ccec316dbf4819ab9dfc0d24a4b8ce3bb7ea173bba5552fb1a39cc2ab402123d24860c07f793010f9c52019fb12935ab638c8cbf39974076649344252271595b46316318d04c46904776360d5e0a53a9335e5dc34f60ab73412f829b774abb020a5bbde8a3ae0b9fcdf4e678c6f5657e34d8b7e14801762c61513e8e8fd7a4efbd86a45afe52653e449c1205e08b94391c6d278f8b7b4dbdb2148bc668357d475f6cf44e18d0ddc7d4776d4e122a98ea218aaa48b7444df20457f7fb7ad837838b1705d23d5fbc7b12be3bd17834b652fe08133a4b6b7a410dde82fe5b6ebfa5ed92bf6d6e4e76d7248ab4c8716a9afc5f172b7452dd45defa46443d19c592edc550e04e87f2f4553c2ce209e74e4270f13d5f57f7ff0a227b0fef64da988d0791f1a269b979009e4435f8e1c093c80047e1abbd53e7b23756c031484d170ee278f2122b751762bddba3731cb81be46afd5651d0d0394da1efb9c971080a2f99a0a720ab2e78a35cfedc78166c61cf9adb14db3137456b7b361e21c4e0d4e4eb721468fd180dd043754e5d17a069bc9a2f859e782770dd449f8225f90259c630e18b7181bd3494bc95bc163577da7956a41228b378a69a392701f5ad202eadb92a415d9d9d92c89987ab6fa8e248b24a410dbd6f4e12e48ee695f921a5d5bf94e9e2f36fb04f3caad590782d860d7d930a4a44642298b60dda76d8c43ae1695fef4feb7e3795ade7026ba98fb3d8e217b5602225c952711326f407126f56a5e98069cbdb2ea214434a47480fdebe1080c65a63239d52fe35b77a4380b4d7123e564f09369eb2b76b40eb94fd42a6f515282829fc250d7d585ee3ee7568d662adbbdfc0a3ab9531008fd8d17326c39b66ffd93d9551d5cb1852fcf89a1df19424f3c07155e14e96dcc9fc879c0adba65b25dfe7d8178c22b8b134251ef390485081a4febaaf3a445b9e48caf3658c0895a674a0921644bf481ade3515cea3248d095040c70ac5e1244994831695ac8bf390180f133cb500da7fd61bc0862e6321eef935337d0235914b15a4aa029a511e765b501815511b899df767ef9f929eba51a56349b99a94a8b5b565e951aec15cad15907e989c75ea23a4988693f549eb21991501000000eccf898e1c4fdbac4101d4d7f91cc6b058a94354b2b802ffcbb7f67f12a32d0911a195dddd3b0a073507ad07a6afaf4954e9eb6f8922a1c0af1f9228d1d72749d468887e3fc57397832938b8c3bb3f8220102a527006dccfa1e0f3a2e0b29fc21191bc85dc850c063190410341cbf3f9b6c79bc694b41b6d745034fafaa068a4d2aae8412014350a799043802f8a4af1f4419889ad4a91824f10480ea1c921b490dea02e2ead9a1acd20201cf38bd08bd721147ad5d4288770cc070847cf00e10816201c1f877014fb187a1120f4aa118e2ba2999a025d6e10d920a2216ad514a80ac73c00018423287acd08c7ecad7c17bd56f02c24c5f3102ad25791c23517aedda022fd0070ed858af401c03514d760a8487fe45253608865e26b08473046387a2da1896709592a183a567c8a70f4521e4538822afe148e9fe2c3701447c296c8a8e552539f8bc965e44b2ea470043dd3eb70cca507c3d123bd281c410f1c85a337fa957004c1574d7933a3543882a8107c7daf8577345347332f462e6898a1054825c462d3af15e1e88da08a707cb1e34f118ea24ac78f221c55faa85f2b1dff291c57faa85f22ca89139e63340ba127fa263c2b4145fa1dae9570ed45a67c2e6138f2b9887c2e2fd3abf422bd5a0fb65ed4fa513882d79ba95af885631ebd8e5f8733bd8623d8b1a7712ea5a885b77e05a6093eaae81fcf26f9af07456d210f54c8d7fa70b4d156ddab35154242859084d4072ad29797fc406cf4fb1aa661541cf951fa487d33f544ab8ad145af3fc6e8f547d9fa58f5444511fda21f419f1f457afd4fec35fb1a8e3b481767b986e9d70d3cfb366820df4c4d8133955553606b247c91d0c4351794b8c60212d754c0731252a42fe2790b52a43fe2b90b52048314e97b78168314e97f3c93418af437d7402045fae00cf7f4c156a52fb77046fb1a2ec0cbc8e0492aeebd611b6823183518dc0742515cc88374e91745e5a7f8b355395cf16aaeb966e9bad24571501818fc248e13d179dfcbaf9dd692ba1b0465b16eedd8729ff1e7bb6bdcc77f4bf776ee0da90eba5ae1cb293679598e8b67e88c9d73ce8945b6ca7ef9071c1383bf64eaaeb5a659a788fcee9340c7b56a4fb8625bed0809a77d39f3ac6b74c39dabfa5aae6af7d28be71e2dd0ab96815eef94a2dd9ecbd766776ea19d759298d052b27cf66e2e62b470a48bfb38ed207e0304fa3cffe90ff11ba127c1cf08853b3e3eb9fc1cf7f73beee3777edc767cefbdf6e3f562bb9fd39f799ef37c5a6b1f9e0f07c7f39ffeef4b9e5052f1fbadf5f75bb57728d31f75e9fdf8b7cef6def6d9c61bde1e3f97abbd5ab6e12c6b9f6178f7f1ce6172e1bc7334674885c81cbda1227dfaf8b9cff8efe7d77877030f3f97b57b33e65b65a768df500387b4c7a52ddaca5ac61fc7ddc4732050fcd0583dd12135144661f5864bf5e1e505074c85a93fcc5d63284791c8a1391408ddf445395efba7bced4789532f9747172b28cf8f3152a11fa50bf4a3cc01e1936cf9bcfc149265c44d9e6bd63b8cb386e15d6c62abee05ed1b648d195a1fd8e2e0587c2d0e1818fb434c8ccd3163672ccbded4d8955df51e77dbd6f5016ffbf2627be5f646b6ad0bb5bc2a91771d82b5db657972da3d2e826c89259698e13d373a41a76f51d0e9ef1474fa7a059dfed7824edfc3a51447ed0531e8f43d7e8304de0c295b8c5a0d3a7d296918b59a4e6b0d3c49454e54bb28c4eb0b0453596dd7d49c9c2a64d718ad314de33909c9826a4172418af4bb2f8ca1d3cf962841a7ffe172b2d8bcdfeaeae335c70c7dcdab8e15fdcd6b102cfa1d5e5b1ca7a6dedcd46d5757e5b8961415f2bc64d95ab4979c0489fc8ae6420fafd2c369e7a6f6f0d93f2ea5a83ffdf5379752fc42494579dadfe152daaef704fafefa9bc6e50e67b786d737ad75caca8525f566cb6526a22e719f737299cb6feddf3ceda45b75a9d5b5da49ef9d3a739b9f9bda56d9fc9cb4977653d3e45669db6bf9f16bf9b7907bfcdae7979d7b94ade2c2152f73f9f70db2e7d0fec09a755957ce5f92dc966cd505f70db28716099b63ebae6133dce12fa934f0eafdb96da09d02f38456f92ee58e1df65fa35628f46ad5947e792dcc3dfedf2a6cfbe426c639888ed5cc6be519366ad59476c3358e706e9d41e6b45f6bc37b339f251867d504a49c4e1b539d909cd06662a8b81055bc09cdb00c2375f939084dd9988bee47159d1f4dbc1f453c50ef63867920d8f9ef4431b4311bcbe1cd13285a525409acc17b2153aa86e2ba1f45ba3c9129bbb1dc16fbf852db359e83bc18734c5581d878ed365653390979a2df854e3f8ba1d30781e51966374eefe539099942dff29c85c922488e757a1ab310253afd4e73e9f4b3f6d2e96758183cfc1bcffa4411b59c2df8479c99ba7c3b5be6e49506b13058a7b44f9339ad0fbc5a3f50770ddaf3a43df0ac7dd9179db276b88a272d294aa44b9c0c932934dc09053769cd616d0eaf3ed7426b0f34d265ee796ada67eef35b3ea5a8fdb66bd8be9fe3a4a5ddf63268c55d5294a5a81d8e363a2753b46dabb8dbf1152b8e64c15febb370752ec302f524a3a5b3f66ce5327ef92792654e6969c76d9f76abb64d6f5bbd733e97b1766dc55b96efaed37ea7cbdfb265bf9eaf31f7a34a7e12fc8c1dda8f2b9d970a7d62b36587a1d714b750ca943e414f4fa0b3eddf6d03ed9ae31e665e93851ad6b4f7ba36af7d7ce7738f399cf175c178dbcfacd6dcce9b8cc56265dce3adca8f35af7d26141313c373908cb5970e0e4742e8f473def6b56d0355d54060be4c97e9325db46dabec6fdb06aa6bb2c7bca67b8d73bce6e56774af5f356563b365d49a2ce8d331f472804b877aaaf166101b1bb5664b4e42b2b039d4824ca18fc391f671d4babd86d8d6eebb5903b91a061b6d0c8795075e85758ebb7a5619ab37dc21f3315b1c34108ae241c638296336367d4c1c1cfca8d10cd22508c60a2f5100b930e133c4882e7f1241a63eb13902c96249205bea9d3e4c981f7e9c39bafc3903c9b2bf657b94fe71aebe1fa78e2e5928cf14e2236f17bd7c4ec4679f397b1ef822fc2250f4a3e740a39f3b072c1a7d67ab46a3f9038b5c2e170d27bbbc9caead32cbbbe9f4b5970ce3c5f40ca320e87945e4234653e8b4ee606f9a8f7ad0ce7b3cfe190dc14742982ce85f3eea21a9f885e3084787e3c8c70ec7d18f514ea7af8da3d7ebf56ab57e34843cd11f15d1e98fa3233afd911346ad51ab4a2ae2b47f40209ccdc7f8d63ae7fc604c73b03ddf9c437cebe70aa22e3dd6472fdb08a033b230c782c8acada0fa30bc6badbd3cc3eecd1e0f047691fdb900410f13f850c10f1720a1c900c856655b6535c7796c98fddb06a8f7fea6750eb26ddc4ee9cebd7e8ed33c3cee65d04ffbfbfb0be5d6ae0dd96db77022a1cd9c99c36d2f83da9007adbfadd2e18a67b5c516eb4d6fe104f2e2fe7ab850becddfd9aa9cedbc302c6d0d8966c771959fe8ac5cac28b6f213b7f2136c92555e922b0f35bee9ca9fdb35bcca4df48c4b29e5dc35bc5e2727d95b573ed28974760ddb2b37ed1ab9d75979e9fb74e5244fe5e0a7f211a8725128a42b0f8944ba72d068a42bff80a0aedc4322e9cabf52e59ec9a42befec1ab657de919818d195efde713923e33bf273b30326760ddbb9e79e0b4974e5da84095d39f7af2bdf38d7956b61e5b9a4f2ccc444578e4f4e74e5f7c4093d516ce75074e5551475e5f474baf3a2b029449413272625213f75f86fb55534aa13ccd2a5815091ee205d9dfbba559c0d9674759cdff21da4ab5b7ba9900fe76b01e0e556a19e83e1a5bcdc2a19292b64ea65d009782bbef20bd8ae42050cdd2f0cafc67b3d37e220102a52217d7bbc55db077ca042fafcaa036fdeaf7cefa0d2a70e2a95efa0f219f289513104e4642508147993d8dd78abf4f71c96b02dfbc77750e975e7203678abf6470815a9e849fe3384a2ea53f15347ad5cbfeadfe127a6f96708cbd33f7e621f219f51aba6be4f38664f68e2bf5608083dd127e1e3ec243cf4da3a1c6d74fd21d8ec5446810909f8511aa1801f251116f0630d0cf8f145037e4cf96292054df1a3c442afdf002eeb69e419c017c0653d995e013c015cd613e9f3199732a55f27e28fb7e3ac3d50c404942c1facef1f3db77908167ae5c0db3f865e21202f83a2f891d38b846f2a913e9e0ff8f1ccc04f7c0b7ef220debd0a37f910ef3c0b5ef22eb8c84d9ded4fb6555ffd78ed54a361a3535edb7d259cc57778e84db8ca771cf427bcc59fe033bcc85d3c0aa7e13f9eafff7129533ea1dc2a4f9d92769ff7fcf735c5a3fab67e19d4ee0f01a1a8d08ba2464f3fb44f6cd568c4adc904d3301d4e21b4d64fd1db05858ad3872648b8ec29f8f879a1d357893e42284a873ca87c6214b59ffe6708c956edfdf9a8885444e154620eb95f8b7f3d6c20f9ff0f87a2b490d6fa2345a25220ac7a7af123cde9f5690e8a82f195ae56fc4859a91f69102a7ea437293f522164fc485b01f891f60000ea47eaa3d7a73768ea738dd48791e218e90fbdfecc4153df3875cc20c629c4387b8cd3471fe78f7122d15133fc38b1806af1e3d402e8c7c905951f67187a2af4e31c038b1fa9083a0d3f4e2bf4fa13886471314a25fa28853c80a63cac01d0948734ca1f48f4faf3866411bf05e5c7390296921f27109d1fe70b4c7e9c2de875a6e0e4c789827ee2c7598231c6e86254c1f2a308a86f2634f5e15448d7fe6b69fcc3c181a7fdf8b5be1ee1874345fa6109e023807ff1b96aead3c3d10bc311fc6235f5899d42145f6ce56bf96231be580d9f291c57e87b5835056289b04658207d8faba640a41074e970043db19a02c5b4c8131b4038821f989a0ac1d413fd1d8e1e4b38829f564d8558ae9a0ab5ea89e505d042c0bf08677c5c3a7c6235157ab16a4a34534fae9a12d5f81ac27185001f231c5570f89670140bf02b9f98011ec52776803f7d62397c18d2f89170046d789170f46e78134bf5a570cc037812c8258007c311a40f8ad59408a6a6462e95d5bf70f466bc06c56a88d1f25af87c9cfd53fcddaa1de4107df477ab462f778651d1069e2a85e8e7732938f8a2a00884a1c61a7afd173205ced41199cabe9ef4fa27891af9fa2912157efd161275025b75bf942c28befe942891af7f252a5a86dd30040d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d8d46a3d16834b8661ea86a1a61c7a1ac81371f7320db3941f444bdf766cad2fb3589992cc318639cdf568c71fe9a73027ce00c639b22b03823505862bc00c00a8c196840a556bcb54f5f24aac5dba73e501c12c5e26d765383f822225129312e4e2950a0a0a0a0ac6ec0c2c9810200667deda5a63a2ef5546b08b51731c673c13c54601e2a321e39e78f6bb422e715112b4d09cd260537e9a022cbb42a823767cc74838aa617ce4587d2901cab6e26c54d302f27fe84cb0a9f3360f04059e172068a8b0f4e6fadf50c0b37b99486c894facf473923d7e866c41aad66ea8974f227a4308413f211fa51f2897d9030f9b84c62f0e046319265c5d55af3d8bbeb745d27c4cdcdeeba8ed7e97466562c9c24069329264cbcf6a3c6c269995c86c460a72058ac540aa51be9a0228bc4f3bc551fe9a0e20c8a9b5c86c46032c5641221c5907e20e51819b5463a48483c1c5e0c154fa1f7717d7e988830753ceff38c727c738631585eb4843748f033585e049d96afafdd6025fa5163b56e5034f0520cf69229f535ce6804c2e0f881c4c24733f4c5e86694a3eb2cffe4fc48117e5c46b0f1604a3f7a301fd7c785a263b5f260781fcbc3ea75b4a2a2c7b34241d181c247396668e02697d290524ca678be7a3e241209341a0531cac14733a12ed4b97c5c2c9c9af260707af51e0637b94c3826563d49d48b139f3fd87cab2368fd7d7dfd7d9dc9a143c30922cb66e0d345032b3c2af884f1f04071d33b2b1d4178ae7a1222565d7afd4f112b14209b14209b13c8e614b24121b24921b239f105e8f0a5e035f751f057e137549e043f4325dc61df73a128925e1fe56709256cf11ca861782df0cf162fdaaa16e18a675bd81a365431dae2e52ba35da332da38d4eec2bae053a688cf812088624503278991ace0242f99929a010a39dc8ffa0583e307fd637733ca414fd5b4aaa73a6384191b92986441f9fa25d3eae39a19cda080e0e949299eb455294e28fe8462fcb85ebd7a302828618d8a56cf2df8c80c1fc941477450b14ed70c4e3d79305906a32234d122e60a4c22a17ca98492f228a514bc46c5a350f19d584d8d663c971b1485f2f5bd171e28dca4c394c24d41ccd414e19871549478984c22222b22561f14fc93730a3fae998f6b26074d99748cac88589188e168a3a3fc7cac4239c14753cc588b30e1a3187e5ca357490cbdbe899528c247fa629a21cdcc7c88ab7c4633a52ef4fa9f69a5d2194d2bd30aeca3693532433285157dc9562658990ddac3891ea60dca19600858855518b572ce1b4a6bb5f65e8ae7e30ec0a060637ae4bcc180932652d26a2fce34a759db9a1b37c315afc27a05661ff3aac5f51ae6d510e6ee381bce86b3e970de9c365e67d3d974369f27cb341c63da6c18e895ca937db97bd85b856d8ba2645e557be590bc6ab55a3b5a2aadfe498036c3b6680e5a16a7db160e3e9f0fc8d2bcaa27aaaa92a5e69a75d0939d35cf23140a8da808088a442270823c6f341a6d9595b2bebc97cb2b52b537aff22aafb090573a5654a4f4b98dd372765fb270fad64f0988e0f518c26b0540805c61ce6969b6535b5b29a594524ac79ae9cc35c4c430311d31215dbe8c75090381208e19a2c533571064acac547badb5a4202a52ac0626e9407ad5936ac274150e37949c18792b5d2b0b83525ff554ffeddb1999e22426de5625402722a98b0a5764c8b881a2b21c1c242a838214eb86525fa670f4ea7355895e3b12275c382512c77ad2ab04b3d9bf9c248664868a95140341b084839e44c2124c0d2e102772d2ee64da38e152a6a8b801b29e35f05cca53963b02e88c111a885e700f798d49a7848fc4609fcfbb7056a5995028f492a64a302f370dda492ec962fadabde8a5a64c3a9809b755d8d6fc6bbdbbbdf7150141bd77d7e9baae848fe4d453fd113ee29229f533286439df8fd9eb8645c24930982d66bb201d0cd47924319e0ed6c14c30bcae23f2a6ac5da703d3b1084727e1a4ce0bc90ff454454292182ad60ed66b07eb82d054094709a62bc190c4008124662447b298f697606aea763f7a707a7d8e248624c6c4711d189e088728e6935eed300c152b9d7352110e2a56910fa2172ad68c44cf3f723e8860442ff5347659aca648623c98aefdd8c14abc64829748626aaa6e6f49623a92b00433623391cc623b8a5e68d05e82297db9c36f32a9b2b17652388e14411a92457cac3efac8f9506295724692184bad91237afd8ee825f791244677b0d24dafbf95604a38221c2afa39c68a0cfeea61f6606d80274a705c47c254416c9855d209e22929c85a1024a2828ad24435a90b1195a7b456ca7750e9739a7874d25a5fba38c6a1f6d146b7d9184345649b92e6bc6dc8b20627c771d2536dba725eef54a6ac1408c0124b2cd16def74b237870841ed64210a5123f7b1873e432b53bc6b29b5f66ba574ee60124eea7d54409e0f88762953ae4c9181f7f180b64a24ffc00b4d49b52a14a2548b4494827404924aa64a4dd3a475a38d9eb58e1e46683beb104b597588b5d6f3807863eef4873766189ea594ae280d35958187cbe0d1505e53d68d36bac459d6364e8bb6a8138944a28e2712893ecfe75a9188ce914e52f14e1ea394523a87cc21d4924008807d7aa0e519b63d67670665b866525a2e7374d65a7be635dd5bba71a01dbfa7571ebafd644acd6887ebe46acef80d01bad5e9dbba5fdb34ee6b1ab769add332645c9634153afdababa0b1a0b5a0b9d0e993bed0e977c2d0290da35e6296e1d22ed23ea2cf5b053ea7c98d76a3dac170b4d13f3f7f249a372dd5a7a6b258d5070e8e1e42b21882d444e823e82534410a9385b669d89e853ca04ad0213674c80d171b171f5e5e6a0c0c8c8e555d6936ab1973a85097af4916ede56f535acd370749f1fb7ef31102dfcf70dca16f4f8adff71d2e25fd386db3599594c65c4913bc69d9cdd5e27eeb7715e875db30d02bc675ab36cc01d15a5e3be640463bbe5ae399a63f6f95f69c9c94767bbfdc2aa9fdfe19014dfbad95b4ab698f770d2db43aa86857abec6bf6b7bb8197fd735929cb4afb06d9b3cf768d2cb44158161529bd17d73b737671b5391e8b9593c3aa29eb79f3457dda568feb523be635f92f0f3d564d6924bc96fee1dd04d131ce18bc35e3f3e29993735a7a886ee9966ee9966ee91e349573b26ee9966ee9966ee956ceb1b19c636339e7d858cec13c724e4ecec9b95ca7e52de7d413fd6a2bc79372dd43e35c1bd49c5353ba889c233a7d9d7374cbdaab33ae750faed33ebafed1e9679dd3e9cacb3a9db9526a4373cedcaaa95b370ad94f243c2b44ebc6e646b7648a0e30c659966518675407decc54349c6d36f39cb52da35ae3590f356de372cd3620ded7366969c7bdc6695b956959ad3826ae566bcbb6adca64e06d33def69cd6f8f5bd4f8df0aedc1ab73de335f9b79cd958c6f664ab70cea145f0acb681ed4d634b81beba4d83ebba55b92cd31aaf2772d6b6ec84a66d5c964fecdd75b26d9b73ce79e79c77cefbf53e77ef5569bc267fe55cd61aa7fddabb6d8fb2555bb8e279bd5a21f4446d2ce76424684af7e088907aab6ea85b7bdbb6edb32ccb1e65ab323d65cab6bb296957b7eaa2745dc7dbbbc358cb426ce3b9244bf69885317eb1e674169f39a7080f549972bfa33b2e67e0785a7fb37e80769d0cffbc2195e89977efcdbe728cf3df7bf3cba07ce7607b9665d264ab708859de7cee242c91959a6c55f69c0a8925b8916c15c624293152b65fb155559bd9cf971b37b155189b58715764165b85438d73a03395add23814b5699c5b6bae1bd738bab5f5a0229d3b736e06dd62df9d7179b2557b9fc88cabec1af7398e6b61d282caa0ba0745f100ea96c6b13c3fcf610fa006764d2573dd8306ed38d42d8c8356a7b7a46406d00c9b5b13131a340d3be74be5e9be8b9bfdac27b60ae317bbc60ded0b1b3e3b0a5f29de47ed1ab667cfa5680f29f7536c5536dae8249f18ce13a7c5e12c0365928ec31a85ec6518bba0c70b1603eb01cb304e42661f507882e7841ca2289a50b18ab9ea1dd6fb2212f5e1bf1f922da011eaf3f7378902fdfd2a51a1bfdfc91630932d229345fd3bfa51eba14ca93f5b7eb2a862cfef51b109deec79ca53e741b34504678b8ac94264b6a88492052553668b8bc9a2bee83d50efc0defd281cad063a3f6f286aafbd480c8014eb83388d29d6ff700348b1be872f00a562fbfa2ab3454a16dcd777315be464a17f7b2f1c29f79d4aaff7573a3fdefe75ba70eca177dff915ef47dbbf70bc3fae78a10c471b5746ed64df7c9c7dcb214823c8237a7d4d513c88ddcbf4de1afc12873d883376dc9007b1dbf0f5652e32dfdcdcfc08c112b66ddb7bcfd48d2cc31eee743adfe9ecd8b1c3b385172c06f60386051813b0908575881560d85a89849aca9a96efb5299cc5b8b2ac6959cb2bd7a5691b8e796ec3356ae8a202d16d558d5793dd0c635ca50a1108ef737d1ee9f1aefee86ee7503f204021d1c8fb3af831dd58909191919191919191919191919191919191919191919191919191919191919191d96436994de6d69a3ce79cac4a2da519c6ba67e111d4626b81e8c2cddcaaad036fe462b55afb7d1b24954ca01b38a9f3e02813799eefb31f3fb7f1dea34e9771fbe1b8efcb3e3bfb641fcfe72941240a7533eb3400e2529e3add8ff8743c9717032400e1e28470433e2eb6b7e7f3f97c5ff649c2c7c348f07406227b2ecfe725c1fb90e7435be599d3fbf97dd9c7d50942c598ca4b8228fb4ef7f6b34e6727ed81dae8f08706461821030d844ca3dccfede79c3336da023963e3b946eec0e68c4dc40ce3d9ad080876d931ed615e7bad80b5d9b95a9337edb579f1168ef5460e77d408d4bf3fbfc4653b3bb677622e692ec2569962eb07a84cb1dc9496ce392711f729ae7805b11508a6a4a4a4a444ccb98853ce446846d06c36236c361cc7719a773adcfbf4a77994703e384e6fad7549498988c848e83f4462c2c48360462f18ec24eedd75baae13e2e666775dc7eb743a2525252653064152a9d4a24549d789959e9b9fe77925252520482a9588e81cc1f33ecff77d2525251e4f186ada07040a8944226e5472027bc16041623198c7535252d2e9789ffef486b13881bd60b0dd75f9f47a9d440f8fbd711bf729026403b201d9846c4436221b910dfe697fe2098a4e4e9c3861c594929f9f62f21c08829ab619c1a6e44d3010cceb550282449048a40c3b957ca95452522a41294181c14c4a4a421bf237413222622a91c0912804fa783eafd36dcd6d0199fda8a44a9bcaaa9c2a1a0100000000f316000020100c86c362519686713c7e140012668c54665c3817c89218865110044114648c31840082803186203443320a00a587044ceb69105cf22f5ab962ad4ffb059d455a5e97108ed417e29b5dad11b6ed0effd7a9a2a4f1b9ee9c308cfb474eac23332acdb7e148d395b77f0db6895293689355585972b0e1406e78a2f90d86184bcfc932386ff289638d01f88f077fbc5c40959b0f9eb4c940bc7592088652f57ce45ed1bc2dd4d8afcc03af34a7ecd4d33d8c31bc6bab3e3af20acbd0ef47f57c0d20b998ea39fd20056d888edc21ecbc136a5edb69f2be63f0f350f3a2cf62f5b82a85088a8455413eb18f2f19c8daf376def314add4a6c18cb6f2f9d4b2c2c2415596e021c8b534972777cf0d3c9909e53ddf8917fd1f9e3ec5234e0631e83ddf8bb918a0fdf9e562bf1eacf19ea8db32ec82cf5bb6c192a1ab5160dca8f19ec21c7468970d89015904a3e6efe6d8259f1f065ca7e5aa95d5d10c421b88f8de966b13eb4f6cb2c57ce4a11f150ac8fe6406cbd7027e4ee19622a3db173d88d02e94b2e0c78f01b6b47f9e9984da6ad37c265fe7210715626facc038c7fd0cbd5daf40710c6e16fda9fc18b79d2993900a215459fd0643b290b5ad509815015d130b52c92f24615493a130ce91f6bca04d073886482e575244a083b6b83350c5ed092c9f031f05f5dacb3174a001685732aa02ecc22da68fb8a7a6a09df05851831680737abf6063cb71b702f21b4b99e2f0df21b266858f248373e2687646e3db0b4d2429d488a2e7f82f1c4232a5a6fd15fdd352229fd5d80e3ce256f4e9549be97ec058b72e74d5e8ab64c4fc2b16d9401a7b5dabef4a64578d5eeacda98e1a886479d0eb68c46f340bb50f1efefd5f79f346ff7fcab3b04d0cd88f18c3ef59ff2865ca5fba786afe21f834419de4e22a852dc1dccd0ac127388d1edba565b3e9b130e32e87ffb57d0e01ecb36974346d2aea59951622a13e10365e45821952ca35637d345d080feca82937bef94d92fe8cfd18627f5b8ff7f9e5b08a09020fbf7e267dacef3fe82ed74e1076f7ccbb721f7f99bb0499496fcb920a1d4effe0b4770754c09b577ed2b481a4867dff876ee2eb287170cfe6c2b054ebc2a1992c25e3e91e0f38e1927aad83b3a504709d6ab8409ce1cd4baa155d4955a1740a41e0f788716af56aa3bf17e93d60358912f77ded64e007923516162a898a662d98ec06dd93c27d5fba814f730a11d57f318276144a32b25b0b224046bd711cc1f62efabbee52bd99d9dad484d285d0e045ff183889a174196557947fc5c4f7c6bfcf304a3e58af589c517ab9c2a4770e3db027cf2eb1bc038fde02e7f171bd1acfbff621944e94fade4c2f118c733a261a5d135146a5233788f5b97ae71cb3aa55d44697a915dac5d61120b27c99075ee9bf8862b67155d12bdd2e05253b01630fe6c95d3a073d04e3fb3f0b92913745f347de53c6bbf4a1b2183c43076f5986e9f9cb5b11d109bf1c029bf09c7ef12afc19f83c13706e98fe2e2d9f0e832bb2cda18b29f8de3a793fe9980e1cd1d1e2be5fad8ce0261f23866bcf0a22a3c075f5946b4a71ddac18044e18c8916f2f250edd94c2737ee1bdc6c273c876213659a699ac256c0a539e8fca77fff271f5ade1acb98b36293f19c5a2d6d912109765428a4b69364e070b9987b66653f9e92c3c2cdcc973373e2fc24aad0d2da97bbc2e7a1dce4c36c7b114e1400d1fc692bb6cfbc150c89f3132f41e9f34e069c7a93e1716d7869a6db69e259ded437ddfd438531a5a7d3eaf599f8922dfc54401eb7e306155dbffbe75c40c3eb3eb5222df8598dddf1962e808b47c99ea4ffea3fecd7e16d931c7ce773036ee8f47bf2ce0906f4bb13ffd313eedab4ec8f62162926907ba76ce2ac2b6251f938bd6a5dc53ca3539bbc218dcfe0d04108a6441648f40ecfa067c13c71cadf234e81ec1e85d0114dc658ed21f20688dfc8b70d560f0da76d44d7959446362aca78fbb098ecf8b1efc5d6612b88e03608840c863a2c882be33d79f8a9d5c5481cbb2160de69cff3ff1a950b639f93af5cc62ece0b784a79f6d3b67110e202209891ac00a4531d40bdf037664a808fdf10a8550bf2b112f365dffb5d323afb047c600016326363dbccea2c2ee8b785f81227e3081ca64a29f43cceb6609c050b4d4c784e70c87462c49633503ec7704a8ef4eede8656b1c11a90003c181d4d1cf2817faab2ad5228388c8c58cab24f3713cadbeda25df8602c24ff8b7b7abc8f0badb2564e5387a2a1d0b1ff2dd1b160dd22eec03c71ce0269e9e8480eafac1210ddec65783f79b1a97aba6253bd08b045be10d891ddb5bb7d848d62b5c2ae6914b11b33cabe8d942b1e5a81927b2c0b781c10f81e440351e3129cb4282ad3186904e0715eeddd57c3adc11f5c478181359d821731ea6fb05fa909e0ac13017c14f6229b977116c92aa6ae82a56230f1973b87c824f70f45bf68b2fcc09ef817a09adc24647b2ac969b584df11edc3530c393199a0253ac0972e702e4f30f533294ea663752aa4492d11f1ba99bafa2b0c62efe8b9f6168af73b2be60ddd44f25ab432d7ebc277b3b248777e9af33ebf5aa2339bcca73ea8ea3a91491c55ad2bec40ba0811e9525a7db0b8c87edb7484640d26fef8b803c51d91a20c1620441c10c5bad468e31282b0de1fc1f52218e70ef2bc5bd09d88645a93b7c20578050dc22fb30a42e21d24a45a18178c1f8fc262dfee9bdb58db834f14d7b1b88e3da5edeae597959c8ec9b8a2d21a459de7ef510adb4985564baeb48dbdb670c49fbe6a60fab97ac3a7eafad39ae11eb7512729d98d74cbf5bd14555e9cda0ba9a4e1452770d296b8c1f82a262604227dc887127a1f4de86952e8a861d8de846d16c9028f1b96919b099a06580eec0c4edbc6e9a1c1202db87509cb85029d117a9e55d80f5e74ac18a2aee8fe33de2a99a98483ea84dfc560da7a3bfb73c173b43fb8516d7da7786865b7c571ed3b4f91d4e007c87a8f77b3a21e9d28628be3ac214474f5d43d41951642ca3e2af1b157cfc8522647e3bb8998a4f26991bf041329b6e56514b047f591cce4782b63dcb0aa1e0d2472fb780080aa07f8dcfdf8843d815bedde7be15b4505f2f806522fea4bfd0a43efb9ebdd2356232abec7e738dc1b3152ad770290e4f81fe1911bb2556acea7a1a4c23d03f18684afa60b3a3c8e97a0d4b87b6b43af2a665807fea3e33f7aa56a5198490fce0862e247f509c8210cc7ea2236710185d3a7b1fc439d4a990369f1197c8d8fd092675cf8914a7fcb07a5814085acaaca483257ec4f4660db39f3052aa021d86374d324e97b9b25943b749c02ed9a5d7521f8f075c319706ec0b2bd9197ca03b54ffb951d1decb3af6b428311c54208a895c5d260549c7b25e706b154a02cc9123209cc9e7b94379433741f57b750f4a9617d2319f2c34e884024cd891b9d6d0a7502ed3cba51ce1e71ed43019c6832e8da4b2588d6ac9960ed0201e58ab9e61c8884db8233b895f72fd1720cb344c0ae55e947a66ed017720f3cb9c29e9dfcfb92ecd47d5d1ee9fbd9d7525f60a566cec1f4567a63d0bba33cf3e77e60b108a09ca7b8f18bad018163beaef65a24685ccb0c432c517a2e677b13662970931f183bfc3c105b56abe27097bd55e45ab5a1a0b1513039f4eebf783f4d816bb03b2c5ced5c87e90d6828adde398ccd18e390d9e94c581f5fcb98fc7340f757f0222db405471e893f0a531c7cb70dfff8b76352e547028ab4b97747bb9878000aedcedcf32f1768a3c85058c17c46c1018ebfc3efb65e2ac9a556ebac051c36fb7c9f3c6c7518907b5c63323920c0e2d373531946521296d942a2a83a52d48492a31ae7f09e79e585c1e676eac31622063040d082e949228db73dcdc58cc218ba9a076d0b92cbb690cda0cd6fcacc440a389f97a2c10066347004d829dc196857a446709038a49e7cf3a3fcca271b3687be3d2a266d0a6f895c1585ae4c001c856c414b7c17e2bc56074c5774a26c52a2091f98d6e045cba3d425aceca3d5a8c1b76b94778abe326ece9a00dae07ebd51c9ff18d804bb797905eb4f2e27c046e745d847d227a41e533724fe816eeb50b7ec25b20bbf5e4dfcae86c6fefb5b0a307166f63382ba70721e3b221ffde620fe48e125cafaf08851e07101c23ac6803e78428d0599d60f246a6f251bffd0d07270602f7cdfa31d4c68a37e59412d44afcdd9c0fda6f752d189282ae62ae8a653aa3a57ee3740fb6c1f2d49b7ee77bc9243d0643b6c8f90d5807b71e05ce5978a02027130a630a0c99ad097cc4f0eb9af604fb1eaf6bbaca409f3e29effb0e65e22a78e4a00d1e2ab6154c1c1ea2e0798401e444191ff1517ddffc0736fffb342e59f42cff6c6d3b5f20d71143ac1ec0e5edfb7e93af66b6a1045f40e57caf959493793cb125d25305ad789d3ebe9aab0b3691da524e059a52482f850ef4e3f50def4713f79ce49e6acf0603b5efca5657c039be5b5cacafff3ebaa5996c701b8d7e93908db564caca139b62179924db63d9be4b8bfccfe9e6847c000186c2a31d99b208ce7c495265ede632b72acc1b83479928d1d6dcbce1f4aa8c9c3bb6ef612e6fd9e1a222d977cfd12c3f4f36db373fecc3d61f69715540f9ae1f6bd3b1ef076ef2bb3b39afbad8c87e4259d000ea1bc7cbab12b8b78243dfb55e12607f37b16b39db8343a133cb9972e110d16c4726ae66ed618d790ec7d7fdd9a267b59ca030bb8fb25a167d4d0cfc74a2bab95bf7da67ce9eaac38ab05cd1e745d843bc5f914fc19289c97056d061f3a0a0740a092a0d02f667f72edc956e37f001e0c4c0f3f9fb61f1de0f285f78c5e2c8705a9c93306d35d5187e6af05e19735f3f15c51ad5c028398728d0530e67f2fefba16b811883ecb2d153bc371e4e1ef33e9ccf7ba4e23589ed5b903f3a5094dacce2dbdbfe86bade13c3dee7ecd1868a820024b00e385dbef781c77ff3e2171aed4a56601b630efc475e721f3dfc2359a159551ed3f7c06b1601908e9ebe9f720c81a49afe8762220735c80070974d50894308d3f73d84006d3a60fa2c2848f748e6a82ee404e7db4698ce82f264b1ab767f6c9ec3fbf191b4b5610faef3370f3021dd1e92ecf5ef43581b5fefb4366e7ffe7da3cd17fc538ad863a506860f1240a25f47822be6d6d2688042b3812194d95d09b3c6a18bcf60a96c214b96c3e852f964b48fb14ec27e0eda24ddb981e38c5023fc1983a8bbfe059f4fc2dd6baad9a4152b8b69b3c1c808baae488db4c94161871a01ae69d2ca786dbfb120e593cd91349980870933da6c56a2ea948e85a9b0b963bae10a8899d823c5b6737037020201266ec185be902386747a8ccd46deba335161231345cc34c96067538206c1d175649cb3e9d90028f080b6aa1457e41d30c3a98ac2533f7051674c5170314fad5644a1e20865ac48db2bde9b0ecbc9c8b1a21b855b7ced1bb8285524ad401fe07a7061c275a5f6518f1413407fbba49332b6cc6703c9c727c8682ef952c08b9e71a4d72306a17c9f7c09f4d962a87616b107fa40570712751c4bc1c9c16ecdd81aebcf86c2000c2064320e612ca10a24a4c59905512c2a9803f76c3089c2b223f87e91d897d7cd28bc4baf31daf6df00b6e3019de05b9c545b0182e47c0a26a64497b530afcfc670d957c1837f36e6806c0cd62d424930e6369e66127b290b4ab8d86131d146357d1e02e468162c1a95e3c9a4adbbebe4be0b1ac6a8ef5e4e608ed1c632e429a88106a9996c01c7f5b8d607f4d90523865a8e4668bf9fc7e42e1542f8be0a076563839d871be8897887891be868b3161017e2bab0e7f18f5290116f2d9a38ed1c6ba7e4f6f4e7c877c16f60f359206d6a642aef1f219556a1a610b559a783986f7447e8d6e913d07256eea1c7dea8cb7d821b5d17819e2e6d701da417e6f98ddc08ddbabd04b4e29514c34778afeb22e811d3f3093ee35b42b750af5cf211b801ce4d475a5f46237a7bdc859d0dd8a6deb3d0a32a0064aa7ae6b85680d2900598db7324a0c9b2b2965d01525d18111113eb9496eb9b1845187ad1913d1a22a6221a824af82114e296e50b332fc0126ac6126858d85a60407220007500e24f1566d23eccdd4fe2e586295f082ab2b57ecef9cc9f2e30003360020cc8befcde7cc1802e8632395d2ee932f7df35b0d3a4654e1a1e152f20c29532b42d01db4a99670001e8f599932dd592a0984c57c2020abac9fec1027b0b0bfcdf1b0b184b62325a394506260b5c83c833295316a474e3cc027a06a360011af88f9805855de59ba5a9485316489e59009ccac1b197bae7a8398c18e6688039a9055c800c35d25f6a455afc1f0bc451dd6ff17003b6d7be79b220e25bf9c7669ca4b382921cbf23fa225ce48e37315b08c802b7aa2569b9c947f3f19b34ae60c00255d7c477ab6a83baccf6fdb02ca1a5a3257f812938cc09799cc5f84b06a0928d0d0bbc1571c215d9ee5f944a28c159042973167f52fa3f63c536686130aadc40d9c0f26d961f96c4c150e2d779432b984a915804adb09b81815e34cc2a444f9f4c143359d2f09fa4b73a8979d25b145a011774eadd5357838156b0761c69c2e3252a6919ab2589b37bcbc2ab0111fe188133420cb78508a0a6a4141faa005d31c2d5879e0959da81e44c159844c724fbaabdb5fd5d59c23cde4517446cd01ec21d3455108ffe83998c58fe2d83c5365fa3fc3c377fd08462e647396e68bfa628f0281749d830e047cad1d02032539a38b28ba109cd9aca8a2f647aa7e0894f08a099ae9001f1ad4f15da713328b22182b63250e4fa1130a35badbc4cf129d0ba0dc03ebb2a8fbfb53d34820ac665641fc808037a4e072e6c7fd5a1283233cf60a62082ce42235c86854538590bd1d008301cab0d2352e65b8113d4204eb6db30d194672f1cb5ffa4f470974a57a67b7a2c4133b5ed7a3cf0e400383eb0c8c11c686a3ca08bc039954a1a6683a3ce18ccc7a2b2629402003391655552a0fb8bea59dfb5b609fe8a780ac9252c48d7f6b23e2be9778f548796edca19ed2ee636fdcd6332601a38d95674b6bed2a35b78dcd1d9c4a7da22a041cae9e92e130af07c4ca872075c5efa447b9929ca75d3c6ed3f14088e44993186ea8560d3d448c1ba7da99dd434d0ff26985aeade410ceb7dc4e6e022d358bcecc981ec96a1c8e340bda3ee453d73e3b46a739a64cbe7e38c3c4acfab327e44c11df03b8e5c35f75147fd33b4127705065ed0ea6335818a7b6e1b280aa2ef9500fa6509d8b1b576aac0364b71bce85014a4911e9393f1b6510a1b1d009951a00ddd21e8c54d9ad9477e4f18817d0ec4f955657e82daece6f318e9cd750d824ecd8340ab2f038979fabeb42a0ae14284a960b3bd1e4dfc13b466d96198e19f805b09fed1f00b4000543a944ac8ffdc1c4b0af022367ab724706c588077480d50d45d42a4242ca26138be004058897820cce152e560e1128860a253ce3a0eb1339917d01a071b82718295838b692fc001269ad6515d301820ef27a333faff60fefc6a02ee1de5c04909ac5c8483bf1a770953c9091a0a7900acdbc11adb61b4bb4cb03a109070768be6bdf2300d9bbe92cf04ba1ba1ea67c696744fd5a38b51dfc85687cc4c4d10453bd52a5777b7563bbd6e992350bad424b94d2db9d3b0a918976c8bd47194d49b91b40c9af4d3e02226e1043581623a7a8007021f3b849f255113508b7b4543c0ed54650f0113d97fd8042a0b5d5480754d300a4ca0c2fc9edd0a71fc1e133f00566082881a868bcc1edf0fd48e0fc3c15dbf2d88c1a128bf860950c37f9289deba3dde4bb670c37903b2cf25288ad414dd154317cb7144d6f2b68d29c17a3b1c1047511e36aaca01967c1587eba725a4fc980d3cfa0365bea9b470b8f7ca52054a03d977044a7b01202425a8de6870cc262510cce4ba605efa6ade9a02a74e98b014c3a056048e60a6a21280d684a2ef4077250e21372fffc83507d2020ba9ecb9962f94a81d9f57ddc3baa3126c332b28428f4feb137c454aed09c96970e0292a81a246f7e3f49a1908a6b35f82315624b06e48c9930440a7696f32882a2f254724da0a248a49506a6a12cc984ab0729340a86e461e4d022fbfe4de3d4a608449e01a7014da4a25a07ceff98f25e0bc520237f7ce7110286a997aecfd64dfff76f951dee7c08d201e79ffe1e273d8bff1bdc7b430240df0de5157260164c0fb8f632f26090cee13e35b9704b4ecca7bf6d9e16e06531d007cd4d0c555b13eb9d55e3109276f3afa11732c57dc298b98cdf7a2ef718da23dce120f656f89bb206dfc99642c64f8bbca94cb2ed34ac41d4412fb7dab30f9e32a2cf55a74813e9544bf15a9c8ef8d9b0d4636b708fd1f67bf005491265a7db9cd39d07308343f6f25d0b1ab30c3421372b5ff684a163819ab8633edc9a7d41ec502cd2583092c25528ea2bef535d87b8b67a5b01c9148952260b59198f3d0c47e2d825b95c1a77ba7df2356c9f41ab5d5071ffe3bd800c8264ba6802d2ef197009b050cbdb17cf05e91fd8bb96b4b616ff4934ea62ef9d40302aca455eadb7266cb3bae042b882a19729c0246da2a216c9c104be80c99562a272cecb221e1f8c33802ce991cb7498eb22cf2c437cf32640759e11dd295180b85ffce726a2b232c256117254fa379ff34324973b5e61d5e5fb9bcd4bec27b0cb8add04ec81e368525de9afab09ca270533fb3fbfd2efdb8869a66439e8ce602b22c9c3bed55711950979f266761a7b7c80d56a7221e6b5ddb9d15e6d5f0b736089a9b249d1acf7acbf0e23bc2be69f7c57a5f5033e91be17e2a9f7875c09babc794cbc4f5e295a40fcf8616866394b82eca96c82982a47fabe47bd284c7590e799978cffdcdf4ac5a9f0ed5759c28b28d72a66feb8458439ee1fba538f61cfce4cc37c141e87da7d8d519060c6a76372ecebcf37742cd24e24272208bb40d0ce0e6a469cf1b2436113575082d8b49f79b23e1321ca440bc0192fb8f13d6d1527dc2b299e2f5a8d50d57f912d7024317bbee4995aa4c37d06c9f347a5912a041fcab76decc566afa70fa49a9e28ed0d90b91ffe14b942f7ed3019d9937ec900c1bc9c0390bfd0e47866b86345b8a5d51ed84107658e6a8a13b9c5bb38148ec8cc8b5a17b71ee477aefc1f5bfa267b1e43d60a6488d529e5be5cdfd286103f775e6ae3616be1436bae49adff489ca9186ca5f7cc804aa7905f67266f433a4c67a7c7debd06e618b96f80676a4d033748c3a09705bd1311c28849ab0263284ec17c60143972881c48487dd84972b76b24525eb22b35e2eed9ece87130c632fb7d87cb9044736ed71c1a311e92849e4be679c53dc7f04e9a86950a5af34a07abb8c7a4bc8c0d76a0508b7fc71f7aa8430eaa6e0f652c767b02021450517a7155c511a01165cc6105c8f232bd0f4ec34099dca263d70c3ac41b8b00a9370a7979435deaf644760068f0043c47549c46d5511b7c67a848811179ae3a5cb0cafded946129e4e44622767e729b968aa56ee28756d59c442773afdd4151f796e4bceeec305f5292a140a1768d43659188bb088c715dc76ca5cc92f40afb941f2e48095f5af5589f0be3460a2681b68b0342489ba22490c124928d865f53ae73018fd1b59a48b0f4e658748106db49acb19633e4936991952637a44844632d77c4378a12bea8c76b75369516abbe43e89bcb91c34cb20775eaf0362af28f59fa4f5e89ccce09b1cb22939b69dc46eea51933ef4b7496dbc33732d4cd3040b6f492444f7e7f22780c814a222b6f1e42dff23d0f43092a08742ec793dd744588e761d5452d6debbeec53cce481c6a5ca718dab8db08167a78b6560ae1c20c7494f09db9b2ca04454a0000b5e8ddd4c33a3534a7d9ca4a1581da83e925f89f6e1fb403752f4007dc27966e8453cb90ea883c31622c0f542ae11336d027a1af641edce918b80502d04b7475ee366a3753402c797dce37d5e1f2f701f25c6381a9552ceac229d0a815d5f1ce82006e65854cf9a63749a650a63858b42766e4d87cafa6859c1ec3b26fb5699c7201219e966bf41e200cebe145b25af2e165aa47412192b89118d843d450060eb84000be019a9c3dc63ef91d4ffb0cee7e3fa1b788b7c940c0a3cd7d9b10373fae0ca0c74703ed3422c14a6a0a076afbe430d1ab571842c89ca45d038425c01d1a661dd504cd4078554878b95dc233715f19b81ad42ccc144c886f5592203f6155d4a40b8a4004f2361004275981b0bb146db063a5603a90fd812822f72ddf38014f96dc08dc3bc3ef735a8b67168516212a1c95d05d2b79f2d96f65a493be88d931a9e8c3b960142def9096857335b21e2d93b0b48cd26919de4de05560f9a22e098414b52c70ba713a9cd432df86909709eb9f97808cb6fcb6d47205f912b8c13290ea99628056b42e209da0f6d67238022188127d722249a66473a66d86410959cba63b44e4a76ecc0ead14b4c59a3143b6fb145a14bc91c7cec276fe439d4d9c46d724b2016dd81068b82aa20d9683f693908089a490e5bff7619e2e3e8afbd813ee72169d17624df5fae611ecfb04b9aa1b5a0e3d78d4f4444a2839587495d679b54d21e760c9eb71e156526d2effdcf52999f5b6e6c2fb2f3faee0904095860f260234d55999e5291cc3ee19e25bb9110f0be222c41c35d19b33a56add543ea2f64530766e40c588eae6deb02fed2ed3b4ef46afe3af6c42c855db504b443459432802bb24b58d93658a2a150d4c4547f4c77f48e87b08be71cbdd9c2164df19cf8133f11019e8d3543bc684819fcb056fcb48e69814a36b1f5f09db75bf9ebcfbd316cb54e6f3f089f39ba1f659f463800796686ba9ae5a78c54c3a576d8d67620c475df97cb64a759efa74ee41deddbb0421ff5257b8b863576c41991f561e36da2dfa64cbfe17c54a2153c72821d40e840215f036cab624f8ce7a83943c203f55f97f6e19579ebf1cba37ed211921741e0311a9ab87991e22b0c6627ac22d2e1a080805df8a332109150d00861f2d554154e76be3ce7ce843a9a71919dc2b2c17d483f8044778e313eb218b8efbe0274c2665c49dcfe588a58c421139bf0cf70e7d2cb560c039bec0b5644cf35ab0e8376f6b25ee8b227f8baa40063499e8a5a60ae6014542216f9e45237c850b657c4f16f140fbea08631aa9231f53fdb724f2475d9c789a43986a81820d64cbee31cbd880bb917639560d4989644e836c75216ff402e208a4904ec66a9598bfe0c9c8dfa14a5e6b2bed189c970239c0d63fdf60b522e966127859a67e6fc4a3c9a039c300d30880d979e75ab0f6df7ca18a59e0d58ba6978e77c248a325f7dd510a372924413c3d278b663e8eafe3313a99c01684b0ac0553bc731d4c7601f6def54cdbbff423aaf7b8ede9995bdebe56331a4ba5290a6156d03b5c085a453f88a141c118901676d7a15b7fd0a7fe61cfc084052db0ec78adc1bf89bbc5a4bebda798419719b44cec7e64e9a517fc73e580383e8cf6380e08ed0e48e12f04940eda633ace1f6fdd3fae6e76f64b248f2ad832f867a7c262cb3bf62fabd436541a1c242ff0cdc529a32ad63f6cefcb097f5149cf829801b483c8adb5044fb6fff78e6c9516b6ba1ac4895ebb799d4179557b8b8c7bbf2214ba1254c012d5150da5fc75e1180b94568407090aae19b40084809af2e18f7d16527088f7ae76ef6376adbb253b102416c8947f67176a69874e1517dd6a5b1bd5e9719d30c17aabda0b144d93d5c40a6b177404e611a60a6007764a594b5dbd0cef6900cb79c80e9fccd980da174a9a5bf0384997c9b800ccd4c81115772da48d45934e16b4047eeb57ca4d44065735882bb844ee70bbbfdb3f2dda2d4477ce569baf208e30048303f5ab3a71294cdfbffc8f790b0ea23e0d4887b8dd1f9c78cff03c8efe786382f2c0c438a9c71beaf24e37c8a182b8c1050e993eaa6efe006d3cff70bd23e2320b016366a5b03b8a79539cdb1ede55ae736d56a42392324ac9dafa4a579057b0c28a3bc7ce84f82c54975d1ad2d0eb904034d82fb50ef7d0ad83b6fcbe1b64243eb0a82eefb5f693b5ddb28bb282c62cd9dc4cec8bb20b17e18ad35d685e519777f2d3014b6433c7ca3c26c66b2742f2d5ad03bf205f439fc62e59aa65954d376cccbe73c4aefd71200b3c4cba79bdb125f2d8b5d512c78be7e0e35744c1040c977a67d68bd0c11ef4127138de9e05f0afd843258b2f0643f2984da541c4a55e8b7e1630e97a07c5379297d459b2e712abb093f64df43475a2f3654227ec321b01e96e65bb00905610870abea817f7c435ea6365af10166aa6f9eb9d57699871a968e4a596390679f4972fa32206e94567466c2155308ebaee16438b892a078d5e25d5c24f34aba4cd2e36a735854eb5dc4cec2a066405c70b857e7206d39392058d33c8ca4610414370e3931b0915a23966919d4e15769e655e5f41890e65ee47e187d5817aaf34507dce3795712165a27a59f89978a18af95aeef45054b54cfada36e97d97ea7ae191dfdcad4f799388e4f4002e3ca9941120117f17559fe9ca4c7beb66b9a7d82ab8dfb8b8e9b286020057361d7a1da4db95c95763d272b5054a1726576900c78485eb453ba4e234d244e6e51b6f2dc89b02d079ad8a048e891ffabeb5a4c94f46ab4c70e6c390276d91a052ee62dcbc35a672ac5075ef023838dff231b568168ba332a23e3a3160d20b25c53fe3900928979df6882a6a7b488df987119f631510d23cad53d0b8deabb77272bc42f58afac29d629e6af2a061f2e6595194c50fc939609bac6b88a2099e4642429eb0700a4059a9f31d7e482005dd6538ad891d2ea90d86ef5caf3f046c2a82e8aa968ab4e3aac93be145405905aa0aee1710e45311bd2a7e22523d2c122279079338f3b8e735e058f40f175e79845ac916d38bcb0fbfb7e671996d111cdad9556a0a1522f629b3dc08b35cab31ccdab826b68a2412a85a4ec93aa5d1b9aac004210ae7eba446c7cdb402020b940199479d0dc93b62218edfc779b41b7d32f08633b6d9500129dbf0487dc16d2a40f5f2d3b8daac298a0b85606f85fb036eadc9b4a2f8dd121cd780b051169b7db9d9472d98ff03cbed283acc96e8a8a169cc17add4e70520d787214b394a0084e81780e69b0498bd4029b0debff994bd80a971eb6127a438903edf7454d1cd0a299e659116af90c197ddfa162ca410f6cbff79b41c213e913ed14918e5747d97d07fa4e0d760559c4bb5b3dc56a9c2cfaa6a494095ab6d080ad01a7b8cd69ae5f5dde172a4279b4a0f144a4e2c1db7f0522a110c9fe9c1d069091d9a38b10a5d4f60e479e261c1dc03b5699f609653408c3b22655cd36ba5b873cabb9f265cb315b7eca021057b2ac43ea8d086030e2f9a66492bc24f89a0682f583591fc8aa6ba9462f63187b68e9a3830068d804b3e7c96d60e0436309aef1f7188994f8ca9f14190e23a14a35510467e6168a31a1b02909b185ba5803682f33f441042c4a789f395ab9a043c7fa819d32c43e78a7ffb044b9a0ca34fdc5ee469d70890f4c4d3c5a5e2ba85f152d75591097c6d813c1faa0ee71c00204c19eafb04c45068fb82d6b83e70cd520a54f72b076afd12ff3ab8c8307a1782c9aa5404ab4c212821985a23b7c0a7adeb5a6e41f03240eb2a06b27fe94223043afb16c1829bd96863ccaec54b4d4325ce9b9a2a9ca6552f8e4937a3a07c5c73a47dd30b27230bfb4186d1cf109435fda95ecaf8623b97376cbd54c548483580c4ba159ee270deccdcb6524a461ea6fe4637d937c64a7be362baf667ee0d3e16e4b842482e5ad851933481ea7ec34c69f64fa6e82f16294aa7ec5fc7729405a8cfc4756240acfd0a5044e954af68869ba3926222531a3c4c423a86e83d5fc7675033a2fe4b2c9bbbe833dc40a375a790155215ff48bb957781d91022766c1be019bc796fc9f32d0d4d2b8adfef8aa27177902e7ac4a96f7734079c1a1d04bd57269b405fd98c044c143ff09b1946463aece034c53b318b67bd22800711d1fa5345f1c9d6a010c5ba7be746fc1650f66bd7f05546630e6c9a3da561e6a2e55551e3670de315adbcf6d52bccb6b88eeada93c26b54a008a59d504ef7955317973bbabe2f5f832dede16fbbaaca998ce378095e15c20d4b8c89ebed0f1719435cc1ad19f9bacff05616eca98338d6a79360d8d180c76382e7eaa61b63ea0503d4a3bc83caeb3ae5eaee884a8b1e1898a0a9427fa766e577dde550f7957264dbff306ce3af5f0b3b5a39a4bb67a3d620579e99b858ae6e150df7b763ab56718d3802883ebdeb4317370432eddcc744264e1e697d563d13e0c697ccde3688ea9868eb56f72d7a9b77dc4b7b51fb6919e75bc8e51ef5ae23b7ababab13526a0da4636bd753916d2af606d00384a4c5cc4cf755a90ca69c415de57259ca364a8f3b92ca630cb28c0a835cb6bbeb654751f02f420122a085e80e6f84fb2899de58378cc6b09a6dfaaae96f3e34db128406f542f7efea6a86495136d8fb152e3b41ffe2bb40f50c9cdb591d0990825b964a7a00105715aaca5c1727ac8fd1c13d983cd20d4607d8a401f7f0783109324accfe5a56f38155051c6b721712db2168e858636ba8857be9fe004a5b2d50866c3e5ba1d0744f755c43cf812a054e870f08713005e42a9c310c55576f47ec386d9143bb2fe5a8b836a61bf6577f6866a17ca63866f38918ba3cafa66f3b310a2a41bb777f4f4bd9817457541d7972e67e35284b4c89aabc130a996d9e7a3edcbb9e7c4d872338d1e030724bd3da9a4c0e6409429f5b1cb7034f207ed13b1ea60f27db29093966ae56a0b681ac3a3496e04cacc6f63f453319c5fad1c4055de51c43ea990d249642d30fbdd4effee457ed2a2578bbd9b53a9773d1ce987debd78b4578f6d6edc25cd8e056c5fa7869e9fdda24844a28e0a5a3e6668d83dcfe958a1bb0ac8a2955036c7eae42e9270c341c855852aab127b2418e81e3cb5f417a37d571eefb38d5e0b0cecd0c44074e170412be99cbc7f1106f709d3706552ce49ff154048c4785460a2807cdf1a0d5aa9486813ceeee2c2ec94b0be9072b342de442ba8bfdb9dab2071e872f0faf2924a5c766e46b31db8be9155635c583632150c2572bf33386c47b2bc3c209f1ed57e60307d93fc2e2fc79d7b052cdf8f059d0d6cb8979b2f66eee525988fee91edbad91ede15a0f2df5063734528e4d58e2fd161d7a6320b391a2f04a9d05faea40ccda56f9a138ce88fc01c0f30ec8c084e2fd02ab47d68fdc979de721a831396818c7f4ba215d2307f8783d2215880713fb23fff1382a8682b04ad93f2c46665b84605b4b8b3a4e17f6280ed121888875ff4f2669b487339c7f4f234a730c72a9c83319a8576250bfe271e58688eab9748331c4b2462786351b4f5ddea429b1835faee936e006c6a77b7acf84e87891b97d7cca62fb125c6c367ccb7e9965e2b123bcbf9501cc29c24869c8dcf01eeb06d3a62d5f76c45712ccaeaf48d12278e382290dfb2e60a0565929362f79132ea522e2715c54f78a073fb1d5c5b007c14a951e0a7ea8a79bb2997af9bcd6f284f08a4461b5cce291a45b72663eb997fc3bf931262313483c21553626efc5f279f2f96083fc0cb6729be28fd386bb614f8d0802d2380c46ca75ed0799a19cf6d52ff90bbb0d5248035cc1bfbec415e744ec4c7f992556c569a5eb402c416256d53cf3b902f50695a3dcdda864b6401d0145235ed229537ec4b27b67ef5788ba965a084b0be3deb380185881db7b693a1aa57b3e0017d5d7cbbbd3708f759156fcd7c85cb64546cf4c27bd9b357ea4b4050dc63a6559a5bc9073f0685c1270bbde5d9dc7c2e4235034b7790d865cbdd1100453b2b7a69b2d5b024beaafbe39d81fafc92e32cea4ca6cd9adc70af9c065856bc9dccdfd586ee6e87ccf3f515b088b7112547399d36e2e903f9db079a5a089da050f3e12ca6697963e863ea8ffbbd56859f45c17e8662b6d0dd45ca3a7cbc7bcf3e349e429da11cd224d91e629e33352812edbc7bcc7d0b158445b932fac8cf88ca0184d52ccc842512675c646e41c8de1fd0136beffb0b1f573e8fbba2f8999d03c65db88c37f869ab0f16c5ea0b337c9c4ce2d240a60da8d55157284d389708e3660d2c9f435804b8ccdd5e3d165e3eefa6d3048df078c84c505c3c83c8b8ed85047c8afca267ce46eac023c27c926dfccf43823c70aee9fed942cccb237c2f7648986609722818116bdd32b171da41964aca550cc1f3533d8d69105f074f8e32caac5c89f65c1fe39d0719afb4c3eedc9fe3ff195895a16c186b865f128a515afcafb04d45503522c01c55570f14dc4d5913ecd66fa8d6cda37ed2441bb6171992172cd9b453c86e4281d7a2af42b022982fe3a1ab8fb9a2c054f3b6f48f2ce39c6598b6a91d4d546a692d01745c5344f268c8b869f3c6b8a66b30f2dcac03f2629286050fb1e4ee96a0484783cf003dc504bfc36776cca4cbbdd865758ccdc693f2260211587334bb98749fef746184809d82ffa02910470a4ff6e86d34b08fffc29a46abad4908db3ae2247e6880143d4c7dc9c75161b47cd76dd1c438364563958425d54f6509fd10805e990742b56e3f0b3484dc823e2c000b22ca314ed2db40dff81937e612c41e091f04c615574a519c8d6a5e4392031b65b623afbbef204edde94812d00baec24b3bdc1e9ed8da920af7ab86ddee7a3424f605be3da5699f1b9ba427046426966a379bfb2668679aefc2d4f3b41e3896390150e3d0082cf25f6b6cd5484c32918654ddc2474af097e23c5d6541da24d463ac2324e12198ae7e70f355702d10fe32c48c262f89597d9a03daacf69dc7b017a47c940e3cad7008a3730bdfb8193a6cb72022e26ca5faae21edb5db5a840bcf6e9420e7489aefb4b3e1ea7813d8c12ef23a985222ebb93f8effdc345dd3e54e459d37a122f6a74e95952684a3ccf3a3b458cc979fb3244067704b90940bf31324fe9e4ab58a3b35c7c0f3b8875a7b18d44c2fc218e9ca8c77de50d298fa4faf80fa3f98baec92738d1770f5ef7ad397570cc9c8b7bca70e061366635b9a6a72257b1eeb657953bf98e6ade366276384872cd0b36322d85e3c3d96892d9893f419f07f2cc2c38ac2076885931fb2257c4ecfdc936b26edc2f3b6c88e9febb084cd8246cf6c86892278341bfcb4335c84452379f2782e145f26ed2f96c150542444577c01aecd46e42d2c1b950e0267ea261f9fe31e17dd856cf98c5878b9a983c4b13e83aed2c2b7a87d0be8ef8cf0b24c565a6bb9509e07735043452788f0ec4c1c3989c772a80168aa48c850b98eee7e1f9559fdb35421f2c1a567fdc9aa33fe4836d40467a990141e0ba589d13586ecacb6261e5abd8fc454acd3f28cf4f1ad9de27c3892aaea7ca9bac0e0b9b90f5f3e3e695b20d701dfc7f39af76f25e2479612037251bc1d2480a29462f7925c4843a15529fe732bb7b4b09b5d854bb3bb7f979b1f4956529e4d1124df1f3bee4186168d8fc58462ca0449f26a9c59db6cf8c1d1a3316c2c087f1ce8bd51b3f35316162774fe5db776ba332ab9af0c4fcb5d552820338c9b5e1b2f3cda6c85cef5a256311c2ba5e4ca502db609e347d2d57f8873f48a906ef87fc31a8db1e3315655ad8c18c160498a73ec2f3024a98a442ff9099df7b07d552aa625b9d2707971095b1f1857a22f01a815144c30b849cc586bce4e64309c3fe9ed69ba8c1b2b1139e2a92e829a76888db8615347b51ea15b7074ac1224e3118d633d6bb64a3d76507a5dba84bb3549103cbca59f1c4617bb7c191484da6a2b12cdb8d7d35b723206c29e10ea0b2f68d53ef4c918e23feeb1c531531f742201aefdb7a65c840d007a351e60ab45736870a6d62643de79b3c65480f1be6d8ee55416c7c7fd69cd849a47fdd6c1769b902a04f7e38b3aef8329fec185cffda7550b21caf960fc1449a085cc82fcb36c6ad3c0e020ee8b9c9509fe62eef6e37d46f8b84f8f2819f4d9fa5a363d7df23d20c7f7aa63cf1cb8256d580266bbcdc086c06676376d6d19690c83183b39935ade4470f9e5c9274f60f6625f8440df7d4bee459a2c6b6a3bcfb9e60d931e40f18d4e42bc25d4204192260190c4eed81f28606e3f81b0e84b011e7a501cb29975fd610b39c9e7f7bab218fcbf456171dbf00f9187539ebea50142f67c8b1270a77c0881f9d272650214e4d352533b480e5045e4974e1306b8d7292f7db127c72b911ccbec76215b4b0393a8940c8ac957889fa78f03d98c4eccb443de0e800e88bf61d47157f50e792f10f407872c249fcbb0d63a74c1789b42c33a46d5a0c3f68b2a67f0d095b99aea1502d5b6ba251d3d7d2dd5080aa8984d3c2a897a1b9c5eeecd57629e20c58b9d7c69b89a9b2c4a2ec5bf1474665b32e46413059829e480d9c6c7bb812536965aa2e548c6860108a8e3307453f7cf44ee1b4ea805e813fca94dde041fc042872d0be839d405a18c3f6846f992fdc9ada72fcfdf32b4fcbde7f2ee5623a8d7a6483301e6a9723777d6a9f5b4482d074f3c79c639b9b5ce359c36fb6c9f1e71592f30401af002665f8318f8a2a6bd2c8c1ff218bc1b8435906a11909ff6ac96ca7f16eceb90a92eae57b5f7781db5f2987ed63b34dbbc77f1a6fa005d8498e1b42f8882c9d64964f8a7bd1b15321952f29ed833837776b7b0c3e5312854ae4ae231116b36579459307c6a2e9d12623d0181846277b4c21875d2f052c9e65dbbc784002b200d099586ceddb33df433878889dfdf6e34c1cf609edc500e839ddd6ab85d10af95a1161bcbf24bec6171e3b3a35e84d01cb9018e11af3cafa193409bb98c961b485d6c36f9637213dcb425802110c624e23f78d1ff8115cb35844648234eda5001d589457c0ca0dd5a2acbe3d95d3199454e52adf5c24fb72549d40bd06d18a1acfafcbb72d05f16688aa6664cbb26e6d457b578bfd527ec22deac140a2879003f4c32b34a251faad9b9119ae4d918e810726e42283fc2c3f807fa112932aa6db8d215e11c112ccd11d31c2748b7a72804aa60cd407934502f58410b9744cf8183fde9edcf4060ce1e8c9f24f553edf63359d1e4e0287839d41e207b98ff1e5e93108b385e7aa5ac549ca7ee03396c732b279631fa85d1662d4b807b51d945973b9d564251d1fc1e1412d6eef56d755010bd3cbd1a1852f0e935769f6e9d9b523416e61248d957fff34fd9b3b0a082193f9e5bb95af6bcdb5c446359ad79edbdf7b37c463bb73bc6f60ed2e22f3e11fecd119797bd19d2002a4bec4e68c777e7ddbc91413bf6dc85af98e6bcded1817b66ad36d45c5513c52b8b200e593b3f0a8de2162c0bea62a4b8cb59e300354b816329ef48c0d2bd0e546daaf69214abb2387ade4e08b1bca89c45755afe686af1e9c477a80bfcc899ac09bf0dccd0ae28ab4ad9f008725657c06ebcd79966d1d1625ea3e4c402f4c0d09ec22832689d8ad0892bcbf6f1cd712edb7594a59bd08158e0d1900cf0afe577a3eb3a4b77e4fe8d28c6114e11383c7b74d0bde409fe3588e787295b0c8ee3c6dc607450d6d08a2e408116b1cad6a75de3b0759a737dd12087eb35fb5f4e6f0d5e65fd29fd400efe2e94de3cb493c6683dc17fffe4fa1694e36e087de00600279eba909b4183af15690684a7e8a102b3640b17e23da7fa1b68d7e441330a07564d921ca644626778e7f9095e73adcd55f0c6f5e261c8294c7f6fa84dd72149122533d8bf39259719a88b446fe193930fd75aff4aa92aaa8f8b79b17dc90a806eb486498a6c407734f5edf3234547edd67c71ee47c746a8efd169044b2320ab59aa0ecc4db9faf009965eb5c7caf901ea4e811b943a5ebed40c68f84601b01781ef721c929dde7f6eb6fc273058819005e0df44f17ff50a070bd9d3dbbfd84f0776d2955e240a6a6fc7230d875bd1b438b95efe2a16bf41a89ba2f31f3911a5f7e78ecc51ab028a97c22e33f2f556202642283ba7f5ce00b626866eefec2f2b6995d23089bf015e368af9e2e10c24d834caf7bf8cbbe0f47100dd490b06d2658cc01844e029a93bd4b58509cd5a4034b4122a323ce18b26a0c021e4c4fd459d8e64b669c12b36a096f4165484869be994c05fa633d8c02840200485d15cd31018be043e50f3e78ed8c32a8f6f7a6b53523468c584208d9846cb9f79632c994524a01c504df04ac049eabc3b162454a225202e5250aaaaaa9aaa9cacc10461145db58d146398b44ae608565591eebf3b9ae0b6485ac93c75c1ca1da86ab50554d554d556666ca8a899ab2e62ad4c10f74aa55b446a1aa9aaa9aaabce448159cafaaaaa9aaa9ca4b8e54e1aceb885531c34d186e6e10861b223738b8494bf32bdcdcdcdc8046cea53553b1bbd1bfe866e6023a9f7b6a848a2d256118255131d6fc074a3d0ac2282efdf57e5027cab9e73abe5a9d32f1db9a714568566cab9f3acafbf17376ce509feb89aa3a8bb6d1cea26f2e7619853d01b3cc89ea9e287e77fba8a66698f03f68c4889137517d6383644b302ee9ec65970ed8c1891d853d01bfb127385f61938d8deeb88c288dfdd7369001ce8c4377c4299206954523bccb88cb1cc713735d7fe5ba8973df59932dddb8dffaa6bf7054dff4175bdae7ce39cd9efb767db3a52c52b125f7c117be37ba15be4277643f2007fbc6fbf5bdb6b77bab0584679a851ee1420b429583b0ec8fa173eebacebaaace514d65c90b68adb91faf4b71c5e89eafbadf2351a1d1cabf94ac68c2142217b10b510cd10c710a77cef3eebd55436f42680e66a9a1eb2cf55475ce78bef254d583efde7bbe7a584cb22524cf9aac2ce1e4a6a7ac9969a2d602c265ba451fa93c9b40f43c6bc6e3792f56515bc21f8e5f396b2646d747a87608436d8967b48c182f0f06cc266c8a8d7de5a24de0b5588db170563a9cd8980a75c5c6481e4f6c2ce5f3898d8d40a0d8184a28141b139d9cc4c64e44a2d85808052536061a8d62639f9494d89887448a8d5d2a2ab1b1ceca4a6c8cd3e2c2c2121bb32006457fc5d4fb9696d8587471898d55ffb1310ac362635396c5c6200c182f1610ad61aef5de881143868c198d71a90403131b531b4428a39694b84122de834b7d534811b2e6b46dcbda123cb656887bb735f3f87d1125aa9fc7bea7debfa7de730f88976d9023ce4dea8e35e35cc7a1e169932d6d1307a9a6f862bdfc8b5e6fa7c26915073914f5a8f4bcadfa559473b7eecea1a8f7aa0ac62bb4f2a5980e924c924a3e2920cc69db9e25f7ec9e51208ca976d60c28c87591be8305e97c12dfa39341e1de635d9f820d01b5e94f563e89ab479024be87ca9f7ce84aa2d4a343fa136b86443a71a289263e9f0f59339f4fc8e1608b14d1f6459bf67035e73e9acb36ff09402d12884bdb8cd038f3e1cfd3952199b04845ee0e2bd816dabe0a17dafe4915b495f16c5bcd9d667dee8daa352bdbfc6ff8bb77ab00fef179b06f46b83573820581d0f3212c08849e1759331e0fa61a08534db44ab857d6c90b768925287f0ec25ca31cbf86d426e13cb148760b1b9bed62c9122f987cb13747f686da1d1831b24190a2620a636dabaf9c2748b994d71fd2e7579c052b99a2084a23495529d65bb0c536364e738c972c71c75e3061265fdcdca0819b341142e408d74bf44bb1669853da89d704d42292d5a8aa83c13024cc7ec46016b2a445c22b70212f230c73033f45e5197b42c8a847079ac145dbe010234d9f840d71699fe7604184e4e8d1e17c12a51ef02119f2466a698b6ad0f6d76ad1962c8eeb3f371c0e95dfbf8c640f4272f480bf7f1d491dfcfb970e74c70e52c7fbfd8b07d937a983fafd1643e2e80460e57bc8cc618b691843ac2261f6292c222152a134f657cea0edab8bb6c5166d8bacc5133261dce7fa82b63b6c110b6d3f22592aa5d4e192a00189a6a2651234d4685596c232e2df449f9047696c9dcada2a6d5b69ec27df90aba58d73a2b9685b8ab6bfdafafb2ecacd2d2c2bae42f294118ae82404721fe7717e753856aca8093e77cdabaff55b339df1bb6e294295a943779094c6bedf282d594b91565a7ebe4e96f6390ba2b58d3b29d3bfa968dbe9902cc0e1705282b02c6b748118238a10555589304051d4c910d334853200210469ab81d7ffb48fb61b708fb6ed2ecd11d19d2e8239dc81b53ca60ef7fb3efe7dc0002e8796909afee9d5498671d9e6fe69fb73a7ad3934651ad853abb6aab610ac555418ac604338c2b6150d8622a0bd576c7b4d5dddb3cdbfd34a808be6033e4c08a7b97b0699c9e708adb3ac1cb65dda7bf7307154efb2edfda5bd0374341f2f62c93058324cb636ed343d7c1445bd36fdc4d3f49eed7ba84724ebea7203b4477f1bb140a66528ec3672d996ef5f65a6bb6c83b99c6d236d3509902068ac9fd8965468db6bce9f6f23ff976dcea973ff9ccb9e73cf73c3c470ed3b7fcdf7d553f7b274cc7fb3537f24152ec86cb3a1b0154e5f4d30e635f80ae1756d23edbd6c833f4185b0b16dd2ee75ad9d0fdfcb7ed8e82c2a86ffbea106ff693ee0276c081fc26cd37f993b1eab3f8c5020be5a86ea011a27b6c568f99553f72d5d501f66eb0217e6ebf7367dcfd2f96abd3f62da08a9999999a99aa9baca9a9aa9fa3eb12234986d9d3e121362bdb8328baf98eae776f5b2c38400f2749130b284222025efbdf7201390899889098aa266800345c1a0f2425513bd106b2ccbb23a3340a019a1135147d461a264d580a2aa58ed2e866524193248305e62c46082a2c18394a03451a4080e319dcee5b9ae2b085248d1a1c175b9787697fa6d32920449911b26bdb2d22c2d2e2e303bb868e0f1b87c76776585a5c5c505061e1a7c3ea0100804aa2a94d12885d4e994382a2598d0ee8240a1135147d4f114d901a606a452247e3e138543134de0101362e2f2581c8b733203518da84654835233aa19d58c6ade7fa994430e7d9243773f77366c34895455d12a715ea548e7379092269a28914830505151796fa28ae0b0f2deca2b31f14a458a1429522acd9011e3054686bd4b0bcb8a0a296584223a09813e9eabc3b162454d459e02acd00525555575aa4bf5e270389eea03e19640592755d5e6b52c1b1b9b2f54a9036f42ace6dc072e67812df13fa742ace6d910cbba5068f18a700466666566654ef769628289dec20c628c1eebc3fce9743a20f67e6d4f7b863084213c2193995b0baca4a6a6a6a6a6a66683d333e70697fe94e5bbaa6aa71d33a14689e3c60204626ec74a1c37168e993839118998db31136a1c3716ed1c33733b66428de3c6a27a42557531c51453c4346421c6e8b13e9f4ea703721e8fc7e3e1820b2eaed045166e563005163247eaaaeaaeaa2a298bb122a3c585c5bda83c462291483262642b2923caa585c54d8fb160294c526e5050504442b6a4c4cea864242256f0232f986a154c5dce4bbf6057caf4bb357355c0058309d3ef56029e0635a065c2640d953061d8133038d9cae7037269712ca150289e9c5c4112c1e0c0c84844483f4d51505415abaa5a198da8aa8a568c7137c3586c563016259dce25859114261cec55b838428a1e0ea9ba22468b6359d62e0b077b952ae215918b23a46845528cd6159cfd4e67f7616f419716374d164b4622d22b5893be49d956844a2be78a0ec9499e3242119d84409f3c64e2876d31a11da22e4723087ddd3535652a1b312b251b0cc50868d33b6c7bcd5d1784f12b8feff19b4027a90bc3ad083e46e252cd11af66bb9c4ca1cbb94fd01d9be0d26fc8d017ea274c6f718f287164a3c6346539903884a3d17bfc5ee672359905c53956a7e348978a4a7f96fb46f386d6fde6eeceb9abbb98f79c4fee8e007da4b729efbda7f2de7b59cc96329fc39545e91bcda251f45f751ab1edda42a3d79287f0906b355925c59162ab5c5be2b82c3de4d0f26b5cee99015289f626bd623a2791dc350be496d5ef29a6bb8772c1071946f442dd02d9e5f9f37da83039040eeb7c55a515b30dc8125a7c777777f7876dc9447b558cc927c72f9577c570e9abd3de5b3f4dde9a9565cafc48269ad3e975b0ad86e6a6a9e2e18abf8d3abfc1f73a56b65d31bb1e64cd788d9715ce77dec23acf25b8f4bdd0ac5f265bb23ebecbb69c42733ce40083a58c3c709a7c98de733cf861718a8eb55d6cc9da624bd633092e7d8b83b9b79c4b259afb2a892712cfe135bc347ae8437c138fe0d2771bfc914a3c2ea59f81c9c862c078798111239381cdf8920bccd5a15a6c60b96125464506c247c22185c6a8064a0e221d4e0010b201dae173c383e3cad1e1217274ecb07668c61eaa005002987c803c9ee63ddc009a003cb30570fe431a80935a43d392e6fe3555d56cf34f249a27121fde8bf1d73c7976563df714bec5d461dbcae88a22b8f4e10b954585a14c84bc68ee54bd44221b87e0d2ff01c3fd253abf3a580d1743754c29932d8367ac4de94dbac51a8984936010640def182d233e2c65fc5ff61e4fd3347133cfd852694bafbd9f9cf3e9bdf7298371f79a57b3ad39c8a5ef504b75ff29938d18063af7b6a430aeab95eb0397a60dabc95a9a60e00d1e6d78554c74766cfb31bac19af15f2f2ef798c81eb8f4dd55328d03d388eeeed55d0cb33562293587f8d4d5331d36209aa65dc1a8c0c48a828169e1f4ba8d81131f16eab7518ba6df3c10fe46e5501afb1b6cbd61f5f3b25a0e5d961c3bb2b41f75474869ace81d4389a1b568fb3b627268f659d2dfeb7bd0d486a61ff3a2e93315cceccecce10eac95ae5f3f7397a89c06b56339f410eca0e5c683969f9b0e3ee080c30d323366bce4a0ed6f32fe596cd0f6371718a3146d832b1bfc9c6c10569153619d8440c2ec4f980344da3e64d9f71bb47da783b6cf3c68fb10482a18c03b687035769a1ba1b9073776e805e0ef7643de7b2f9fb723a29fbb76cb55a88240919f04ec01457fbe54a9f5132e830c933a98933a963ba0eda7953a34f733a68efc4fc838bac70a791cfea185496b01507bc29fc75e8cc3b384f055da6ac0a90dac9bb4e540ca38225eeae02ec253c772075cead04e1df942d8017feb6c1e96a4b1a1d00f97815cb405815a24f0f97c5826e0f178562870a954a0d3e9c04c03efbdcf06dcddc301e788e84e7711cc61a830f3f11314292cfd9b484b8fffd6a172e34ff5385acabfa161b8641316446bdb82b1fc8a8b4a0b89256565a4e29c43213907dd3f518a0f08dfc97b2f84f2de0389de7b9f93f79e27f4debb40efbdce87e3b1aed8a938ee4e59ee3e4577879c6dd5a37c3fdfbeef3bc7d90fa9f5bb4e1da594f1e1be943ad2653f64e9455a54f9d2eedcb9f31eaeb40289205a26e94288768396564061092dbebdd699ed2ef3ab55d7fd3c7633e6ce32651c898abf525555e520aaaa1a248547aaaaeadcdd9d57e0eeee2fc441748929559b08c3a4001484aaaacf929784f2f4842465f45d4ddc2f2dc63174ae0b52fbf62581d3e350d8d647c02745ca681cc3b50f2dbe719f9e722a6e172f71275235a5fa99b4d00e792f6a40aefd25222488a68cfa134506c3b5ff9849caa86b2672edfbb34dcae8fb7befbd6e0ee24e5cfbef39c8b50f5555554929ab42d26a25a6a5ca29b8f65dc59ad15f2f2ecd7c77b7d20c762a90495d8454ecdc797272e4bed10cbbd5b9f6eef6cccc20999944dc7b53e7a66632c3a676473be760376ba629e35312a0739d9969a3a573ce39d71dee2c6675c1e42a566b45e52475c5a5dff91633a7e0d26fe6eeeeb522a7bf6310a1aa3226d694ab261e027b93333912b9c1ccccccdccccddc4e49777777bbee135c55bb97ceec989bb9df4e90b9999b8a696536e1d2e71fbdc44cfe7a7125f7c628b8f4b99b999999e2cc0805d2cbc94166bace4cb66118e7dab9fe5c3e42571a4fc014730b2e7d377112ccdccc7df53b013bb36b20cddccc0d79cacc8caccc91932b2a422054150d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d4d3b7f70a220d5ce1f9cdee4fc41874cb6097f9b994dd40813e7ed5106cbbb3091348932d88e32b8f4797779775aa2aa180ccccbbcec857e8199734d50f5baceb839eb1bcdcbbfedeeeee6a70d7c55559fdf873b77bbfecedd6dab3e10a75b866e9bbed19c8596af44cb245a7e05840aed6cac7219bf27444bd1dddf9de1404b27b694cfc3e5ba95d0ae7d810be25c17dbed8406e96233f8d2379a272caacfdccfcdb61f52db2cf0b47d7e1ff99ecdb93b3208d5720d6bd036ff65e999aeed10ac6d06c49593a8da39e74a25cdd5a8a1b91c3934e7b23e800f402412cd477756c496babbbbbbb38d7d686e6676ccceccfb3a318863e103e28cd08d28a89240255ada605abf2259ec351fadbdcc0ea1d323b2de7dcccccfeeeed9d6efb2f70277c2eab359c284013c5cbb5d7039cb77a8edd53578c87befbdf7465fbab67851a8321402350369eee6ceceecef66765d3c2970082edddd5fb7bc9cf98d77eff3d8d4dd05e2ba3ea8f2a51ad2f15de4181359a03cd63923809d732fc6dd1d4ece3497fe9b9c738e9d73ce3976399e0d7e6ae34d35b694dc379adfaa73fa6a4cbf558c896c715ec73b97bb587564d3cbe296da03e1ab780597fe2aa12ab8f4d3f9b320ae2a229ab49014a4aea3c05fdddd0b6d292777773ea97399862e2297be2b717a824bff25cce7aea17359c8a869fedef34cc263ab18e3f4a66a9aac0b7a9efb8a6104fd39774c735fb97be421d7904c797afdd8859e7bab34dc73e6eece2277eeee5e626ecedcfd15c0ffbdfb81352c655c15a7699a2c6c2b6919abcc5d74774f71d742dbdcdd9de7d2f4c95d69e8031921449b20e1ff012da895463e15fc334d0ed427a1c8ef8269ce2b7a6f7a4d70e715e84ddd554c8e109632d5079ab0a8748c5fc5d4a9010080000a93170000000c0c8784c2300ba324c83e14800f53724c6a5a36180883b1408ca4200ac22886612800411888206620438ab91a0500519624f8d2bf116cf0b81a9eb5d0d1fc78cc70da524c54623d5d3f62e2443e27119c62ba5af066e44e8337b29396354832374d901d857c529665c67c255acd5401da5584902bedbcf729a7f446d30866cc882e561291c2e92acfb4ccd077053ec190e033d492b3af73b2ff8064a0be828d9447a53364bdbcf01499273a393a31d303af4685af8e5c613ed87560332b4d9764393f070b1dda0a22c3ae53524e7d6055c469543c625f34e5355b154e4192990479b1c3a720b71d5623172ac84c94992ce80fc8b18c3b67a193849f4bdace317ab4fe65eb8d4ca5292aa5888eeced434bf4f0e363633a2522bd098c75784893e9caf868dde79bbb67a2c1c0900a31d40d7717ebd8d8c9ad468ec3053e0394f632cb7177536416b35615cc41cc72bc99c8d76563a41b2f36f914d3f54bd65e695abf444a9a7c579b3bf397ddbcdcc38d75b82d3e9cf7e3d35a12a872403d11e1d040290f3142266ff8a1a623b942f53cd6a5d13aa56b510c1eb0c64dcf67fa614cd2415c2a4237c72eb31797e4b3ecf5a4e544c20b28986aa628d4a6bb54b40f764c805d1b3a9a6c144d71d3f4554188a2c7aa1ff819a37f0f32a5f3fd4dc0d6307672418b32ca18324306c79ac7ab2734901b101dd6f3680b4419910890525838a5245ea2ca706dff3a11d64954a177849bae5b83d4a869322864772eec4e1cd8772b9b5806223a6acc05ea82db4779f2b2790f1a19b765459f1bfbea616b585ef7a653481ee47d177d3ba2343d9293f2ce5299808e476a61a205a1f7b50f511aaf996f934aae60775bb13577c3ceee6e8a0d79b93d65deab1d531610faf74bffaf5420ee9607076ca0a95465d90df02ddc6d83ef824131d5acedc224ad2d2dbd32212d3ac8a44792a7b0356f705f4032117a3d8eacd19f8197459cf9b6f31ec67efec3c2d96f97700ce0190f439f2d465600a183382d2b5ef5d1087533456d0a7b9af563c3a0e746581801c80a2200e0ada91a870a5552321ceadc88308ed086517469dfa451deae393081b83f078d4b2a580549a65beb0183e88c51578f8a11e3f775bc41842a89bed1bfb18b3c507566755eeb936ce542bc14a198c2cfee4e461eb899201f631c81ab53e11a539559b64c5dbde873d4d9f10bbcb3c1728c18d0f940f4e3e3de5a5ddd55dcd019d14773777a69a30dc72313c7e550a45620e9f58a4b6602980aab3f9be5af0291cfe8a857ea936e2edae4ba088aa883f21061d3b732dc2bb0040995b8e2ed236acf4d24bbfcc825a345c063aeacba9c8b8f2dfcdd24c6d921425abe57603d66229b988a0104903d6d0f3216fb422e44968b53b72f78b547b9aee93da100b2015f62fbe2ffecfbc3dacf607ed37d44c7f95b28de0f1aad5ff28535c6c3700e67842dcdcb57d28f4fcb55a881be50bed350209593671990390e2f70acbba41093b51e5b022498a852875c07677a31b75a565c23b6892b2bd84ae8efb808e63fd7a37a3b17a582c6c053badd2f1ea844a38e760509ed92213f251daa7c0332dc347658879bde588c57e0b0323984fa8db1d67f72a700ab2c7375610fdaee11dc9e6064ace696e2b8b4cf05f61912f30562c511d0e357497818af2b7094ef412eddc37de1ee3970b39bf9eaeda2ad4a2a17548b6537a04851f8b36bff21be05007c4f4baced895d9065b5b7a2cd70f4a35633e6d98b750f7ae1387c4e39e44146cecf32cf2778c8bd51a0ca9b99905fc84650a73b594e5354470192ba408392281dbee9db4d3d4f134da4b703db14f6dde63229d5a42486a03fb06d20a47f302f5e1fd250707831c56228b0af94ad53108790f8ff78f0c138cec07a6c00f454d90649fe5b35829be5eea77e859564085ff241280123e589700984131f5c42cca91e457c61195f54d4458eea7c76fa7299646e5666530fc78c11dcdf9605b28796ecd5e76d8f5678a9c71402f4db818826a704e034796844a03d0f8f6542ea0fbafaf3b91a2c09c731c8399ab2b0f608d206000cc3b889bfbd6d2cf272ed83132e6a3653355cbd748864c366b454aec3d20957a96e1b9fad340a017c565df884c093fab7c50b76d20cd02bdf1a4d7a954ac9b298ce10d295cc0e24a35c13b30818e216bc510d20376175d99c6d591478491eb283a96337f5ba9d8ee6e5c31fe1307925d1c8615e1f6c5a2b8cad560ec453f04614b8974b67a3c89d192106123b626f8fdcf4f9dbe3a857f94ac261a6d9edac2e38cdb23bda0a963717c5da9759477548a3225c1e8a5d69a3f79e6e158652eb4c1b369252f815c4485528248082d957b36564c2ac7285e341205d78448663a22314ebb9781fcf6e2adb7784b6bd5978af2098df0d7572d0f7ac36658e24cd884da398c8f76e9746959bf0748534c37d8eb05dd438df61d771a774671b17464de1b66ad7c16ad0e93a11ae471a7495b1c20f606d4a4a74f2e5b5d64c62fb2023612ea6e3a92808bad8bad610314bdd04ec913df52828c8b8d60c30a910846cb267fd4f4733027ed98b20f42dbaa8e228c313838a81c52521e062352d4834adb5e8f0e46ff0670354b1a1410641eb96321c6fa309e00aa549198a15d61a56b59ff9ce17605e8f4af11b35228f8b99acd62efefd6f82028745d6da5ce20d4a2f6122185c7fec617441b56db5940a33485ead0d2fae27fe865f344b2eb6a5770aa5cc6b5bda85408307d8e226f7179c425de94328d527a47337bc649ff4ba5422c29b9ee96e8b99218087aaefef9380673aca895ea0d21accd9a6465c176a944627cd598e8ff91db411c57a4f63b72a539fd27cd2ac040f40dd27606a09b4112b93a4b4c5a1ac8c3b627d8e945e493367e044854d468647e9ba6895132a7a4ed6d48502863419000044686d26c3cd862aac29394375879774921fb211699398a10c379b3f36d42cdece25c73b6e4f705be39bd451d7a4379c4a011be043b49ca71389d58a77f1b802d73f2d6eed188bbe3cc918ad5667d03f48fb358e9e82717686758f7a5e1d95a2c432a5a938a745d89b38286527fbeb6cedbdfa7fac146a56aac4e804a9349d5291916e772f872248ccbe575d81e8e58510e15b98d48e3305c5f21b8468476a0dd16134b0f8d1bf913ed8363ae080a56a9cee753a47bae53e06f10db77c51f1631ba6fc1a9e4baf160fc80b8f5e045d6284c555206dabae97e9231a95289bdd3ac99345e69eabf20d924459c57aeb2d05bcda12781140ab2a2d3645cecbf2a15b90e17509650d9abe6e9f38c6a393b27f1bd5b74b9d515f349b584828c9fbfe01a0d73aa3964126afe7bc07452877d3dc641685dacbba33160cac09eb848fe2fa6ae71eb9cfaed8b7634d25e4ce4051ddecc08c6b3afafa89d22871dce05540ccb6062b84ebd38f573d2e894b2a0839113bd726f96bec0854646b329cebf261b621b73d234dfb1d4b6ce8e69714553c3ee48a7f0f9aa0dc1e9d1e1db6a4eed3e44c03d8378daff9094f16a91d1fc73fa093d5b9d39e3491fed312a8c11b92cb78b2674baa92684aa404484451eaada4a434d62208902c64776150dc66e912def60c6c790533a7aed59065e5857d1fd0aca63b27e059fbcb7a58260a9f788c1b9d4ea1ecce1b66333dc0588e8fa1d7a60adf3356ece14d77a408871699fc4a5fcc19a085701741ee0d6656f0315a049e5e0357c62d2c2e0b7aa4535295e600a1f2e26317853f9b9603e3ee198bc7c65a69da19827a6227fc6349cf3b90ca27f5bb1dc8e56b1997842a05ddce4e4da6590e1061819e0ca83a1a56bbe5d64300d0d81830655dbe6d51f6875e2c63ebebc4da0d75ec65ea090aa7a0714c476f989488c1ae9fe840cd1cea47c66b2d8fd6b6171ae8c7a7b831dc8d45612781e83bd9017880d91ed5fb0c8260e3307973c740382a5f490388e2958c86fcce4c176c711c320273f3690be648b502e2af259fa94fbf4096a103f69b1ad64d9105299df2ae41a65dd2c0ef05c4b8afa97e774193a8b4e3934c9545c947c2d1659b8cedd295423d64612acd9fd3f4daf898b45789134d47ee82c1ed1e8163fb4d4ba5981a813751cfa0fb78e0d229c77351b3ea5a72f3cea6e6d0f52ad44a411351a7d27ab0245025f3aabac9a9efbd2d650efabae48ea969cbe086cded0bdc03d7705f248f90adda1dfd9c4a445d885d1755053d98b53bdc0e61d547a79087ba1d9bee5a9e5d375eb508f334010a29465bc56f3c8321b5f2518d1a85531d0ff2dade0c7777a0982b25cb4ede0fddeb56730431aa5250ec06123266110393364020cc03d56da508090c3991a64f0ad3258abb208d73976aa20e583a2c4996f1feafe2d0908a39ff0d150449822e15d21cc712e2bb139a4204d8923974779b8fa2df994d8af5bc330ae32b43221ad56b462a38a8798580841d303496321b6c5a5bcdbdbb23dafd230861a37c192698dae258eab1690271805add4c3903a817e77c1e8d7ff64e04a9304919e8b4c29cd79770c62833d815c4519c245be85be324ee7d9756f2539e3a559ac1647251e7f15c9c95fd73e82bc135f204c4afbe2152398cd43bca2c32cea07cfc1bbbf8c858aa1f749d5b49f9b607ee1b47f4ab5bd2c167088ce9947e91889589b81b9def9adae4f595439d06f4359419ab71573fe285db640adabfe7735d8e6cc6a00a0c12a12a20b99391176f49461a965d9a43923470332990fd43a0520b7ce2cd636aea5029306d3d646647c4c9dd9b73c7a3253401218e1e890a036fb6ae642d8dd3a8b49e8c6aa9ede826bba2884cbb915067e63963f4466baa7b8375172a594f5afbc8ce39c4b67f9e212daee200dc0620510442c4439db54b3de342beb86df9b9ea7a7066fdf60b0d79e080261e5593cca0ce7094e9ce453bfa0ce7c91926089f43f83d6b2bfec3dd59710355b78e8a9cf9d37c3f5c78b542ed403a22a557b572fe270b43d03b9488a36817065d48b7841be390db8b0a78adeb1ec626e82e59ac4d1939c94d18e50f78f3ad929f43c85484527e72845e2f4ef7183fbb9546da73b33de516b84101669de14c732ec3708c54c0d11b3ca29fe6424a9c5ca535ce16e14670ab3fddf2d0e1ce54aec729b71f9696e12dfe008400555e12d84f179bfeb2a18c57708484c64962c5f8f83a62b58ff5571ac9d0e5328f8f9ea49260c763afe7743c67796a6078b937be447c3c52910602053c8d5fc4dc903c86d0a4045164c8586aebc0db53fbb3b218ecf4b34cad5b1e54139b0d5ff2986d8bf6bd54049e45d488fcd54e8d97710c1b384dfd8447da51db6f0927de8565eda020703253eadcb81318616944b5a14895b88c7558e0ec0c57d712777416748e18994d14ac99d80035161cfb60f557aff5d0c080365d19c9f808c584d1ea6aa656cae40aebad0861ba334d0d159820e4a8d9c87ac4e6d4dc34aee61cb597994eb97ccf5a3a61270e8a4f3fde4ac6c3b9431ab7c0958fb4db9b24c3a43660799b5d220e5c90b7b03164641579949803659a1483118c84469840624b937ffeec16a03ca84b892d64b03ed106f6950af00841e75fbc5d8f4d9ee24e9a31f8c3de1051d696fa65c170d6c35d65f47065609f198957ae0499d6cc166101f3e2f2e71fc6f00b69f401b6a294f3bf64f040378093a4bab4e49d0d1ca244e9671ed8b5f1c093e716a679ee3cc90064ee7992453fc6524e3130a8810b07cb3c2e423396dccc6feae73963706cc368861f62a2154af9232c01391d499dd4616a29c4c50ef8971eb847bd04998afb7d18891f1b5d06c9094b093c74730ba3e4c3cebe1533a52ba46a25a0fccc0d97ee2e584e15995acda5701590e905328ea8d37cbf45896f96e29dc8fb0a272300c082d6c079782ade64ce94a12cd6794fd2e41b91065d9b8b553d0eee51ae8ec56584acdd284ed1ba5549227a6ad49255a534da6d69d708207080695aa6376732464830956a69c0b22121e3c783e38411bfbebe1384ff9236abe46dd058b32e03c05573051f284d45ddc8052889db48b2905df234d078869b9cbd79e6188d33c7f228c09b677c16a467bb873bd5f537ec8395ec6561c96849d9e6f1c152e1c04fd719ddb8f32fa8a94921cf8ae6c1c55e52a9f6ba7cb56cb87a1654c472064fbe30ce9cc8699ef4c588a9c2a067df6925b2585223053caf511949f32d59d8166a2b6fd0a53a6b4b8313d24d0e444b6f356932e2c90a55d49a57800585097a32e105eb95c6500e868a156e61ca955f8548b9b7c3e09e6b2d45f10080b319ef6db3832e0204522f95ccf4055f336dacd1e3e3492dffe30c2595945119e0b6ca17551135d3cfaa5caa8d9cb4365040981c96156474a1c456afb67d8d639b47a17dc17d909230f1aafcb2543fb962b78d385e99d11420b397853371c3926af424b948df9e6f13341fa99b6b0c3d016bed027023914a26486f270e0034d02269498b52e85060281121c82e8037c24f499c280855bf91749324c6e82ddc925017b296f53a3b6acb93b4a9092d539890b214255b24d514bbf3428fd4866016528922629c3954e1ed254fdae4ef6b0ddc42e764d54f0b71bb4ae96c5049ba7bc9fc22a192fa7b06829a29979b322f0a839884ae89d04161df49540cb7f364f1a1d9568aad178ae6809395826b20d271a853fff079f2cb313db4d51c015bae455fbed13084a15e77ecc19fd54e4a43f099fd4e682eb07cd5ff5eabfb2464aad20be1d08ccc09257cb7a8cc552751982da9a9540ebb68d21080562280d2273c95d99086ebb5f18cd0436a5ec9ef1ddf7da8f259d4798f7a0979ffdc1312dbba537e42e10add8e2e0f75b183056dbc8839a0c285fc2a6d889c41bac572de6b22225d7878527ab57e6df57f5f55364ba9e31843466ed5b3fbed7a8955f60ae95c37819327a2b7757a19d1ff7d528c9910e26e67c5938a439a0029e6f394c28230b4775f64148ca7f5705eb31c4c5cf68135aa063f0652a71ec7b4df14ea58841218a5e62b08b5acde8aa978a7889840d8c812dba1790fe69494bd82da6470348526aa18774197172fb5315aba308b72bada652dabd943e6efe5cb7c0f0276bfaed6d6c4e68f1f52220e8e3753764b667ec6277b219112642dd2e8c11b802c8082e12e59dbdbf5af9781d6011354fe79c78675178b3520ad60a58824a1f04c7999163d33029e4c0974728af093c6b8b04aea20b66b0a3ea1299cf0eb3b421a6fe2a7212795c00ecd09c46abdc957a8c8580059930f04c8b4f9a59ffa9bced55fe97b341b38251acb8555a6253dd688e7e59a1119c5c21ca2c4a5b8cea2bc33e65ed7d79b8f42d9dd51e0ba02d536bc6a56196f1b8cdacb77b126907dbc79c2e0def104bad21d5b74302fbdf32f720033a77c2d982de079cb3102753dbfd38cea6b545954dc9791760e27104d52f5cbf9673780b68291259bda246f23061951d8e25c3481336fb79dd4dd0570c4efccf5a96ff619295b590cf71c1a3ab53d4933022ce4e0b20a0dc570c394f69d27d2668d090b97713ec5bfaa71a6d68df14a6c0d9b035efa84aceca9a30b0be152b8e883a38a956a7c87bc29c8ec716517d393c964ccb4ff3c946849ceab152480e72bd9bbb2842aacb71b2470182fe5dd7c89de101022aada0b5e358f57d624c8d9e749e3a033ce502dc02dc90e741a4c2ee58c924ea8b6f0adc37bff8908902606b371123b598e5219ba761a1bfb9796a1d45c6119defd0d94880ff4ebadc7c2702a33a104bd676cdf41e221422a97acec622b4108299e55ed58920a30872db76667c36aada07977b6351583ecdd305167bd795a11dbeec0c90963da8c64ffee8c14088f515cf50662e795aa59bde210756f31a31f395192ce89110f5611e4f0749c5cee8033fde3332bf56dae8236d2d420dd33d8d0c7825c2a89949d6d1af4653e30bb2f535fe32793eda8bdd3851e5eb62abcebe20f2de75caf97f074319bc6da0f1ef4e9f72a0fdc91fb34a9eaa968fde8b6b71890d542f7ba667f80f4c91f8be90749509d618e5acfda3071b2c71acd13bd1fddd2590769df45f18e297cf388c9f41b192ff63721f7e3745e61d8922a86bc2140a1351a65b493192dc195804f0534db8a184a188d501ac1e85f5795aad6e3f32c445bd40c13e5ddf019b3e4a3710c23d86d25715e3f0c22dadb95ba0053b031f0aac74023b9e42c8d4a08b5101dfa08f86498420590d8cec2c2a9e32092c8491c567f2e05f1eae80f0e8d294882463a7f288a8fa8c70541c40bde13517f13747c14ef3bb01ecd8e685d949c0ea110ad3660498cbc9b0cc47cad2a66266d2063e276a94527debce328a531445f4db43bcef2a4d9440d9b721ce53486e8bbda5988358f1c01c3850b9c8df4e742e5ec2dc6ed2b6c1558d4a07a326d69ac469868afb39d526af266a0a3f33f49e529878638d1e2304a690e51d7033dc7514a7388bf1ee83bccd235a6f8ab893e386f0135cc29a0643487b7dc2b57522063001545cb81daef08dab786ce891a1bc2786db6c29cb517b7bab77da7ab8196c328af31c45f4db43bcef21a53fc9589bee32ca739445d0db4bfc305ea728fe0ae3b891a43d2383a627328954a93707a683940dc099b869095fdc95819575ed808defd8e91c2c98f719f60bbdf6436d2ed61483d76690e499656242979dc380a59668a19c785890f73409224504ad3347c68d56d7ce22a503b28a41f507a0f97ffe5942ba0a1b4341d58c7e7df94fd0078b6a4c3565dd8c0ad1bbb7b837a82cc264359548554e0271dbafa318a110c4c9e2b7c709b5f52e055946180af1e01bf19997bd70f96b2b5d0a6406d2da3927080160a5a5215b9619fe66b1f32b81ae4c9aaf3a642e7d2f482c1d9a80d0dad7bf7ce936c567c28b48449ad05852683f65c4e10274b8f6e8dc459978e5ad3407c63c6f132aec01f9e8ec520bc3cbabae97ced0b6b0000153b6e0464b218b3d273e4e8ea95242a97c8fe322cd1f308a0b48e5241a6fddbf95762a08a218273f1464def62fd4d60b88f7cdf20678165a89fe0ca1a70e27fb1502fae8cb6fb4353f212c715452c4361c1c31087a1e2e673dcfa150440e84fe5f9b088ee655400dfb912e2dca712d9867ccefb8f5476375d150f5ae58b58e831effc6690d03dc8f031e4c9f553ff7b527a2e21fa7ef275a686bc66979230c91877aaebf38b624ff37091622758f888c7edd4a9a17cc8b82a7d73d94d4189144424670243388248ba4048842da4dfc19c2b73afdaaaae32408341b854f2fe70291c418190bc2c05c5dfd006f223f01ddfb6a7bfe32f36a454d8150d38b1cb26ccbd4518ee01f6ecf5433eb2b77a6773584487919c78621fc641d7736edbb1c7b75c9dd31f447bc5dd38baec0dac5211125558a3ac1aaf9d9445eb34b53b42bfb7d25409be45c142af340007d5502df760c661cfdacaa35411627884ee66a3f54bd22b208b8c49d6672a641f00b52217412784ac202db4025e1d03eb7aa85c28b7ddfe1cbe299b3ea6e1b63036814d53baf330dd5dfc6d4bdd5d313bde81de46c51310e1164ebb870e0e55353a8b2b2336d5b764557b5119ff57c31eda952c24eba3b0b479f2390aadd25f1d33d6ceb86fa1941a54d2b09810efceef82519b1bc62774b4194367f4966b4981a58cf383b277ef638655c309b69610367d496f88d75e7e4e87268d401f54adee622c2980f05f39027a3042c1de28aa3af1b5e92baf6461d81423aec1acff02b9210235ea770ce3760a670ab6cf8d0e831147a335cd5a001ec518fc42b2807745c2ff8442e23927bb4425c25bf48ede99df54279ff44e7b2ed5e35788da8da450705f315f9feef8f0fd009eaafb2580fb62c1864b91f6a526c376425d1fc0bba3aa717fabd0daea6a3853cea8da94dfc2bb5356dfcd7aecda3c44a3086aacdfda7e10995f82b0eb71692797a3ab20065349c9a228c4c7fe075d2294016db052bdf65075d720a4b16e868a217c2d82a20c4cabb8887817ac15fc6b9abdd7560141a5c94908114a75f20d6139b48dcfb9e5c02c8a08b959614eaf4f3e9fef15c68c2dab736a25eead077c39397bdaf399c1d7c724fc187f10df99b50b47687973d2606c6c14e0792e1051f07c8c0db600b7fa41029a7f56572facab0003ba4504a41ab8a512d04c04609febeb70a257fa4dde9ada4cf88d9236e29d21d7b5f5458694256cbc2c6ca4ac927146a6ba889ee80c4bc88089958624f5d3d91f2e5da5260b8575737ddcd4b90e02f7b394182cd845f55636f5fe667295d572a57ac12d7fe5ee31fc59f609119e25e5580f0008dfa4ad9bd5b12a5dada63ab7e93455696d1b5aaaa8c639fa626d1c8022c3fe47d6135fffbb2e11ab60484ef5d5eaf8812a07af6aa8ba554544ab8bd833a04141bcf670f5ebd096526e06781a892cf27feb81806bfb3aedfe7e7f8b2f05f35da0e25bdd3e29b7755b561a4ba7f836e129b395ac00acde55ad2bca057297a069ab7c1a52ecaa998c16a7be5bc657d4665d8fce52be649d9d66438edfb9d6775a0a1495cd1e174eb036df8f52777b9fa69c4d1b88bb4d0565ddf5f6bd394cc62ca3dd060c5c1262e955b7c7b7310f9258ca98ec30477090bc0119d4713a76b687cc80c1023a8a53f9f56a417031d05a195a9880da9b62bb54d211463cae3a684103075259626456579f1551a34c8de9968c84598ef679ff778eb30a20a782f66e54bcd3bf09d6a5ced7b2ed48bff7b81ba8e585cf8294b0a88da052b1697e8c82d2245d22313643bdd1abacf38646d3d7d6688c7f4a1391869b761fae74f6c510a1c531d6093bb327ab7ea6728862b044d69851283630243890f43dd38bc3d7a345899c7a699747d37f04d005065c6244927065e7e751078461555815e5dfd5e40b062fcedd9162609fbbe588920c383a76e2fc2b30371db91bfbc48834c3f2a52347404d9dc588d210d8a957eb4a2baf405e7adab2f625528e7422b7eb4ff238e356b2761ae635d778b583d20cecd550732e7e04a0aa6d778388fb8740e97a41cf7c4916202a487d2280056339f542f3fd4ed285b09f068be12481dca24d169799bc937e55a670f29b6f08cf2b5c2f019d07410ccf6aa4433ddaef9aaad8e8294b2ecc19e93ecb62acfc24307b47915312b6a3c82b0bfb51e62bcbb02c07b90e2c72ad52628c48a6848453252a99b070b29438347b8037993e56b27ca29d461923e5a48eb9fe1b25281b17c39f7f179644b29cf4dd5b098159b810fafc3ba5bc7f6b8eaa49db516495a4f5286f96aa6db9b2f030ecfceb12fc0b04198ef801e627b80d621f4b95d2b9e0bd71d9a6ca46fbf79bc56e01aedac6746c63850ad7fa692cd5fe04072b40fb89aa2d8c8d8c9d6ed32d715719e46721743811d808c0c65822a47943e0152423cb433e1123bb2014d729a2d4d1ef42092348bfa028fefc91a4ecc04d6cb639a66f8d3010d939d9eee7f658f107b5f4c08dc3c10a8de1cadf13b8180b95d2c3cf6d19b3d39617a02322db07daea1d9239bd4c2ea35267e02592cb1b97541bcb8620ec67ff640026d604c4a367e5c1bc81634e58e745762601235516ac94bbc93e5071aa04490dc9846e26f71fee9f732a90e963e76e8b02edfb027045172998be093741276b9a4cf9a8ad9b2d8a2f5854ff26dc7f29e4c9e493b8093a59d364fa266e824a963499bf89933ff442c1a37855f5366400c6c2c2c634ef3aa1fa6301c08721c1a025adeb7a211d9f708ec4d8067501164b1543c4269a58236cd4e2a6fd01c41de75b515bbd0b080bcf6b8e79d2e60f66bcd5068afb0a051588f954460500dfb97fe71d4145f8ca4bf7e32b8ade5660d46cd5506b1babfbcee17032a0a1f8c24aac252e656bf21c415927665a53b73244ab6add67b4a51c2dcdb410adaa7d25d78eb6841b74a56c9a1df08212bbd1741b4a705149d8f156bf26af5572e37571714c0cd82fd15c2d1bfb44a6142586481266c518efc728d6093160a3fa490d9717bf2d2355a334d39a757185f7bb918cc22b6b999670243e45c5074e6a358f710eb776937f941b443cf027e31adce80ed7378bad18138aef822680a28b5d92b5a48559b8088b79308394e49dab642e15fd0ff892508269adf88bb964c32389a01075571c9614487e1c463741afb8c49a91727edd562b1d49ff82bc67a5f9a3d416f9d17984d7a564c62820deec0b7fe3b42642dea6a70422cd3ec19fe7f9cd23e3ce06266b0902d9d73bd2c0ab562c41362e601dec1a86e1d882a8f794f7881577c48905a3e63ce245e35771f07cc4ea974afd66c176aa582cbc1af4702bf57a3e11b1ccefd3567a9fc4682e26f13742ed5429102ecc6e6943cc13ed80b85e57421827e25ff323b3382a2954791510f72d1afdaea2c7f3f145c142e2029e21a8c7c014f424187863f86ee8091391c62a66cae5250de910ba05d8ff184cb4e53b829900e07309913704be2d722033594b0fc0b620ed39960d2427deaf473968c86069a9c735597af3a0b3a5ec33caeac72dbd6c388b5ce34b5ab0a8f6d41d21d3502b28533c93827e5800ba977e5f8e30940cc48dd00b52006ece212cb37fd919125f614e5330c2f413ae4b1a40f5e2281b633adef9d18ed57e58039eccb9fad66aa38214fcdfd2ac0d206145a355eadfb212aaf64c7220febf7dbf6cb425f27cd9bab2d8376ee93683e0325543d6e97f9806edc08335e0b244c3333ca0948f12ef01e1c7c0a7843b1d10c6d00d3c12c34c6d4e4a1067b60ba7908500322a0c5c5727a795ec2ed3d879b1f23dbe566d4814894e862394052cbb1e83e43d6f102e97adb0363b48ad461eb6d6c23331b23eb64dcb3b6c0a2354d9578316a99a9fb0a6284ae11b3645caf44c9ffcf28d1e448e319a7bae26e499c4f3daa97243e2fe6b80d7cb3a20bf90d626b731c9c7fd06bcdde0a5bd54bb9f4625c93ca20c402d9219a510bc0e9c56f9af961d542266633159f6873ee10990d7c9295266d103b9249856973ade1247b655dd5682406e6889dda57e34760de4689bc28076600deb655a33b9595c905eacba0ca11d962e1d084797da62e8e22f8ba3cb1588a7f180796779a5cf3d8987d6d8af3076003b74d00aa824c3cf05867d9c6b5961e03d8d1b0eefccea109b227a9226b86a174107a4933269314c505420983a8c642e022a8209e82f488af2fe71516e0cb9ccbc393eead6126f706034cca3c5c05ae22eb1de9c741806184abf1892055fde12b7e79338e4818a3dfcaaa801bbd9f9d3d681d18bd75980b94ada20b9124d5c66c31938c5c4a834e4bc3178a44d69641c6c4c6f9dbbb65d97d4dfab2f6f7682018b3485eab3c795a7955152e318d39f5bac6d82ed0541ed9f2008885d116efcaed9eb5a7552d32fb9c96c37d5ccc0e82f1c4bd38ab626e7870bac514762919df86be5bd368ee619d71c2e496e528a396e420e2a536e4fcadad09a5da975d240da7990052fb2e1792f3d8329a3248113026f3b228f177c69bde82773ea2944fc2f4d369f0f21ff9721caa99b7cd62db1acd501193a0c076d50320312f4aaf66b808594d00e51b03b9157394abd8dd14c440131d5dbf3387b0c6cd65f1e43e03beec94aedeeceffffa9c26c9526bf6c91cf766792847a18cc04db37a61dd7d9be762385f04420bb36add308e6d76afc8ee61a1bfe7da85224f306301c7891b8d54cce8581b109343b14997c9ef95045d6737ddb7fe866be64f55fb9776d9506393e4b47dd7b93042093efc65f6133ea2ef9ac17799edde3796ffdee7dfcb77dcf3533c18438ed93917b19b2db248798bc982a068bf7a82185343a6fb425df774feff591e3590ff7ffba9203717971ca8577dedeb0b7bf346cbecec2024ee7910dbd6f7571cd29952f2df981f628f7eaa50ac788c59a2dd31cd36d776fb457d0db0dbf97bfca8914144b4ca35b3c94a7fbf457835dee5114523d39f7d37a5dfbf3b6a5cd7952c9eb2f9bef7ad96e3d7d4cd1dfb79ad724bc6e26d97d5ee9804289f4f51edbb9efd7ac6b9ca897b321257ffcfbd16bba27dfa3ec607c924b1b1c840b64c2d4e2ab1c63fc7c60ad92874fe0f127589ad039a035f7183cbace5b6d864f524a19a33329bb8131606c7b65f918c484894d54f21492258f76b3e94e1e18c6a02404d90bb57b9d6f722fd86b8e928b0672cfb6c11cfecf631af7f1b04133bcbc897d31f1cffcbb9ecfe491fcdb8bfef20bc1687883fb2dcf414288a70219430090ba4169fe9c8ae4b053fd5adc1bbd0547c8670c9552c79d97db8701013a8bf0b7c847b092867c7dfcf5ee250ac91959aa1b51b2942aec3f83b77489bbfec5ab2e264ef8d5e58ce9f65117936a163edff67aed2b0c46e3aee03a48e7fffa1f2e8de42d61754a90bc332095b6bf2b38d7e98903a4b3c62454faf18717397589b22b7a7f1e1ca1a80049d807e9826d62fdaaf61c36f181dcfdda75fdc7e5c433bdb4c0290ee7abd07b519df5fb0bd0c8af66e34be7196ae299a945fb1c3ef309947fb81bb8a5cfd851112a548ad08fd12eaae3374dfb89d9116109530671da8f6c7174a5b8769d75d496032403a10b52198b3748571d6b079c43013804040373278fe9a25a72224b6076776b2c2d5e4dacc1089c17d5fa0a14e6266b8e6ea9cf0a221451ea8593875967130607bdf49ea2063e32025dd474e46137e9af7a594be8a2feac04ad1275300ee1533ef90c43bd4f56dd138c5301b269a696f0b6f10f88dc48ddb134c2e415d08e37f47fa57551420111688940de7dfdba56d80f56660bd323e52f4bef68ce23678f3f94d414f1787376b6977db080aeccb3da31c5d866596c7f847a21bcbd40907adc261bcaeca724cead52ea75c66cba3bbf4544f1231168c6c8228d8190fe0a1c6f6ec632e585d3c4519ee3624ad254a6e4023176116d986d7f310d73dfcd30e6247d9e1ecc6b391a15b7bc8d5c2e06c1316c2718601ad2ffc8e079e5822463de562422c9602f3d072f08fc992422d6a16000a7bac1cb47baf8e3feb9b2d708f74b499d18c2a68c4cca77a41863778f5c098379ae1871bfe945ba431b63bc72b7950b52684066f7ebbb636bb64d3341bfc742f5f3dcf1ef9e33d0f2c26784dcbc5b44761f3ec6f09c55b9f58ccc588c79591fcfc518e592db5bfd538c1dde58bc8e94d5b8d4c3394e5b03d3b4d7ff0dbd6e64eff6ccbf5748bf65426c2986b288bdacefbd59a1d604a26c3915c43e5d5dd6add0cabaafde965114c235c02597fe08f742b897043d46fa73fb6c11e5ae101d2477703f03f57fb65b02fce27465076c66bb987bbaeba7976aab186e3665f0829cd4f84756021150325dc9adee12136586f37c01d150ac58bdb1a9f924a018bef9f37fcf314651da38e082eec7c18f6ff87eb1db146aea661c293102f7c92334f09ce581934bdd599ba5063adb38f9b427867885b55e24a25ab80ea4130ebeadc8f685c2ad2024ae73824f32ce09b4efd7529c1228c75abac3ddf1b5e57b383061cad57d426a865d8601e58652b9ba878d23ede5166487c84362fef5eeafb3bd658f323d7d7593b9d28bbe19d26d0ce3dfcddae1c6a1bc04918dcbba6f1afa8d47d9b5df447a6d62c0cd2ed8371150342b530bcd4cebda39040a168048690e3d3d8c6661a59640a815887a712c587184a5dbfbd2709afd9ed65d4c11d8baa12d9cae8351a89d4960d97c5cd575c9cf195c696f5d3585b9e0aab21a01642f5a72abb6554ae3ada7edc30c6e5d8964aeda4cb07bf8cdb88787579417300858594957aacaf27853c2823c2b144cd7ad500c7bcd5d37cef553dd97714c7fe7f52a38dd6bbc8f63f6510840395adb35ab79ddf57bf4cdee8a561304d6ecf6758b79512613cd258375037bb19b12968cf5bf3c42c447b8845fe1e2198ed53a49754e342e6b779901fd6265b1e4c4b684439d2234021bf785465e46485ee4a2c08c52bac297d5f41854ee6d1af8e9eebe7e5dff6fab9a33b71349e07753bab148e02e13cef8702f98bd3855866b89d307a037422059d02df8d7fbbe8b34bc10b330e76056dddeae34b430c676c0d105c7cbbfe4c03b8419eedfb3af324e2a8b269d60f7dbdde0d6a416c2ccb43f9a08eebe4888ed028bfe0c594821cc6adea3cbb88843a87781f5c975b5fcc7abbf282718c021f0685cdb124739f67b59acc13d2efbdb80c2412208ab9763bd97146bc22c3c3f91adab3abcfe1a4502bd3456a0000a3bc810e1ff13366d727859c38819b1616adc0355012331eb301a73ca47fdff44ca0142e21a8d15edd672b56074b02d9b18e0d829a657cb4c0d92e58511074ee559d21b1722f1b21a4fd51427f6685659e312969732562f2896a95f8b7e4cf0675f7ae0f478903eb1834e7ba5df34b5b43fc9f64df7a910253a8dcddc71171ae7409efaa55880f7b4c90f8a0453009f6e91f76f0d7b6ef78f8cc45d9e5ed7ca1067132d83efa663953c067ca4db8deb4dc5ca261dadfdaba886bcf4866f0e1086b385de99661bbe9adabfa14b8e98ea64c5b3580f6179557ca7a1162f592404f9d24b8a83cb01227772926bf1cd836ea470ab1ce4d5952105ca4b254b8249569b72165c36cf7e1232be88a36957d83af6276d27d8d6391691f6be4cd6fd6e31b0d4927dede11e2dc8beeb284ba6c2e1bbe2a0944f0ff2bd3803b6e3679a33c39c8ab82af38eb1f08141bef601e5a952791a0d56f88b008c7c297343ec1ee72e95b7dd24fd2827642fe5ba460eb4ea595038b865d6e12d311d7b81b401df7efdcd2c3140433e967c8fbb255fed9591adeb977c9de7c2320ece483de61cbe4c5c815fa96f967c01549cb4dc7b2bad64685aaa537c7841e432e88227fd0697c12d857976c9f7f6b61610de408c883a095c37e0fecff2222b065a38a7a5c2922f0825783b5da5780b80e215b5e305b8b634d8d780311067855e0e36f492ef68b54506bcc8e31866cc4ca08a4e39dc0b58f2d56cee9d99b2c43d118140856c2072af5d81fe879362b20889ccfe81ce78c9173fcb2592c6c80c719d4c03160f240f4ca392840db0fe28c57c629dab28e3312fc2f644351d9cb7bce4fba35be2fd86e8530040b18fad71053c678ae6408f63239af60872a0ace32ffe677188000bed6f0c972ea00c30ebd536a0af9617a37699b2fb6fe70321db51fd8c3607e8a36f9f07e8bb3b1d52422f5a276f574a099d2d2cca5cd499bbf3e69eb15d4e76547a962541998b72bb27805afccfc78258386721515651292e0a9d244350f8034a2ea7af151db41a31efd71e0868d09cafa26944fb4382709ce45ce9ccc8020724a14898252978a186f70fbe4fefe7eb3eb2846911e8fba7a9f13850c0b654bc0cae468a1e30f4d55eaacdfd7e176f49e234cafc08d61879df83a55e9f803fcfdbd1fb7c5c21c4cce20642ba34be1e0258b16119046b96ee25ed0b622786f4c35b54adf412369adc6376f461e18d1f74ee0365519418483b88e9e1ac83da96ecb6e29cfdc38e063f195759af106b936a8dee452718345f337fa41cb986558202cdde7bca227824f499408c4fcbca51e774097e2a436a16eddf66014d1e5c0b1ea6a32570ba1b3aca504f3a4898f93b8af9bf546c1031cbd5c56deb6c771f1897a7f2ad06565a7d7fea19c065516ba37848c9019a404b747c429c1cad86d091fe40d41ddcd40ebaea2ae1f2a3f6ca6b6aec0155add1020561d173a3f8bb7e98b80f270917be452f626dfa1048bc072d1f3bde22176030c5e22817194e80e1ea9102d93afad305963612737b3397819b5422a78f629f53f1034f39283815ff50cf78bdf3e2579069ce0ad35d9a577f08c056593b15177fb008abc8c71327e48eaf1281177a10f9b18acbf9a453abae6ea5b70cfbf28687255aac9a7277f0c6cf552386fe8ac1db924d61cf72929c4227eba225b405abf9b110b91b8b61de2459cc7a857ac93a1c0f8ec5a14a812aaec5e5ecca2e4b3318776f9e74da5a565b4235106f15293c1638667f66ce33ccfae40e484e18fef1224f541dbd0c7925e9ad1843bc91986f3749fb4412c5e20534705516f005251973d24121c32bf22b39b866ca826a0a4f24176a7606b3c2a4d8171a23fb599ee2b679e6df26f8ed84ff4ce04f04cecfa1087f8bc0b711fa13813f13989f8b268e1302f7b357b1ffb0fdaa714046c4e8973a46a7b624a71b47518082cfde89747cccb19d99fc89809f23f42d02d167cbd73ea4ac7ec49ae12a92daaaa5f43ee2af8fa887a2d842403feefc27b651360b149cb334f3140fb02a90416566ff9bfe787ed534690d43345717326a18188341f1d5d1a826642b38ff5d2e280efbe83d925884567dc2ff02fb33cf81988beab3ca96ba9f917a5855d907486bef852a236eb9c6a9200e586058b272c521d87e5991f624fff90c94aa10826af46a3a9ff61cffbf6c9e93641a0e3b46376d3ed26111975c096148a5b044fa452234928cb4c9f6bce1c6e8b8ee40ee9cb1ca73ec216d9e66dcd85928af7384019cc2ddda55271427736ca2c5194606f9732a061a3ee9d89db371915e7caea42997d1c6707026d96ea54317d87846c9a77048c2d7535718eb16cc7a7cd07c99b2fb4d0980e948c9cc7d4bf5e1b4c95c855e9424a69a04cb74ce43edd012e8341a65f5215ec1852e31e495ad549db47810c1081d46827b054af9e62c48618c07707b61a97a3631441355ca033ad6317ef39509b8f7a30f6c4143da1902be9fee8224f464d0d4930251e3562908e1634ad59169fa9ce3d9d91cd87b17d6a0552fda76aafe20c7ca68c86bf38d8d54b0f94b0d3ef8c66725a854d5ccd9811f6dfefdc157d34a82a94b6897d12080e05c45bb327396d40c0525e5eafbbba80fda053e8a6ecb567f3085cd78a92e6a941604e6cf60f7f308cfd703564ec0622e001599fdf5e22c2c9942861395d9d6a992c16fc60f187e2f7b0e794e1127e46a832f625700758fa99c5775d6524f6164e1a9b1ce60b8f990e4100f34295c8c5931b9971571aab6c204644de027bcb1b33c1d9c87dadc277d0b2152d1a2282c0bc11f5649ad8e8d93e5e57db757d51845664ca3f2fe2291cfa51ddcb9cff1e13a9757ae829a971fdfd2f79e6292c997b7e52248e0d2e7fb58870288656aaae1ac30ce3e222b7c9dba47a04b88f3bd071be401f43c51485d217000b07cdee35817e9e879471f3372349f088c4a41a116e97cc5cc708502977def1f30424bd506356a503745391a245bffdc9767a3aa4ec52f19e5c502c83a7b35e65d2a70a44f9d52c93fd3f4e805d657a2d71346805fb3d4f722c5f8314de1f24e5b841dffe63eaa47b314020ddde6e74fe29404701f75c2241a8920a57ccc130244c48019565733697b34cefa5822c86b527c38fdecbc72fb08dd03415e83a9ff6d1ce82c1f12ec1e523b41f778d7eb1791e6b1e34802be6a0545598431c171cea7984f81ab61075a7c25dcd913bcff27770a62af3eb853201541601bf64ad1d5f7df19fb68ddeba27ae1ffa2e51249a718d22766741ea812560ae299e94192f71cd268638f602072786667db384b5c4fd01150d081f1c947123932e06559f02c06a4784decee5ced8273ce7c1b8a46a3bcbcc6909c0c90d702dc2a369f6092b54dae20d55a6bff02688045f597ba14cd58e6447faaf1ab6f89d55b9fdceff39243afe1588236751882b7d97968211895b554b1facf95b07f778352f77c8c48f70fec4ecf06cea485a724faf7f7edeb8de47f4d6dc29308527ec541c9cf6768c11e57ebf0182b541746af85b70ad3fa55ba8a3bc74ab7b8353be8480cc4d660675403f4c190653c60fc7203ca036f9e562096aa5107cf01bc3ef1934e3d3334bc8fe4b31c42f209d60dbb6e1b3d82b6461bfcbc93135bdbd79b240f4d982ae18ff303c71ecba82c30b48bbe3fcba57f6d1601ffbea59f72918236d28bc8964df6de5b4a99920c8109d90999094d069629103f770b8ea000cb7e21210196b9c748e20ac0e70641105900f0b9c320c2058c850306d0c8428755cc0a03b4949e52f3849a9f19963003136e683772d8e0860d44f81ebc4f4c0e62d438c54e3400d23440ce086dc21b120d4988e9647ae1c7cd2eb8a45d14d25003cb660367596b379a483398b4e0c886a48710f1750dec9fa4872c0980983d0800886d4c4ed6b61817c4dbc95a96b5ba6ddc56378e080e3a18c0060fd3020b3f6a66b8b1c1061f2bf430f1f81ea224868bc1fe272040b68e7ba125d28e6deee00d00788a4ca214a9cfc4b91c0577b5e27ac31ea28464faf183b617b209e932b767e236db46b98e764cdc86869ec824e2f386442426963d4409ed21442c691a4fa269fc959033fe4abaab10d152607fa722e1682f6e13b2a7a802f65fd243a4a084c46122891ef2a469bcc85d0515b0a4cd67d23d93ee16001aa6092b9865cc3254305320861862bcca28a38c32ca28a38c32e60aa60a6a3597356f5cb7bad51e640e7a90382e3c4c0f2fcc2297d1d7a61f2dd80fdf1f3404fb7b32f2e4cf05a101db70061e99be058913003913d3343360ff39d3b5bfe9846981851f3e56e861e2f15222edd846a2d02504da0fb479b5761bb7553a5dfc8ba9f8e2f770f11467bfdbc4c82e0f3e1993b79eae85ef661dadab753fa7896a75aeb0c7f47ad83c756c9e643e4bc649eb158d25a7704347cd1c2738be0dd31aa10d566898668859fdf054c7c2996ae176777777f76ce14a5537534d1b75a22efc6cc2a799727b029dbc13773a9d96cc94c75c68ab99729a8fd50aab1eab553ee1dcab5ee17c8373c7666ac6624d9ba9e943ccdd0a620e69341eb4175ac93553b4f42431773b260b33365334f643cc9de97b88f94f26319f6a78c46e5ee66aa66a5712734712577887489b29da75a2a6618ff9ca6402634cc05ea3805d8aafb2af4e38fb6ad5beb29f05bd27d6e7c4fa54f4ba9aa9ea9aa8d55cadf01703c5bc5815b42c6a577eb62c5eab6ba66a6ca2fc4d265a5d3117f64a633355e3a8b11aab31ea9aa91a47650275d52850d72685ba2aadd2b073b36e75eb29ed7494de64b2586b9de63635b7e9bf4ef393f436fc247d660318962ce8f19334019310fbcbdd658940bb69d3eebede6f1b751be9a5baa7cd7e7c4cb130e5234d374e4c54929a9b89f2c6e228cfbbcdaadd729bad5b2499ea3ced9051289544ccb7dd6e35cb4fdeacc642658b4bfdd075d2a4ebc0e13fe9f08e6fd74cf5ebbabcbd1583eff2a2a72e6f9fbabc2894d8e56ae95e745bd66b38ca7f749d3c0971d7200d49e3bfe332d1e1506c1bb440f66ba6fc3d8a45b76dd0b250ec98e8adcbd317591058c465b6fdbc2f06fc8f4ed082ec0feb72ebdbeb7874b5ac3ad514983aeaa8a30aa3aafb700a4cedadcbd37f2b12b95c102c2212e9b043154922d8a4b1964ef43a4219aa600f2e6fffb3d7e5250e3f041609c59bd02574795007895d3e04eee022da908b4b75915e28f4f66e18a41f022ddd2a0689b9dbc0de5858ddf2c49b907a74d219c3c5706138f1f393a4d5e89a0d9f76a3676835606cc4dc90c5a0f0ed74946d8a64403d0492266992e674381d4e87198d939066985133eda49ff732c64fee791e13dcdf751d7d42bbdb3c536b59bd2af4f9c3cf312720351df8ddc936c8c3c42e9d4bf7a297dcbb84d7c5fe37adfdc959eee5a47db5849eb3df81dffd8364833d700ffe077a6091ef9b12dc8113ad485b4e0f811283453ed16d3ee6e436a0532ae481ef89f9093dbd0742d0e78ff1dee53b0f74013f74a98442e216ef3febfdd7814540d03f70074f2489b4b31fb803c51ee7ddff9813e8db4020f109c59ec804c5d44f1d27525c4193294603767e20903229732983810b6a98064b18b4608667108316a6c17206685ce1292a5b9e4c3cfb6593ae62a6c0ecef9abb5ce57eeb70632626a6e256c11d5ab4dd9ce29331157b12246deccb04a1c1062c9b86d6b0e3f3902e86d1e7192c0ca2cf33610c960120350d4cc804fee88f09804b24501bbaa6c108d87f0795b6c326b5a9c70f915503fb87210db0bf0be90cec3638b697469ee411b03fc706f6f7a40eb03f48d6e0061becffa700489c201f4303f6efc7fe33076906764fccf4f3893ef727ee6953c1f344a21ef984f3299fb0e7530a255154e8ad4e2c637cd4201c7c32c613f5b852a6d12e670a2551fe42ba1aa419d8ffe4137f4e69a5f3522ca352b670ff7d0e3d4ef5b9fda6fd44295133a41e9d3dbf6a3f24741cc751e5511f39f6bf4f62c5ef93c889f2f73e4402249e4cdcbda4e128aa282affaf49d7812f15efc34be57b3951a01008c226f2073f99b886340a9e2a2f9b709d77bb15e4418603d08937eb555abd5ae79c140c7522138e6b7de7685de3fb5cbadde7a4b4d6ad3b9c935443c843633b3d10860e4552a794883b0d411e1a8b46a31d3b9c542a629a6e6a9367c508c1304030660ae64b0c2763eb51bd1da01ddf8e1d3b765870c78e1da11da20fbca6a8709c4f2a124521947e9a95d6596bdd9aab9decbaceeb68adf487ca68f549eb963dbb8f8fb3e13353e0e71a5aed4749cc83b766a24e271b6e6eaa8fcf47a7acc91f2513e5b23d349f88ff28429bf3f1b174ce59ddea46f230c4124e3a420dfaf8483014c6541bee33909a1546292213e56d3ba56476a29cc194cc94b32151fe71d430137cbcceeb66d8dbf0719fba7d0eca3e19d36400966eb54ed4930af33a0edfdcd41bec3cd45a311599a898fa89ca191d9f8cc9b47dd22ab9ce0c8946aea146c834f508db7d4eea3535ee69b81ace4607f2405f27fb384f3451580ac1b2867cb13c923de9b3895934c3d96358d2ecd643bacf2295db0ecdb68363ca715c75dfa1a1be1d60621edc038b488943a7b5d6de98233ede8cb6d1c6f5b7ba858ecc427d63a29b54cd44391d74861e0b7b98b89b22d98e67cd4c791a12e5af061bd8dd0deca1c7402085f180c2cc2286678618627c9e194e8693315b647c33ecdf6e3b39c2f64947d76a2008e61c387774e46ab538b8da9c5151e394b6dc40d81ff6171fe3455cfc1c84f2f3d75ce09385b3e70f0787a35ae4665842eba7fe2e8c90e6a011d008336e36513d9333fd5e8450f67f322c5df028cc973139c483fbbf29ebd9dc8a03c3e9bb54c970bf836213d5efb2507e06c570bb2879c034c4c3b917e19331b96bd64ad92d5bca292ffd695f3e47ebd3baf1a748cf30e7ab7905153fcd31ea565b8a44f957d16581bdaf8c0e8516c12763f293fce44fb2c5957edf242ced29e6281e68f39efbcfbba65004616312ed9e3ee81341bf5d2adb53f1aa4ddc52415d0702b9c41593dc46098beb73dfd1ee6d523f55aa8612a6244c6e7299559e66cf2ae9bb80de677c666033b0fc5c2b0c23517d8ad56b75daeeee3f3771faac35f8be7cffbe77201d61ee401d57d15612c2dc610efb7b98939038158b1fff238d19b00077df3d28eb11b2763651be759e34024c9f2a738dd99da78bc8e7d93380cff33561b8f38c75f69affd4d09d274f677fcdd01e93d57cee1f9aef6e6fe586754ca6db67d62b173a37eb7ee7eee9babbbb7b522a5b5c9e7eee7cfc369b29501171abcd148886c35623c056c3fedcca6db82ce4c9df9fab22fdbf71a6b82e341111b3e90720e61780984f37885c678398bb70889843d3d720e63fdd88f99412734db7b2ae99ea6013e5dfd988b90b691073689a41cca69741cc7f8a41cc2721625723e62ea41173680a2266d3cf88f94f40c47c8241fc9928f76a4e28319ffe24e63799c20088390480d8c588b90b5d107368ba22e88930a2479bac9902b53c5acdbfc914865ed785a1e9ff74ca74854115a806f207cde1364e404888430ef9de1fe43353d645933813e44302d1785cd0cfbbe10df4fd1ec8036df523821b3f749c03f7936a2fa08f086ebc4c0cba52ce6c2f5762c71e1cb8ff23821bb8bb8527d540a29616448e0b6dff723771d69674a50a449b2950cd1fbc54bc6a8bcb6f601191048bb83c111735a61c6ba6be71648dac9135b246d6c8c2fe9c6ca6bed78b93bd38d98b93bd38d98b93bd38d96aa6bedaeaabadbedaeaabadbedaeaabc166caba3a98757530ebea60d6d5c1acab835957f7335376e6f5745d189a4cffa7d30ff61ed0eb01bd1ed0eb01bd1ed0a3cd9404b56a6a4ea77f93290c3d5ad785a1c9f47f3a815a2908c76eb2f2f7c2de2f0ebb0bf7fb57db700df767ebc23e5db546ed8cbe443783ac89a5bfcb75dce07729087398270be3be39e45c442e0cadf04466e8fe78f0862cdccc59a12bbc828f1fa2127485579860111fe24db80211f7713b1c5eba82a8857ed31ea0686f9e3fd8f6f792753e73c6aa850fb2262a74b1f8b9ff42f7c39608128789d0ba218784beff7bcd94754d547fbf9d499cd2f7e84d3bfe85c777bf70b7b8e3f2f8d2ddb089c7f78ffee5bf9b90c788870e12f3104bb79a466b58575b57e952cce3b631672f3b7c4a779a46a2f493c9f1cb1a3b986a946e63d39598c7cb0e510b497c31dd1751ca99d295387441f8fb2d6da648df2295e1f630d89a292a5b4a2f7a797f108bdbf0f81def0f7a117a7ff08a1c12fac99a289738a3bf2f3fba1bde110a41f8f2fd3c5e788837e10b8f9726bd88a35b77f0204d8a5f2efd59e2214a3fd1d1752cba12f3b84e9e843b68b268c795f88524ba4d76465c12b590c46fe342229128e5cce8ca9017e26687415608b6fc43a050c7b14277c37e025933e561f88119087387b70a7e56745d3e74295ea13ffcafeb3a1b0a89bf7d83462c78bbb7a0c9c235f807574e89f993add3772aeecc1fd59609caec74146fa7a3b8ec7414e76e2841376162c081252c0c2b332c616250c1fe23711ac7e45ac35e05dc2f41effd11cffbef3f310ad07b9ff7d6b68f27ca405deb9f9ee1feaf6920b16313c5e32b574fbf5a23eeef8a3869f2c3f7a03f027a09fee0e307d0dbb76214df83441ffea08fa2922a1f47ec832f55126c72041463b85f47aaac0822f9dec79119ee87124545c3fd3b2a0922f1e1e21119ee07f960092681f2f90bf777627b6213f14c5f35d65d1f3f78df7df7c2fd9ef79e8f27eb15cef455579567c4955557b299ea1ef499fad04ef4f143f7a0078951501aee972aa9fada76458ecca80c37941dfac69651c2a1f2442976e81b5b4695f714e653659ef7b5f543f7de4ba7554f6113d5bf428b331c0dd0c0051bfbd5af900c7440039eb19ff6b88d846107501042cfa8da5e36e5c1ddddef3f3335927501c7a8ea9fe35cf5d3573ff7b3fdcc9e176cc666b42c6b38bbfcc1d97ff2fca1631533f5a1e214338db99829ac6e5138b7717c3226773c58e2cc9f50a6b840d9f2432be10434185552bc8f1f86dc808c175071478aa73fe40664bca08e9d71b681042ba36a13894c1a84b656cfcb9c0c875d3776a373328923c2fddc1a92f391dccc6d1af77334b7f1fe15be18eed389bab4b0ac21fc40b55610e7a33e141a1fc060ac21ecf71b84d7240b3375b128cbb13875fdc0dd5900fbcb54374a943fa95f04d8bf9b5205fb4dc8c9f0f65ae8eb305154ecc671d24f7ef4ebc6dc8ddd58415ef53c90573d0eccf1543a445135e88937d415ab21ecffea67eaca41986f5cb5de4c1c84ddf7943b7c83f0241d7433156d10822ae892baaeebb8965db7f51b322e6a318e67cb4bd559742165547507e458c24af581c260828f4a0e8135464cf5d92c5bb8543978029699ea0badf1043a62271709ca01117830e3ac0f2da682d86ba3dd1923a875459a8ac04f5e2fe8e68e09e8e90da9e00c960a0afd9d89050d1fd516eea3a8be4f82dff7f5febb3df47b62ee4b64f645c2fb5bf3515444665f249a741d7548dc430d9e4d266682e2296626f8494b10e47d8773de80bebe77ff3fd0a53d4e670d42ee3375712f02b799221314bb680f0716e9c42714771ddec01c384e94930712dc18bd191498410b3fd0952654a1a976040053919c06ef157cf123a322149f82e5062cd58e8d4f8db5373eb690a3a5dae1f152d18fa28262b3030eccd15241d9d9809083964a3a0d3b5e1cb419a68768cb8d085508c347356f6f58b454437030ca6aec252267fc250e7854548ca29a6984f926d4927234190281425fc552cea886dc800c98ca0712fadb6f22941ba8c054548ca29250241434508451b5b361d132d10ba5ab3801083015941d520a582ae934ec7445184fa41f251bd4400630f922e4023980f930e26bf0c0ca8fca35708616349554a501041a7e325bdee00431a8a9da8a12a88047257180c6d8523516b30cf0a8be1f3594a3e0e00226a8f580e23d2b70c20746d50ec8072cd5161f3c483870bf8403b7f8491f2de7bc12efb8c8a04cd91c234d11582a2a6ef1b1437ffd2850464668a9a0ecd0f80006a38afe8e8801968a8a3b3555c218a5128c200499ea8321428330df6087e202951ed50e475349a7e16341942cd4d0000a2fd5fc3a04dad02741214f4a97ee87770b21698316b8c04735afe38e27868dc6927e8ef3f93bc96162da34fd39f890b2bbb368fcb9f883f23f17239ebbec40f14765d31992537a37179f3f38e735e24d30871f98ee40f15765d7893fe9d2bb6b28ef602a677e90fc347194d9fdf37d3584d28aa49f6c4bb15b094f0c0a359e4a86101c9000043b68430822f0400eacf0c0ca0f76bc60c6ca142b5cb8b020c816af2d66b0d18d67dbb66d0cbd6e68c20cb618bd1304b9a28c1e54594d51071d38d0c2042dd8e8c6b36ddb36d2314460051598d0c61816c880ca6f50c70cb498c299a0471668cc208b1ac0740005fc6109d3c11c9f103e13c751aeb35d487be0607f900c305d00669c260f1985a61789d3829cf901c402e04d26ca82aedf08fcdc8385d0e798cf30849f63a8e10689c68ecfb206a4cf52072f9f251ba5cf32082b7c9670f0f82c9160fa2c9b10851e9f2515603e37951f9fbb0a0b9f5b8bffdc575af8dc5fb8f0b9c5e810dccf01aa8f5ad2adf8ab967429fe369be44e81a923c9fb19a43bb1c3dc26cf31703fe936769874711896a210c8d49cf265916babb2f34021fba42bf11c676a8e2151fd3305d905e739f2c8997e9d3bb3985a348d1596ab87e58dd65a6bade5388ee338aed65a6bada552a9542a95482412894422bdbcbcbcbcbcbc7ced85255d27140b16ecdf5f803990feeb2f36b001972706072ce9666f05e6d0d8a3223b0bed2c9d657a7796cee28592fc385349c4ae1b3d49f4c691378ebc71f49d9de9e87cd6b1331d3bd3b1331d9d9ff9dbfab2f6730dccb910c68530eeb91046ab95566995566995565b5d57a2ad126d9568ab445b331269469a9166a4196936f32e34bdfc1c5f7e8e2f9f6b463a96933325296748ff7273f7227672a6bff67357e766f7c993677ed20b75dd0fcc67ba66cf7ccdd67ccd9ee9ea5e73357926ab54299dacc9335793e534aff94f2d954a62f699ff78cd6955e47e3ce632f7a9b5567777cedd3dcff3dcdd5b2f5f398fb37c7496f3f88a63d16a3fb39f1a6df61393f9c07c64b1cda75dddd32f5be2b6574fbbb657af9aa759f64b9c8e15738fcd6a1e4eccbdc2fd493616adf6634bdceb5c913fb52a49eacf4c25c9f595eb8bd49574beafdc66dd9ba4facc544b49f2637dd9d295d791f25d8f27dca337a2063749cc3ffac63212f38d8e984d574c2531874d2289b9ab5d124122843adf9f7373639dff409fd32a6f7c23cc212ce7fd4333248e03de3f84410f51c0fb8768b88d0fef1ffacc14952d4200f1fee16ca6a84ce93a545b1af05474aa1f686e9380396a6e83e4fdc3d84c05b10006ec2489028e33d553803070161a43ad102c3473195d5a33e5c4fbbbc066ea89f77799cd1414ef1f8ed9944fb926df18f159c6b29465e993252dcb5a963fb9574b3e374fb372bb72f7e47ee58ee596e5f6c94deb5aee9fecabec3cd959d95dd97ba07cf657149f3d965d96dd273b2d7b2dfb4f9eab3c79f264e5e9aac0e7d9f382e2764fdcce89cbfd6ce0723edc8b636d9b8f1577abe26e2c2a6efd9982caadb15b776e5781fea2b7682d3a8be6690cf4aa2dd053a280a2c24484c42043111c0820812490c8472ce90b34165748216534024b5f695657b94972be73a8751f708246364b41238d43383e3087c661ceb5ffc94e76db170a7dc7d3b1b67cee44f0390cc16713083e3f267de0f309935c9f6b3029fca15a3e77987aa00333bc9c29269e86b779eec5f96c3f1c2b8ccf211e89f1b9c3a311189f3b2c922106212f89bcc42f553534417eeb59f2fedbabfad49f2cdbd6fa1ce2e600f780979733a5c4cfbc9c29093c10185e409d5e1ae0e5015e22e09d8c90765d681f5b9a15f550459efc8f7c089338256f9ca8de22e62e148198435308c46c7a1088f94f1f10f36914c39f999ab1d622fe6051e7013177dd0131872d86983b0c3187b5d56088b913b94459c4dc1d9928ffb0d51c1073b77a80d8ca11975c4e55ba5aa04491012b507c0e9f70e263627ec9dd54a5ab2549c33ae6820bef2fe2d9a209269e27e4799825b7b29ed2fc4555fc4dce13faaaf3f11f03e0975c3a858516de5bd0e259f8dc3d99c08b4e5a73c99d16784aab3c33d5573a8b6ff23964f2302f676a89175f54e587c825722db9ae2a5d2d5d658ab48972511509f850e2fd8f34cffbc348996cc96d1596157af8f7aac7e7b0878cabeb8169fdc7d9d2d5d25fbca88a3fa5f98b5633d518f8233e9f282dbff872a69078182fa4c58827e220ccc557e0fd5b365350debf7d662a8af7f771a6ba8b9df7779e998af249dedf6133d5aceff15bcafbbbcf4cb514ef7de5fde76aa67acafb4f9e996a2a3dc57b6be0fd276da69a8af79fb5996a0bbcfffc99a95ebd3f6dcd547bf15dc54cb515ef55de1bcb7b5ff1feb636538dc5fbdb9f99ea0bbcbf37ce9411effdc5fb7b3c33d51b787f8fb5815b635fdc0ac372eb8f17776369e06e3e572ec7625dcea78bcbfd7071bb57066ef763e5763e5bdc8ea5c5e55e59dced87e76e2f0cdcea73812b270a01df58dcbee2ca8932c07795db565c395105f8aee2ca89dae17b75e544e9f06d812b272a876f2aae9c2823df53dca672e544e1f03de5b614b7a5dc1e6f921be5eedc282e945b810bc57de23a719bb84c5c0adc277702d7c96d7299dc25ae12570237898bc4bd475c3951a72557aa8cb8f535515ebaa41ddee83f6a4b571476ff719f17aa2e9f93733dcc804bf253e91770b714f142dcd203118122fef3e13a8ec0edda16f1391f81ff28582402e24d5844114fc423408bf8a473a16a732e878328bd0f3e8837618e0f3933a7f4df6673ee863fcee6dc8abfce027121a085880fe2763e5c8a1710ae3a1511cf80eba4f44d7646cc80ff88b854923c15af4a226ec9c9f9073c04fee3c02210106fc29c9760919c27e210b88d85b88d1f704bcf813a482c8468f25329e74ebc80bb45491097ca962194fcb7422804a192cff92186106f42252fc1224a9e880fd138e7767e2a2911433f95de075188ab25c93be0b69c297d03eecb99d20771bb892a3d031620029144344d54e9157065d364c7a5cfb9fec3a5b225e77ff82fe79adae6dc701c47fcb9cdb9dd388e483ee713f0df071649807813224900929c7bf253098958e3a7120de594dee6dcc63e94fe939ccdf92239a29433a5d7b9394f64e6dcc6476e9eb807d14923e066e973809ba5cc0037cb180f37cb9f02dc2c6b3bdc2c693adcdcaf1c6eee1e2337b7abc8cdfd83c3cd5d23c0cd4d53ddec2f7cb3f710b9d95d03b8d97d0470b3cb6eb8d96336dc3c59436e9e3c3837cf550d374fd7cdcdb32775f37cd9dcec341a6ef65af61f196ef6550c373b8f909b9d557373c7686e6e59909bdb67e6e65e01b9b961b8b9592fdc7c42d557be91b94e9c8400b84e9c885cb84e7a60f1e6bf0e73d261989b4db885c9c2bc4e4438cf99931e78053b73e2c4c3d91b9d84387be32b7779f264f7c94d13e5faaab90bc17ee01cde7cc2398461f7969ce56ee59aeb0bfbd7d74c495513251809114c942e4471d9b9e190805f1b24f8644c9e30959c29f99a75b4b0367f3cad6435b0d3cd5c9d3a13ddde08db7fde4e75c3a9dc95656d53d566bb6aad5ff455592a19cb2e53f5ddde0873886dbd79aeb04ad54dd66c4dd7ec79c1623e2b1e56eb058bc97c66b4150fabe5eaf9a9d166f3469afe54733359ae1be7e66af2b85c2e97cbe5627263fa53cdcdcc75333795abe7058bc97c582c168bc562b95c2e97cbe562226b3577b9648d5696b7582c168bc562b95c2e97cbe5aab15cf5058bc97c6634168bc562b1583debd9ecb575218f89f5ad93aba647c562b1582c16ab472b3e5d55f373aa3dcd340b7d3a97b94cc65caaa4e94f3537212b610ef1bc52f5c92ee438657c728459c6743080a7b6f76ff716b56cff514aeb568493331ee3287f908e30d760ef8f82fbe90a774e4dcd4c757de90aab0237367553430d360707c70e017390360cb1c1069f6d032d0e39e680a1d168341a8da6330316d1f96c10626b84c410830c32d819689881061a7c360d55c4d36ab55aad56cbc6d260934adddcd81a706ac0c1f1d9385dc8d65a6bada931d49a53ce46b71c991886589c2136d870c30d56000310c00006e0b307d08548b5d2f1ca388e56a61e190011ac525902e040001c7098de3874a1b6d65a4b2d0e458ce49083d561071d76d8617aefc0830c478b438e39288d46a3d168b4d64b8f743812574b321645f249eb367a6badb5d6721cc7711c576badb5d652a9542a954a2412894422916e008b8cbe1e386c898046b04a65390210c0e2409fbb34fc278be050a488cf2ec24dd84c01963fc790a91993ddcc42e2e4bcfca9851c227af9d38ab47961ba266bb67c66b4dacf3857ad56abd56ab5e66c565b33c619b145402346ac901c72b04274d0c1ee20a4003b14a0003ebb005da8398ee3b818de9f8b819b41c413c3f8c29d54a61453ca365e19c73147447f06b1555bac8d86120fb600a0111e6c100318c00639c0012c0282dc9aff640f08e8a1079fdd4317b2350caeb6b8da126d21e21122e2a1a29cad292743f760811cc9b14740233916888e8ef50108121f902099de48babb7beb20db388e23153f4921851baf8ce368595c8d45625109f8c1260034f28345a1eeccf406a20bb5b5d65a6a3720941bbd5ca12101616516c0002b134410b601320e6880031c30bd1dd0852c894422914894b4a1a81555acaeac56ab1ebd709bce4c2b018d0c61616e9e0f7880858100150858224effc9228828a2089f5dc42643a54ccaa4ec08129d1c1d961dd58d83410666ce4c2693e9c70a3d3893c934dd90386ff4905a923989a4212ca926c022018d24c0d61f7eb055014964be5e19fe9340240102089f0d44558075294b320710481660e9c0fe1f03acdf2c7d901c99ab2905cbf728c8546d6743e2fc400ec979f9de86b439d5fc674673f5bc603119add56ab55aad566dd55665805d00688401962688202c4d031a601d402384038410c2670bd1856cadb5d69af7af35350653cd2967a35b8e4c0c228f8887ca50526285008d28b1408618c20279c0032c0480dc20ff4922204004113e9b882e44126d51453c55c4e3c344739dd0fa2293b351fb2233329958558825c2be5044046c11a09108d8178c30c22ee1fe8523961c71c4f43ec25a6bada51608751854d2951a8474841565246c068d206145494840a484049450627a2bd1852c89442291644854661cc7918a1452ea78651cc71ebd7094a533d34cec12a0112616e666ca02ecdfa48985b94ed0c0fe9f133b0198271378f2c4673f91695a82c160dd30681a3374602c180c664795cac0b47ad5ab5ef5156d4557b16a6501430c9956abd56ab55ad20dce0e21e39035225885831239d3a3d168a4a3a3a3a3a3a363adb5d65a8ee3388ee36aadb5d65a2a954aa55269d2ba718dc2ddc405bf7cdf78f582ec4f54bf3d85a3d168341a8d74747474747474acb5d65acb711cc7715cadb5d65a8f4899944999c96432994c5f9392113602a01123962c39220bf94f22919140c267237144e746a291e8243a8996404ba095e825e8124b4cef2596f0422d4b03cb7733644ac4e39b6771305c0c692382790f2d84511a4dc433532693888753c24a0034a2849d5962093bc384896d32e3a48913273edb491722f908620a62aa3912e4450c30b2b4aeb45aad1a31bbd4984c2c21a5095827a09109d8179e3cb12f5080029689172e90ff64134c34d184cf6ea20bb50f93c964f241ca668eccd98463be31dd201db942436ac29e9c78c23a011a79c29ea0a8c0094a05a04099de50ba9025914824124986f4824c6904f3c28de3d8a3171d0e48474125e7e6ca8392020323030383c11c064d63068c0583c1ec48868321c7471f7d9433545c0a97c2f9388e340e2a079dc36d4ab42b57b2b89c78020a283d364fb356ad5a6badb5ae56abd5eaa5573b4c580a804698b05c134d58ce8927c01c1ac33c7769fe93503c0105143e1b8a2e54e29cb0a427dac0fe504051810a58923f1438b0ff07c5926e148ec60eddd999de3b3b5ec861cef22cb07caf42a64c2ad971481cfaf25b8e9e43dae4f8aaf6f382c5643eb310669aa9232613178585021a89c2c2b0b363618812c5f608c39d91d2634b692952ba50731cc77140de9f03c205a9b25a0179c9d9a84c896e301f443c724586a674ba72d2f9d37d810ace07eef111ee4895d50b0c2baec4fd0b0c18f4d22c32ad2bad56ab5f6046dcaab45ab1b8996e2a40236d813656ab9056450807762b441755a5ade82a5da58a8c4ce924339bcd999c81c3e71b2f77bac1cd58b3d9cc72239d2b2f586badb5766645739ce31c75eea432a5e0ee94521a274987abad46abd1b39e31c830819f3a865bf6a2348ee3388ee3c6711cc7716c58c31ad6b0554b018db414b634658a2d51e929465fba3050d15334154d05155da84b54a69853a0820a0b5880ae5694ca6ad2aa98705841db8ab6c28ab6c20bcd59ab215347688f2171605e7e932187c8bcfc3681b4a12d7bc17eba2e0c4da6ffd3a9a657ab9594957a051ae92aacc80a2baca84a15db57702fba282cfa8ac6a2b1c0a20bd952a9542a9ddebf742abd2071c34e214c87cac0bc348ccce885d56ac57a81010bd0c876735d03031b4f6701e6d0395a7416ad456ba14595d2aab45af5190dd379271456a2955ee7529a9c9943e65239602e8de385c6a2d1ec88fb925842bdbc78dee6bdd0166d792e97b6e48c184ec1d0b9344ba9d5c221e1e8f410ce6deaa36e8e6889606755d8999d559105ab691d47cbd1343d879f7c9c285fc1acb5d65a3b8e3efae8a38f3c5540237d856d2caefcd758d8be406300cca1453c8d81e6691e9e2e64fb029486814a8587278b2c78b4b8420b5adb82ce6185b695b662a5ad78214a6b97cc82e5f71599ea557d42e28c5e3e1472c8cbcb87226d609ad563af6a6a27dacf4c3ed8ce66b3d96cb69aa986d9d5aa5b0bd088cccd760a566432d05cc8dced3fd95d3417dd4577e1b3bb8b2e44eaee6e8e76ce94b13ea6f5555ff505732b0baa0a6a0a5e76f4f2fe5e8e08bba223b23e69ddfa8c6e98bf370c3665ac2fd3210c2667d0086130baa1193a309875c3be517a971a3bb3b32a49a68c6ec6388e9ee78d33e56648547b1ab85de68dad2c60384cce8c46a3d16834d2d1d1d1d1d1d119c7711cc7d1610e7398c3b4d8c24e2103f6c70a1719b0a49bc1551720152e2ce9664bc3fecd82c34fcd028dd89b3d2c5a9a654b6faf4c63e92ffa0b9fdd5f7421d2dbfaaa6bd4596da3c22a0bea2bcb9a8c03cb1f42a61a365158e2702f5f2587e8bc7c1ca4cde8ca4cc6e4e8e3486a989d8d856b2c8d65abb4b134162f6467724635ada5d6566b376bb9292fef6fc797b7230ca8931e0814eab72f62bea81a976b6772c67f74adceb56f348d1b72e6bbca4d72bd51e290dedf93227174dedf93a28770efef51719bd2c38819354e54f646d3cb88b94b3265f4288ce3e86738cc6133e5519082fb61eee36cc8991f344d7fc96713e535dc5ffd67341a8d46a351172c2c57585734a0012fbcc0f205ed2ffa8b2ffa8bd6801758bef862031be0408b76ab5bd3bb5bddf242dec8e13c63f9a65132d5575e92745e3ec84a9bfaacae92c4458739e93a4e72a7b874f8734bba1cfea625dd0d27b932a24ba864ccb75549ef149a19010000008317000030140c86234116885992727d14000e62a0645852340d08e5910cc380ce18430c000002000000003252d3006de4f975c53ab994a698dda4a8ebfa137168948145f92f9d582a8423eb2245c3c373b4b33c6f30e821a83e21cca28506989650356c81ec7f8f22ec2a06b9aff0a2cb3b88dc6c9d67dcca81a70835e8d9a158d85ae2b04aa388ef3be6ee14966e3d9e9a9e499d3f9abf6d3e7fb73d67a6de2a185cbef1570da6ee03f9ba73cebfb4007af7e4dbcd59fea20d4224c3c0f7c2964208225aef0f1d69f0ab4a01a945f30bab35108bfebde2e089cf7ac347679c7aa7fe6c32f6589cb0acbf029c377f26ca80bdc5d1106c5ca860ca5a0c2568ab61773bb39bf86c06cec1166a7edff100347571f8cefded91af533bf4309b805afe2db305d75dbe80443019049b39576f482fd99abae7f6b131fcd35b37e94fb8f95c855a40126cf04d5490fd38621a9ec56d361403447ae1ddaa6188b3520dd5ee0cff7f300577d7767f7afb71316fe6e8ecffbe7c6ddc2047cf094e99e73dc55cd643cf4dd7eb1922480eeed99a0ff2c9f9d3dda9a958c128f9cdc024d365b1d523745f3a2036e2d747ca69cca37482fb375d37aabee5dd751950d34087fa24a4d7d46ab4791e17686835dc3cc7c57a1a0d6f1f63627d8d86dbe79848bf564ab9a84932c951896e923acadf54755a3e147d2b24df274abdc5afcb451fbae4cca86f908e471af2a32fcfbb1454a69485ba567b488fc6d867f62b234dcde92bdc2367142ffdf2d643d9010925e83134e8c3e8fef9c623b63362fb86fbce1b3ed99a481a1edc4480cd28b7ef4b61c66bad9732c4b9df15872b86933d6e56b8330bf176bed3fe8fa8d1e109a5b964481d265144a1d1b5b03251899a390a0bca37a5e78b5199e5b5e59b3dd0907aec78be897cae83d16f1cee07db5d001ea36f85937e669f911ebb346316df34f3c29c5c1c030f3ed4583108e9de4c10bb213a8a20bd2d9d35cd621665bec34a26a1cd8860a1b7ab4def770dcc77a7b7bca82375595a21098f7d919778ab836ff21da07317eda3378690c66b42901a078f34df45b39a652f9b6e259f617e71a29f2321c7402ad920e8b69791a09c90aae2e93eb91ba70e13b2adb0d0ca07a49d67def386ccfa7d95a74399f40c4991328262d6bb958b27d6d4c0926e82b0ca9f2e54d2265f79b73ee64fc5135f4ab7463da7785b65f259a4db500a55644d33d13c399a1efe351559fe0466a5dd01a9b55bf47407d697df72c47cd20e45172bad4a376e997dc9eebdc165f4b4a06423aaf7b127ccc9549152159cdafb57e020fa106495e57e03b82180cd24702749f1aa022e9b2f1537872cc7120b5dda74e3adc1818370f0640d0822b99734e4f6cd4d5554db14077292723fe070ab5b40223b14b04e4d47089a6e96141cf9d3d8331c00e2300e02563c0daf5da76451da0dab41a129ca28e4e7ddd414af68d5888f27517883b3e2f24f9cba52ed07bad16e7d518979a8d38774bb2da944027ff7cbea19bf67373e612feb117fa4bb25ea0e928b00c8460f1a8fd83e5ecc8b2873588401c99a4c3ba195f917e4b749bad38fe61459dbe457844541c15ff27a5d4f76d49387f23546cdb7383714e373695fb3be98df66db5201e0e2158db9af6735509239ca3c5f183576deef2823f0e56de8d54b835ee1b0078edaa6ad99112165e2fe631945a3612ef2ef0e9b4daca9785c945ee37964ce196f7f281ac30fa6aad86ee2aeaa7032cc59fee7b8e364c18df44373d6ad62e3c97a7f6190d53290ef27ef7a15ac2b2e8348f58b9bdf7efe38c67d5d4b84bbdb7b36dbbc7d9a5edc8ef3d82492038bfc70e241fbc68d3777ec459218e5774f49a7a781e5d9c2252678020d5a97835a6534ba21c44664f866df73c3431f024fdb66437b819446b46ff686f690c96d722dbcecfe7bf00e4d2be36832bb99fafd5e63143b6e0678d8ffcc957c04601ef869fb5198c93a80a7cad4ec76da4830b330dfdf8709d799af215ccaaa78d9bd6a1448eb307f70d913ac44bbe8139b5eb6fb798c665f174593dfa5b22b6f30a2aa62685e8248e42dd944ee3ac2ca2f9a77705fd6e9668243ff80ce5a30aa0032d1d3e33a30169094897ba254c99471dfcb238592b23507255bc40254622afbcbe6b466526b0d55d928ac37264e0033eb77f5ec212159200176d8b8f3be7bc2f2cb36b6a9ff02407ec0e89c03866031f6021edc3c35878f5fb6bd66b86401dfe25a116c5e5375285cf60179bc463860d3d05937a6990458c8f616ab4ef40a5629944ada6333726338116aabdf16b783814c18f92a7676d78d359b6dc67dc7d5369b0f27b122351e43b0c0518acb022c4dd8a054bb66a0bf48ab8629626a9cfeb9ff346f54d5dc73d628ad8a3d6b9c2f1ddb882961439a98dbb96a7942552ab04cadf7279d838e64acea3e0add0b246c7a1297bb7c99569ca4ff0841071d3a16d4373b027242ecdec2da1e75e59a1bdd179f833382735e795f0c6c7f149b8f3a2c44154b207b10556b8f2c13acdf7696493aaba0391a594ec6622746ee16b33796b8d4eb58e25ce579c46d1a8f309712a2928f0181a646e3fdd7985053a371ff3d26d0acd5b0f71e17686a35eebdc60b35349af105199a3307de2a7006b15e792d2ae50e29aaad8d5c59993edb0a7cbefb5f6e8c2ce7e9a15046d530087190bbfb9bc9584fa05ae6ae8409f964f838680739aa616acf5a3e2271343e4a8e7519491685b069a971b1bfd7e1b9dca8d0dbedf228352ff5f4777b9099977bbadd1e6566e5bd1d76925369a22e4ebb1a3941737c86b1758c10f274ad0019456332ea6dca087397119d6546a0058a93701d942d4687a518f77dd32996dbc3e415de993f48a20581c248357973c8b6b42e3bf0b092ad16644db15783782e8c2a1deecca1bd77527a7f3d726576d6f84d8505260382d07a82081ccb61be997cdb27c446b168d2d42eeaff7ba10317ebfbbe04d6aed7196c75f75e5a6d8b9be1228a0c7492c36887e72b39a65c21ad18ec236c250d3030c03e4dcd638b26c38916eb353d2dc4eedc2ca16a16ec28955b8876c88b8166d1c16631bbae41b026dfa759f92b7ebcfead590e36cb1cea0cbf633bb82bd0cadf28e4264ea2ca7cd1ba2f11ba2811649e3627a9a63c2ab1234245fa89943b3d5a244f5c06b3e9ae4d59cf75bab75a5a9c3597a26ccc775c870e486388bd4318171e2254d85af999ee7c285b27adeaa5fc2c82b8310df6f173aaad5fe049a1c6da2c1c31278267ce30307470293ed916aac45ab5adae8784566eabeb0627612772cde3a4ac7cab43de1ab0b7c2d873f07c41959fbfb126870309a7b854336bc984e3310ff24b0210cfe3f20fd99d1f9b1a420952550bb8edc43c8e0b5c0f27251a23a5d9a06e19f67740bfc353005b86fd8d69b4196f427f97aa0f113cdc8c310cfe78add8aa40742f033557fa3b0c66f244cecb703b4d11bff069a25c75e49198e33efc13c99cc8e67bd2a9b4e25c651fd996815e3c19a74f2ac22e2e57858bf7bdd4a05e8d1c0d96d480bbe1e578466a44b3e1cb189110a85983d8612f5c73e5ba10a7996e8b580930879d00c8fd45b54f53941bd6fc0e2cd9c79b165d905e9f0c459461a6cc1c42508d3d01c2d4516783e01e654761171b0ae7a60395e8c814768326b05f27ba4a4bd6d63982b57243ccc6c885b703c69f442c2a3d9d42f53c32deea29b975a384163baa3d9dd25e7399fa4598c4fa4856504a7133b0b2d131a99da89a3413def3f4dc0cfc78947eced0d3196e04c93581dad4861dac6873506b8e9e554f34f11d5e15488a7c53fd985809a515d8c6e8d7a23461df55f6d32c5dd30c3ab9c87fbea9d8e948c8ea2baac3d15576a3c7f928cda6930acea6f4c143e1c28a1b4b703ccd53f368a7dfbeaa80abc6f55ee838605cd7aea57ae83b99d62c81e102ccbe2dba291e263f6566318ea2fe6a691242b7d01ca860f66c318f0b55dc83c50a0bf2d89602c3523452318e586c9bb6a3ccde6f822cb9e3aba02b8b1b74592cedf3729f3848916cddef72ed2ca492e59793c1a82483adfc6d2fd512af17d0c767b0eeae88b79a79e06ab633a05bb1849c4bab37cc52a426cc612c08dfc8c44ca7f6f32cd6f92f8d4968e9bc99931856764998e524646082950f190a5a366663accc391c7520eb876722341b8613e140160f14c83dc027cf534cfe546eedc9b4bf0db4735ace0eeb50e3878a4a0673d4c18d465949b24a5e3c4245fc13c42168a4f2fcff2a9e167e99a11d661329124ce927c38424b9d34168bb6085208712aac078c2e06e8209ffedf706a62d1b90c52b578f88a446901f06eabe1de2fd64768ed08cc36f5ad6e9eac86f99fc718b3e564c1a8c9cba4e4eaaf56f099efcc307cffefb1311b86800c4d605fcd280237669799154e19b565870019fd9d434361d6f3bcb60f3a25ce8ffa5cd0731c069102ad80916073924b1000c3f6570fa44f8d8521596f69c217d910fb1e979b705bd2a2a8a7883ca46900b56c45160d1a9b30011e71de986d46b27dd6bff91d1c9383b821678bf26f2b596dcd41981756581088dc915b621d69fc9382a2a2585fa3d99defa5d7094b6ec8d15689e9d696a6b4a4f819313d01c3a0e16d8ee1c980d5b53c0034a5b9b74fd89f1c0023361225c84c2879c4f9c2b2918a87bd5cf4b7e120bac57f2eca1a9eca2a5ac6159eecbc4aad12c24c7502efc8fef808b11db87ef31e92cf3886288e28216b09288e5d74ca7bd61276061fbe4f46c683512fa53812551617a5e1e432d201dfaeb74d2afc326fa9a5a015f03514726678210041c14151c0118c103a225d7bfb09ef9df755e2a5300736d2de2974ea3a1aca46875c51b776dc49aa612279355b1debf941d317ff09e676735d3271ad49c602b30bc27c94b785e64b4b96ebd38d5add51bd87f005ea66fe5a0beb3de2e58fd8e22cdf3cd598eeda5b58d981b28d587536b62d1115f079e9ebe3c8c756ba4b1789eed45a8c5490241221d73e4d68c50dc37cdaa0ec019c34d59cda24813ee711bc35bf5670865e380a8b6b9ea57a0803e5c3c65c2d8e64b018b67eab9828fe276fde0a87c41510ea92029364e5dee8b83495148edcddec46f2e0fdd1656efd4a38036334ca614d7f2ff54b8799f20ede85d419b126875ac859c2f3fdfe6a2dd0636dfd1ae4c02253b844d79e392bf7d3b4cea4c3f872d23b01d340de5669c4de8d09d8f4e2b891e5a684b82ee0097041d1c90041db81909fa5a4485761d4462b8b9d0170d22a2f0c6bc35cee4626dea749c3784fa717304bdd121f2d855a3490f4f7e47a4fdab403f56757060f2bc4f07f59992726e83163c92af0d77e82223433801155a6c4e3968ee4be8ab26a9afe711d4045f709b97438471e840ad9075af2f6bc8382fda8012219b274f0af72df294b6d0d68fd7b5cc9cc9f3a4cea43539f92c39a7e8066b7de8f3d4a0529bc9c6254daca9f5aba85b20fdd403867b17c1afca8601e6ab32c76d749d8d66b383761258f3700255f12b78d44ac4337ff5ad378ad3d2e1daaba3d8c7309b6aeb526823a3cd753eb0f08aed5d178b79f5325804ebb838238c6b457f7cfa7c29512040eb707002c099f6a3b92e135fa80bf8829df7fbccd0fb326de93d9c957ae7e8d87a8f9e995b91a22a418dbb58c3d134a5293091dee9e116fe12be7b4e3534508bd783c7c19706ae0a793a89d2c74100353746c013da47c33113dc6a0ba44e385d7d34f9fbcf15f3060c9bc89ff6e7e07bc704e379d134b2085a6762433e793964a2a16edbd68d1674a5ea3698b3711fd3d36fb1d3e81c0031943e7b05978d6967262e7eac3e8eaea91d0c7792f07d74282d31d7e5d30e409947d41aea07a72b679e74130c52f6d7973ed24870a231c38edd128f0c814da4783e4ef3ec0acc5073b035ff5e8abc819e64e8c9659f41935a42084aea7f8e1025e326a148be9230aece5d1ea94c99c0776938c2cf42415c2185672f240f927a676d1657ffffa1d86074e00cb7241b0c5c567f1927d98f0003de69205d40ec3d8c794882254c41d3f94af12293d1012791c6cc0a8ec0521f5a81e43ec8c9e5e7f1f12e3528f4f77b82dc34b8e06d8075976f75fcc808ece002951a53c79af312dc754bd6aa6312a5e4ccb9ae4e9bfa38033953dbdb8ffd672dcfa119a7156716a0a0968e91a11cfe02f8cfb18b0ae3d96da8a0055cdebf84e2500a554118716902a5329d81fe55d671508b2a84792f178bd1a627684113e97a5ab0ca7304b300b4bb8449544115618b4034560a3d6760a3f778debeaf8aac01e8e43033a31e20bbd341d281bf2bf94fa5fdf3e906aa2b3700b9a6f0270a097bf0d46a4bc8a74b028ed9062c78d833db49947f0d727b11433822b3655f7e268fb5838c524a32383a53612abcd3bd82a5ef42f20864a91377c6ccd7f208027af0214960388b9616e4439ed11427f721c960e2e8cd75430098660e0ed4c58aaf66b195e21a040236ea52496193b23042a0f4e158bd6a40517e416bfa39fe74718bdc9ba1678c7545e034b28d11b3066e2e5d6a6d4766096d75eae884dd3985f2dceacb8c800aececd0d7d218a8ddcab874fc2285cc70e50337b095ef13e719b1ad149893d02b029123aeee4105d78e83fcf8265ebb1a4ba00b8c1c149fbeaaf9631b04936d33fc87e405aa972b01e979123033a056528e4b2f217a182d79ca9a0e89eb42d590c642cd6f333ff45bdec11c4dce4054603b8cacba41b8b61bff420c678280659960a9707bd3ad0d6caf6e57c729f015edf0e4ed4e631b9f354c2ed0ca79cb15c9865454a7d2cdc70557780a6932cd90363c471da2d9bf1e717b1b8215c7bc5b071f0e4c37c88f886cedf6eb2c6b2bbb8985e71278ede382f500552e82add15c9523e7c9b3b1d8fbc06b2ba33cb27dcc8386ac154fb2aafe719bfac0156a90430c43857962aea4f440233a52f95e8ea9a9183fe4b211041205f5272621b4e0a614c979918bd810cfa5a1a5b50778b8bc7c1e2ff286858e7ea707a969b9abd3d9bbc4a0d8dde9f42e352874ee7678939b173abb576e20a83fc5c76def41d494d4021434f3c43683ba1379d4ec553161f09a8758bc483af1471a8c97e3d12fb72f4d171f4cc46287f61187e83ec5611df4ff80658636824154dd66741ae64ac2836bce30bce2958412ddc25c0f7c06749646d1020ceb196d43c672bf881f43fc8856e253758d8fa91ee98534be27ace121d7aa6d0f863d23d7751f920c1d8101869ed45366d9cfc40d1e9447910c9f5919466ee5bcf8f1404f0a19debcd2f63c4f645f1cc25a8cb713a402167ae9316f2b700217f15bc5f7281eead463c3de5678bdc1c2b110b3432e41ccb7b79c6808f787fc7e4023127c4936e8788303692cdd238ca6b65b2e0d7a2a9e09ee22e7f63d49dcc7d0f62658dcd081608af7698cc17138656bf74af46997a34426268979c85f3acf3e68f9f840e9053f2f63793373134d0d8a5f31571a9d54a226d5bf1d6f593aa92e2c712c186bba0b9b0207b54ba0ae7b654dad60f31c77f8cf6264c87739a80689414bf6f683e644cf888d925d256b4a48843f809d95c721128b4598b98e79f0c21142fdf8a509b3df987b1ba5176747ae70096814d53f567102ad1ce984a1a5e61a66cfded4ef1c319d0b8d3d462d15e268979103589356eddb89dbb5c6ecd211780f8c7875dda9ca1cbd3ef195b9d506074d4d29485d25f1d148ea96a57ec3db749359cfa9328123322ac879978bab3e45320a6bb2559ea40d185b964d6dd8d6a545f811475a8ab0f940992527a8b55c5f90577ee9bc87d1c51b5ece7a9ea3498a2f6f0183740705205d970739fe642e37af0081614b6f31c8eb3122f39a2c393ae667a58c652565993098292699b4a6bacf992eb48c17b0bec35b9b16aafcd9d33f906ecce7fdb8916ac809da8e94368a0363d5df4e62eade6d04c26a2af06c9f77e03134b5576bc9c0fca5936ae6c9698ce6667fc7fc4b4b44af7d8bd5f903b5339f65985f9744e0addd45e090f79388ab021e0dcc31c13c8598620992c9365484fbc22b3d9a8f4a2c0817d764028612ce416b0122388928d159e23a3b5c0b057b5b7349e688218aacb1f6a571d26c4fe04c967832639b98854bada29b4725a11ba69540d93254b8b62e9f55c7b9c33e6d9c2a10d8a6349490ab2bb71b54ccb759955fe11449cc9b9a7565840973a9eec0fc9116d63b8f692ff5aab8806d751e3c1ed24fbd465e273a640f9cf27e935130f6f84f90a98453c11a4878ba0d4151a8d2c063874642dc02a14a065871d1764027484a0c061ec4a20576d90305a1dcf7ea455cfb3b5f08ebf881c66fe0bd370ceb8630f807e8e0c1b170b04c136c5b2654c66113b11a3ac10bdb5d61060a41a57fb4fa7bd78ff11480cc04971501a0f6971e5f5a77ecec3e991db07806c3c182c02ff5902b606ec17ce3ae3098013dfd8229ce81f25c58a7c3852604d0a35da7523044cdea29da45c10bd3b983298b94f64e752139bd243f0b1a2a17cb0f0589022abe325e679b325cb48828eea3140a8002c0f80e999122a5ed92d6a1bd31e231ad8cac634f208a380ec57dc6bb0c79563ecaf969357ec0c2c10558d5bf21f65fe77f9893a354d775b49a88d1a53540b193420b633543b371c23d6c3ab2e1b21c218ce21e26a401fb8059fee6fcfb032fc99f99b133019acad858f51c15e6f534e64bd704d3e1eed38d22efcf1818771767271269f1c2b14d1ef4beb117a122469df493892827d46b62c72549edbe7d5ffd3912c4a7fb27a3d85f836330c58bedd5efcc6d4864f511d2a47447f650ec4ac4ee8c494d8601217c09932690c8ba1d767ff966a10a954628d008518cf0d9097fadb33752e7ea7864db860fc6b43ca04e1541a1c630a93f58ca63934b2e9c800716c954e818ae38297abd23a262626bf89b0f3c92981c2c5308a379c0304ae1d9f568cd31bfc64cdc2099ee156190ba8318f45c2f5f87cd66191da03f5caab5156afb4d6802b33c741a30924af24017b7324b1c96a7a63c8a47d4a360a62053ef9792e136b42aaa0a79f03c6bb3c202e26ac4355d08304e20d51668131f83caedfa413351556eaa112ae457e2afcb6f7a92ba68da8b08149b30ff8b04f410c7b4262a0f03936ee0e23b433994955f8f1ac030d13fab6fce01f29708deb63590beb7ea48b4c66380e9d4c8b968338225cc7827d5c4811660c6c74e622836c92893f25d826433ee3c5beb8ed2fe736d91283f111ebd55c18676b382d350fe7053ed41800bf2c1f518cf75562aa13a52dcf37e3aeff84caa83b7a5195a4fbe21d48cca9a12488673a84ae87e7691b13fc0a555ab670d931ad2ee566ce32ca4b8bf5f1177dd086507c13d8a5ba0bd2fbf09caeb1e14f80d48db4c58958a46575c586d4c6d2a0abbecaa885d24729b47cb5c177e595b5de2147c98e3180bc9a19d1e384ea5958b68fe07f8b0eb9b793e7d95498836a5cccb623909c23cfcc0388c409df302febe4420c848d5e3afb4d0cba7f8152ac265adbddf90f3a84ee52a3368f4ef30ca0395de5c9ef58dc1ca33a9274d51fd9bba1241a1dcd4cecd29545f1b0adb228a82673b6bfe5158a46be76693ea029542724b515e4cc187a7c6f0a79c3354616b549d512aec6f2a6a6215d8b86a4cbfca5dc62aaa66d591b017f4605690d8581d1bd5d0ff17aeb1d982757c2c919f3a13fe811201a20c17b9e9de0d625325b7e0fecb2a3e1e383168030a92e8e98e70ad67e2cc08d55f20e74e03106a1ad15b68f3b42c3bffbcf966941b2144bc3fe2879d27ae69e712e8e622ffa248428410080a3a2e5f3707479a17fc8d4fa9aac1537f1e77c49ebb31e88878251b6773d697150f4523b57dd9cfb117298ff8fb5f4bcf1fb29242b0174b5fec8cc9e0787344a21e9d331030bd63dd548f4c5ca9faec2716748ed328bebb065090aafac043918117cc198e87d3400a4f0201891e51d904c4abe0152ed58c457b42f15dd190d4efe3a7ba6169dee5a5fe48a95ef7baaef109bfe45bcd0169bfd76dfcebf1ebc6a4f51aff150d11a5fb9f1314d0007b861d707ecf1e3a23b97528d06577a0b38dc7fffd9f98d9b2c37ffe855a9262f5890e207378f33e14e3236a8748fbf147311600f43f7e32cc846124db82fdda002765dea7622e541866bb25bf13fe4131c1f16509da6fa8c5e4c32601f47ede13da73dd18a0319e17b210cf6edc756563a221a8e5e1e813bb8a989dff75a399f0c8e728169a4e4242d27112927cf405cb2cafb603e162259a13391efbcb2addfae7bc12d0eab2dee377955d5fbb9c54ce4a686a12aac530bfabd0fc3288782bdbbfa6bbc8f74e95371ed607d8bb120898afeffa00da321dec1778f9968a3318bd8fa482e71580f378221cc2adf0a79c117b8e10e8aa86f5418b81da3f3ea2215f7fdd548451fa59e6cfd6413e6298131069194221b9088050086df4463084f52a8836aff3d17d13eb61a650b9a2c53ca3bfe7bc50d9e8cac9ad0e2e7822f746f2ad34d12508ac372abbdcd1cc5543dd4a000938d39f5b78487970e0b42c2efd089d13bc593ca2be85f40e90290adb968537ccc4428b27b5196aa4d91a66eb8a719b03c42360760c6db50c76afc3fc6dfc9bed2a73064916c39235f099605f9589805a9d197ddd3633201f4467340e4dd467f4b2c36218e3d0d16453c228be2e1918334a3c16c88e41b0fdcde9e46f34522c1a1ec1de3f82f4afb926bdee57a1e2af08c190808244cc921b467a15802db45ec1cb83c71e655671ec0fae3e6f0375e96aa5d860c589354e764874323e5c9b564d1ab549e0d73a81cfdb8843999baf071a5e1bbceb887d5865385e01ee3d4fa0ff3c7827bdd1c0b9a100a830005747d707a1535ebbff14e5e56d44370716cb708b61f01dce980a971209206861208cc944860e7d385f5cb6ed53f6488cfefc72b9ad4fb2c3218b0084b5afac6bd3d58839b6a574ab91201164804ed88196b00421c9f41f84fbb3b93fca245621676fcda1d3237b214eb2215c3df47bfa605f12be0573585e1525d6ca257b88a32a406f1ab569d4267b6fb8f87ce357ad04c4d88360eb236b7d9a3a89e71776e4850944cc6fcb461a7c8ec555c9f95bddf435a7ad910a84248d5aa82062c439b077e3ed77c1e88fb07730d3c3de65310dd73b1e6ac96f5347fe565e600d01eb123c05c27d03ee412735581ac86192106432bca445c242f8905d77fa9a2c46c404b3bf0621da84956c58b3801c48c2ae11704c4df6a4a3c8df4b8e192d493402214134d97a4e72ab087ddf57187dfa3ad3d7719a39a5f1f14cdfb2680401b2c21bc8c0e2a72b015cccff22e1628b3b7bdc5f99793fffeb440effd775c400b07b780ac7b7312680dd45a4dafbc0ed3a0df64623a75d1c7d3ac668d8ec97250805a1208c84090cfb85f0fa2f33a1b89c4e7c81e94fbbbd5a008215e8e4a01a0418782decc58160bd06ce51ca09f9e642ff3250869965e6e01c515c96acd2024dbc1e0df28c4635e7813f412ff8a9a23f160cf8c956e4af7b5fdd48fcebec457a85791ff66cb4645e57d96662758f30760b11275904efeda7c02acd1d78b1533327fe0e07570754a2f7cb4296b04e97db3a761a1d91466b634a10ea1f5e8ab3b2fc05707ef1b5f4deaa9f558877e5bf752c55a8600b4173bf4c5f4dfa3a066814d83841f86890f8e16c9e144910682a98df2ac196f2cd9656ea5ce13ff6b69bce06462b76a42b590b69c8668eb100589e0e21146619a362033de481aab2a28e5f071a9940606366bb0d0e23eb3203f3cb05d0de3f6b2dcf019af7312b744bcfdec0d007e9351e3d04ab444261537070c94198dede149d89068bd95c80c027b070530b4945d1b8f2df3674d423581a736ff4ed7f49a8e85bdfcc5af8baf29ca20b950ae345873f99046b8f75c02353a5b355c77c2cc508854a24ca6249c1b28a51fbf2b17888e517050f313a122c8f16e823b82b7797cca143e9e90f7cf2694b86838c5d16b22ec1bc2ace6ef00af3cc4958d8a4c7fff5926d17f1e88a3eb9f286ec970c14a19dc4fd5e4c8fba7f53862cda04374732c692ca7196f8be0d86318706a08bef8bb1ceb124664ebff04e50b19433f4fc0441c9d61905700e4b0f4666756683b8cf500e140359a02e11a6588284416bb7de1b7438b213ce0c3af59e38f070725d1c75118d606c5f3feae9cc21ef0fd6479db13fbcc622aa3386ba7ceb267e060a7bd22e75a171062b1b661b3dae5435b0c2f6ee6244284fba2ada6038c76cda609031044e1d13d0405a7f798472e0606b527411c4b8dc1789721a8a547359933f04fc6b2e8e49cc6a89f7171658f88d344f1735c904998d0b7f551097c5147e058567d39a43073c667bf6e61dbfe72fbd7bc04f33b48fd8514897be4ce16f18909d299335a44bc25678a457baf16611abae8cfc2016e744032e24845f0c023ce40e073630847fe47695fbb0d0f63f7d1473cb13222f207dba88bc62d5afe0886522a05a4318df82c46271b3179a0da485bfb544191a8c18042d47b0c300c6a4ba5ccdcf44218661823d2f70997667ed0f2860cf7954a013e6274a2741416e4326f9b097d780bb91100206f93fd52c99d280f55c380b2b735dd0950a20309c7f04c01c48366a6927f8428ab40a33bf719647b3b4cc1c2b0253261fab634080172d45e0a5120e364e95cbbeb8f9ea32ff8bce9513cd4e9815f391034c63fc63c8bf45aca4a95fdd5e95e08d4a344c23729d64dee36a9758f529a392b369ef5c02cb99ed2c1b0c91ca102221f5278648ee6b0b06efc1014f8c359f97d2d63db72e0c6c2e824fe91448679e6a2929729f944b0f419710ccef5d6850dd0675f27a66345fff9b4eef2821aa5d422acb2bde308f3a2df644171b5b13cd197465532d1a2599cc49352404870876c046a9d96d3193d5b386595093b255d122db4dec16c2834364135232993c3152b39e316fbed3065147d62e3fc2c44a722da6b537c5d2809c8a13af5ac4559672f0d1699530d56bd9eb0cd73321d3b108ded9d1bc649a37e0bc0859da9b8519c8931a450e70d09c599165af5738833f4e2fb3b5c014dc8b40c1a11225bf1cc5113d2942d1a16d434ab451421e7cf9eadef1b2c90ac72b30d1eed6020b06941f6924eb8698d5bebd0e5c05b72d0cdbff2bae89a6db0922cee2cf8c8ef73702bb96edddd57f1b3aff4551b87f7798decf09942d62f1a39069a3d001226e2d2dda1421bc8e32e95fc4f64258a24f6af394b030a0e87c21f5cecc7ce96b1f1b3d7f0b18017bac3417e8a066f19daa9f0a43c18e5dfd16a90f184d3d7c998025a1124c7c0bb30a1cbf2b944695b1f6fbb624859ac0f2fbdfb919f1afb2d40f1488c2a09805c03a5fce868e999a7afc55f070dd7b593c2a807737563e80f49a4d0d33d3822620833ceb73642d5762ff49b676ad041748cff7b0f035218e1a381c6225ac1470f959a8e2581ee6c55e3a15a646feb9fab1a3939b92bc69ce06429e27d8380ef007c31acbd7e32e6c9aca5642e5eaaceed28052fd1521e5ffed37b925c42b1497d4ea59d14777a4af9fb06777958ed0e1a10476228a6ab6be06ac719c8730defefae3d38a4f34a954289eaad75908281f403b1da939eea630d93800f8bf30cc894b43dc502e575ff23128ec4d5c956eb0974b2cd4c7c55b70ea0105572bc51c39bf25aa00e4f8957090a6ab76c25dc8e3a684f3566a0bb0991253f9c36561d1544e35349157ea7099d2e81def4b26938434240c98c6170accc811409d6346c6182995cb0d5422cfd05eb5c5c819e1b843e492b2177f613294f3acc82b9f2b7e8bd69b893f5a29386c949c38d9726c557f1dcf335aca4d4066490b22cb842b281f65a5b9ec0275e817a6478d3f99ca050b69348c96180ca3a5b476d1a45cffd2d69fe47e108c97d64cc0ea0b969d562b93842ed1739389045514c20298ea5771e9b94d37d0ab6d6041ea737dfd4e2bafe09b66fe20936ad2cf359c5412af72d267d866940c35d282924fcd2c8109ff0ff1c214ab363a2a6933b2165c06f4b78c3a14cb3539ed793e265024ab66c7dc58a14d8f1f918bb5f6b12f43e3559e8ae0e46bcdba2ca2aaee58ac07ac703d2e86c04a7f5b6e1356927ada165d9c6161ff85ab1ce66c8a33061c9239ddfe5f5c706a06db3b19ca85f534beb2751f8be29ff4b11205b7e15d3a6416ac3025c184a9cc4569f8920a926aaeb77dce0ba146df857a1107f2154588a25d643add7c673dd5934bcaafbf7071fd2b879cef9dd011115f01253f9ccd3aeb9028ce7eb6496932ab367339b0682e15fcb133fd2f028ecfa6689de79c3ad44b9e26480e0fbcd5db8f09b69984288d24417390ed68aa6ef0e99e9d49a92e2c4729c98a28edc72ad0fb75b1f9ddffdd2f6f8670d65c50068902f822150d398e53e113a998747fdd8b73029940b224c0b2d3160087ae30f8d99abdc0491068661fa194a20feb0bddcf989b5f9910efdf4aa1fddb8f0db3bbf617036d59255b9937b8be1a5c3171b566c1a38733726249c0695597d119cc3e6d190f84716c34bb73a3b3112c0e87d21333665deae159ff52741ed305c532a6d5007675825ed7fb135d792d657dc01df42923a64fae755c4bf696449810c72b491289cb725c965a73cb66ea3ba372ba9e489a5f210f4642dc2151b73e4802f535eb75c574824f0dd0a7b95b2fe803c1a87998334c54b25054c64d10980c520fca2b789a995b83112a462857a622da6a79210a01efaa082e8c808e2870801e792aebee65729ac71f71833d889cfa80af2183ff163ac66ec86780a605ebde0906bea90ec0d7a0eaba5c7686d12ec6f48604732a909bcbe9a222006d18896c372b0678af11b820130b65158100c3a0a045a4ec1ea12057a407fd08333af76c05c20d5708de3397d62e260b606fb0eee90b5dd1852374d6424774c5319fbd88322e2d3340770f8058a7fab22534cd609c4fb96f5b141ab30b1fea5ffb2675f54bd0be2fa30f870dcc75ee47a2e158bc09d7d5c1d2a89b7f7eff5c343611a4bf12f0a9871f16acf054082c69980d10ed70313f8811d68c393bc8cdccc39444c1e7be8b4335ce94a88bd076cff1cfd48b50f4860e0e6091535f821238ce76d0a95a96557da39accdc25bb103bd2a31a5d30648b52b0b45ab2fa4abfed728c1c8ef9ab172735cf4ab4975dbc432208a4b27e691fc7eb3fcb85526ee35c358a5ca2f284a558377e868f3cc11147d832befe222fd7df2e52f0f75e18b5b2a44ca5810a6ed01aa38141d588e84610f92dab58f8b1c15f41217b6d1ede27316c76603e962bb2fdfdbe1766f1759b60e706637db60d42f5f2d93dcaf455045c178c7d2cd6d25de3b6bb89d85b5cff4796df35fe78148b4e0aec99cc4b395f10b10f23adf598e3a583265e7b30b4d944c96c9081d5d71762c919ef45740fa48f70107e9d04dcfcf9163ac1e7275ba363a261e08817ea9d26963e6b0bf99856683161b10fc045197b6630e79adc8f35a4f7dc39e8e7a7f1237fe37764e3767071f7b5cedc494b2cf683c7e63ea8efd212e43a07766411071bbfee889341e7eded496bc24e3970e0762ad8507f483fbaac8881c78cccc02d7f848f128c42b8476ae33e119882b7c4d1edc7d4b70cac046492a531f7768285b9b710f357bc66e48d173dc465e891683d894408f17166cf540f066b776c96c38f293d9fcc77f34bcc95c9ad058021c240c83417ec82cf78fe890ff22c75fda630deffe215b5f6243a3f76ef85fcf140ddf9d28dafb8e322ef5b7d0180d255d194ca63c33662dbae8ce8bd97a5f1c765942973e69386c0e19f4a3167a2aff08f58ff9982eec08e03432b47c9a365589180a35a0809dd4fc0cf1535b1bd602b0a5893a22b950fc748db74185c6060fb6bbedfdd219e9a884287864a572013963a0b0475efee618b21f90b90a1724762302593770c9a2f30c8314ac96eb791cffa6a621b7625b906bdc8e5c1ce08c792e2549cf88ef668ad4356934c899c178a19042fd4f97a38a5bddcad6b1339374deb1d8e8114d96795a82b44c7ab46836f19f0a78bf4698a92a830afaa4031b56d0bf6dd99e9c118fc1d4677c44737d4b59881a929825aaca71030e30d2680395ca60623672782ab33faa147a2ba5d9f78786fb592777c3e35d8cc7d6f5f71b1be8a283d5c4bf4af6b7b50991fa5a930e8cb9126ad309ae3701f4b5fa61582864116141796b6bf5ab5a6b3d6b6b2641d664fa1b3a0aa2a90edae09968d042afaab66d59ac66f1cedf676ad90dbfb029cbd8d968cbccc4ea9a5815df27d5a9b88b80b18a655d813aaa772376ab16885619136c29dc6ada5d5b5a1bd96da0c8f0c980852ab28ee9e96e6407f06c4a9e06b264f92718a1614d5725a1bf58f0a89611c8b4bff5d7fb826dcab7a7ce05e37e83a19befb6c057f94431998944dca987a8b3ff2efed8f54418556b20dd30041ebe40d30d117cd75fde6c5b225fc317bf42544b55f7e6ba205bd800eaeb9333ab35fc944a7fb3d5c42071c9862b58673e804d27c0ccff1544f9d69de48290e64925f35703c9225fad970208e7d263a58b9b0dc034701a915b854f0105c3c952ac23def3a12ba2de5546558c40a9fe2533713bbf1a02fa4b3c2890b98f4385f9e06d39b78fa9ce5d071522cc32367947ad05ee200a842504b92b4c46842b895eca434810971f953abd96424eaca38d259a97a3dada71e49c3ae9f9d3e5d8f04c31bb0fde4aec9f232ec15316d54b4c0ba1c8b3c157610b4a464433c8681c741c50e1eff59d6975dcddadc926a4e3e4defa4855ab2c4868916512e02b7f190df1606c87a59aaf428e703bdb24af40d9d7792ac976973b3a45b7c1af94a7dfcb3c103d89536ae9ff9130716fa400360e8f6ba19c93d8cc0aac80ad6e70e36bb9e4ed0a4b22980986251d0f2f9ea54e5e0fd76e4ee76f3a8e990244d0b29f35498cfd83a4b704a7703ab9f7beec2b9ecf1f6d8adb791a8d800d97f00aeb77f91b0a831a61a77070d72679db7ebf5e8611c33bbc7b2c0d23174f2f427651ec33431bbb9e2e791e2104bb9e2bd78e8ff8e5a48caf9405860028205641c259f44e3d5c6257be1ef6134241ab66a48f2571e5dcd3863064b39e970de0f357d024f67f73ba7bd6a5b4b20ae863cd0e1e1a1219920240e1a78c1ac8843d6f01c73f9ca4682e1ba74ad3e37ded9ee2db4fb5da1cb05f5beabb8b4006ea1f76b0a3a9274aa19674ef3f0acc5f63d05fce7c090f498bd30fdbe0e2c9678a99874edc68490d2c217f00be8ed5a6a71449a6d9ede9ef7a3dd2e9c17133de0c95fe79a1104c67501c475bee98ac9f40d81ec4df0b4fd9c3b5e342c28428e630d16c0bde5bc3618169107aea202ad5e469a9fadf2b0e9b426d841183bae22ce5e6a69cf434b103216c87fd6aea707dc65f395b6a30249ef23f73ef81f4fe518b177eb6585df56194c8282e8cc609dcc387301a60d15fd1c621a350e9cfdb1d7342a36bbdf5b99dd28236b4aae6f825887ce631a15baf6b120bb6f8b56df1f9022676e5dbb82f0d31448f3ab91178e3602a8af9fdf7b5a223d2f468fe9da0722ee2a7e2e3efba4c57ac52c07470d2baf898ce269b759f820ccc3590cbaf4a068650a4f42d1cb51d9110ff8718acd9cde9e9a589951d30c51ea719ad33d187f2f6d08eaf40947df793514ecfdf2444deb163a2cbc1c072bbf78c2dc8173d1a08e71a5323add5ab5e4e0e03b5775a3240c42132574d73de7a01b0dfa157c4cfc9c96b92429053e84773144e71bc14a75533b5efd1ab2a75ddd9a6b120593cd42cff279918a26b1831de92692730068cceedd4f29015732ab95c8e7d07a287aaf29127a20bfd46b6e3b0213e039194bcb58b50fa14b89447042df948933a6c4d40b6c95dbb9c6b6628dc2f290dfb5484816614eb0a5f63a7405dd2c8cc5b1bdf02c9348416f3c8628d147dd62281c4193680d129ea8f327e814594743ea7d78a7fd247c306f48af5dc44b88662880ac5cbecf6431c8be5909bd7214292278ac0ef5da657c89accf251499e6c2c9ec9ee1db978fcecd7de8deecea850f7f1e77365ac8c402ff43072dcc7f76ed25d6c0c5caae15b6dbc69235d65ed2b2b21c39881ea8f2e5f9ba85768158b77179cb6d24a3052dfc4464b408980721abdf7cb6bba821e0de469c4de016f87a73c5d2c356c101d6c52add99cd8592d2e3e2d1c92eb139b28d39dc5f8a9a63dbae353f24db52ce6939e4772ed2ace568a80cbed12549ffbbead564dd3d3bfad81c8ce07a994356fba3b9bab4b3617f91db7f9353fad23ff091534c608639b6bc0ed05a1f430ffba6cbd1181a8ec6d1723486c6d0f3e869ffe8c3fe93fe7369903c1d43c3d0191a47c3d078741c9da1f784e444b99978947c7ebdb15a1a9a251b1d476768183a47cf1a9e06aa23371019633b82a44b8a6e702b642c05c7c5813d11d1e3fd8c5507c55cb0f86f868357716462e18aad496cb34e06bf4e8991a0490c897b643fee5182259b5119d40838797d121b962ac20bc0b743d83084e351c40a1ac78615e32ca37bbd09f24fcc3b53214eaeac6bb5741d692613743eb060edb47c558a8d5795400d498345ba8a2fc35a04160b200b87af16b920f04548aca4df9c67b44a8c4474234383691ac542cf05c63e16c75c6426453a1f043efa26495fadd7430f5eca70b3e6c1f0a8ac015638767259b3bab7833ff79ed85eca6c76f3973a707d3acfa35cd4fd9a374a77ff1e345afaa3caf2a7933b2efef92b90a044048963d27a8820437d7bb172b2a26b03bce51d0e5dbfebe946855f27a5f101331603ec1bba162356d0d4d0b99324385989b233b7402090690b0459d5be5af562b7702357a5aa6ab8a857a5be37dc1bacdefb16ae15abbb72193729e8d5075b4664415dc67990672f059f21183e4f303a42dfe58a04efe08fb5dfcd59afa7330bb9f27c8a13e66cb4655d1545f4437968cb97e8903357bb13f0a780bdd4a78ad8c6aae962f2c9c4965fe460d0d6410ad841b66e2fd603420e3e8475ed6403ef32df0db3ea2cbcb907fd3023215fd9c642a48537347a7de3970f6aee589d80b7a090fdc6df5bb8e0a81181940d384f8761cb761c9cbbdd67e6d8c94490ddea42c40a6bd050ccf17ba5c7267122b780120add3a2d5811546079d10e60d23fd66e5905f23a0a929fd070315dda5c4946659e087491f4cd05b5317738b753e25476fccf691502437107ce423d6bf49eca4a32611b6a214a23cf59ce7a51a23a720b0d60e30ccc2ac911593bbb67215fccd16cb85a07443b9330ed1f25b7cea12ba4abeade3b1287065c78c0aa6a921001448f0f33800fc3d87d30b321bf7e0fb1f8316c376cbfea7d6a67887927e6c9c31ec679d923d90e637297bfd2e12fce58e35eb4072128e937c536c21b5966c7dfb3ce6d5cae090dd0eb09cd92d5ecb9e8fc69ef03832f1c796d8641ca4c563a5844c7ff7ed3c5ec5fc3e112a34d117992e6eef2cac1806f188210507321ca3c5e27360dc3c7888a0cf26e79d9eceb5293a0806c83a714a58ca0e1f7483461b0908294e02085b8f8de708165f954f4fa293a2b40e61b62f08fe745f00cfaf48ff4b284b2a65b848b4238041ab1c0092a025af8234e70c74fe0b4cbd20307024839a1ed115b70a9a4117a260fe2b26be5d20c31575ee66e7b169b4ce503863408014eecdb7d42abcc89357a880274998d6c8b0f1640b8b344f513ce1f131cfa94527a2b392b51b2857a015f32971be7a7e652a37d9fc866c23b0aaf9f698e46ddeee26882a17ac3b5a6685cf2937c90c1a73003e8469e54939b2bf1cee2b2cb148d187b909629d10b4e791e48d5648a11840d08c7bf720a897f149849645828980fd3959d58c428d5391595f5792d902119057d67250dcbb650053e27ec15945322646240cb5269bf3c908e37b074392c49ec638852b19fbe0ee6dc92879012c3aecbceaac5a64e8cf11a0b90843d64b97e4161391cb629a0be015594507ef4417004944945529ae20733705bc9fb029068c1245ea5af0c85700446788693c80350674a0914732018533149d9438371c3f40f172d2b3f98ccb427912a40dd736a027f180caa4aa8d18f766d26bf00358ea521931fdae85629dc2d56db624c55d254b483a5827bae20af0a2284417315a8553145adae3562498e5f075bdcd23daf89e71dc6ff8853dd92a1a8a96103f809e885ad6b3125470fa9f144167174b6369e60b8caf0111eed020938f4dcefddfe966114905dc9516ed982b9b0721aef83f6d21cc7313f959b90905fe207448be0d9d9518daca54a3ec4695174738d7a9981fb9159f4d9889659d89f301c3de88f37c3a503bfa41e8500b24bcc099af3c91cc15e2734481038cd3990ddc52d337c9631ce59be4b90d00205b84d2e4680c2ad92fb238fea275849d983c6add30e0275b33ce4f2898bfe3d37b3e923f019fb2ce098e80c6a20d380618b00d48b751da612cd00b63abf2221bb32e8258ffe617497aa11d24607efce21d13dba519b1b6390c512bb1ae41a04e8919afa0711e1f24a9cea28140ac831598bd0f047bab5fe00dbaf089d7d2926493ffb85714f636482960db3e38d402d3b9452bb0bbccb871882dd8498fccaa3bb9020447b1ec2bfbf4c4b4ddb0d3613588c46032d3840b91b584591ca0b6a49b0d8bda737848f1dbc534ff6c170b9262bbaa598511390b1ddbabd236f6e084b63a41060ee9484f25629158c6f4a589e1a488e41260e7b2a2871caf290dfa76613d21f85115e2c4fe20ad060b01cfc95eb28818ebac2285a9e79da3bc6c462386a7089de41a6e8805989277cbab20b9f0ff24f7519c4cd374f81102ccf676e216075bf7c50eafc0cdb99d525188aed49008410b19fa6b560051d0bee7c32dcb6bebcfcd68161643442d00ddf07ce63771fd157abea678e611bc6551cbd80ded1d50437ba551399244345520525cbcd8316f639416f51131a1c3965a8bea65988c876c81cc52762b71d40e37adc43c6ce0b744d2bed2418f4ba8e64d6027cf130d581730e8bf43f455e53d034ac85745a258ca106bf5858593d83519c6a59ef16877fd54b21c8e9c67b125f8e9e51ca68d5a2707d18aae549524ca3e5e340b41efe4f4871801a128d8c9398e72584b2852ad958f1326349934d5ac1236eff3ed7d8ad3371d7fdb2415103d835179ea002372f878b112fde29853de6a60c0738ef12bc8d25463e8ee7b66c9335653d4895644f94d975c2e9b5daa56e48e3f1e848ddde5eeccb488f53db2c72e321d3ce51fb88026a6344c12ccfa6e403ad5ffa0fc38e03cf1da43f6c02ac5ec433de136d137c3f6683ba662746cc82d48ec33d286f3b8298b36ffb29ff1a84bb1689be1645bc29de53ae89a6ad1f61243d534537fc34437e5ac90c1b0deeedce28a5de236451ed6847b7e6527207a1bff83d3090d6f0049254837ac8894b8b9a0c7d216a9cf3be17505d87b68c84180ac95e922a6b0234a6d854bf58f6530afc19ab0253dbf84c4e93a0f202ba5c1aadfa022a640037788331b488130ea4018ace1c27f80a2089588cb08c0097c91bb04f0358c31342d21099ffb7423089b1812ac0511514c508fb9258c90eeed68ff106e470f1dacdc5bc029336368c9fefd59f4704d0d3dcccc04678f5758532db8231573d10ff31327195f2ef294bbe946f04935369c5b264d91b188d1f5b8398c9c75a9b740bec6dd434b91472f1d28825469415890201b9623344eade995c4bf8b79ae5e69c9717afcf19e91eea105c25cedd93dbb7a0abc7474f91ead64ea0f9cdba24e8d2d438875cfb36c693920bc40b6df316c8d955158911fa6e1f847092c355dfde973f8042415576477d44ffb09bbd9b188a207b61f2bca78492732095368d2c43909897e501517ff5ef0d8786f648871ac155512948bfe356d8cb09deeeb579224c8f38d4f178aa9a4655e4c00a6bef308c65a5d437514151c6de18cc15c399161afe193eb7951fc38862a507684b7c9bc06f5599a55f556ceb1d29c87c433ebc27cbc383b66c4e16fd2fb9294a846a2e332133001a08ebe013651d80484700b8480cbd5f58c3570d6c9d613410ca77ea65a2e94261fb156e6d4948f3b627f3cc9b51abde5dab6254f59c2fe262c4cd897aedd4abc9f8d61a1303bf9320f0fa4586bfe455abacb39d7a186c132769b84ee96c3f6d24dc80ad586d87fb7cff60d62cf4112bfc110a81c6d7acdf8595a50e7c2ab0873278c1768bef5276d80723b50dd86e3d48c39fb35788d656e3c67e2524368c9e606848b8de59a02ceec3450785458becf8c54cd46d933b92218cd79d792061756862bb625c28cb1e2090e176202e5b1c83812626fc516ce8f7dbb047b36068b4bc3bb4b4d8c53ea6bd8f7aabf5e85ea47ef2da35eb4dd6754f9c54b9b6e8375697c96c74f1fb3b27ee5ace8decdce66dd2cca5726eef687792a2440e8473ce6d39d4f675c440f7efc4f1ef165835780034b3509a2fcdfbf51faa263a95cf7c811b87dc597bbad404c89b2a6d630120c92b9d0849154c9c4bd8b7db4a98136d20f1b89f05b6ff6a4c1eb8747464226a4d41cba9394f4a427921592dcc83fdfd314031fd6a041365f10cef2b0e6bfc7fd59ec790e6ea349217c85a64f195f6fa8af3962bde858aba9eebdfca28229338f399137097bb79584a7c5cbb3583656c0dbdf49cce5cfb588dc439f8896dd9a6282cef165d12f343e25e71a7b45a92ded2b3b7f52c15184f867bf3e9b5462237e943834a08b5a23fd441d2991e0ca53f2525e5c213609d140f7b0dcef520a51834d96c6fb0d2276e791c529d298fdede706e5900c44561b5b0b33426cd6e39335ace7b8c5ca1c0808782ea5acffb2ac8d37d0fe34224e0c223a0d0635532aef4426cacb11f8c4bb407631eb0f8020c93064f5b02df1ae720ef74c5bb70c9f06f60a3597ded3248ef62625fdd6fb30c835c11a49fe01f61be575565e14a6149aa7057b07acf5efd9bad3b542719a145cd204889e27af0295c438bb9c4856c135edbdc556070ab30215e05329d1fb305c36e0a5cdd4dc0be62234b62f3b3b03efc64b8f825d02c86df35d9504484a76a4c3227e741a52ccd2fae3c61b6fa917235567603bf834696390ab2006ec24d649ef189efbfb1ff1fa09e5eb27e60a26e10453bec01d467ad64bfc10f4ddfa2ce97095b8dc001c5fca5fcbcb0a5047499af665eb0d474fe0f3b1d82124e848382bc74c4a191502ad450348af8ec59a3d18f06befac72931549fe0832a269c88663ffcb005fcdf1d9ab313942511d85b1d5b5db05d123bfa2effbbe6a68f24c29d4bb9ed7aa06b41cf7665af607de2ccdb2ede6f065e7cd46d3f58a03836611a944c81b91ea071b710c0c076ad931064ea9ffda9afaf176464ac588ad5cd64a41d9c955adffd1c9cc9911a9a4934493d8c02fa077bb36d4b9e28c3516ff0d55a574a7125e434e763792a5d245f4b831791a369bffb5002fa674d857953d28fb970569f0b97e8cb784748f918ff218a935111c5c6f4633afc115e8b8fd63159f2167dd8ad3f386c8dcf0f45638d411661e6a2310c3b02e85dfb9654bf106813fbab14e00147dcf259a0e597232a345f445076da6dd684b1e77ec4c7eaf628bc8e9858e32189f802c342e217cab143636f7a8c99f08fca798498b48dbddb3e3172d919b28d61ced3c320ce1cd453bfd00b9547f07b027ab69766ea2956136375a8b9c767ceacbd61009644c27dcedc1ac8d8d753f21f6a49b235e5d7d7a272d5456a33a2807ba23bb3e78c36ee8cd194ec46a9291cd9c026057c04851c44ae676083549e08000e4ec1966001dc4ad3118186a89251b93b1ff8a0f6acb7a6eb19e23bac6fc7190d47900fb9582fefa4ab3db2ceb9885b07c89807c64c461f1c6dbfa4454f69e822a6c987936f7fcd4e4341d226d14140a624dfae53ee4e502876b274b2755e9c1b3f05424c40bd7063c29210cefdbb45e7d27984d62617f622dcbd74a5e13215827ab46e30c9782a5da62765efa26fa0291b2e538d0d41feb622da950ee0420f7f2ad921e992d4fcecd1d2bde7892e4bb301386a59d60b94cb048cabf5338b1fa8c68521f1f18ac07510c25645ed7414587ee2ae5709eddf3d88137e7323155af456640d4ca488113fa75b18c57a8ef417588019a825e4a097f27add8ed830014f03bd1fde106e3020fb8d88e79b9da5b57564bab988a26ae95baa96f3e81f96b16378d274e348931dae83b9ca920e248e665d9e061d2b53072a8715b9804bc7528389014bfefa1b002e212b060911fda2f4cc0b7c4f7cb9509d14a2bdb05c3b1448ea77fff9e96e041991c42d18dad77de1287f3e5ac1e292e6b52db4f2fadf5c222b8c467ee8b870b5ad230b213c2d2d7a0980c56fe05b6c14281031974671132dec4bf23c4afdd49d57a75d97c0b38ff1e8a204eca5c40d10ac8ad343c59dddf32d4ff0b1eafe68b9ac5163d805956228a3ba8bc095f9b604b272de17fedc4c2462c72aa7d0634520cdc06be703efa56ffcde3bedb98a8ae699845223fa36866c53a15896b2430cadc035c6466c3027c522ae629772b1cb8d4228522e6a17ca44f8b69ce38a1a6e954e98426ce55587490ada780489d4eb68b43fc7e02b34ad3378026aca051baa17a49124bc8447011b19970030fccafdb5db6c10b1b1d515388c0f0af29d95016613744b143422bbdb7dc592290baa1d22ca0ec3b67f058168ccf18f11947bda68f89f9bf9de2673c8f36ef5012ebcedf25fcf0aa2f13df45bf7ce60bf4b278b25cf81dc06e3a2c8c04fe565b399692a434f0ac268966cd65cd11680299c3536861480a57cbbc8c1c007b57a6de4331523a76f4ac324604854ed1c04cd004bfafd42e801f48612741f0e914512ab457ac5b26b3750c30338c5ef9c6b0c7adb168accfc2a3adf9e497e0fcab808b7d325c460e6227d851537bf626b091aa9aae1eb8ab096318bd2602ee19569bec38548e3fc486046dfa69773eb4c803b52b20635d11caef8dd27e1a8068b5e5996d6198982f64ece71e769c4c395a33f419ed9089e303dfc5b4e057292086803bebba1e7fc173536d155a406e2788ede280917676ed793dca44b293b00778fe84b4b2c252652003d04c1567acf7cc5f48a514c34cf7d66be8939935cff79950a2e09fbb1361cfdeee3022a80141751482018960402d6202901121f2cd76df73bb97a98566af629369b64aa13f0a15a0312e6e63280acc14e0243f685f916e176cd80e5dbbb91ebd5cd0673f7da78030253c41aabc27571e990deb05a3453a83ec9f23f04a467371874724b9f48420a48fe7389bf446e88c6ff06ef1491b6c4c37046c84322278e0f380df5812e5d7d7b249774d4c311cd6dbaf991ed1de1ef10124516df7690c66085b58b7bec5355317e10e1133001663636dc76a7e8ea4cb800693eeed243b5d3002e9c4f008b20da4eb58fd168220ed741698fc681632eff915215676c9ebbe4937d98b92d880bcc856ed0e8c46801cae2c02c53a094913ac4c082d186d386b3f2b10074207fa113864b9be7a77d82a38aaeefd42a6c536053fab26647a695feab916f7aee5006b54ac7d8ff5acdf7218c6c988c219e8c00f68148e4df25d8366b84b22599926cbd029502bd02499268127595bc5024f211692b6ddbb26ebb4b3618bc66f295a9d134a84db409af6a136d32d319ab8041b3a05929964aa286a552d0698713ed44a37dbbbbbb3b6c9128c6d188b430e8d4ffffffffa2381a9148a5d2e6eeeeeece524a29a554606b8c784e5064a727435a38f5e003d5477d78557dd487c49d784c2da46a0bfdb00cbb81248bd06aa5d2212bd5a62d684f94f551225d046a112db2ac5a64c449956a8f12d9226c041e410215892241a248489cd7a42a24b708dc23cb709124d1136d06a86d68a0067221bce6b55abfcb659652aefa788b15a750911c7e6011f2018719112c423ee050038b06f25a936278c1952c59187ea0fee8cf8ffef8cc8c8ebed81f62df24ed8249a644979460f851264d4cda449b2cab361971d26150e844631295893261a24c80804eb45e9d76f013cd4fb4138dd6363490ab1aa881bea594524a390ac1a48901526933b90899dc645a56d38873e55ac8dddddd21acc11ae72613039caf52527c753a79d75ee779cbea3d0c823328039ccd663348040cfa6f18248244c020180483823efe26534e5de7efa948152997558e38fda5851a88d997ff5d3e0ab5b2e22c2d2c2d2dcbdac2b5da07572994a6565e8b997f502e2de12d26064ab8b8bcc0c418989898658de118cf39270bc1b5e69a0d33d758d4def7dfc7093a9a5af4966a71969612255c5e605e606096154669218f71989854ca5d2a95cbccc8cccc2cebcceb75b3bbafa00944700545a91b262b9ca7f119130334264c38aba6c64f985c84562756ab655d8d38df75adee2eed07a62c5fb16c6cbc6bb5dcf572bd5ecbfaf2e27f1fbfefeeeeeefeffff7f7777776f11fdfb65c2694cd4d49c38e12bd68ac55a5656942064e32c9b56cbe5f217ec05832d2b2cc618e34d44b1038dd6a1b871d80d0e0e0a149e0280140000b0ac008c38fdfffff83125822b894a79f1010840000f408001067002582a0850a182575584023295758be288b4ac25e59a9452ba94524a29a5943221165b4857144d2e74442ac1ff797d0ee2a9271616958ac54281a28019bb2ed268b139e734b9b789e35c74ea4e5db7ac1d2d36679c73c6e69c33c67e77efefeeeeeeffffff8f0c551445312e6b8c231269695b725269dbdcc499386e59b939a72fc316b1b24f26ddddddfdffffffb3d96c369b95369373a614ee74ea3c7ff9bfacaf22ff274f19a514359412081966b3d9ecbbbbbbbb534e5de7792a2ad25391f21f855a6181b3d9cc8828ffffff1f638c314615f98f42adacb0b4c096165e6d6991ddddeeeeee2ea59452ca9802cf1858ac2ac7cfea6076c283757ac01e3d78b5470f12c733c7d4220723c15138886bba40cb10cee064a6ff3f796b74d7a98c420da9bb5c3e54f8717ab202109d50a7ce65d539e2a48ac5526d6a72e152855caa4d5deb52558c3f80cc202cc4a0c63416d31890202cc47476a0eee8ce8eee0489e9ecf008812a4485085121b11d1e21b2215087e8105ed5213a84c44979a24999ea6c0ffb406844112d42e260d00af64ab48aa365252d33148996559444e442ec234a96405da24b785597e892a9eeeeee5e9bb5399261d6b3990cb39ef5cffeffffdfdddddd7d213714751c917cf3cd7d59bdc4b5dde2b6891a6e9b0cb3d96c369361c664f6fdffffff714422954adbe6a5cd79e634777777efeeeeeecd4d268e4b493975b0eb78b5ebfeffff5f4a29a594a3d1e9c4c2a252fd0af0860981824016e00c31e84407aa8eeaf0aaeaa80e8903626a21a7ebcc233ed00818646ae12dfc092f435eedde504cc7e442b4f3c3b2964788caa0ca54b6ac2a1b715215dab463d8bdac3de2fc7784c886b4d003b5477b7ab4272464480b3d3e44a012512244948894437a7c88143102d5881a31a246a45c1fed20d6081f814892404da2012f18ec0607e2e0f02a0ecef77ddff77d31c618638cdddddded799ee7799e87c1aa5ecc34d84069e0407d604018307815060c12a7b20c5ea8aaaaaad2660c3f329d199cc87476768c519743215d27a959d75de7aa96923ac422a4cbf0f592383829d50729d5464341005a562a04115235608d1acb5a63c4759daba5af976ad3d70b0747b5294e370822d4188107126c401b3678d5860d120767228c20e5086b634b5813f6841bf0c60d5ebd71c3860927dc400107c481835771e0089900b428e0e001a69003737278352747a290424e0e1d3be08e1dbcba63c76a9563772c8fedb13ea00a248e6baa3d5685fdb12b2c105ed5a993c4f10ce932ec26330bcc31661de61de681caa33c3cca43e2388e481becfe7568505608cbe0d26448592ed7885472e8722929c68f0b6583b68795a9cce5a2c5e69c93c58acd39e7f4bcf354541ef528d4b2a26273ce19bbbbbbfbffffff49fffa4adbae9b73a63897723a759e8aa7a2b2ac2aeeeedeefeeeeee31c61863eceeeeeeeffbbeeffb3c2ee5d4799e8a8a948f822814afa25093e76a159b73ce199b40cc39dddddd3dc618638cffffff2fa594524af92b289695169612255c5e3c2615934a2d6b0a2626955a1a8c893131a286313173ced894b5dab7bbbbbbf7b7947071797981818949c1548a5753a91798989e1f638c31c6eeeeee96524a29e5f77ddff77d0f13934aa95432323334908686576968dcdddd5df47ddff77ddf7f21ecd6d81d6197845d1b0b4b20712b420d57d34279b23df0b03496e9f0fcffffffef7e205e08677012baa149b0902a157d489761aba530d80d1414c75cd60429e44c9003e6c8b1ac3946dc09ca136fb5549bb66030d5a6b01871e4e4d0b18307e4c1835779f02071302847c70e1e3d7c401f3e78d5870f1dcb637bac8f55e107fcf183577ffcf01a0f1f2a1cf18140201020bc0a0448c8c78f156610a8413448100da2ab150b3a3b3c42027233ad5629cbccacaaf2b2eb5abaee1f26c562b9cb55b3ab65b18dd25c2eb559d7eeaa8c06e5490f3c040dd1030f010c40808a0256c0152b7875c50a12a7dbe6262e65594f30588c2a76c51ab00740044209c00412e0d50412207112c8952ca16cdd902ec3ae7bbd240ece02262ee5d4411c1c172c0ea0d807204040f512018c20025e8d200212c7d28003ae26192a22144441284ae8090512e8111fd9fffffff772c395e9cc18638c31c6effb3efdf6e32f6e51643aacf577b26aef926b87f4e6c653a4a8c002bd80a360a093c10bf8e2c5b2be18ad562e1b1bd5a636363632b097bc518536bdf11429549ba64811e30519bcd06003c80189e35a061a6cc0018c1830460c5e8d11434a0d968385b131b6031950860c5e95218383181dc8f060069c31835767cc30a208238a9032860c0f667c4003d2a0c1ab3468480f3ea00142085084d58aa76ad7ddd8c5b129e4e4d00175e8e0551d3a48dc3233333373d7fdef94524a96bb5c4b2295361374c54883f24469524aa90b83953637712930256559536030b9a5f849d10a45a44934aa0b3ad21754095425aa845755892a2171caa23026b0ede606050a095a3fadffff8fdf2393c964b2ce53718ff53d32994cc6f2c5fefeffffff182558d78f4b6532198bd5238b2fdb81464b89e04a51292feaab46984a57313120ff512b2c2b2c2ccbcab25a757777f79c73ce89f254c62b8e5a61616969f1122e255c5c96d5455575777755f5c55d5e60606252aa944ab5ac2a5555ddddddddddddfe98122e2f4a8332ae929999a1315163a2a666596be69cb13977a0c9f8eaa2ef06eaeeeeeefffffff73ccff33c4f2543336382a6c6c489132b96b75c2d976b595d362d976b7b5bb1d512356cb57aa5436c7e7fdff77ddf577362b562b16c6c5a2ee872f1aacbc5b269b95caf17ec06dedcf0eacd8d8836d96627ed888e12e4eeeeee31c61863eceeeeeeffffff97524a29a5e7799ee779fd362d97eb159555a854b1bbd9c860060000031b000400c22010868120cabdd50014001522252c1c3e1d0e134ec4c1582046c6520c06428801ca18640002c02845cc507200bec7d0d1398c0469284bd1904740e9779447b8759902354190cfc4c3b38b073ba2529a83aea59b4e1958e7fd214b9afa7b8181e1ded318e2c567ec429147c66994a74849d160dc6bb4927bcea3af0206687bb7ddd99dc0592d9f1963c42ddfb9858223e2473ed17e4c9e9c487fac6b01ec2e06e17ca0be84235d516d410e2928cbc191cd21dc7b34a576c394d886b580c507d3057cd9e91ab5ab62be55c61dd6992520f959d525fd0cf4732d6848c54df452c6e9836b79e31ebe80bc47f90829f3d3d1dc58c746430940509894f16600110a1d5a0bcd234d625a451089d306a448dc5c85ea352534a2c9c99bf5ed69dda7d63d64b6e017df2802727778aa18d624fbae3be6ff2c92726d55b2899ca3d341b02f2c027c20685ad319f9ba984103bbbafec51191b1a890edae42b54b8482a57061b06229dcd2a29aba39a43efa2c93be875eace8dbf210c932ff19c91a11044af1b78d595ec93bcc66022b4c6ba284a021990cab0eb01c454dc884fa65306dd7fb2bfeee713060500d2599985a06a4904f274ec9716fa8ba3747298b3e04c66d22bc1c5e255d48d003aa4440237e341bb3965a385ea55d5f324ca9c26ab184625387dc6351f335735f42e59e78176fcae2137804fb7ed99428300872084ec0ee42983970968c1815e853139b33b0cfe8b19873e0a61b314440cbaaeecad4fac9649dc111689690d1a2d4ce094cb0061fd3f136eb1110d0454b17dd5cb6ad0b2942e27449de4cce87dd11ffeb762e016edec3df5cbcd1f337741209e8f05fa1c8f2db0870f183df6105683154b8b563936118e243b89cf762e32889e7e652a032f82dfa274e4bb1eb8c797b7678f1722155400007e371119ae9e4a6731246f4bd81a07209dd1a13e3d4257a54b88683a2d1a9445b5a78a85e95cb23742ad53a4e6bdf5c28efe0df3f31c669c31378cfce00c6ee2ee7e6d6d7d319b710dab86c45352e2f054746192cbfb6833b685ba00993b5e87364a11356a5ebb64908500ac428900f18ee862e6984622c178903280b4d9575028a77b81aa5ce3dd6f12462ccb4a31ef89eb7515f2e51a358f4b87af2a23e6ad40950f37995b160b4ef718be0000091cbb14dd02677ae674be94c2c5ddd5b175100218e951f7d029362492a0e04a7e8930b96a87ad05e17ae0b627dd05836dba645ba750b1c99411aac18c102a8465f3d9f1c7dd5db33720b4495800aeb72de0e1495e6cb51640e08c588eb1f314bbf8aa7699eedfd61f40db1f88a381e9d2cd0c486621ecf748931143d146f14d24263fece4b57f5e65b5f11ac3901c3524be79320aa6cb94bdd3447ae68c047cc4051bc5748358d7914c9d1334a22ce730390acbd22bff33cafca27ed0d91c336660f73338804e912c03cc9144d17c885d73748fed010401aa2edcf28bca5c095c99c78871b6d172b20d14074bd7ab1a30f76f2727bfbcf9d0df759fedca4cc07a038f81d69f90d1816bd24b0c53b6d7098445b3198583edcbdf14a6d48de2085e11db0417b8f1ad16e4cf63bac17ab8ce9231f426f898bbe6f83b5e48c423dd088700cb59f91c110e56f0e92b435071911698ec9dc073b0d70f98d89f9ef9cc5a133650cafbad96a5339dfb67124b7896ce0169da2031325c14f6fd6270ad0b657ec1f81ea466e0337f3c2197214ca402b2abadb5d7f302ef504728b7aeef2807a9e50d7447db60d54f90db6fbc2febe2e8850d62f816e02648b4c0387819135ba6ba421948af931a2c6ea85f3813300528c3b97f69024d47e6a3054d1cbfa7964d477e47094bcdd643b6187c75fc0fb4d6bbb8f2f03f555658fb9e7c0243cc6d0aaac4c3d8c65aad7f0bf099a6781f2d382b0ca2b67bfbbf9e6669e0ef2acc513dd9dc9c7259098204c1c1aa28cd922e0009aca3209cb0a94038baae6a72ba4eaba9083d229992f2f391d1d8a53cd09102e26122723ed12ba1cd51388d5697c8e916e1f18b7b07a70e96d1dfeb8bc47cd972d514884414dc111c089bad1d94a7cf1ef40fc951e65e578021f57280035e74eac5fb6a9ea87fa1a5ecb64a63ccdbf2e3775180ab1310c3a514ca8fafbdc14de9157a69bfceb0e2ef144f4abc7b98c273b3d56f35a7d18843e586f8370816e315aac3fa2f59c96e5254cfc17c21f97798a91fbc6df837425d701a0536d621d0788fdb7c4b6e09e72de36b43978471e3747e50aae91cfcd9356a945428bacb92bb08d2fff54c8f43aa6346f9e1a5784e60e3894235187f7ae897b595b315ea95645a912a9d6e11ce4ffdc12461159d05c5738e7250651ff33fad76d08627eb0dbab17a96edce621bb85c4b83e5f9022fbf577d76d3431b2bd7baa9bd22e580e390052f0f0d1b287fd00441e9a86375fbff35d9add4a774cc9a22454040dfc33d8e4516837f5ba38af0fbb4c6c6851ac275be1ade31840ceec0781be1c28f6f11387deed02cb7df11e451686018d4643d35db88f08b50abba315397451f0057a764b7ae98af91b83f4350534016d59308706d1da8b9d0fd4f7393c3beda675b64bc5a87482b0325f406acfc466580776ac55592d3a3ff1c4eff17136fb1d16646e73f1875ebab7e3cd579552fcff686e8431f424a15c489332eb83db8bbd09297525d42a4f01455bb7bb587aead69498afc3b98d130d5997982df99a3e918d4c3791cdebd7fc987bc82980e8692a085f83a77c8e91fe90111e498e81a3025d52cddb82ccd7ebd9b0edc03d12f9336e39784f4b01de9d7f383c9817a54634ba87545279daea7ba3b333225873384b7f19dc15c21c89fc1e6f0034cf73c21c9d147ac7a9bf0ba956599508858deb15af6b702cd350df5f10a9d0d33fccec7ad4589e1c9ae5ba77b7f0211e2d496706886710b1892e2eb90a3eb8376026936f2f98ea022d9539d4f8a2f5b36e23c4a45e31c953c13fa828120caf0be2f337e67d9044936cccf51cc113a3340ed99d201558c360cd653e8976cd4667c14ce02de7ada466e62cec26eda70cc18dc2e099a3aedbc1992af697792f0830397e43a65c4e72b9a9f1ecba1b702784c511e8a0d94db0ea399a9baa1cecdb27a779ed5843f87df36bfe37b08f4aa7d27e62b743df751076f0648dbb4a4132fe5b475e29e865a56dbd3aa3a140456dc92d9f2d58e7ee84f81174b1ef0f75a2c1a31b3aba8fd186e25d0181d2a7932dffae8e51c715287fe0b09fa34d225315faf4370db7e6db72e23573aee3529a2e04b3381fbe65f4e765ff9f4492bf6bc2df7146e96dac8fec7d325b67f237c65d76936f33d6dd99fc9b71af8e3d752ba3dd3bf944a34f9e7752930ab62ba212d92988c1831f1b29af0da1e1ae344a7ae9e95d451b7fc3b34ead78d29b84591b057a8873adeab5be56c858af13dbcc53f72aa72bc5b5a0abc5f81d01a5698e754faa8813b9fd3507efc5c906fc8cac07f03344f5cd1752499fef1f37d9226451c54a44134faae39588d5e8f8eef80fd2ce80a0ffdff31490b2fab39a42b5b238efa411322ff33d5246e3f27341a073a86a542a5b8e19998e34780f021e830cc6becd47c7e6680b9df8bc30ac1c3e28e2663fb542fa797a99e3ee07f5c7f99ff0ad95f94edb0edea8c8c79896ff79cf3a4e29aa1e38afb091f979bc08707660d04ee7a4c43015db659c639c934f18a763114d2da824510232aca83ac556453a73878d05f1ecfe36ad9b5efd428a2270f6f4433bd15abcf2ca544038b564de0df5d5461582a1052e57973786046914095004784073a998d132ad087ad625a61f7b3f27a21b84ba4df14934075b56a028a182e7d09da3a6a4d9a4c7355350bb1e92fc137dc32835cb251309e572858e4a1709e44c1b1066d9c09094c76943896b057037b137dd9d1cb2c0d3644a84af496b1935df45639cc7804a36432f059adc1ae768c5facb40008a0c028cdf519202f74258d2e4e16fe6cd6d6458f033012d321a03481b528c03f456d84ef775fd84af7ef4d8ec48e804429a1bffbcc4747918391628b555a225526e5e8a4c3354e3cd4d08d6130635957c349f391b1c8ff1b4268a4c7dd7ad1089042f025868177ba66c7e565a5d1429e9a2cd0b710f0a5d13a0272832c94bafc61c48d1fb89005d42b049ca473d914b3e6f1c6bac0c79bb8c34ceaf6dc2f267b94f82b0deac813c272b6871ea026713506e34fe1a0f844c44b9f86f9eb8b066443a3b68a142b7461b45a1c916e8cee581b7f01d76f3494228a5a2db726abcc22482a5607421e67e76ca45b35851ad82d15a21539e4c3f43e2443edacd3c11d1fa1d6f891a35c5f2d66d1f45144b3f18b539d2c57f1df45f8501ee0e847bed7427e523baa530d656e9305072047c2c50a05281990fd1900e2432f05bf3b59d069a10aed4a3a3e78d79224506c12c27deebc34a27cb656fb0715f8749efd341408b9b4e897e7930b4373ff2583e90973297dbc16d6cc5a0b14b580934bfd893ee22bc11c6825d89dc6af54473c20668c9b42ba1708b561eece4e0da09161fe31dad502d0c0cdc01854da9a826efe3a64696aad989ffad1243793dd073cd02389f7815ca73a5ba33da1777ca04c094d2d87feb7baf519d47f40618494b937e88de25378ba642a6e4c02b95574df34f596116230788d30022accd4971b012a691f29580f166e6606d161ba0c64704450bcde21b35cdb9c4bf0c3d99b3e9b758eecf14a8f54fdd195ec3718f4f9247a9a9208c58337c3469dd01e7d3ec6b8eee851590a77917850c7d69e9c37c810aca9302e024be48cd3a97f4e35a05bc64c99b02d91cf1c9a3545b88ce85a658df0a1c25b185d464997838ea76b867e8025a8abb571879ff36c2e6b465ccf49e07677a72656ec4d55adc6475e49adeb6fc3fb0dc6d7aadffe741d5a20be59c1bc7fb4d5cbb1676b78735897568ad75812c371bcb91974051cab5ebce8f12a016ebeb1c6472390cdd2621573e45923322953262bd52881297ba762b677039136daad93f81889c7d59f85d1e709223e9d9818bab70dc9899a390054562ce6852741cadc4686dc7dd36d34f3fd6a5993554dae3c119e9b041ac82a59ad8dcaf70262722b634e77b9a5eaab545a7600e11305ea5a3083a8a2f314cd33f5367c8bdf49b3349ed285e708158368eb6636f8346bf1f58e90335a34c0dfab78a34450d416787f35ad25ec183f17fc3d268d404713255ad0d0ea1d3986de561a9486ac8b4b43cd4eff7e12eadc9d79977d94dbedd587763fa6da6bd1be69e618330a2bf6c8a4bbad8e43167981f579e765feb469747a33d46e30e5268717761bc6a09672a0cfed4e3dda5ed53712712ce9b175b96f886a5f2d7db743cbbae6e951ebcce9ce3c14a97c30696ae0fcdb01a033f48fac0e39043aaaf6d930b5e91fd3d0c21e348efdadb1786f08b210a0752c3b3d3982a0a5e08e138d241f465fabbc29f1b676b3808793cc6514d3e4aa80c88df0905cf648228c0682df955411d3d6dd25d36af9e83c8853a5c99b27e6a3fbf0964f1612fdf81838eb449edb2e91cfbc4953a1feac08058efdd285327bee2418cc9ca3be66b75e6585af36f37f6dd99a1b26cb02e1fdc860908bec8e69da22372ce69c443482ca6089161805536c1dc775f4d62745f1c695394f58a2c4115411ce0bdd0afdbba55ce1a6f77799cf3a523ff04717427f5a011873bb1500c91248d9c79c670a61cd00cb36a30b32387ead7c04e4556398db945b0f447852df2dfae8b26105d8a51bcaf28f2f8493108fb1835de7890f19c0f349a28acb9babe62f82cd5bb4dfc6abd54448656b2bdb1a5f6b1df756de36b8d19b4553ae3bee27e57d9a7f61f7856a4aa55c62f22f4be48e3a8bf3b737105e83244ff39db4547a754d0f518abab006c0a5b24327e451bc24d22a5dc827ef37788fb446d40124ce24f36b7d2e0d72139cc0f901b1115529a9fa07feec05c581a22b70971a72de621f9afb47ebeaa12d50a149ec1781adcccc60e57145b8d881f80e96207d51f55972718804ea1ea8fb6623e5b20e6b233906700554f4ba4e2b1c39246876241ab8077918ac0e679418aec63e512a163eb855e705794518738cdc3fe943bdfc0e2c0e702d8e8e8eb245b1ec632b705e81001c54d7e675ecc072c2a7ab74293a7232153f92397b2498f5c817f9943b1332d78d1aaf890acb1c92f2ead38f5d0d6ff6ae1d47530c12fb9d26deece2ac7b0665cd3e37b2c4dcc40a32e61b836df5add26943dadd9d5c2f4752be13ff2e2766071f099c2166bdadb7fe3a6196b8afdba5ef9c7370fb8440189139308fda3eb6e74ddb5b63880e5cf678138a10c7ff0d9f313a8eabb8e66a51150d3f2e759f9463126076e62d327d02ec4116fa9e45882b5945e2d2a5edf1bee14275a105482ca37679c3968daf87a84c092c1595272a2d0678f25aae8422af893e26243be5478b275d1a7fe0c0e547823057d346bfd37946968b08009e1b31ac7804a8ed141c519db0678142a1dd397660d9fcd9a762b369b2e5fb9db047aeb09339db3fc484c9bd91f956fdcc1b4ea22831063f289a0d06b5d6df8f618f393ebee743c7833fe16cf58cb16448ab27e11a6ce1567aadd3c9128616252dc70b4ea4de806884ad617531cee0a2052cf73572476eb3ee2018d60123a040d995b9611816f7549206f7501a33627c5834a9946ca5702c69b9903b3cc7541cdb99ae5891b88ceed833ac77cb4952086a98cd2983a5e21961eaecb0e168d1fd59bebe44fd6f84c6283f843668bab2f37613845afb1b8e17a08b7c0aa52b06dd1d6d42cc96a93f9db00945d767bdf3af16a7d41d7caa2fd35d489a5eda722e2923d103ba259c89eed16c5d97b2d501ab153004fa290e2c24436af52211959bbc4b238cd70e585a9e77e314283825c5f2f397e10237cc7c6f3e9482ae52dedab0e241e667789c8f7c5edfcefea5f02707194582b8bd6116f41033522bf8fc73e18a90ff50799bbc8c1dcb0ffa43a1daa9ddc7cb122dab787704fb2d5f894df179edb4c84e06bf9e06c4b522108869ac7e12093b207e0e30d5321f80b4e15b13d336922f6531644c3ced730f78514ecb433efd38c8f8163e47373942ad291bfda7bd2138a5d5c6e26f29d31aee40887fb7b092b7c70ab29a78432f4cac2de927dd420bc2918be334bbb37fa54dc0cc27dc2c2e0608937382d7ebd4dc7a3eb6ab01d01bd9a6298f65b8acf67bf56cbb02704b9cb5631dffd5a2f1f4594e4aef0eadc054b3c7785200cff9710c31ad14c2b77f1711606c1cb01b49c1d826ded1f2a7a5634cbf8c0484a4dd7d407645e8200d7b470b5aeb872df264be5babc4479ffc370288e19b2d745237bea9d4520a09cde29ff46322d3d7f18ebccd322be777012298bf14224742f36d1c8abcdfca9b0f6c86307be03163b91b59bd996881a0ffb1447226141a924885fc3937c92d93f98be0580de7f097c74eb3a91514337e63567333584a00e07ce095efafce8b8c3ea4cd00b71d92950056f702bec8eed7800b2d1032592623e6455b499366059fe0c95eed7e9de4165d68ee5f28dc0bc3ee029d6055b3926c420233704a65e30f8f98b1e94ed69017176a08415b6a2e162bb96adb8adb5b05f66b1c44f6a9c21f5631a4b39242dcbbdd3fed4375ac370784d96879ef01fcec5997d4eef037f97ac853444f93896d4792f501b530bb6fe6847e8d356caaa511b6b22342bc3c88da8dcee7f6f7c500b1b9310ff22d55d24804cc34a1202399051e5d6865f1fe3c8057019c6e8c0ea84f93c64fa71c974a49ffa10b455ef3b581d0827a4f2807da689e1252500e381db18a362e9e78f4d1c6fd89acde0215cf6b953b3083c2a571ceabef0482e1afad10bfd45a21f06d6aebe1c7dcd0c03a193b9a8c849575e478564a234381de332f1a71b391ab559cd4ab4f6c4fa810d02cab868db34f30cba6bc217e40f76fcef98d189d1eca4cbfd39d8a7fb12dc07540bdcaf2264ec2b0af39bf76ba1cac3b8e8c41c62d8f4053c6d57774319615bceeeb3c59bde9142b6492004d3073081ef3ae45b08c10c4a62a91d0f0d38efd0fa16d05d44360904da963dcac983998bdafbb19a3b1d6a8f46f934fe1e709664b5691023dcfdff917785d559fce95a54677906aab899331968ad5ab7da9cecee2307eb3195d278ced8e5263f6b08a3d93e336e722066b2eefaf0dc35c3725b05671a560e6d8d5a530f7f075a6a25d564ad9b31426d3b0256a0a222ec090a0cfcc571978f913fec6da1f45fbdd1cee814d57c6cfe8100dff58aafb98f4fe49387edd1124b163253fccde88e3a391defa0002b2e61ab4049610bfb6861076e4e2144ffe7874edfdd72373930b26a03abbdd6fe6a280aa71b3bb42c1cd59f8dc9e181da9e17aafd10686bb1741d886fbba6612e9e4bba8be86b8df6ba106c09edfab60471c0d725b340538754afc4fcad64e9eeb26c4850a3fbdf5c0643fc83c781fb93783b0328409de4deb624c3acfca93bccdc5d0ee6ec1ecf6ed0981e0f2dbbb8da3a5995261efd749e03248e9da60bf7d8953e62218d5948f096d8494c14952e2a807e699ff579c195ef9372bd57632901bfc119d5cc870913913042023cab4c70bac0b8a551031e38ab354f489be91a22ae3c69dc42eafc8b340982d6a723e50a9929a45c0a66bac3fc5e4eac5cd8711b03514043581a7f2e446d232532df0f7128dba7ca5060935045b6045eccbf8158df9716824ba3d2d8774f2668c54ca0d7a485fdf36f43a4ae7835881e84de4b20837ecde5b3c6455ed2179b8368b83cb9f37cdf9916cea807a2add05b756f8b087d424fb88a4e11ebaddd13db564dcd7e9ca6d5684b7f516a8b2e8fe93f5f037e6072f2f717b23595a2b0055da1ddcb83006350bf6101e502efbcb90486215d1805142e157178ea2cfa103565e32daa819592053d0a1b08221b4fa715da89da815e19b89f8ad1e1e85faa7976a5955ba1ed05b3fc9c3c17652dfa2762a549acc689712bb0f160292abe555c9cadd9e7f0033556e9319615d7335a64b9ac1f42d14983de11eafe46ffce4d2ba926f371d0b56cb7115405d9e8b4650335336ef2ae767d5a9dec7ec91991ba054a3e6e38203f0404a4dd9e9f7d1a4f0bc04456d793b4e49391cb69a66821e18309b3fbaef4cac51415067833d2d82675123a483f6aa52189eedac1b4582aa5fb7183c07189a58b049fe6845db97247b6d50f8f00b7415b1018d3dc4436e423b06f7de7022dc455d7d60de2ce3a4599df87092f281e1e02b4042efcf1c7b6aa57edb2e14d500c407e8e774e6ae104bb3ec7ad79024cc41f5e20576cf00dc02cab64948ba064a2d7306141ae4121e4f9106d107869c7d34e2012f2e9ed05689bd17e0dd1d031543dd58665b4f01a0a9ba1a459b004fc3024cf6675ab371c94224509c919385befa6e8e6f29789cf50cf200fde157dd2c619c7c1b428baadd737c8d67e0ec16319445b3e24725c3431de91a7f1a58599a44e63ff9aebfbd88fd6a08dabd396735b06bb9b335add8ed8d087378075bf32f34a41de8741e34a7d4d5f66009ee7f5f9a13140cbd1069ca3250d90b2e3e185af881d17db387b1a13e669b2fb82233d864e3f7b911257e897d9acc35573d312ac1831fe520e9381dcba62fdd495719d2e4775c190975990331b426ad3dd839fab6bb4178eb5ab906838ca229497f5b96fad812c12c04cef4fc193edf7e06124de014a7065b25d11d4442f46ac342b0d30eceecba8ff6b4fec3de1d6c0291f468a78c847ad69286b5c273d0996786f7e207e527f34f63223571381236d4381d9413e1e4425d84237f9c829a18481ad7b8e9e3ae86edaa7559ef8d73a7ec48e1fd26b0f5ec4464430896c50b28d52ecb0d5a30133a831164880912ed5630bb07ce1ecda585e87fd85672afa56615959979a9a561f06c4b01358088969be8761a1e55d708ce162589f4583fa82d923c67417bb470499ce19b8093bc16e031da0c3e6b927709eb341937331dfefdca2dd0895b3fe9c17f9480bd9cdb356079959c30cc5c4c1bc317baa45509e5b339e10dc1f97af87ff6944618a5c2b2068d8877b1ac76933e6cf3a6fcdffc4a62bc8dc4a8073de5287deeacf35ce09afedf8b7860e0fc825d02826842ec94b82007d406e09e0d0efa6feac122fcb927c42c72346eb28f9792aac38a1f0c72cd0dad2eff367ef690ecb519dedf66232f02aeb9b8aee9179460d17a3fbc897ce3d241ada51888f6a7722c549ba0719f195d2b54ef7e93dc181e049e2b6576dffead53de673f77def5d370dd83f4f4e23050351642a7150dfb87216a008a67a1fbdfedfa0918db057b220e6d988d39b1f28f1c89e6902b72080cad9a138cfef2c9e64a25e1099ed1db540d77b3ac2227eeb45614940e8d6619c05a1acbb2599d1f7dbbaeb6cb71e52b31ea9d14c466ef0a793a3ac05cc511e20e928f2b13fc0d69b7838ca5336f9c6b69f51d590335ff8fa7f21b24fe9c101c16e6d988f9dec72e7ed4e81d519d5e66a8540f14589fdbad1c3cad495d4918eb6317b87412f9ea6e50706273a30f72aabab3db8abcc350630b0ae2402ff2d3986ae8826ecc3989c429a4b23adeba08d69b8415ad3ad7da70e606666c2dc2807eac2e13b897a9120a18b5f35019089e4362b0e325865a4a5554bdce32008f79ba006f7ebbe5f774ac214b6e03a2132e4b27d80fe202abce2d8931150fa20fcffc7d37f4078efc7da1e94e27ef50de8cc1113c4064562668a7cfe6670d515833c572a9048f0b63bf02be8ea54731cdb545a760d0b17f996dec34025399e252fa0ee8e0608a5e794eb3ed1e10a068f86a8fa183bf988c85ad733a82b90be390f8945798d6f1868fd0bf1e378c9ec95bf28f7b1697920ce6a25247219f8c170204cf4dbdeb6087a95bcafeb03ba36bc79f1cf00a8ae12c3ef9012068af7d5bfde528fb1d874d87ba8c33f53decb16260e583091f8dc821a7de9445f7d6c14e2d88e0b15a2fcafffd33175b382d980ab76f64071bbc4a7c167e499f71319b7aa92d241b35749e87b75f966a0c8eab3fc6d37854aab4295cbb897c832ac12b5a3e47b1c34544a181e5669a8b3aac763b3ac0a95c63d0254d66c8ae1a18229e2755b222d6fa51d932e0851809cd9364967d68777269d7d9e1936b567da97fa4c3c8b915b477ca97a8de35c7d471ca553064318adcac21de0dbaaf448e962971f2b8359cb5ae5ea5a180902b19d94f66eedab82de0c54fd372b0e813cbf1c4633e3a36fec8bb40063e435b2bad342479dab2d030537ab5cbc2906aef6347e02624c716fcaf78dc1aa70651b775865777f21bee40d437c016355981a0f75d0299885c5054c7e58e1242af1b40c4180d39655cf01a8c99f0ff4d147f722b0bdc61baa7974872e2bc2f728deed1f577fb34650f6d7e2ec28b858c746240fd829a5d295ae46bbb08efb9023224149012e7dbd91889063ccdc3c6d15b492d06d95e07a621be825bc57c86868d85690896887d81d1525576dc482ed42949319589a69d06eab5af6061327582f22fc7382e2d3710810142adfeda265ca5db2e67517f9aadec5a5fe5db6068217cdbdff979c6251538c4061c36c04e94fda681499058a29942d784ceabd19a1eff79f8993be3428866800f5b7f7a91a2c34fc926bd7604867c5e317d4c1aded63dfeae0f4e311c892bb5c57abe042c731509fb47c7f5c0fec25a160df99a00851d02f98bf15193d5ad99c28e2d797a3c705b11c72b9ce03aaf28e50aa31f983f1218583d3744b8a2b74dfb4153749e9c756241a9663a2e1a21d6806c77a180905d98462466e878eca8eb2859c1b4371d4e0cfb2955eac228de9f9e477680771b70e4543dfa08deb0fd5d42b1f27f2b2c9bc2dc000984b3af79d88879449e03c5816957edd3e2f64d0226d73f87c584265b6e41301711af64b76f01307f06ecb7d24893d0ec3b41b3c8b278e578216b57c444a0f493ee5da83a692574ee966cd8f5a05545168c4c922d1b5dff3ee2d950f6791108a6a20e776b398c39b941ba1328536ce87910b68b8b4aeb0d00359a40125f3617702d1700fa6bf4ed41b49a77700f648d75154a515bffe43b1c8a2ffe4202c3187af07022a4a7ec54d8316abd057046b4341ef7dc49cda87395ef965a1368c0e062dd0bcfee817dcf68a985da63ca4819f8cf0ef7122d5bef4c91f1a22360e465d7c7404aaa877b75a309ed5a603af9cc0033c45bd86a7305304f0aa7f8d4030ea5e6d21323e8b23bdc207a3f579fd66aa02abaed356f8e2ac7675eeb9dfe7552798c651744a24115f52610a423622db4a201acdfeffff37d96defbdb7dc5bca94a40c380ba30b630bb145160cb7d8a214b0c68d2dfa80e1868a2df2c0d0dd54b1451c18b3b1bec170d3c9bc8274c5e251c65aad58ac5514ab5514ac9a658ccd70b596a6a3b9b41dedf5ed5ef3edd4e6db67c8387d3b006ebe3d06ceb78350df0e23f5ed30aa6f6f597d3bcb65b5be7dd3f9f619c4b2531c0e5114bbe6a1a6851487fd07cd339fe14ddb344dd3c070738aa2381c2a4271b8088f505b56b38c919cb0f890ae6ae6595665652991accc413dd835d71804691e9fb3cc6758bbb225997048b656414425ef835d7ec55c7a3a601e4d10359e3d1da873ec0551e37d6c2ebf5eccb34b7fe3910511957c0da2c657d047e6f275c83e0341b0b16031e9123bb1ccb239e774d9444a1d189e25c25ab556d5aa566bad60a8e964576b694c7894b196e2d16499c5564ee800cc18c3628025815d4c090a6242682c81d3cd22bcb0be191147d4c5219b9883fd03edcb8bfb93186ac7e893ed88efcd88186aaf556b857a89953bf819dc6ca608f8c5a13e6142788747126c0fb32cf30cec5aadc59cab97775e5138d49102ffe211c63b2b8c3183d84d0becaa9b4c22ecfc90aea6d38f2b257cf1a1d6d23eaaaa606561a75cc9285c72b54357580d75692dbaaa3e9dab93e79c7366ff5daea997aa9aece0398e99270432fbb30b83c53c668d9d2e038f421ad88943291c0efbc14e31074b8f47fdf8d63bffb8c73dea9fcb92b6848ac08a488538c2ac10b3a03d89da1651db421c7521e6905207ad9137b44b8a17fae0605952c3b22facfccd3377eab1d4a41550a506f5d3c1b7633ea0b3198b416b624845f0ed9c8c193838f186bede57afc76025f87109823620efb97c71288a5462670541d5e563f2ca30c81d10e5f978648b1680ae186a5fe22e5d60f671758415060e750d879aa3b41796c55b3cd45af26bb99b4d8b9afda3e166fa76313087c18647f18898434a962ce327466be5c7a391acd3ab2488a03b93198d2ac55379493611e8b8b27871d1c517becf430d0b4eb4a060b02cee9e7f7cc5ebb7024629925224451214823fd45aab4d53a1348506839e7e37673a373d07780ee29a201c5a4511068c55df2ce3aa0928f8d892df5fa8e09127aafa51558514ba4d53a19453b9415454545454dcc5a589b7692a1cf542ebc3fad2395944e7607f0e87d5985c18ffdd2092c59a3734263bb6f3cec276ecf16527af76d9868fb09117eb7c86d983c004b51687341d0020f18117bebbb0ddece6e5ef82edb2f6c252ffbcc5593cac2d2cb5ae584b6d34172c47a144b197be9c9919739a8305f560af5e19c452994f1b2f6f5821d0b22fcfc00cd878f62abf6b7da9355441178fa682372c7b8bd70020cf2d364a396d6a2ed8905b2d8a62bb864712f4219f467a3b4769138f40d2238fa473101a0587e88ab238d437fee5e5e31a8807ea9f4780829f4720b648650bf673155fb99f3ef4c1cf1e0dc700be1e1e580fa567ee5d20ef83be074a21c81b32baa25160270f18d66ac1d0fe9602862fbf81616d35a9b668b6a48b7f6ee8a2e9bc5c8d894b17b623c5523bf5981444dee444243ed8e2431acf32f8283d1ecd85d6e251385bdf1e529bef90ba5c3c0a59070a8f428aa3bd781432eae5e9305d823f48c7e1912903f1a57a46825dd669abf91545edaf151044f0a1d642f16886d8e93f6fa7af26b5689004f727a9438b372811479d8786e03df8c6887c3b56838defd22b55b019d09881862e624a3c768aa1f6ce3cfe9c8f792c4d8fcf0ee43b0bb6250565d0a4a02dd1ace0e8cb623e79d497a0d6dac256f7ef32eb092270f1d905615ebf7f7a34987f340cdfa939e7644f6bd15ab09343dc50e82acab4c71cf2890db596a6a3b5e2670edac1afe94cbe1b1479379493eee3912c3cf1b068c2f6f46e9c8c259b3d209051568f04f9331ce69b7d7619878b70a81d474593b0d6c91c323e3a1873b0c7217c10d9bc7cd37e33ff637df476487a258b935d161673500f30e49720884fcf40be5d27958f47b47801f751a5448bce02c7177bcef3789ee7452c58ecbb52a79fd257b9e2b9ae53b9b1f4dd589294fae7210d9ec147e7e47763892f7ff65d36714e5c1df1e4d9a3e92b586c94694d3cd45c0c456a3103996f3f3783e40c9b8c4dceb20cc398195b61661ae69a27d19513d945889d564c80e2095458211f8795ce5c99ab0c9d0c67ab9bd8506b318aba5ad45eab7685d542bdc23717be9da3abd6096288da303dc1b4e26d78345bf1f6aa49b15469ab59c74a1d1ca89f39893938f0429fc4d11671c4916848c14083d0cdaeb9677b28bf5efce2174ef55a2b0d2d33ccf8e8f1c8c71cd8cc391c16c3300cc33cd5cb772be690efa9be432fc926828d88172fd82c46748918a2388cc323ba8aa125a0c061331b73c4c7266b56f8fe9ccedb2b681644997679bb0551a6fdfb9cde2234f0818d048bda312e71fdafd452582fe5a2b5a48ee8797860fd43ec746a922685286ac7a26671ea1276d25a56b0fe21a3b4567f4c8212d4fca8aae28b0f99d5246d8914b557a13af976ea9222294499c6300cc330cc35294c8d8bef896d59c7bdbc942b2950a87c3e34489cca0d5244025a5ce50651695151697112dc28b1380b4b4b7596bb856f0f63f02b86da3fdfae31d1745242cdf51f8f028f6142987453ea1af9456bb5a89d59e2fc3e2249620c9f8f48944041b55aabe70dedf541b139c150fac7556e8c22cbb9e7332d3940dff3158fe623537cd0ef3cc5e3d179e7dc0c32fc8d3aa82bded01eb9149f612f35c44a0f427ee1a53c233cfa7887da17d8dbb5292c9108f8bc5d9342cc81796b3adf1a16df120c35d7b79605f55073425af150eb02012a1e6a55f8f6280f60e325150f352c7ccf9747782d087516e77058662965659f33554402586e1012d8281521bf28e510b1b151a2446c6e94e88cd2ab8a0ad64b6ff168247b3441c82f1e9b737268ce7010f28b8f51869ba474de659af25214c278f66a3fe0b37f1807218197a22440e83140b8751564c843a18dc722894edfd0d03515a66043add512c928b3971777ae467c79e6592f86798c734e0cc3b03927c6cc7cc26e9a144b114bf1204bd8e90abb793b8d8247d5db693b55f26df398875a8b6611492bceb1338a6611a388c1907a418511f1dd4d0575cdf0d8dbad590d2636d45af1dbc32d06db0a482a1e6e466c447cafb40f8ce6851590556afdac055fa416580ca2a85dfbd4867906a90880b4c2650d5dd74b6c27c30cc4cb672fcf37943e8178a9a00d54f8f6307423496b45514311e361e288ae38d44ea1a04f9eae78445df3475a93ef5662c3c95e9de37bb5967635261aa831d17478c460389fc10a6aad0fb5d63749967a89f53e1eb121e22578430c75d1e3e7421d36597a3bea4bd046bd580ca24c1251a67d5e4c8928d34e2f2664477d06b1534b810993a20d36d880c3725cdf14a13d1da2132a788fbc5105862a3ef3f0000a53bcc603fbead26bd4e8bc8647d351284434262c6a177934d6394d47d349f1cc6a3a1c6ab7576b71a8b5160f8d0987da5d29d475998b286aafe1f598efed90cfaf28d3ce5fb02175694c3c6fd75a3cb2deaee9b867effce8791e48e473191f18822ef30ccc40f71dd889bc5abbd087e7cecd3b17793bea7b2e0a6288cf5ce4f5989f813f6c9e39773b90ba9cdb7ce3b6cd6b783d3670a586676d465dceb947a3693202e0f5a8600c0ae525a4ae6fa72e1e41c16ebe31211c6aafc1a39120766ad9cca787d80d1dd334497203e82858c74e4de21776faf68682d589a26e12b3a2a85de788131b7c5761b18f2a2a5ced5a2be6c0be5b89ad6068f23192a84bbff5a337c3b1495496fc2387c34e79b15394696f2a6c889d08d0498fcef1e5a75796e47d8939e2c74a7b0a1b6aad885d2214ec644fea793e1b3f292a31aeb0b4b8bcc0ccf08fe9a30c403017201c8209a4d99b4508830434afe0109b6b3eef945e0fd53770080c0537a5da2ccb1e4ec9f1e3093f50d26ef599aeb12481889e03a663e00f1404596ec1451a1d79522c5b599918ce109c21585d59a9bc31c71d7b1e0e0ec37f7cdee23fa8c370e9d180a4f7d0e29ff700c3a9470f24411e5afc731f60385551f1158fa5575863b80c1000aa1a035c812e13cb288c54f19006178393d17961b90becc42f0c07d8cd0cad4e7ef16b06334fbae21f1356138b986c4fc6a9ac38751f3eff9c823f727a500141d2557e5087402c5157710afe1822c70715f0c7e7d47f80404a3f565cc57ba0aee2d255c0217224d8838ab38043b4b88a0fc1e23496563c9638b9b90ef2379a4d88e68aa5954b59c01f2baee21ff823a7871510249dc5575c05fc019220880715ffdc071650db5901371bf003295827145c2b976bb55dcd29a535d6bac56dd33c9a9a39cd22ca3889324f2814ea62f11667e6361c60482abe05e7d16cce79d1938c25a139760316c3b7634bbcf4a6331765940df22542fd12d92e91cf615aa2d77138ac565b6e2c61cfaf26c512efd4c080402cb1be1d5bb5a8047363c9e3d1ec1024486c5188a9be9d050c82a51ae3be0ee662382d7ad921480b185b0403c44e2da238172441d00e9faf78fc1e58c021a8abf8e7b144779083a73d8840884d87b800c7a608dfd5b9949822a7b019626333e47f65c5a3a9bee2f160c654e615acfccfa9ef40a3821570e40ded5cf8f6272e301146f22bec9a2931972a2b9e4a8ec761df7d3c3a10f1f59a474ff31966e6c95cb76baf7061cbce502ce7536697e27839c4ffbc72b66d765c125a844358266536e7cc3210e3300cfc80f90052526813a2cc0006e0d89c9181a0d1a4c6005ee678e9e08d3922cccb17bf5e82a10de7b84b6d5c8ac3cd2616b45940c75dec041994def4eed221bfdd9597975fd30a36f3103bc507622426993c6c38738e09f9edd68f5af8eda67cc4c10a360432531f3d0748903bc976bb9f5500e202ae8f2f2e1e0b9252bc534010f399761cee00a6570ef3098640d8a0282cacf422281b521c90067cc40fcb0fe9aafee7e30571fb27156cc828282a502911e2bd7723921eb0beeb8f9e03b69f3ec3fc73aeb036598aa8914172a4d31bd4e0e995ac7a85ada01e984f9f20900fb721bf15f158c16dc886c3c3ebe57261a7d7cb05c5e582f2aa58abd59aad4c6b4519c9d72b9665592b4b65a71dac85dd8b393b76c240fa92256a434d3cd2306a3319454d6cb239c2c6e6081e99328f86c11b4f678abaead328df4e6d248ec4c1e667730a56da1cc13e277549b7e1d09c73355793be5c502426378f06932f33499b996801dda2e84c97955120e7e1bc9c4231319f091e613e78fe334a7ac54021e6b3d3d5a6691d5885b9647a7850314c470e1c37bc7170ecde9f1e0feaedb8a4141e5cbd0370bef7fdd95fde14af37c44efe3ba68d17178fb3b7c3b9dad56b7d7a3c7630008362054e74de3f7a12dc3141d51450b8977985c55c3a6f43361c9da72bcaeacf0a87409847150e930761e00e7ecca3f8f6cd0609264919b0e26a0849be359dd776bea54a08593cc75a0dc18ad7a2f4c8620887e2f3ed91c58943f1e5ed9185901e59e070e8391851e7064a7c480333c2029f7285908fc30db9187cbb8e1b6e5ef8f61c37dca4106e4d7cfb8d1b6e31f876d2bdf70700da005f4017d0037ab5f2b0e00d81dc6d48121e9858e9cc2fcaa2abc93a3a5658d7f9e29ba5b55849e0e243662db1f7c3ac05041730a10a590a8a1538c1223bc9000b58fc5cb2f3edd8099e40f2fab9a465842559fc5cc2082455f8b9043b09219f86a77c9df75e62a714660ba7c8d49973e2ccd56ab59a73ce39a7a76b81c5d1d19a4c22b0cf4b29dd6321c13961494811fd620774e7311bb8a4af56d425846c59dfc2089a64210a965ff3062c787a65f4b61b0e41c186b3a583489a2f9f4f9cad4fd371d15794214f42e1587a0c56f3e9479e7841a524f521b37a8a1697d52a8a1665556185901f5297976c3a964d2536a4385a91148f360c87899a9f7435b58a652f313a8e73d16ad5e6dc6289c3ea67a1f442760c64c29eb1e748f13073acc5741565526eaf628e8e712404471d42c89731e6c0b07abad84d07f28e87ac3910db39274b118b9f6b57d0b4a071e15bb9a01e1f521728f39cb82202089f135744dcfc774199cb1b140e2bc40324489d0a1b52d734c24a506b4d6131f740900786e0902bee20192205121c27dd94c29636adc67061bd3c01c609763a07a309763a078a1185a531000005006430c14e19339e98e12bbf4e5c7009a00c4a908146121a3324618618245f4cab96b83e825e8a86d091904825aa81044b6b04e00801a8c10835c81891b1a10836dc40841b6c346143002901c0f0a60f8000432040018450000304c1002326462420906efcc022807a3b7703870f70e4d071bde9381c00750004f4000109e0410266727846bea4d0c57b3e3af745ac54d5d4fcfcd2122505ecc04e052c40077676f6058607599a3876c2440558cda52462b9183230d8e087130073931a931c48764984ca1d0e81d809bb29627df0ff205d7306431ffc123bb13348847a3da46bceb163f7078975922fe68339205f93376a1a880989cf5ac9e8e1c04a67c69831c63c0c5b51cc319006e4bfe56a095ed40469675567ab6f90d34232b13dc482a40909c73cf3294d3266cc1b30999e15e1118719eae6060707850ab193d60ab11312af6a5264828a0aa69a527b26a43d1bc219134698d4b56749980453d39e4591b19a144b59eb3b2a597d63270c07dca0c81246935d1cb64e1b529c1a68adeecde78d952e7d4a9b2338d46ef31e331a70e006862f33b0b3556df5cc43465116d561e9c8c066956630b8a8b55802e928d8905fad29c47632c829579ca5e57315296160ba6eb6b0aca87c201aa16fc93c86574d6b45ae827aa0fef9471d48496bc51cda6b9a4b7b2dd1344dd358d5391c7b34d5737edeefa712168613c988a844279c30f2f3aabc9438ec4cc2c2d0618f28c14874e28bd4b72c851a9428450f9b261cc284302996546e100ae6d4ea1a48713894f9c7a3c9b24f0ae150e884c371e7db23bf5430257df188a98bbee88bba2814ea9af495793c9a393b57dd3eae90eca8aac86176c94d4a59bc85613cd4ba50f195093ecf6fce39a5949ff56824330d4bc94998280d10722683e70c28dbe72a273b616067c76058a594d233c9a482dcb9ec188a959f4793798498efa35f8213456f90223e1ffdec52caebede89c412236de5daf03411f8f646183f9021b62a75790e7fbf9beb9c1f3b52f416d27cab8c086d8e94e93119eeff798cf6964a6befd82718722a4079e7d22315b6065f4d12fb91eac95ec7a498b05169461051624bd0492e00efe0dcaab24c334d9103bc570f5c65a130db443bae69a6f5eb920f473971ccf145e9e1562f8ef36aa7b79231226a7ff6eabb0ae9bb09cc624cb9c39d39a70a833f668add682d59860371213c29f8161c7811d8f3667679ff582aac787e1d170bd1b6a83e29e7351b09db2a580e164ec8409c16e787ec00e0c6b8c8f47b4e09aa8edb6121b3f3e31849ddf380f37cfb01376da366edb368ebbd88d96691c487b4de531385560d933103b71885dc34e5a0bbb6114a3b01bec8409c14e15bb01c1cc14d8905f2f1f574b98028a7f3b020536e4d7cf11e64ca0503314c19138313c69441265cd8a28936d613306e5100eb5bc9947601906801997a7768579025b5ded9ace0b186238ce6117c6cf2bffbb6c5ac273b2e369021b4b7205489ab8c24d4d29c44e196b4ca611563a6374353fca62140e8af38ff5201d3ed64bd75a26e11087da555a44013b551df8c0ef12369cec26dbc41c3ee4b74df1382d73be9bcd130b821d086ea083e0c4302cc3320cc33070ceece3d1ccf95da9633aa6440ce20ded1c484f10433d8bb0d894444a605120e920e9b1f4dd20427d867996c0865acb35264ca2f29b9c81aa6fa0eab144354df3e91ba7cd39992536495029aace6c66539bd99cec4af2c4875a8b3af990ae68918add6027c64e8ce210457dae2615c0db470620808cb787dacb060f37530d0f37548c871beb794767b30980871b0e0d1e6ee1d6bac1c3ada6060fb71b91879c46018543f4c5207579f539024b5f995722ad26cdd0241ade3278bbb6d324d0dbb7539364789f6293aedbf0d824f717178f4d9ae11e8f4d02805b8f4d8a01f28fc726c170cf639360bcf3c86d8e9dd8e7ca1c808fae01aea6a3b9b41d500037b6c80678c38d2d7a013fd0861b5be401656ab8013b2d6a9555f6f2f930c655e9ece99992ac15e7cc3e9c2a19b39984489a61e21014d29b58966559c532ea7948e3372e838056c2648c744e3979bb5d5bdffd382c758e3d768f8679c8b7c3db57ee6a3ce2a7d06dda709de2def554f1dcc59e13c502082086da7158cd87d8c8c57718e3054bc477788306233c019134ab13df1da3f0ed5c108b39e6e18d2681ae1b2aab971679f7c5f5dc9d9fc25d6a85f7bc9bf2a426e5c66f829dce1e8d05db4117948e71d19f3e23c9237d429971ba334c3c92249f201b9b9759e3ea696a56cce1bdf44c098fd8f9a5c725155efab7a37ae92d960e67724e6c0c9498178fb8499383e172c1707508c3d56a52bd6951fbe9344f9ea7ccd3cb705530b4150c5f3cf06686c903d650b99ae460f82265b8625c35a2f068585f6315656aa862a0c4bc625e9c176c0d55936c58c3f5bdaaa1f3f1b0464b82618dd57b60802ece5e59fadc189defc678eeaa4931aa1675ab6298f0087bcee74b8b9743fc1855f70efd8e59591b234524c9289a3d6358312d2a620e253cea26312445d4d158c41bfa63a48823194393635a4d6a8f61715817c39a1e4b13743117e53daf0e42e15175f075e57b77cec7ba604190f4aea614a4ab2991c04b392110d3e6a76f3a4c972decf7c26991caca8379488373445d11f2e5218ddf1e9ba1d3580377f06b9ed16f8f81c2c4b7d370a26108932217315178149df062c8f72ac87718f3a2c1866f421a4c588d132e287c4883906f2d63192e1ec1707d7b28c3f52a95287814a9f8293e545112f324c61543cddc7ba40e464fcff510cb9ee9e1baf3d4c76e2cb1c7037cea2a30d830c67523c6c523f6090a311f7c6ec77a9ec118178776906007dd8f1e118c9b18e89e1b8262d95b95040790e9824e1c6aa6e00fec20246e649ed1cca9ff40a78a4394c6b8688c8bc6b828e80432819000210132814eda9c30e1cc5c61c1862aabef1b231c402690c9c5e5c423b61f8face0052a2b1ecd3081334ca0cb068f15a4473906b1d7effebb2076c932792e88c11df7d973a2134e8af039d1092725f8ed3d37273ae124078fc3caef4ad47763c953bf3d1a0aee009fb31ad0c5334cf2865e624badc44ebf11b3d3a41b51d43e5551d44e43cdbb867c78030a48de06e698c461658c2be668f9ae1f13e5db77bebdbeecf41b31525eed79880da76ade58ced37518ff04a3ac894e3c61c1d730d2841a290e750dd5778d540d23df0ee3e2c02259a39a2a6bade74b6111751d0ebbb90c1e0d103278349d7bd7fb7aa3134e56cfdd6c324b20a66f0ef21cc01f553870a81dbc11e38a71493a9fcea069210f7481aeda9a97b3219fb3d17177fbed46279cf8e0b5ab0dd93c1de6f7c802c7d63c4172c602bf9d6fe70b83ade15018b3c537c87961a3135dac3e04992a116cd8e17c3ba06bd5e1744598840373680c3b3f1d862ac605babe79d04a5325412690e9dba9bb9c9a844d95cbe9db6f88714d558cab455c0314d6053bc3d424ccbb6780375a24061bc6b8625cb3da70f351862c041248d30aa8808b3442edf513eb6ac5bc5e20ba671a215983e770d866a2532b0c73e65a9dab5c19933ab8880f1de42d843cccc7554bf55c2c80ddba1a3a9fe11e6a7866206a584033b121a7628ee6256e56ac1c781466aef9ec593bbbf252fd87203cf099c78f5e8fec43209ff9e0d782c83e732e879b4dc101fe1ce69441f4175f7c71372f2c919a9c0c54670f414e06aa837a60ce8e8140f4679d0eecb5bafc0a863ce26bc033d04c9e2051f30c827490bfb9fccdb97982e7dbf2d19338ac6449253149ca08104a927068ae5246b8b02127d9b860c3a8e2c2e6c0239fc901cc8143d317c0a1d91c36cf2c80479508e7ede510bf8242cce794e5dcbbcb415834b9e86cc32317f0457e648af448206a7817aed194e01a0ec2d73da0b59f174eb95cf9d80eff1a1e05894c238cf1d9ca67994fce6af89926b111164def3e6018572b2f601859315c66c8a9d04b92a3806320a7a258f6be0cbec8287834e3837e75998443320a95954956a08ca2e5e2b37a8da46aed0b10a1ff81ddc52b7bc672f150b2a41205581767c9eec23f30086a0f25086ab087d8a21088d07b7571ecba488fc605942dc9da828ae3bc7be92e7777685ee6714e76f2471e9f1e6bb5b6fb90532fe0d68565af36b021b3124ec2a4d2123791536ca4b4044e14c50f398a8f5cd32400f80c6be7a17dd16190e370d820a926499d16b178f499d3eb131b4a9d9fde3d9732c3a119e2a411e638ae9b00f53ece7deecc0238f4798be7c0a31470fad318020050ca338723b122f286e9e1f7fc6194bc613aff20ca4c0fb767064320429fe21fb737f4c0cde1ce7068fac6854df130aa16c0a1e9293ec37c7f60b7ce4354541c34e4a7c3b88c84189a0e7379093234fde57213222be1d60f1a67c5a77311169fcea8f615c770be82457efa3383b2fbe92e2e5360c8fee231861e78eb2fa04c7168bacb0d3bf0d65b6e28bfc5fa4cb7dc30e5430e61ae1033e5c605f088471f9f9e430ad78c08e719f76520f41694463834fd03a30fb88643936db6978d4896b879d98449b2a6a6a6c6a6345deaf0887db263a49fd35b345d729e2b5fab1f1ba56b1cd7611c77daf5dcf81e18ef4799e9dea492144d9f510a3f3d244d11993053bdb0a14ca5982d1be19095bc3c0be7613e1e61a99efb741589099a78e9ed2002eac13fb026a73ac8070a22d2792c71a026df7168daaee284c55f7b5f5a347d6ac1ae9a34c3a926c954144d9f4e60f032f599e7d16c5b5846ddfcf489751e8f1d3a0f029c771e0438e7548b9a899fcedd1c7a8736c24397665a347d7362439992291e19993b304204483ec6100341e3abf34df2d3b5e931ce2ad86cfaac82c5e6f4a99a497814324fa7daeb0b01630118a2aac246e7a46c52b569917449012e6c586dde07cd746cb2560d6c35f18865387f9a38548fe050a6c40456930d87e4ac5e6dba9a781439bac0306aa7938bad8c4915367c7940fc08822a87da45f9881686b432d68efeead5f9a58799122659eaa33bc7d52a8443b2de9c60e8a846bea2a4c760922cd5f0d2ab91138a4761c561427a15c249aebb2a63280b81c819db13a34c46b381f5080ec90cac362aa8383c925e8bf0c81fa4e004c36ce7650db2c221d92eeba1ada798b99a546da2487a3dbdac362fab8a935c11ab2f561f575fb4de868fab2f4eeff1cae8f598cf9e753ca3644f8c32b28233d820397d3b0e51b73c8aa38851ef789479bd1908c2c01d4f7f8629f883730c381ad6c3d51a3f0ad63fcc5e4dca74a060335593b257a67ace5e8f3d7b2bb11f555fc0f9ea84cbaa605f54401b2427b20158005c8c5104363acb9bd109c44697312463e49e5cd8182312381c56d6ba5203276383e470909cf8c2451acc943d4ec658b2e8e5da0fb66930a488b95bc23c5f0ab64e4883278a638f34c27e398f62bb382465bba287355e8a2c4c8d34f2882fa38cec6e0ec92863ecd7a73a142bc9fd0c9edeee342655db366d6ecc1a5d45198f3934a71c2467669db3550fa5f683744de788939da905c7af7843bb4ac9dbf8b852dde039ef08131f9df071a56af250a49e868f47a030bdf478a8b1e155a20e0a956c682124598b28a6165a1771b20fd4877049953e8fde0e1f38d3a21b1c6a28d66f1c7932c408eb3ff908141cad0b29332f89a497bd75e693ee660527c450cf79295d4db74d9bfad437ab5a638b766811911c9c8471254931482c1a17200f37530c10f4f202039ce12c525c50951770b0a01f37b9c25650b8d9c8d84ed974506bf50c307695016a31eee7a04b1dc65d7196ab6263dc5802dd58827163a9a4e37aa16e52dfa826c512a758c7c5230936ebf08b5dec629d263a3adc845d5a7b34592679beacb04c30c410186a62a8b16061bcc5a3b7b9bc1a130e693a3b661636e4d774092183004d0f0202b104e33ecc70d30327be28b538d6daee0e4182acf8e741549cf26b823bc0b4809fb3780f9fb38043e4481f62c53f97600fd4599c051c42e5078baff80f1857517118ffb1e22cfe43c561587cc57b807115165f711f605c250bf647ce8f16fffc070ca758b03f727aa001fed1aa8ae5b62ec3e854b176dbb6ad5695cf6eb5d61a579fcfda1cb6ed6437f7788ca11679377a1fb0ba742f37e7cd6d4b57419fe106700e93bb1189890a2f870630299656425df26e2c65994800b5d6da4bacbf26fd931fcda7bebecf3dfcf90cd757b52f998a322d9b7879e2485bc1fafb878fb856f0b9c7e53729140aa5aaa6c5d6776dfdbeefdbf1008f3e1e7d604baf0ebac733c3f2233f1f971f3024a57baa7375ad761ebefdb5df03fa24f77d3c55dbbeeffbbe5a3f1f273f9b563d212d2459aa0f69789462e35ed6c0a19629a943e5db37188438d427cfc7b717d830f41d63fca4cb148f8cb8a2304984924978148fa482d49754a2f2a154c956aa07dd998ea09ef85042f9f650ae647df1288caedfe1511877be46b9c087350cdf1ebd1ef10acf3ec33678c4a04c81d42518faa0df0da5cd87546148f3642a2553a0fcfce371f650fec73f10e4017388eff18f7fce1e8d27f441fff3f9aee6acb1e611f1bc062679de1ef2ae3412e251056be81d1bc69d0b78a0491130fd134120e2c3e88242910f638bfb2e3d7d7c86e9894742ea6bc9b7cb54ccf1f1767904cfdb251124023ccc336f974dc41c1eef232c9ff03c944ce83c94534c0f25923997f091a9577cef06f13ce5fb3ef73c4ff13cdf3c9a8f99863ddff77ddff7f9e7d1fb80f676936ed36a86d1294ff224515987fa2803109e21984064a601244037dfb2249928e2bb0f431fbbec490c3597b9aacf70f6640bdfde9f172769687566ae374a8600ce433b6b6cddb1bde3b1e16e3cd3dbd15f71649ddd18c58eb06d12fc41b6b76ddbb679f43cafbfde39cd9a9e3d6b5ab4794b617ddbb66ddbc08f6b0a16066786e5c56ae839c51c937eec278cd11fcee3670b9f178f6a966559d63adb958f6161af2c6d373ea6633dcf0962c5e191c7c68647fd62cf09e2a8b7103d1a8fcf707b341ee7ae2cd55b9dc38e60a5cff496d518449924a28c125146c8ad434ef50e51b38b01b9f31bf8c31690e8178fea0a628877b24c7a3bdc58ea21d86ddb7cdb36bbd3245962afa79883ab0906873924c18fabe27436736ed3b79bdfbc6e0e90bf81a1cc3ab31e1b8f73d4f3387763692e79abba428bd76ef75cf4b6cdb78b69cc832c65d566c7f3847d71efec90f15a2c4d4f3abd42cccfebb679fe793e05cb1e7ea8603fcf8da518491e154491c7268eea123184e35141247dba103d364dfabc1a87dd1c3b82ddc0ce8643b254719688a38ea1661002b1d4f9e5ba2b4bb2437dfba70ba9382af2edddf920763a8821538b9a6f0fd539ae876043189c67666697a733751d0ae44375ceb9eea6771a02b2d49d5ac41e7626769019fcb8360f617036ffbc98a0795891c8257c7b2d9213772075786c2a8ed4c1359de90811be81f06d42c2b7d722c0e0a49808ab0f6a0a27ca5c2295524ae99c9d49ea68280c832375f44bc2e07ce6f2d8481dd9ce17a24c434931e204df4e5f224809f2edb25fdf9eb9c20f18bebd3f62f8f66c47eaf84491d917628e8f1751a63f5d88aea51cf19d32826fff44913a3c36f1e38524794c1045ed3a3c398837b060e4b1414a0a3c49a490e01bf4b0e033866fff44e190d4c2b24bf0f3e2900ee921f3fdec7c5eecfe89f2e9d9f4d514fcec7c5ef6c3cfeb1385495c535353c3825263218ae2cf5c3185284a79fa6a92c788286a5f410cbe3d35f8760da42f8f0d15f206e91b1072e7a9274b5cf4a43462d9e5cc9c9320939863e5db3f3b318716ca9dde6951837aa843705e1d4889e32ec807ce3befc06993edb4a8678d1436fcbcc2ce6413763b4f5f9de9f52de33750b26b5788508240603a457e4e61a760c38af379cd8a236f900ebaa136a0b84823dc68267976f20823a40909662274037992266ec912c315ac2a1894200a5b61f190867332f39cc36155ba589fbb814d71954ef3525ca5c5a347d3229df3362bfeb32ad4238d20399d7f4a2c48a44eca2636ed7860675229d9141946173f6e3faf8bd0a9120ebba37ee79c104b9ddb2ef79ffb5deced8d5654faf1282c15c9042725b3b88a09603c301d8babacb0a655ac567666f087cce7af64cebe92b9bc3d5c3c8301a3c5b3eb9279365b5c32aebd07a4384807ce5bbc05fc2166309c7d6545bac010a273217cd4b72e840ffb9ffb7879cfb90b6af1f829d90a8bab801295e2114b986512957119976519c75d999228c9844449946442a6b839512854b7dc9718994c194155d44bab38146a222c95a5c86219b1b78d708428838428d349a687f2f57abd5ef1c84ba75c5480f5b41b44aabaae3a67031b76eaf336c2a42024f0d24b75186729a2cc1451868a28a38404ce2d66610ee33f605cabdf4b6ce79f740ef31f301ed7dc0718c77c8635cd855d20ba6e6b57d6f488497e90b68775e9dba54e81971fa717a483752e7a3d26f52c61290d370f42bebd719b33ac75f3cacebf8ed2178bc59a1b333333cba0dcf911d2087e71814541ac7304df96e5c34e55e1f1a87dc4f7812de476ac9ff1883fdb880d6c9b6c384444f3549334b04f35853957d742f95a1141c927e0e3aa89d46b5e79d0aacf7075cd31770c1c622b69e00e2d6a8f2cf6d97dc3a34983495c4301a69472ca3eb10be150cf6b4da8176b42a1527d73e291903ef58947b285344ea3640dacf4b66953dbb4a94d3647d8d8f0e8885adbe6bb6d5eaf977c655fe65d451290c897176b2d4b5693a956f1f372466904a477aad69fccbab1a134fdebf57add972e5d6a2693d582f05c0aa35a3aef62d691d613df52b84c26245e19edd32be69828d4045f7ac679d6794883e9e75d3741842ec26d233248204854a7620e23449654ccc1f2edda7de182d5c2775fe19510ab6831e8e83cec317c877dc5b74bfa798d24cd3f30943ec1162b6909720b64254d8f206da97dbb6ce2109fe8894d8c049bd8c4a3c96c6231122c3eb110d6267bd5a495526a822ba59051ac5aa131238951a1e72b4d51a65dfb8cde396f7f1be91487d8c448c8af53df6553abbeefbbadea541be954a77834f9db363e995e2ff93af5498bb56db852ed2662a73ad5a928d38ee1d89047feed590ecbc88a47f1c81854f020f6d8497804a21e3b0aa9e3ce2c8043ed51e505281f46550e0dd861b5cd8e29e6906e6f277d6a5a7b61354fb5915ed1c076777b979f6be9da8bea3f3c8ef90f1850c75dc94594e922ca6c61e5ca282c2f1e285fd561fc07e61eff511dc65f3ae98178f038e63ec0388807cc3dee03e61e10c687ea30e0105bc903be444f7a8e4bb801203fddc5a57720cf01b25d5cdcdecfa371d1bc8d30a9596efdc838517c7bbddc728968202b61b9f5576e3c32862bbcce23b36460535c05942c0ec9503a6db158f2d56ab194b0584a5a1c2777e44bb2364b43f2ed269a08dded22b4110ec9e894093caef98fea98fff0b8d65ed81f393d68eef11f9857ffa1b9c767f88079751f34f754c7dc870afae00159d5a246d958da4ab19423c176ef5aad95ee394bef5033b09ee733ec79a79ac4b55afbf10a9fddeca5e78019ef4d8e4637ef3cf2d9d55e7a3be487c7d663f30c047dc01ed6a9f3b04e1dc8476f87750ad28832d3e5e7e1fc6c4ecf3db73708f9c573fe358ba3c41c9c7b9c99681e32140f586bc54090f32ea750cc0493da088bda63c4e814a378d43d33c1ac5a7560a7381958e9d2d4a96e79a29486d2d4270e51166551166551799226898434499344429ebaae533c32c2a35675926f6754add64a16a7d3a4b6e11d16efb09620830fdb060a46f8907750269429bbdcd31b8f8c81063f6f165f4d9228c9922cc9922c896a4da25073a34143d33410d2602ac4c652e55852c2869d3a9d9ac426539f9aa58449184781d2e4fbc54c38c001cb811789c29e6fb4e26f4e3c32861dfccb76b78eec1487da4812967ac82896228ada591fcb2c14b3a24ca798d5cea6d6aa29ca849706b76d2f06a2854002999a4c010ab84823b461e332cd331c7632f3ed9fe1fd76b55bb16a456d51c761a78c891213860ec515e110df0ed5e170a893f8f804078f13032526cace0efa378634e90ba6bfa894cdb2a6510d434523100000041314002028100c0784a221a154aa29a5fb14800b889c5076569e08a31c87519032c81842140040c00c10000c44db06245ac6e379c20871c8701e53bd322da1a5f2f34adda47245018302c2b2a162949e932c975c110fb63d5bcb1c6c4b8fbf25d03b011398d6ddfe2be9b5884936312ec3e5da555c3d2ea910ff3ad06f7ac34573e073babfab392ebdc1ff39de323fdced176fd73dcb3335b0ef0f1933233a07b1db25f2ae9ab118724e6eb2315d735bb5455ed885d3ba5ba9daa2e52273ba2f00a9d28480356be43c99179ac7fb768c923a0c9a7871587a31fcda1e0abaaca24cd52c0d9d22b181dda8f0d48580add4a53bb1247df1b5b75985e3028b0562c04559b558cf059a684a903919e480c5bbbd5243fef0e32edc460b158564fac2abfc63b8e837890c947b5fd52d05cf559c8ab3ad490e0bf873e8bcec149246be2743a43d0dcb5806172f9cad9a77c3121397f8821ba133c877204f6a0209fd0e98eacf59534489ae7f97d38ae2e2ac36ce420bf11c64d6dd442e7801b7e5d3d5208322730acacc0f7b7278a0eaa3c1100f58b9c39502d9bab071a8c5748a4a302d99625dfbbf3c046d1af8a050897ed68e130497326f85610b7abe96dac70a1c9b923458da515f511a89110eebadf49c94c89a5758b8aa6a013bb6510abe893093e543695c0667271bf9275bad7c75c7577f25221aedb2208dc4c65fb923d25ec86274b7bf9b70642ebb35c9a0ed6e5380268edd795cb17b81d0c7474c6a18360413ac14e3047c8a5604f90dc89e467642095f86fe24607c6f4d211c5a114702b2050fcf19b5ccd250175027f870cff430a7713c7aa91e397c8c3d75a7255e5015fb07cb3cf535c38838f06eadeb10eb0c53f343b2b4e447ffb0950266d96a2e473a30a948a0269d77e2a09e5d8ca1add817c93a97796eb0e44d491e258caffe3749bc86540ac1a06bd423ebe3c31e4770ec49fea3890bf3fc9cd081b2bf13089e65fa8d7a75d6c8b2199239e2fb0f36eb773c4134559fc0688c6ae3c4c3043fc96eab4ce1dcf0048448382aea5769cbad3bdf81b133d179a7570ab5070fb22f8b2eebb86bba3c53d3cf370712d86c1aa623367732b799f2cd2447ab469593bc44871496caefae003dc1e1758e0acc6ae735174afc65d3e99037b6759239222d0bc19880a996af7d4ba2ede41d137d244448cee2156edf7c025b71c4dc487a917b50d217a9dbaf4fc936c9592afaf5b608bc2e6bcc36b1c01ef53ae1eba32e46a7807d704c2f0c4271298d64d7d3d18db94ad91f64183de1175c4288684c40242ea2ad61a218d4ed8af51c920e9c1d8b3e3eae934a78e2f8d3e46e58e7d6646b7ea3ac5e05a3a3faafc55714fabfe869e63d06cef503a7e4f36c9433a5c47a3adf2ea01c89423e48ec8e88c95014f1a3847f5d7060e41a66344a9808c3e9e4c7a2fe3b3c98f2ad85faea6c8e8c95b361fc7a7b4df64c7f0db08d97742e22455e37b45b62c65224c016f0ff5a1969a875ba8bd3eb39809b8c5d566656a4829ada8c34301eb2a5529e73830691d72f0d0ae48001e2084ed48c767cb15ee5086d08613549ea53bf5516d6781b30409f20a2fc63c4850eea85da4b2cad6f838777dd779a2fe56c5a5dccd36b85d424a6b8ffb52848125450cccbcd6a24407fcc85a8b040f08f6dc7032495768062f8411b120fe1ed44014681f24d333ad4eeb804ce4458ed161a3de7a4a8ab65b0d2b8b58f169f345a9d499a438ff8528e7326d0f950527bc4f2aabd222658d074186b8ac636d618e3a63f6411a102342a7e231037a1591395074c22ca123934105440e7b5408d7d9707a464926f106a5cfec897b038475fc14c27807d6179481e5b9dfa2cc80190c7c9bb41e6a87e8a81c06691159f64f9fb07f92961e22b47cf766e4151965f193f69cd6a3289b7c1f65b8f0ff2c5a45065291b16dd8641e05171c952de2589284a03008f4f58d712f0535cb39a192f0c673f19606fb332dddf81545fc920ec64fe7ebb9dfa94f9194690d61f0f9beda00a1f2dd74a06df6a38f43ebb132579386cd4cfaa99797fab640712ea798490688dbcdc41a2ef0dcd277ceee038f704f7a1613f30f01b6d42885a24d2550ac13e34c4a5da95dd03d487180ecc86e55460f27a8fb3ade9103a5f9aed11b89e7f2e3bbeaed813518db6badbb32e0332acaf59819cb77643ddcaf731b2954c160808e1d81277fbe9872aaf0312711fe13360fc921a6e99038d62a6ae186cbb448d9afaa62ed3b13d69943dd8696c9a5fa0a0c392b6a651f601a89f615c262ca35b42c266b41b1a2478ea51dce927114c6e3e1c135fa26f7c86338bab3623a30fab0b60fd01fc32d1d7bbe44b871383c37af2fd26630378365cafbf2fa5819cdc1e8217d92c2ae4f47b9f2fe260501c1040094ceae08bf0686b7ec0011c3a9e8cac7abfca8ed880a5211535a319868e0aab902e293466db50f89ff1b8a23a13f513e4cda57b28abdc2cc3efcd99bcfa3ce8c6f4fb30111909dac999eff68387c78d8985e64a7f702265809a4e00ba6d21ae3b754389a9bce95f9b92061e64bb8da44906d13454f5c99c006bb3a26fad2166636330ae83e1b44aba379d4063125a54dcecff6d2efc8ed7e5c289b8f7fb5708f69f8a0f5f32e0aa5187f87dcb9a2e81749673b7d39f10dc05125b25cb4a3e32320fd93dd8108cd7460eeb7b4616a92e408793de1821d28dbf24ee24b349f5fef46b0ef726ac131528dfcd2ac436cea850c97243cfde35ad94593ad1638d836ce725bc420374f378efb8675dafdb7bd8f70f62b0df229a66b4f92bc742ec6ed2e1c12ac59f1a086a2ca02cbbab0cc475f11da828c54a0f875845e9aae3c45bea4f28fec898cf5c4ca78e31faad763753ff5dd1caed630d7964e585c22992b5339b5dbc4c41434833ab739c8df906e1cce4ad9098312fa0a1506d29594962de24a17b1afb63eb2ed687528f8885e90f5e17d394b611a95719f0e3bc6ba453de633534be455361d320c9bcee9bb4fc31d71ba9a50acca2a9539f414ecac63c910f154a516bd0c6d8e6ceacc867d87846969dda109e6ca3afd7bdb69b3666949943716cc4d47b54a5fb4b74536cfee229d66961cedc2a1cbd2d5a481820f84f5173950f6566964092077c8ca450a88a1a666bcbe1c83ac2ff9c06dbd37b233246c1279a374aff8e3791a8f42e4ed0410492e72dc1025380631fe7de8035075486f1e0aedc0c13261188cdffa9c10a05ce2041cec48fb3d3291e5b9aa6a6f57aebb606669b588f053efdb77f12172bb66d1314399751f1c9bec460c33e1c8c463a191deb4c83cc11d35732abb025d2c0a8b7e503bd3ebb6d0d34d624762b2ef3f88ba3171a864b20c39125f5cf5dcd33a4468068561e5a5336c29cb278f84cd508bb85700aceabb1fefc09462ea41839932077767e32a062a657cb3411a3f094ac718902f5e1815cd7049e52f3a78308214d179ee28fffff26dfe7c8f1351995ae5bf7e8f43bedad9b127e00ece0f3d1bc9f5c90867d147b6f6871f45c77c0ea0cf170d6d13eb70a0cef7f9009edc7d9e2d176d371022a209a5be1c25b0ebe7bd84a0dadefb6531a4bc954b502157504c96fa5550ab3a4d758fa9f3982e17e516c081d13afd01d09fcb41d3d58807783e1c01346b2c721c11f1409021ee3a28ee292e20ae88eaf83340fd7feaa497d4c4e019687ed9065664d2cd3d7f4e7b9b5ae9045f94277ef800d19693a8f4d5cb3fb04a95aa9e23467363bc7cccc4d0712933051f8ac71ecba0bf6c3114b7342a2f01c0265c943f89400fdefcffed6a09f4cf5becc09e336b1d047c06df1a0eb1f02930435730b9749a461a22d4358f2cbb4a27b76b095341aea72e5a29cdedd424d05ce50fb4b0ff14203fb49635daa060836cc5dc5952bf08993e62171b94a86fce24a001ee7318df2b48854ad809e96a6af12b59a51cc1d81b477853da32ada70888370f33d477cc035c0af447f73801de334eac39cd4ce3d039e44b431b20f7baa55fcfa6bbfc81d67a27886010e0a07ee5a2e38d89af985d87ae8a4a02fc489cfacd9df02fabaa98a5f1b1c2e5c6ef4837dbf0b25396757a5e1da5084db29b3b305abf7b74d70154cf8407048418adbfef6149b0b3114f8fcd56120dd9de711a91c1b64325300b7e0197bd2d5fb0f2d9f1137f89dd59421cd7b129f3ffc764d0c5a04734ba26895593c2502b23fccaf899419eab7b8e3e7225d07528adb5739ffded6a4c99c0cd70e47ec7d1670eb35871103c410d6c8810847138609da19c8673df50b0ba76b2666db7b928906c6000afbc1606252992ff5f98eb5a8a00dd5c197f1d90bc074374421109178c21ee3874844657249094e46cc5d75033a84bbd0d83136a2660499e5a117cac746cd2a6022288ed3b8d1d453ac069e6eefabb17e20e117c91b2222cdbdb4e309a24ad14a31398fd05c58c26deb1889c74035f191250dc78ccf75b449bcc240dbc636832aba852e8f02866ee94962d32eb7349f0aab715113d50651f0fbfb81d4829dd0060f55e2c1550bd6f6de8f55a04ea29acc61ff5099882016cfd92b84b87efdd40695f9c55279b24b54df2067294256230790e05b720a24c0f71d0214d30b13bfd4eeace4273ea222f5e9493cd467c4216c778e19aa4048a0691779a83e420f9903e7a8d896c7f073cfce4b1f4843f8dc602849a57068ab21ef19932745a465d7a353bff209ffee3b90fca58755e7d23fa20ee15bbf1ceac93aa712235ce668955d92b5988d26ee54620c46cb2f253e3e64b24aea4ad36a892585bc71a0b8008d48bf95dd7976b6b5d83370a02d940120798ee873761c554d2b2c3aad7cbcd1efb7b6c68985309c2578ee7786b061546a47be274dfbcd9b0cfa1480445bfef25a794d099f47fe2e0f2d5b5eb52b4fb89cdf75dec2d9e50e354367942a6d302b9ed838e0990210de72a24ec1b7e7ce5721f1d2e244547864571fff1b6723a91fdf98bb4a71459ce169a00710586d6c83cb4b0383baed073eb7ca94ba7b9f012e2614c9d8ed91b9ddc87e6a64c113d3a254728b805bcd707a21d3cec4284008c02d4041b70e38d4b48e5b33b5fcdd1785b4d510f44be2bdca13eed6de9813fc3b45448415feca9732275a51a5bf3cb2dc30c789e1bc4f59dcd1a24bd2e5d6e10f317adbbbdd3f314522dd60120a7fa96c60dbd933bc2b20ed6b7c2438be4e4e440ba30ebb448529cd26d57945674f116b3f45690580d46587e93e1d5cbc58f5776b4ea7bdbfefd98ea9efbd406b43f15c2ca4f62b87980094ef82269e3044747c440a58061b8c2e219a52d93ee2d311fa291f9ff15664da82bb4aec7d7c3e804778575a484eefed3dc5f0a65f01791fca22119ced28fa501c53ae7df87dd0fb428c58c86cde753f14bf690ff989619bcf811fa2a1555883928c02058eae77f4a5cd0ee4fa63d53b7de87c3fabe22becfe00a64618bbf1247b7ff7cb965d633b9806712493d6c7665244f37401ebd0c8d3e960b3a2d9c4cbaa8185c93a926df16b7996e734a3749cb94494904eb898d80ac0d81e8d1f98038dfba471110fcab23c4bf51c91dec7618076fdcac4097f91e6012618c89fc58c47c3e34c44c6e38204477697040ef4950c8303fd8a6662f97a2af6d4a2eed92925c8ae082d076a274f135b9385506fb7036b552604823181adc52fc755c43ff1bac8d08b3134a5cf649378d98bc9beb6f0f3b600fdae0fb3d0626a7da8a00b6cf0fe220dae680243bdb4abc56ea94195cd11d5dd016e4b80d478bf9d4eb734686f49efcbe6b73fe3519464220d1ba95d05f480bc5ef633a7404eeace267caea9e96bb6b2ffec3179761508383f90de19070cbcf5c18cbf59eb415c53aa3fd4a7aa339e7213cc4b271bf88e7495a69ac5b9a76778d58ad19657e4c4482a16c56706a23d9234a551be5f39160386ec2a432449c0c5292bd8f3800b64106e6627ac45bb60c7cce7cf5808a1754411130c50616e7b5cc8ee97e06fa5bb7bc176a0d45d60e27a37ac5d353d595a10248abdbea8bd3b6fbddd05ea356ee9fb77f3c71e42824f6640101a3d4d04862f33a5764d3d9a6927a8a4207c82a842584155d003f3b31602efc9ebcb333062e708d0db02f160ed7321ab9d6ea173f711306a4974cd8f4aa5122d2f57044bcb18fe955ad09517e6a32f9156caa99cca767cf8be70b572c2759f64ce6da09d5f52289fe4fd0f44124b92e3ee8b75a670d42176554e154d34f332846923c0721a32e0b15e6cbc87949b49604e5629e62641e9e1a2203f71f2484e7e744e17cb3bc21d234ac70e73a2c758a74ef8882a779d1d9853475e8689418c44e142a3ac3232fe986932b4293317e4e574426f6bdeca58f86c4a6b538601cdada8eb42cff2474a37db1fa1b067c7229d8d9c4bf4aed6db8a8443664b90dd1c58e7d08c2edfd1ba26b2c33ebf79748d373e5ddf0f3cb4c1118ef6b5d2d120f7f755e119d9330848dd89413ab0f637da918239e6376a2702b4137d5dbbdd055b596b1df066db55932e014d726a33cc116a052ed1f6893c1a3612b5243d1873d2508757a043c659b8908ef444f7a7cc63686d376fa30ca021259634bd072282d4b2701faa0e2b6b68b37b42c0fc9de94a1a409f56209053b9d5e9d079982a527650cf0446bf8e95ad90fff0c1312c0f5de265e4ca20d89ed767d9ba11b095a8093435a9156d4569a1bdbccd2dd00b789b5ae67ac79e9453b0c5fe93051122cd31a8e35a53040c1ced2348d04191090136c13042f432a0c0af2a3dc7945ca797789920a0deffef818e97a4fe5f9354c1c1c983b4afac29f0cb4a14d29af3c3a80ce71ef22c4bd68d453a8896138f4c43f167fe83fdb1dbfa50c7f8869a9940d42aa8a968d4dc041600584cf786a6dff381613548b2194f035a5ffa49407b27eff9945d1f49eef23adefdde68e5e7984fadc319a1d415c2aec1fc8b2584163db720b1f0b3627ee5d4c63a12956c77855015bb32eaf4e83acc2a34dd4fe96c420a87a267868099d738ef7f69756c99002bd5bfd58232fb89dca86ca111d55e49f3caf1f96f8841e8aee4594381b700bf948ef2462dc02f6e9613b81ddfa24c73dda3ac9894858908e7eb16f2abcff9a36b6e86ccfff2bd3a49321fcc9395eb50d864ddabf6b5d92657a2a680a0bbe0a224cba4b6fb29e709898b62dc35e05d3e74edae09b419a28153569a5e94296f294630c3845b2dc7c8d08fee75af7bd592f518030e0dee28c12e2a392258261da759a39d70e1ac80416f193d4c7f168f92d144570b1da0040040b62244b3bfbcfbede4ed243fe2d3ec4b2cecce1c7e9e50df51167c52baa50532df396e9ffa9a1f815df1372a59db27abeb733a49543f9a83b2603ebadbf4dbc82ebdd443eca95e6756858aca1929877471267a1eb7edd717b9a322af2f1e391ed3f3b3027870b12c8548bacf338c8fe102a08dacfd98d6725d0d92299da66d620508563c242e3c122a9c6d9bc2080f9e06d14a469a800d0c9edb8db891c06e2507ada354cac76e1c02ee07f56c869fcd75a1236da5377dc9e355f2f10f5a894aab6ded81a1654e47d9b66b04cddb0997e8bb97771ce11193dfcf6f9ff08c8251cdef8f16f59a0a9bea959c5e88ae8a55fe9ea9cd00aaae136b68871241fff3f9d856c738e18c146449cc1d2746bd5b619ceaee2d4d94888beefb96f861f68589a494b8451c22674454a5a5319fcfcca6d743426961f79920e327b52721a87909d7c6cc70245c1234667695fc6539f75d507f2944d3cf80530f3df02286c0be5d4f881e551ba5b533a87eaf8457927c9dc25ca6aacba779658cf212d6ad1e6e9301c1d7c30f81bb6d1eb77436daf0c17e4ca18ec237982fcee5caad3d662f0feef30ae87bd7c7037a4995228341c53ae085ff732debf000e838ed57f8eff4b8e8b5dcbcb3498ca746e599004300231948605814c10f8bd328084e6b7e0e20b054b2044b977ad4447c290fec8dcdd9882de4cdbcb120d41dd70fc6bec80b4f175f708ae084ff679e1545f1190593294e1ee865c5ace89e7348606f423f6943650ad9d1afe774a982b761d6d7fdba2b750a9212a0d58a0525d1903dcfb24cb1af4bbb4768d18d0d39065dc2f4fd759a4c5ac3cb2423a26f23fcd1c175e62f8ffaf961640203ff3d99069e05a6e763cf2dd467dbd9ab3fb9631388e7db4b000288e2620c8e381e72ecf83ba8b90c43c6ec72ea309a79b04b4a6e02bc0f87978866baa5bc8a88999e013ff54ff6443502acb3bf74d56f3a5c484d412490af00a37e7b0b6cc835927e26d1625acd678a0af4d59243dbf6f7caa846289eb26a7658bdcfd66958aa8688dd7173338055337529c4c44966c503a46d6e4f75efa7216d89da898f1abbd12f1b91191c9422ec1f5e8b747c91b0e6bfc4c61f1be9c95a469d6182143d6731c7b3ea2beaf19594e43c2583fd09c4be161a99bfb4b112fbe6fb63107b808a1e10b5363ea6c901f8f2d4551e601e87176013b215727781a2792225b42f120c9e94a3ddf776c681ccf15e1ca5d8c2ad8b64dcd8ff8f6409482063f6f5d5be1c2eb76bf25b31856cab37b26749ca1bab4205f6cfdae8044c7368858879fc1337d1cab766cad454e4050a607522e2d744461d9548d595919f07670a6d3a54f8c54f568cd94ed0cee0d8e94d830ed49be06b538e282f0d56ffadaa0ad12913ab719599f72560dfbae0f7e5047a00f2388749ac1fd696a9d2066b6c31aa35969022a61ea8ebe115cb35c27c57f452a2f4c22af0c2391701b18128b484cf6789e7ea673fa65365c1137fc5d767ea34d53c27d5e1a0b045e27da886292ab32e95994db944763b94dd0c2de7c29345014b8fe05c9a8a521a60b8a145abc4a8ae8c9e50d42d8bd2f862b6b6b3a77f665148b6333a06186877346a1dadda7187d0735515650a1186920e6117d309e149198e84b289759c6c9e785767073033254c6fcc924a43999a64dbf39361dac97303fb80de28f663625dc6774363c452b431c06e0c7a235c925a0549974d1bc2514f51306a166f98293e2273d798d8bc5ebacc790f3a57c80b2bab867462798de1f1fc27261f679d390bbf822e635111a52b740d5fbf36a4059b6e851bc4de1be203c34760470a8cdfc60fbdd5c502a499ab63fa3834b9f8a138fc23e780dc2d7e5dd227390491a860859559133aef5b63c12b642a9e17748c790b58eef6d9a6c62ead570eb8b15367b951ca6dbcfdb26b35b895929835a3b477c7ee7054eef0495e2389a6f58f8fa176fa83bcefdb44fa1a36bbb6680a2907d198031f11da361002d1730c93738dc099220829ea05ec3bb98a4b42b3c274ecc58f90b032064f5a8d276129e54a83f925f3025c86bee5a969bf0a5b8c20796395652959d51cdc7549ac7cda7b618b1ea4c7eb6e539972c0241e886dc205ed76352cf7261a1af9a84dd0ba9f00664160067f45f9006cbe447567661975d17c4982c858049c95831ecafe17fb9e0105f825178501752ea495aca4f5719e35eaab5da34929be1b378270ec7a08918182593acf9295c8fbb5af1270262ac4659530b4d9a85539f987e8adbc9d03d9a53866515dd4238610316ebf2ae90d7d3bf5280be280ea0145bfed4a0ab0dfe1c3fd82aee28a4b3cc44c69e4c995e49ffb90a353b92343e8d26f45a3c4db55489ff18fa43c388d44c07731e08e60aebb97da7a836ef184535d573f4f58f47d832ca40b7075369d4333f1fc4b41d02dcbcf6a26613d98511726c34c71c82e62a2eaefd1d8d75d1c097801e52003147e11ea926438715cca700c3c4ace6c3f8a428ca9616b8ce2643c7a3ed66948a369de3832d3218db28347c9d6434a9b9704b22b41ed2d475a65665e64d41ecb4f7a83dcf2d9638836043da3f763c902cc4c3e7686730877dda2b90e772d123ce4491503bfc29f1980b3be937adb5554fb198e021c24a445c2a21f9d0c4f5d446f7607e8a0c7d6ce0925211d836255f806072b2bf5b407b01215c5d0df4c7772fdffc02af8647cd2c3341ce9736ce11f08f76be91417de50f59bd754d6c816c874108b1e90f4a4c31713482797e90adc8eae43f42a3e9d9153f5941f3d649ff2e4c00a18d3a1dd979fff4643cf3e8f0dc19b475c4fb94c1b40a574b0bc8e68f9b07b78392ec9a4f961940ea2b2a840d67e50fbdab8a6c47a249e33dd7e24348ffee922f4f56606851ee2a7ec27c42801e40d1c56605c8f7737b8ea23230731589342089f928f0dbe0f7470aba9a4bbbba5309a402abc293149fba3f857948e90a15856d6d8afa1291815c9be414b7d3c7296d602dcc0b65ca7cfc88a0356dfeab7229117fd4d0cac6d44f05e56c9063a5689bc302b4c8e9041de1c366f074f067c9b0a6bc7955503b9df2401b8fc2864b61491f7a478009541384618d12cd06a4c288a176c1e4c8cf62c14cd66fe6f7e0383e3670297474fc036be084a605084f33da0e2dbca4c24322129012ff56d024957382bd2ee9d2724e845b8cba768783731a39429c1c31e3456069eb47b06bb84e95a27146f507b1a3c68c04d2edaa40a1d252dab47c94216beb32a884c6c0e15f973d7fc3c460339fcc0796c7484e4e5ad50b85c0b584190a992874c51e37857057b3f3ba55b86158aa2d9aea4b967cbb0087979d2e5c431b8fc598f048c5b7c6ae35d06a13e87b2492d57c7095a8c1e2d6d78ad54899cf6dfe88a9e607072d35ed17aa2f08bf9e477d3ca399b9c0cdcc81a16bd49ca45cea4cc70127bb5d1de26251d27ca93473fc5c6d4c5a3436aab55a781d001eac74735e2d00f7112675c4cd8fc56953b832b3ba8890c5ef7018370ffaf83cb537514d4df0adadf1fccf85d1ab8939e0cba0f7dbc66f7231822074f904a90c507684ac85b4ab4eb76960a62fe3c927ff0e9821b9638cda063752510c6c6176acc3f52689ccf8eb4086aae14017bc944a549edf32c422da09542f722240e37453e4e4567ff50140201c5a1d387b830e60818f809e71e7cbf3208634ac714206b258b65f237e52f40144407e63c1069227804a4e7c6ddb64bc7aeae6ec1aabc0e56b65ad84b65b1f1e56d1abe33223111cf95a85890bedd9cef86d84c5e9b18e74fadc645575d27271fcc2a3c2d192d217a7d364e4d5270c5dd61d19d2fbdc780f071cb9c8b39fe703b2f684d068dfb1fa154fc2b0b18f066c7910a1abc90caabfa0f431298ce5c0353c19eedc34195006f6406a38b79104155dc9e0e158a2d82209fc1d55c554ae52eb08264e03868576bf0a077a94a92e953cb9566f874245a012c40d9e55e13886af7fa27648766bdfdc7e753eb2a55d2940cb96a453604a1176966d0d3811e1f2e5d13e8a80fd669ca622fc182dc878381dd0b10db5e15490d1ee7ffae4f4c07e89e14921f5ddae58911566df9620363e99d954f1a47e317441bdeafa79852b93bfdc3d6ab4c568db562d7641de617e04e986d516148cb752c9a94fb960b0fe61ae4bd6d506d6ffb9fcd8ccbcf2ca8e83b54bf7777b6153ca2d85f5156c0f0d1e43a5abd1f31f6fe20fb6467107634363f35dfaa81891af102f8b77317eb733a1d9477ced2f60b811471b83a59c75de5626057f12e5bc2c92eb2cbdf86c568dea432ce2c1bb047dbc36b54e6690593e57314acacda84175580e86c794f03c9e70f2d21a1ea8623420482eb8805057313faa38ab20fde4722222987bb8ffabbe5c0ac606372df30a3c080eaa7207456e94c8e3e18d18f0396d24a6168908fea37ea478f976a08c9e88dd764367d6cc77b30dd151cb890f37fefc18230532879b7744114502ebe947790c3d2cf0484de442731e046ec176dae1862359279f8c5f76fcca9b48299e5b62ca587182e8fe00c6646f2b8a0197ff305abda98be587ce56238e926f5ecfbd0cf1905d4472f337edca5690675b7c683c52883e2f6926af5ff296b971c36ea1ce6f8b7d02078e11c1c04221a619ea18a680c2962297214b18a394886023847b969a20f742b0f47e6b7971431f633da41859ed40499901dd91b04bc8ba8f69b833802951d285b34637345df08c9f3ca6189961a89e12d6ae349073179335d4e9c4dc411e50632b1ead8e2a47f165f4939cb542ff48d7ccc9fd0d512941419c1d08395d8926a20aa57588e7218bd5a90302f5f308d686999240920267e79cec3dd919336caef0ecd8453bce5fe8cf6722800310f7cbac77f3daf6a5b6f7f261f09354937c89dde5d1612c8f82ff2bbad5da01bac22b888eb7ac984c3e071c84930b35ddd9044bd08154d1096947f3910628946ac0f605d158a9512d82184542e34899947e2eb1ee52c3b0d61b3da72d3c3ecf6dc1aa499d03b0c42dbeb8d6d93ed0ef4402dd0a52b25d9ab3ace281a8591bddf2408acee7b34b2e0436b061a7b50e7353f5239b78a01756e54e648f5d3e94dee0754bc1293d5accb35617f32c03c9d1590d9773bd0f3396d30e5549a34b23a33673903a130e74827d679f82d410b3410536235452857d2bfb738a349c05a26303adb82a67543e353d2fc2bff6534884f4119d73c91ec7bfc33ea8047b55a609ee9a89d912089a3b0f76e925408bc1ff92ce49410379aa61e89df17d34d40c1cc2658acd842f7b9532d271a73d7092dd209587f52d4ff06bdd9ff4acdb2caea100a4c032fc9430707610d6d75100f6436c64370d6b011abcd1716cfdd2ee9a316b1473b41c59e8852d6a8bd34812cfd43cc27c441844d2a05efaceb9ec2e6e7a88031b933080b271b6859d60e88cc7da44bd12cc5207a96343e5ca0c58601731644b163381efe81b805330f27bdd90178ff19f534761f575d8f949179495f74298c0a6da9429c55cbbd1624d8baa5510e73185766ed1e897ea54d26aeecb107dd4b9cf91704dcc7b12867245ca8b5e3e53d510ca2db03e56682556efdf280307d625a6ae737fb3730c73ec7c979b8ad0d39d9e46f0095ffadcac06fa3f4d5a486107e7916d61c3252a2d3422a090a93c96174d31e0f20e895020bd0dca67a488573a41a3eef94537a6ed99d7531644d327783863c163b8f4cfbe195de385098adefbfc818044ae3f2c56c0e8751e6a283fc05bf502ca533e1aaf6585870a222176255eebaa684a9a708db0482706da063f580b6d1655dfd769f5410298eb4e827d6cb983462019debb37109e8d654498a04a39e770f9d02a3d2c3695e929794689d11d18414d255e9da4565a08963e47560cb8a03bbb315e9e9ba4cb38597701ec5c6f44d7847ce45c4495f0f10aa9f4d34339126965441aa7e54c4678c7ba13c86e2ffbe1fc56b8ad80b74e1ef14d10429e2f3798e6ec80172a7405f5317c33e5206b39a58978c32cffd6e2e037a3b43789fe7881d1dffe2de6b4c830a8de02d1a6cc92473b42eff0fc30c230304a6e6ae7148168a214d8ee3613850d0f33d23004c8b650f7a1f88250f1662d4974d49385cfc3a5460986a386b6ad0f4ed0c9e8611ba583082f3c4950af7c9626c27d0bb1961032166c44d492f89dafeae6f36727c0da07d459dc9ec6697b6b5229c92b30b7fa7b5b965dd0e11a5e6e4f4c1996e40602a288eb9a745d251c4bd6099b5b6ab39f3070294abf015f6d742cc18864af464c168e8646d0d5baf3dd54541cc26f20f6d7e4ce33f4076fcb18a8f23ceb9eb2b42e333cfe1595108102d5db036ac1ce7b79bed1623b618e051b14603228b1da6fed21c96378dbe955753edee7b3935293c1038742a28a62c6cb33d6158584415cb98b34de315627d5d4275cfa2c385c3a5eca91fed6697fadc815178a742de8552086b3d28d1586854ca46f15621d787203fe61e0ecafc1567727220249c1ef668802f2cf8681d6ef477f4f1d9be316ddf6ea4937a2e6e85d5b9d82798b807527b467660626a626d82cdebecf6c13ed68055c1a80e934461279d304a7e59dc8e4727494139aac2d076d2549f82d1c908539c4057f33fc63a254d691c52bdd2d59dacf32d6d8b2d4c8549dc996d460955cb4fde5760488d787c2c6ca2e34582069b1409909ea88eafa335253380ccd2e868e46ebe37040f35083ee9aa02935aec472b9a60d60a44c9d41c666f073b7359a1e41ec9640647379514197c6331a01faf39ca28bb450c67aadc772f3ee7081c0f6133d7afd2a081cdb958ce20220e6624602318bf26b1ac5df13405e996820e029d54d23926b3ce936595b00a3afb0603a2f79431e3eb98b7ed39650ac7f56a28c9abace9d09ca3ca6032eca5573569da5416dc50573c55da61496e039fb268731fc6ffd5f554f96f928276ce109ee18759e50e2a091b3552ea9b21d14909a6154ac9629a796f20fa9a06bae52e5b52de51e2f4c337709f0dbe9ecda90f08526321281b510567d215f3d49142cf6052e659f6b39b772b36be601e95dbc0b9673e928a31d488d128b4440b39aad83758d0adea844af8bfb28038ddea8bcbb322d9a4b2fbef3ab669004aa6284b292865bc69c8293737aac0cb61e69c462d255955761dd407b2470b62a7216a5f112a2ac4b0b71c2314f6b2c2957c44403a4480bacc409e831397e3f5e817cc0e72718dee9761dbd8d752d73bf22dcffb49cd23b42344bde90598601d0bec1a6d204df4f3c5a12eb6742733f4a864d251d6f71f0989d1365b61447e7cd7d084d5d0b028670fa32316176329021c3ded3897147ed5febfcf5f873f2d0e137aac38b855d25c4c2d9d9d69624f8725d543d8d4487dad77516943bb600b9c7b37a7b5d5683a665f2b5e2157a11a6e502c0da498189bef477ca11c8c030718cacb450e15962a9156dfd558179232e95ffc4ee51c0e95f335caec3aac22bf50e673778cd4379cba86731df336784f23cd8354510229a0eee5cc38b1e6bb9c47f3139520dd44c9159c4b202e1a745f131adf6e81a3ff2a15659382eb78a6f0703c2b031f0212756126c9f3e3723a78a0eebac0e0509a7318a121cc958c0652dfb887c2b886104793516b8dca28c50ebd619e4e0ea55afc43e6da80a05098c0a0ab1e1a6e14c501512263109a745656bf99e8e61e6734541a58a50b01c11535eed5e8bdca28ad8a173cff86b1d7526604cdd7795266085d4e33966a0386138608f7d215eb8160efe3190742847ccb112da6b9c92c36571d46467087718d4161708e1978dfcc7e1c0dcaa629507010a8901d9230868bde1175783285cf035b648e4d661fe8a3608b556f0d161f4945ca27324cf5d8619d70de4fb9346e34ba2b5aeb52eb4067ed7e74c9e4e0912e9bd84e03effa642ffb66e8fa0f84370792a469467ae1b5c4e1eb9b51bda17b5187ac1f705ee3531e40bcb4f04680c80e6f9e27aec8abddc2bac4b01ab0252db5f16931a5243efc284194412811cf2e88d4e1d25eeaf91b832102b658ae877d34205841607ab0cf9e9aac530e855a1ab022b4bdb280064e4bc6c0f7423d1019606571188b630ef10bf6a712c096c3b79d2c0c811db1146788e52a81548596d707a58df0881b2e81ea908983b5de466a6074a54670e73a857a4782feba0a6c1b59f7f59f7088141bf02610f73558e32ca948fe0e34de48701dd0327994161a49a1983377ebe805ca305d1f207952ba0640ccfae2d465641645f2ff99f54d9aa380444491ac6a3f4a4a6cbb425018a1cf64f3df495aff488fae502aa53d061ddc44181a82cba49c5ab73079f9db2167ef0016b2f7ffb429964e9aa33bc67645e3189aa4a5b2f28941068b7ad76b1ffda75530eaf469f230895b85a55dab28fe06d85d1d05396463ef2cc6cbf201d66d8304465f89ca19656b7343a4fa781e038f64f090697e07a3565c504fa8284e23773ab95442cd4b40f41124d05f71f43f995c25ed98218c5d0f61251f18cf4aefb4f3323a31e80efee5a3b4b6cdace7b5a4b31bc51529556ecb4227a555cedfa803c166bf645229913fe8e9b93524245a50587af5656851a71610ae15468c02606f3a9ae5055648db45ab916f5b10c37c6804eb1d08305f272905a7bb9461c8b71979a42b8419c366070ff4ea3ce6a6449b18ce22f66546513a098093bc543e45909f9dc8cf4d2e908557f0332fda675c378e23b7356b243e892ed37e113bbc6841e44e235f32b368afdaf5be872fd6ed0c6a09c2fb307f3e06e7a4fa483480911afe1303b974f2f1f54d9ed5ad2914e2626aac6f98efd548ccf54a3f9d2c1b1337f77b5ece1baa4affac15602cd2c0a7f1e82ac55da50d414ba65c48bc35f92f058a110c92611a83a7e6f9b1490b6f2980a860b751840fa3d0426e78eb7f22069984b5e713c357e4cc884f04bc3167d790b3b4d6ba190029ecfdd226469440b9266874651082b9e266437ee533b708d01fcb8cc63f57be50153be9f9fe7ba09b67cc10e8ff0c41169c4ed5a8b88f2bac209534051dc0405036f39c50d00e25f60c3befba6df06969a4d25158be304c68f75aeccda4018913ebe5ef2a73b9a7a68c37816503be9301207ddd4897011f328c1d1e26f4244274dcfafabd5f3627cd6b6b806ffedea9b15a3aff991c81c18daa88dd186ee8b7178d592a9cdaf0ebc74dfedc267701a5d659b4a8fa90cdeb75c2fd86bcc9c9a1a4f02fa2d8a2a88576e8422b247a8aa85975bbedfad4e2f484027a1fa07536fa3da2f4196105e989f086e6e34985a1c5784c58200200fcb455044767235c619167348c5a693893b0c5ee0d6ad08915c94c9ad9f958262912d238da3a4464f326841320b152013213cfbf24f9d779f725323a4b2abb629b385e2270d2e8c84cd1ff6c41ae24357869866f62a5dacc8d211e03f3874605394c497cb5bf51404506200600dbffd632a7975de5692db25c6d4fb9484f2f3af832e4032f35d87f58fd98772ca2de561d149aa62cb2acf436e7a3a9b5af868f92e49f5207af5428787549d7a2a1d4ea7a067a02d5adc04c79875647dfba2da4b7361bbccad3491ab19fa06e1295b2eba76a523c81d8c86585d95b2bd894b0ed416da611b3963b78ac14f11474de95174a2cf4a342eca8c7f445360790e25d044d35fd62a79a31b70384215ad7f79c148d757633b1b31f4a041c451f22e967aeaca1e11f264e32ad4e6e6f2ca2e948d6a53320d48f4f0c0aa1403cea4abd6b9455af81279d06460517b3768594f0780402303005fd0f9429f3629156915e9a70e5bce760d90c5c809217ed5b2302bad5eaa78b7da9fbbdee70bdc90509fedb8aa031be19810601fcb2d81437558241ae8aa68a5e147d4c03021de25ee98bf0e1d103ea0265e63a6285fa2ff4bd93c197bcf0a22ccbe99eebb4b8ea1680647665dd09e1daf76c2a538a0358ebc699bd72691c4e8dcb50efb5325ce8e02e499ebdd67589f3c3447d328c6e4ac605afe78aa8b324973505a0716de59cca1826828e4cfb8fdea84bfeae9734d8f357c6b4e5443ad4d859f742e66a670345303b61a40e8ed0c0df516c7081b0363fb64fee5970a943d3d5777a2160dd136e603dfedc813676b0aa8f513f15ef9ffa3218b51baa2ca488bf7da00d6dda304bda50f8dc7f954fe4a5d082d1870d8f8f735cb6af44948d174841ad8f5e9327c426a7ebfdee0d791719ec59da466fe3394d6e57e444733c216fcb74931ef2f8641e03d3f31c52459331a25628fe5182cfa6ab1e40e5b1612e87cb6b3ee58b1a04b5c4f455e799d22e25d922f284e8dd7a8db0ade6e35b61e13f3e7c3be855cd0f91ed0af75e72a677861b955c9bd702669b4040cfbef12e793d2300072ff4c449b78dd4d483cb4c5d71d332d58c4b90b9205a1efa23a6ea244484ee0d4b76cb3850ced834b956de972359638a997c0c6ed7c0537124d11a1eda34171e6c9c1f0e89992565c5c8221e54b0a23e70a4f8d64d6f0f4aeae8b16afe84901dea3dc5e049e21c5e9a4b49cb0c7f4ae8d7fc3453b0290d60763c641335008501609a3276d57ac0a17bbb0aa72f4096213f3a1e1963ee6c174c8d5a5670e260923b402e77dd98b93b1649c58a1ff733d06362efbc120aa77d111c2616b8bcd94c40ddf3ae5060a11bce802666fce3b80689376fb23dd9b7934790e68688db7b33ac19224d302d3382da705afef3b6c7074dc84bf4b6579c18a101486b11001e209852939aee12d9be972270a70dc15efee4181532cae497868a1af853e4e6602eb2829805fe36aa2ec2debdff59498a903f0cb1fa392da29cadf02eb65202febc0571da7b09b940f5236d266bb2f65ec63f0cef2679f2ffcdf981994e23c991a11942b437383811c1cdbc20c85e2aba28bdc56fc44503f40ac079105b756374c794c3e7289b6f2f56136ec30640233bc58eabec17a4cacb49180e866aed55a1060721d0a6a04cc17cae635bcf07dcf2d4af7be0e8b136c3e129286c4586665c54b757208e261f23d20786134af852bcf97881cdf164a6c2f8ac414ef907f3f8d40a635255ff86aa684d5cd5250d81b45745c4e6e4569cb0eca3e80738c5e59dcd01338d38cb5568c69f7abde069397fe600b2890ac8430bba04e9cd85c3643d29e7f29802a02e7f459fd4dae77c8e4c1ed7a7efab90a7c293dc4f12738f67ced9d459ca69ec6e91cf3ff9d7e4a6837672e88b3c313d12ca7344e7d577c193cb4d01f10dc055d2f1a810c25c0d644ec17086da70ef3c26f6bb94e688ae73560cbb2c519a6b25a8663a661f080458670ad1104a7f29914da01dbb993f74f3c06e721e0849b12af613a59dc5cf5b150f71d87262698e806e7481c561cb41528eb69de7ac790cc5651e904c7af14773745e8d0e00003f4d4215a4f7283c18acc9f4c3f124d81d03b7d05201d2fcd41f2bb187ecbd14a38350954c6dcc1e649c09179adebc9f1351695a844ce34a40d4cf4b528fcf87db92d97afb5093286d89380fac965a938ecd02b7c88aadb393f39f2d426e701efd2bfde595a9d006c617e2a751a97c1dbb04e30da3ffab1d0ac6f10e1caa43a0b15b4a46a8f4f0d34e2477ae7103df167d4dfd40e8c45e70ac3052db641f96824146c5202d6306420dda12553b513b9330ac736a2887a21552bdec47fa992e42f24cac6dab9f6be7993f6579dbefb7a589e63fd373d02783857f21204d5a67625631ba6403cd60f275cf9b4f5698c7844c79534aa9a30913d8451ce865aacae93e1dfb18c53cbabb749ac8aebde3d6b885b84c55df1a06c3c4da732066f710202026d5f7fa7091e24edcf2a64ce2b4fe85a2e983233d7e8bedf789dcf242ae93a4c9737aed24135f96584258ac073abd7510f393af69b72974ca10094e9f3ed0af5131b9c4d0dc28402f02dc8b40a2f53014eb6c72b8d02841e9492751dc3a897a47da91d6c33169c41fa426cac2c18004b14c21f264d3f34eb8c635dba303d4bc80058f664849d47ff0a1c5dac531d2a0826cc6a0f00d14361cc56fa552fe7fe6deddba399ca552c68d61282562526c904a39e925b9ab5c7fbb24d8206c7c3ed9d0f650847adf9147166ff1bfe3b10c9e634db47f5f598c1d6b96014ec650e5809c431024eb31486ae71ac4f22d1aed6bb3a74c4f67bb977664428da53e659b31afcdadfb575e35b2fb1024231001bd393c73bc6b98060a5b53f3f7dfa44491d6f0a46a5041dccc89f6bf9edf0df208f4b5ff3e3d1008a77f26bfc6aac15e3b26b0548180f45becfb80e2081ab52b1cd9bead27a8cc24ee6e2905491d7421bf897d983c485fc2a349496ff4bcc9345553dc6827cd668bc9e6834620a2e46eda9efdbafe8260298c645b1a2aaf1171b8d5151363fd9fb02251c5148775da221b58e16a2340c07c90b372a613d62cafcfa0bdc30bd8423e9d087a8644c8aa49952d5d86f556f60c846643dca0b22f3a5b23eddde3ee89453e4aa395eff8a5d483de4dcb42fb6a9253675674ae64faba2607786dde54dba2da31b52aa6474d4181ae7aea9089bbf5b49ac0cc139801efa72ea54c674482862756b3ca9a5656e196ab7706c9c53350ce0326dcf2133a97c8928341482bd8752b39993ded2dac505d818a13187802397f9f67b0491950e4db5976bcb548204f4269e64479c85eacd10e3675b4cc2774b7baf84a45c667e3854a06892b837c0b5d265ce286998955af5ac98ca216a4c92a17fd48445e86850b64f321661acaa3624168204e63b5e1af0175dfaf108145e1cc932f476450101d64a9fa736244a2e81b096c7935079941d468474aa10d1b2afe9284b7a0372196a827260ef4db51f18253d685cda75896bea6a208348b601754d54e22e10e705e9e2441dd70a89d4642df0060771009774356c46fa2d9e61a6902c97320e930f440a94a11a441ea78f9f9eeb60649a782894274848bdec9e27127a85a1cfbd989c21ff9fbb8c7e6551b4f63c228cf3d7e7b7656c4dfa0ac0710bb82b29bec8ed03d7d7a51d00a1a5ad368d0ae1c245ae8c9360b2ba89f27687b9645e162160a427eed1a718450a756143ca37b95a3ba35e83db927c9ea8cdc015ce34c281e40452e24ccf1875dbeb51997edfdd831bee5f09ea2f6160101b1c1221d18a8dd8133bceb960722cda36cbc676bddeecfb79b178f93a689d229ee9ac2d1e56a921d28a40c49dc41736e17df6931c8762ba46769abf1416c5a866553c8205067216d94a30cb1cf88258a50b1c4c870421c328b018a8399a6b6568907942a4a60473823641b69f1402aec7f34320971a6dac197e38c31c7c13a2a024437383e51955bc8a3e8699c48ac315f5ff489cfd09bca5fe4a48b3d5b1201263d47c607d6b059ff329ab71362ef8e2102b2ea56ac4209e75f59c5687ad9c73a7948acd762586c28c87a600336a1704b3938dac5958a38c900fd14e4f8d2cea56e6fe739294ba60c16f9a94985140b877fcaa0e674646e6fdd75e03f7a0b979f0b58663805ab91ba2bb6f923cb85058a297ad6e6a63a421962a9ca7f9532424b7dfd1df8d04d4b625a3417cd91899f85e8545a0d96cd84ea410674a843ee8616981dbee6808f513cb95faf4e1c7fe1aec64684d9b653c5c06ff80b40161498197dd7c940dd8b875ac8ab120af4017cfd18a52f3c5ec3caf8025834f005fa6f497a21418c0a00bd6c003ebaffd5c3699c957238888e658c18af00e8b66c0eeab8af601b50ca1cf4d050cbbd25ba312ecfbedf3dcc1d27e6269f5774f75c08dd5e0f3e2529b80482efa6d456874897dc488984c8a60ee79ccae32da6e53d7206de14856270df318a98ef721d0f0a557e5e27aae7082baa99ff6d7a3c19bbb30b3b9b8788456381c4d135f5177a4e07ab9c95603e46cb31ffe0dd972a9189d304313183820f9cd3df679ebaad09893a35e5ac609a4545f26b0534d51634f5e2183c9cc08ec83018013cee10e79a1a42affeeba5cfeafe063b0f6b63c441e7a30e3e23f14b6b1d0c18368040878b78e79bf80fc6e3ab202d7ae24b94d7761a6328cc3bf401da83e67970e7bbae38e35136955c0fee71b7f7c5518a41024ad9e2754eb85e2b9d9e8210b16a0205e80b62be19546dbf251c4dd4f9342da469b9cd0f40e8060da90761fa83647d450f7b907cddc8b07a03924303824e41ce9d9cedc4c7dc9a3b2c1a654b5f7741ff26b4c3a85b312b50522220785f3087f67be4c7853452ff78013bcfc38f2e00a3df54cf7297b73fd67a052d6c7fd5829c7b2835ae68873b8aba65617775616c76a18b8fd6b5c27e7614520c3cf16aab2c33e36c2f9518f5c5ea95410c97ce2e5c029867fd17ef9b2821140c94da029ef668293c6d7f80624e1137c6cfe7a18d6790586c4a0f0f84bee9e84ad83ec0a04c90971bd2a06d8da1c6fb7ce0f0b9c91e78893683b855a2d6d747126d46715149ade8a3873a210347949a2d339140513ad6f8c4e14cc240fdaed4ad2f3e807bdd1a2bf4d9ebab1259e421eda77b623739950b81b1b6a61ce1a70aa2ddcc92985f0d645b8344835ac1270e3fa9c0533256c147104f26b8a174ace18343998c030e5757cb4c10384ac70a3e719849048e92b1c27eefc325197205ae54b767d1f2930ca492b5aa8f1ee8841408b992b5567d4e0b9e0d927522086cf0b0fa622e12e86af6697670d676484244d334f6291bc94eac59bf17e14d06a1376765250a3d3650d5b4d50a363e63b8a464acf091439980014052770b566933bd0362ff1712154be9d809e55d2b40780ffa214378751a72c14a933793732e77649d406028fd598fc487103999002f82b3861f48bb3ccbc298c111bc984af58eb4a019332b4f58e5f2d27bdd2cd7ebb34f44869fbb0d5dfdb1e869382182c2174a6361c2dac13e9cf98539e95c09f9811ea6ab7c05d970a4aad3b67ed981e360d8ee1acd3fc4a91ea7216ef045cd54d44ddb3d3be67b599e26929caf515c722e4235356c5a7909b1b95ae582c4e577a097a23c1daa4724d49dc51b1478c28b0107347746503114c15d9da8aba9ee1bbb3f63d8eaa0f74681784d97f24825901f521920bbac472fe05862e6510269086ae1f22cc8f80cc3b03d10aa2189702d0830114b4aedbc07e4e4a4ecd4d83327b7f1968efce64487cd4bb2f1c30ad704425b2c24f834b36ff22ecd7bfddb3534eb4af316208730c3b99b82eb939a31575e79f8852386e2c37a826507968b96b399a022824d49b7bbf264ced5d0d3506425a00a29c73a834ddd1759a22a1f6652123e551e5d9bfe4729c785bf3370e8ef50d6a514a83934621641bf39ff40f0488a11fa52f8aa5bc1f7df252b75718d0379040d8451369759e10484f32ef01d2cd2268e329275ba229ebc68b8b6a86fdc7355f55d6c0dbc9cbebcdf1abf8df2c777967c4f27f4b35e1d6802f084579550d766efcb9c79339914203ae422fb9abf0eec953134a630e222089fd0050fd7d75dc9691f93da85fa197a4e67caae402d5ffcf43f5fcfd30f854f62dbdfc75daee071570540fc1e0e5dff223c83dbfcd87aebc21f43c699419df88db83f3e6025a07e0a8046bc60ef1ada1c24c9224e9f0699fc4ae879616c268ecec254738afed04bb28c11e1a165ac29ea266b606fe506d523183e993afbcfce3efbf13ec32a082785ea3c78034b58c5622c56247109356c21424856bfd5383e504eae68c515b9876834e45510b73ed7821524c6fa87c294a45de559387ccb002d15df35785bf36ed87c93e44d92c6d314586eae85498238e35ea0185878992bb9d740ec0dd56eb884aeac10ba071c368a9857df9c57d0c2bca56ebd11b0aab4308c7cc70fd48491a032ddb368d2664a58c5e84d817790eb24123c63ab90d45750ac1f84884c3405b12177f72fc98dfe3f36ee1d8299dfee6d2bec7d999b906b76a106c4a71a5eaa550aef0cf43b1128c9812e78b561401c8c817d5c8540197582a50a223196e09114dd102bcee4e1a103ed2c6dbbc756b67fece649e6c968a4d927a7d1a267546687725e92e757f26d3114759035842630d16f2fe980b9896dfcf3011cadd11f7fee471efef917b009c36cbbd7e885aceb6890fadd97bcfe3d430cbc505e1cb1631542b081c6b1fa05c8fb431909f40be1a2c44f53d673131f3111d13396d9d4f1253e8f416a1e13ac299902cb8119dffd4988442a1e9e1571bea8419d4f3c808764a090037182cb3fd8bfd073192b3087c467b21745226abd21b32985edf886d06c760517116370223bf50522a76c30489ac6a98cbf5325e12144c8edc92a6f3c1d1e1c489a5db4090bee64558ac14b2e6ee210b21cc46ed14843ac08163208c705a71a990a06d48bd9def9190167abf8b797593aab883a62a1e6bc94bfa4300d0ffcee9cdb5c5d3155cea8e982eaf65ba752fb4e86a01e93c0dfea38503dd1ca51105a0c210150950867129b1b42e24096c899ff11c9f97aa3412481591e6bd8cc07a42e03b27cec351cf821db957fa194b3281b14a2df445713bbc9c93540ceb50358073595e19ea0413e662015f6613ade3b3b474d6ea9206e330393de1cc675cd4fe2aa400982f08cd3e3380763e4bc5c734923d6db0627cf515d73b6d03f5417d87a9a7403b24986759ca6e6f13923b385f18020cf82f7160f7c69b43c57cd03980a7da65260f85233289dcdfd18e10454bf45af5594b8e697ee854f78f8f7d32e1d20b815173f6f391fb4c7773869a457e7fba159e98a654d88c55330eeec402ccd472a084bc119936d93005df63ca0380a8cb051f24925c003ed14d23c1799112565b560415be5ef61c3e49a438f114e2b2996327bd6a200ca516e20432b379b52011ae7f5660fa8c1bd6c59e085177c559475d79f0f2e8592fea32080512489905c132515245dd61fc312b946526d2ac0068f8a45a5dd312cfdf6710803c28e65d9bb9a0a65c115f217b0688dc77901ff9a64c665c51dc4d584eb25f8b04bdb47f515fb57ef36310dba6a9440b0fb2f7e8ba2463ec598e2250dcaed7050bbbd9dde5cc9b1158cf23fd7fd142bbd832c006952e299caacb88b60b8e780096a4f47863099ae599f65bcb66f510eee997475b35efa3b942d7656ea24acafa09bb14e6e57afd1c567e83209ec5681977d057cb66150b6189db423ec544177c45ad291d2dd9180f496752a2ecd9af9740692d49a236e46341d934a59c5a85ae662f60178a1899887b3bf055f7f42260199deb59061d95a3d74156d17e95f3cf1f8a4c0374316ac9372d4d48f2c1a34986c18cd56e79a827741ee036217068e9f433ec84e8aed5822011dbd9bc82f2a9e24586f356b6b10a41b8255da76becad2e840418c4fb3630d9df6cb06ee3a00a98b7abad3d7c96a23730804211158b9bd339baa6df0f73eda7f0a25e14b039866b7b2889c0471019b91fae8e63fe4e2b7aee8fb8aff151f4d60c0d87f56be4907a85caa5253a3b0fcb91afc33157f83c9b045de5fa5a81243651e4f3a4b2cccbd6b82f13ba5531a1d181529bb275a1edf3a73da6117bfe8cdd889a295f7cb4917d8278352c300522cdf3f45088bd4b12687d97a713af9c54d4510d881964c6ce1150c3f01078e36176fea7100121a60640fbc48f124e1c529b417b21c3bbdaeabc6fa93b64984559d6e1602b309ce9e0d04bf09230fc2c1dfe34306448de5eec551493506fa17f838a44a11493962d7d714a63053cb7e5e0f778182471d9b8682da19a15404c12c7a7342dc278ee93e42633367f89e47c6bc6a63cc538feb816974a73011381a34169dff8ff8127013d14df9eef5e308c13795c41dd69bb5db1fdbbebf3a718314734dae47edd1d3f9537eec3800ce5413522c186ff3585021cff7c739d4f1db6ca0d6b0338c7ce47a89a0c67f4fa4aba53968d292f32f6756de3e716397e739363591323673187236dc485ee2ff7a67fcb7e153bcf65a693b339c388413ab7a0c54d175896f2fb9688a078c80ece242c0959d51e17b95916b3c6bbea22acd93acaf45038c10eca1ed6119565d4ef945fd8b76f7dbcd0b07436713155ee801dd5db277a3f6a6704a83d5cd41dc38d81ff2f2f49cfcd1862482c6b79d302a3d25aa8b8913cee00ed45f3bfe6acb9260049d371883b2dc952aa062fe9710532756a92d701a75f2eeebc9a9d36920c3e90c1c00a58862db66c9db6dae4d8632bfdd1d53d0cc3780ddf580fb443b89934b1bd362d8d94b968f8fa020d80b626008bf8f385c61cdd9f3a2192829d9c63efbe7f3c8fb3f55244ad24279f127b820a634b7f99ab509a06bf7831320a12c08602286bf6ec8341d7eddd511ce50a1c29758bdab7582a53a1ca5b223130fde8ea9b3bc2950a041ac7e3ab4505e46cea94de7d434111af8ea3222f622e18be07533d84e6ece259eb2ca8f66a2409de6ffd3ba2c5bba6b56e388fba5163fc3b1dd555534a1a87ebc3813dc3a6dac3731b778b8410178e1ffd75a874dfbb376ad8e7fc9088a0ad2f0180f09e23f61aa95057f9dc4dce6a2f74657b0801195933f294aa24544b9e70dc51110bfd953019db0df2dd00d83550e6e8b4d424909fa5ed13636665c97091a8fa08272903ebff4c8f971c9eb2de823bd1e879500974c5c9a1d090f1980a65fee4f2cbc9473fa020b2d355a05764ec368bc5fb41b176d20302881b71cc3dcafa8289ef041e3b8b7a0d1154ee51fa235c7f169fc6b1ab80e40ed1d05fab583caed408342378980e810125d3418e0355b73680dc1d5f91414f47c4443e013018e357f71f1d4ba25ca896511da2bdd32a000d53b6d20217294411aa322dc2f9585601428233203cdfe1ee40d2feec9268d02c4d7ff9dfec292419274a3c2121f4b913dfd18e12aa64890e3fa4bd9f9b239299c23607e1ea31da2e47d0a4a8bc8b2ce8267951fa76d9a3f8fffd4f4a16d9ccacdd4aad3b46b041d602972ff09cee172fac98e567554f86ed4835ce9b036d06bf638176cb07077eb887cdf4dd5189801063c44ccc143a49e3a426f0b51508e65e382464e2129401ef55bbb1d3c48763b50503e74e1e4762449563c60817ce6a8554883967976a9f308091a83ab09454d526a3ca8c61eab26717cef22ea2c48a5c9c7103833ba78e4971c1eb6768d15202b31fc228ff1e8766f21a82f4eee170d39e4745ff5440793bdcb43a9df37d8cf6ae5ae550df51acc34aebeb07868015eacbc05857464f98c010c61dc0817faa2bae6e5d9618f9326a709ea1e884f34966b7cf41b04644308c52defa22722011e0c40f0f16fb42ef9d567bfaabf47bcb9cc1f6e442317179e482550fa7fcbfe6ddb28650f2ac9295a4602b63e3a4218c0503774bec210dd85b2489660b20413dc62d7ec5c6cc5a32a2013ac415c30a93a340bafcdd4469c7659ea82a9f95fc8f125d690da3923526570051dd1014f3730d2ca51c12c4c3adfeb6a2ba3c95373fc11a4aeb94832821d8c92bc7acadbe273dbad0cf7cb1af1df784aebafa854781c5a0882463d66634efdc1e8c74a04d1b0179797f14d8fb82cd256b52bc48a0f8b8b9ccdc668bf11b838c6a43cfa0ffed764557365da9d63e3a72c1ae4a6eb99bd3a2d5d7558165efbd76777ccdd185884410f9bec87b5891211a01500cf8a23c50ae48c6176cb007f2f63721d322031007aa81440a8a22c7275b5cf96747839aa6ef1ae5c1b71dc28262a06c9ddc6c1a28ca2fd074653367a1110fc33bbc3d42e1ae9bbab0fc8a2b5448b4e4ad66e67f9d75ade1118ba38480a80a30142962eafd41861da0a3509125cde73f14fb7e38a99966a380d33e497b01dc4a67a0cf141ebe5c642f877cf61f39b6772adae29e3965b1842a3d80e8b95a88f967a93d03fc27ea3cbffc7a1057f1f3cdc6b77248829b72d2a6261011a1ffcdea21812f1f71c25406bed569cdafddd05973b95483106dc6a329f0b7f0d2e09b943623468de20cac921a3d6f7e5af30395ccb2b09f09b980b2a7b7b4b3ede59a1fdd1b1ca19ddb324657a5208bca2597272c5c5e6498323ee8350b744ccf015a4763f7c4a87d5e07185112bb5b5ea84a59793591390f11f50b5c9130e3fcdfff100b1e250ed1a59243dcdc601e9fea408e16abd5942f666e2ae0ffe02ce974c88c95509f56501c32ed1aba3ca2e1807f0c4a83ac02f6aec05fe200863d908680f304936b514ad603a168c71ae62232607b6ca7be0f96d27d8d0c9dfad03f2c7a454a37264656e8f800326077132e0f4c7d134fcf70342478bc54dc15679f92b31890475fd567948aca6907606564b65f84bc10d13a51a28cf2111663f0e555ecb7bd18ea1057bdb16ce16a543578358131c8cbb4e6d210e34c57846fd95cd40aac5c9a0b6697f309cabdd9e263469e11f49f835b6ec082ad83ebcedabf982824e4a2a4a3354ed9ba4373cb2ef3821c8ec5b31da3007e613d716617a9dd1b643d4403c6f323913af77a5a5f591df001ce28e45a963e46aea3b2080a4bb63e84cc7ad58a5825809e9b598dbf40ce9badbb33af70409ba71eca9e529092c271c76b466ce8787c6c1d818f72c6081060776eea7a5d2b8626a84f2838e63b6021532fa61f26c24e3a7f2506b24c1a1614e3d71ad6828b836712761b3776e6579c177b38b6c6489911c6a79e5666ee1e42043ac8acd81c6d92c0bc5bc81a062e867745e61e3860297b466c7252dc800e02380b8eb9e0d07dacaf94b81270a30e20f760608dc4992942e74002517ae2ed4d885b2b31f6df3080b1391879cbd0f2908c8fbac145b32205491c4fe8f10e99b3d587a09f0ee9c3a198b405c045e20630d3869416455641af8846adc12ea01a52ba78c0de496be2a7c99c2dc80deb883a9527984dc0fcc842407cd4af2698fe6659af3b6e74e182e5c8d5bddb588fcece50e74aba6bffad6c79267982a27d0396a72a18a79d1bcf30ae57188050c037d28bb59171cf746b2b1def60f06a7f4851c419da74531d7304b4d5fa4315a8c27b5c650e7f2dba4b1512b3b2b8d96d18c98b262365dc93e7cea350c68a1e9f5fb49d506b0c84da18010ab00832aba2c8ab970d7031211ebfa9a55f9cf71dd6f4ad879d16abd36d62daca22e2f641de3afc5e8932a9b73ad95cae4e14752c96687988bd457f58d973997e4a0ae81718e7d85f16ba564815eb718ccd92df920b5516e8811a21e97e5d393f29b2ef624ef9edd72ecaf8f04912b7a9c4abf22c3313a56e914cd3378594dd9fd80fb9073bb84debbbf8636be0c1a978ad15d4f1711d670de58f992090922ace8b3be76b98b0e1f6f5abd5c238ff40b21bbecb5419bbc509940059cf3c60088ea5648f03277e9487040adde816ea820974eb1157394275095547d1a2a0a8067e31c8e0695a6e385b8e89d08b7bca87b3a8647ae55175c97bc94a46a5638fb556b163615b0070a43962e9c3518a39ad1943fa2433bca82bcaa75281d4a5f3ee49c825f0a6ba80f983f4aa307ee437fd932a4fe2f03c1c39840fb410dcea18dede9bc464e1e21a32c4c05350fe1539c4500cd78fc28a95137494a1fa20007c19c6c477a6d2e23d02321c75f8d657e05f52cfa98c1580993e85135b994514a39737344ccae832c6d6244cf899ab3fd21f880925406c12b30f79d6cc004057f860e1e716bc91e2769676dfe6163158cc41bd2f2a451fc3b621d8c91775cf9f797010ffbed944854935318722b3a88388b5feb076246a23db88654df6f5037751dbe0ea37240fe0844e8fae71f41d3fdd85fac443a9e3df85c6911e7ff481e516761c3cd8e06761671b80595ccab0ea0193a92e3bd566c07c08f4d98df679e104cc896ed23b2c1ae8d154d36de655f4989c726dae1c7eb0f8a6edab8b92749c55ed1ecec453f7f803f68638b3d00fd8185e4ab918d5170e0032517c8936c57e1b85b8c43c571670fa2eb444863119aefc514e04f3cb3fe345155722dc1c5258674dbb2a547289c937de98286c023834c4ef239a3686426661929a5c1c2b3d4f0586ae5e6d0ec8343e5ec09020752c6d679d4ca9f149150c6b865b318e52865feb4321d0c04147376a7d722dec5a856dc5af0fdb98009052913a7f4ea746c20f49b13c8e450a4d0bc746f09c92f0d8a81fd735e38b8f52b485ac5688f01206637efac68a291c16bb01994a28262af568600abf774a5b7fb5d3ee20ff0232c0821d80001e2f3854cb9b92a1a08aaa542379115b2c2aa9c70de02250d4a2114bdb33bfe7c452594171e6616f4c52a84b3e4d31f304301f6e92b67f4a0aede6efa267081b3e28ca5387c9fae414447aa266258aac051316c98d2c06a6b421881cfec8997adf5901d77449facb4399c1da016f0e571039d64aa8412ae526d7477f53e3404160e4f3572236c69250a49f4c6ccf52ca31c25063b9837d4496a1a60b3067928d2487aa5f2831fb1421b97602f6c3a19dabe0815e04d6ca4c2c64c79bd4ddfc4c2e6ade6a32364061bd3af37ccf88bce03b66862cff5d92e72f7f324e77ed738b6f571be4baaef4bc73f3ee305d0049a8ac3ec112da89c57377e35ed088c78c7aa1c476aecffaacb9fe3714793dfec73d5d2f0c158c0fc3252d7949e1bbb72fffc0307b10783fcc64d19fb4f5a33232fce052a90ee78495cad7a3c451a4791ccf4d30774a5ee39ca352d328cbca89c96474cf4f114cd20801445a14e2801f3ca8b00ffcecc333419267dbd77fa95dc34f2ead3a7161e856be0efd0065407b4c8b470d2e3366f2d5478136a66570b33d5150068a0afdca77f757606981b78ed02cdd9aa7a324e0044c537f426d9325cfdf17fe0da183d67a98db2487b91d963f9289249d6871169147769ee8f7166b052771bedb716d2aabcd119a539b517756f568457e9fc141781f4b5d9feca9e7fe4da6832bf2bc67b1814e01352407a5e953f5f515273eac0d35cf1945556ca874ca212a40996ce80c70f8ff15dd6668a6cbf2feeb2aaaa8d1f64f300cb42082829a431b79ac09e5e94117d8a9173bd1dd045e66ca66b8bf55a0b11695f71f410a91708213924fc663570e56d4052f0cf6ba75cccbb801118f3b0c4437ec48530666ff3664bdb40c80adc190b8b8a42f3d3c0f9bd411735313700275910fdb86a6deb1e6a2428e12d91f7129d9d8d4644456f47d5443c997b862d2081cfd816b9251a4183e0e672ef7930fbb4a51e02fc2a425c332e273b1546a2f45a2fcc55cd7c3256ff48312b8811a973e2064465237f8b7276ee46bf8808439fa0912210e2198cccb9beea0a46be12d3f1fc4f4ddc70bb6c800a9985094540dda2593f33070b48fa2090080ca42568477c04c846e77ab9e534fbe6a802fc13040b8cfd58a35d2216ec5f211354f743f36a85e072a17aef6e2792b10e01971e936b4d57c091e82f4872f59309f69185b931a620fdcc97a50dd60820ba29dbedb1dffcbfa53e26081b029a18a31ff9d0d1266748563560374cd8baf4f8cc621f17dc90cd46bdcfc50729063466d2b3405392e077a623a4beec8e4cbf5184f50b0f8d91b59e117680ea1556017f279dd687523d15644e1a1cfef8ea91c95b6565009bdd96ad0894c95f93c6f880dfd1e3e579d1dfea03b28e0a29c974a22006e670621274d596cea18d487da267c3fbcb7c4eca3fbec8ffc1a368868bb0f0df5e06d4392059110518bf6b01445276fcfb2c05fbf1510cafaedba0c568c0602f621fd694c28a8cae41fe26d699e8bdf8b9075cfa60c46ad3c48f2951abcf1fabd8235bf247de27e9e1a4530fb06bdc60f773217b6e0cf486903823edc95bb79ffbd7e4f456bc2d8ba9925a8cacfcc5533d1eea8fcdf0ccce34713819013b107fd34d05fe8d00c72edf570d00395d14906fca1c8aae062e08e735e4898dee946f9c2f7d610eb71034fe609a9f8c021ff790e5de95d8f3ae4c203c2eb38ca05ed12737ee55a4cac9198a89e992655a3d72c8f63d11789f36dfb1ddbfd71d1750ff85930bfc312881b131d26dfa04d81d035ce4e26c7acb41f0a83907e9c12b4a8c80a162ea62866fe89455212a4128300c708bde5613954a7501b47e0e4b600fa5f0475139bc40a70646ddc5fb4ad0acc89fe190becdc0d21330acc81cc2c08ee10e33af0027b3bc0fbe93c581132038f8c13cab146144ca0b13365d0dbfec7ce1fcf26e97c525d148737bdbf1e6f083bf61bab582fb90f57de3e7bcb6878abe353b912fa7179a40fc555c8616c8d352d3b9c481aa890f418dc0fe4db673316b8ba942d56be9325a4961299fb5cb5d140ead98db2cb12bbb5ed3dd5c47d28385e2f023bdce1a94e8024e0a443fb7ae2624a4305452f8e95943a377716debd9f81609a965e5852d9970ff971809ef4a38245c9bbae0d9316bfe682b81a8bb79b6eee4907319ec259f21e011b54da98803d4b929b2f90db4e7609108d9e8fc721859de7fd839e67199ace80513ed759343e82f8230ebce8ce8e961a0f65332fb498cc4aa4919d3c2f5059306193a400600aad83b807be09f39c94134b540224dfb0e23f413c1d666e876e3115ea04e927e7eab07c338fa5d1540d6d6abc1a98d71b4db4d4e5e00cca45ca8ee2c64692046559bbcbbf6a97f9cae89a98391ffd7384a0143e16d135cff09e408cd4f61cff1ee2cd3fcef5bfc6566634efff9d8521492d140c88c8a2d32992e64e0b6bef7cae78991fc1236b8f78f31bbe4678d6b795436d59026da102f23ec71adc22d5fae81aa0df3cee0d0735cd106191d2e5640b2b82aee62d40b6ebe344e381c7a07143c555ad06621aec0dc16a125f63dbae186a161a00c7d59aa8a8ce22703e8246b81f6ad1dbc9d881dd11b46a4766c39a828a92ca3b17abb3e151917fabf73ae86fdc8a97da59b98ddd6d03bd524acb24f1143e74fedc1086681b0aa93ddea2be305a19e33590d9d827ec3e6c16cf1ce99b69cb3e5271a26f5f030c9ab7d24e2a1c949525be78a17f5ac68abada33dbe64cbbb68b305ef02a3e435f1d49d0cc5f2860d5d3351b65f6d47bc2d1670fa6a232c4b68cc8f8ad5bad9d398c0dd04d959789ba9fb768c2d7c072ccb35d107403323f0771a5b9870fb4cd0834f8fbf380b11da9f0b9a08a18166ba9e1de8c5cebc54ef01846e7005dc0bf5bc4e8c91b131b29b7a38a31afa75cb28e3639c65fb00c5fb6b1dc19caa09363e3e7c9322c8180f2f7e8359fc12960ba4364b569672d0e49455025d065c9f0e71d0de30a50786b13a1d34163cc192d26213e42db76ba9d48e021990939b6cd4dd61efb17eb6c4411c0a6535a0faac38fef81644313767d37f4e3069ebbc09e6c1dee98410f74f18ee0a1e54d88adbae632086be404fb365ffe1e0b4e847424584f1a8c8e302306b725480ef8da993aa71d6698f4d90c69b595863c9143a309ff3ade2d96dbbc85c7d5764a24becb0fde5b40cccbb3b29d29848a1c0e782ea511433bec19f001ee75cc7faf2edd571fa1ab1016a98df0420dd115ad487af89f784428b65f083fc4c15d9183ec660fa50a0ea5860e49ae0d275999496e58dd62922ff7dc2f609d6c2e735fe4d5159f6e395568f577e3d7db0c5c445f8d1638e66b80b2865652639e293b10eeb27483daa2374d075eb05ca8bb45a262f7bb12e2339bf4034dd4e6717dcb51275512c50cbfca681af099022a17de03d6d8d49a8121116d9367ee6a5e07fc627249e24f27836fb5463c51fc0eb55c8c90f5b906feede6ff7287cdd2ffaaef686c6df3b711407003a62ecdff56196eca2ba02539146ef01d8ec9fd881cb9390dad718d4de2eb8d46bfed5df51205bb783fca96eb71c4529fc911bcd720a7e3c003f20b9b0803d5ce35a74a46edf066c468dd72c9acc9171f27510b848341aac5fe1b178c55ea4fef3a10ceb43b452f58184271236e470df71d0b061c45b7ad52d66473eb0aaa8282a43051a368f56ebe20fccc2abdbd2c376ec3a3259cde9e5a9393a659ea08ed23d271520c329c857d4dc1eccabe80866c4370aac87283d27c0004d0cdcef4c7576dab92dc5bc70afafb9a884bb456226d7cb49c6044a0aa0753c31c332d4134eae6481a54951f1ee2668c4d554e95148e660a959c39268e2267c5fa07a975c289e68974d3ad2d4ab349b2a011afa69266db2d766f84c916bb4c359b3171c65827587a9b4b7012eff88f0e762e74c6d092a3d72a35b9b43dacf97e37df00f4d26295bfc985c2ffbbe5394b8eafbdf29c9642e4432e23369949a5dd13db601c2beaf0d1451677359944c2ad6c9b55fa2b9589764b7e675131c038b64984c9f4ec921f7cf05112112567d106f6af23dc690f155085bab354f006e95fe81aa1cc812fa231336cacce8fa27a06a7bbecbf988bf88e4165a509cff0578eafedd07f67ac5aa2920eb5c46d5261f14a6fe03649e39dc8bc98f8a1d0286475d3cb0bb747b7681b5c4655279a549f291d12e746fd0bec9e6068d39576948923ffffbf7d87477b07ccd6568e1c151553871d0c9bd2c6e7eefc7bf53e3032327fecd10eaaf8b13243a3c14f779c92528bbc01920336200ec786ce1d1e8845d79348e58e84aac8756ccab61c32c4a8b6d4ef6c5c38a413e2cefc30b8fca58eba2a39313e03b4ac5fdcfb08141682eed69a9664c25fe1df5270a74b95ae9b9d819fc62d89ee32815837d4370b2a5fdf26f92f70360fa0eae1b61d6fc82c36ad249083ee6726e178737e851f244a381335d972324d8ee926ca242e0531399062d9dcc318f94265e8e0b77c55421995afddeb129e4a3969326acec2b4efde77a47de833cfecdbb5ace4429ebc1e0f54a89b677ef78efba1d0ffd168c18923681bda005c6e8bbd1c204f44bf3e182f672861fab055e54d2fc1cf7ae03403518630502e4e54b4f5efdba1208a0a2896f8ab0d70b6f819c2da62b564fbd61b69b76498fb46489468f6ecfbb8b8598d906220dc87cab0ed5b7a9929c4ffa0d622e999dc97dac258f5f8da8e3ff90669a3baae32a08fc9fb97cdf06c0aff9a40d155c6bf7d132003ddc27cb00541ced8306cb0048f0ede72332e177f7b5a66706483368288a8a244891d0c1d133b1c040424938b44c45668d788ede60545abd5d9787f807ac11dab613284eef1d1864401608c1d12b967b96acc6ab9e4c140358d70628bbee9cb4cd1ba832f553f8922be02b51059d6f2ae504b36730c900e900b730199e60721dc68343a43ee16ea7875e6d3c5167f97eef52cfe3a4ae6a439b2ae2cce3f8a5d84bf10481f12b7575874e89c6eb2336e98e6f31890f25acc61145d3c6892104e55ad0dfff3a85f2c4e423125a7b7a8ecebf2f2f62e5442f6ab651fa7b95cb5524257166f921ad96376537c27cc9836c888c8e3094894be7968c9a3a62981b0e73b49c48f4c781014b3184443708b4a538f470d1ee08647b2df3cff4949bdcca67b328f35f6613588af39d3ebc65984fbfd42b66053eacc6292d5c9089cfebd8353ba5769f2656aaaa67643ee6253fbf10fa51d1aa5b3d5d42e53ecfb828002e817784b77a9a26aa637320132cfc1f65d29133077abfd1ffd2cbcfea193a64a48bcb88d4dbe0be5eb179dc55f86c0580478046670b2a43e86c600cec9d375b5d44281e6ecc28b90177cae8d72c500b2b9abdb976aadfdd17fa272683f01f73d85eef90317a19bd5e9745db7f01809fd6a9124bfa6844e6794ca151f30708753f04fe6695e9d9d55bdd24bc23059e5f04860d58305c19251d4d48f8f53e5daf56cbfdea044b95f072bdbc2c4d239fcaf5f278ae5f3b83a11276e02c46281c120e0c966d30e996cb39dd155ed2e2a0d6783b888f58afb6bc770a101dab0df6b7b649238410b209d97bcbbd03870d840d140d9d218611de393333e373096168825f393c7758a34d2e47cd3330a667072cf7151302ecb90f61cf61249cf8209d3b1250a62c1e82fb0a4682842ba6e98c07f67e3379bb36ea44339562a30e136104c09aed5e7b9c10f0d9b5b8c9742589c51919b11773961d723960b80b656a46aeba193973e5c80e9fcdf0f83408af4cabb2f7975d439267e0d603857662508e3a39fee498134f23b7ed08bc465c79c35f0490e4ed70c84cce3c991a85d53c0d0bd9be6d874db86f7d8fbb373ad511eb804295383560e34bedc5edbd6da54ddbb499ad94374dbbef2ebd5c831984f1126ad5571abaced02a1a33f16229b51735cb5226596a529ac82193d2842bc50c34ea6c8f3af2ba2293f676a212180a79b148ab7091f6e489749e8f767e461fec9c44e6bba95d9b93d3346e6a1c7763e6a616757c00559e0ed093526a5847c7d2a4868958a71792d735ee3a87a34e8fba5309a212ede1a81b119f1bed346b98c5b6277fdd264abe6c82684f6a9de85fd775bf6c98882e45e798b4a71395b8384d8483c333568b79caa8f3519da804d591a73a49e4245a15a30e142f5c97a6ddce49d29e507c7237da4cb427a30e24225736302525f499f7bc03c4158675884e441f404f3e07cb0742c1b22bf2078528864213c75247ca24431d90d423dd7485143488fa6650a68fb50a2178e9ab0627f816520cf69589267d60278c4c7b54ca21d70f0cf576e8dc69cfa33066d8991e66eeb40ad2c874e2cdfa945178fe2693d92353f4743b842aeef3993dd6a78fe85484a70f9ef4d3a755301fd51efde684fdbc4c6fb46a9e9ee6071b580366fa194faeae63a7d664d22aedf41ff78efbe85dc6bde32ea4bb769a1e75a3aeeb3afc8d9e5d1b651a9769232d668d9b2e80297a783899c0188afd9a3a3636c723fb67bd3be41e3317adee9a488779a5db2a156bbdc35e7bd647320a10d0b8912e0edb1efdca65c1819d4c9668954907cddc69e6f04b7bf425292ccc3473b7268592a94565ac8f4eaddb7fa391f5d13f8f877521233bb2a7a3d188bebb66af4c7bf4ddf5daa3e72e4c7bd45275e74e2f633b3c63b96b967584978b56810b00a853490e98a4810e595b2109266bebb8679c0dcc169e3eedd1471258af55301328d3d3093445ab2214619f22cca012f101fb9dcbd1d906c6d0cf1258af7feecde198b794e8b8242ab931e7c62437e2c8c8143d76618639ab354ec82fd87f5ea6de6442eff1644abd4c674fb402959326b7ce108a2b6c207f33c3af661918e8d85564e19e4119ea80246bca420df410652dd19e8c44b4278964686fe6a583792bfb2157199e917155923793664606b69b64efec377a951d12d1a91b3fda9339b0f3168e4ce24eaba665793b7187495c8249335922ee4409cf4464c24464c20413ad8a10b664e853842f542bd823e28f05c0d50cc402f482b504fb4120227a35235b753d431f2ada5282ad92e5170053f258c8920c59cec815ace9f1c9f0e7c712b66f61f95b9675eb5fc9faf52c2c7f58bf2fedc952e9a555f0f2af168487509622935264c2a455513ec1b2c8d0270a2de46f8606f9f3f2854d1002e5207235f343ae3ca10c71cf78fd6d3be0e393ab4541610843c56206b66d968e708423fca0f4f3f343839844abe8617e8130e65f7422c3c813e35f6c02c6bff88409545c2275ef5f5422c3479d5601e05087c34725adc2adba878f495af5c3d3e18db42a87c31769150e87bf69d5cbe189b4ca74f821ad6a71f820ad6271f8225a553a3c9056ad1c9e8856910effc347abbac3f76895e8f041b48a3bbc4dabb6c3ffd02aedd9e16fccd090699535e32e2d87332e0aa65e5cc67d81a9178fb925e8bd38cc6581de8bc7b8167a2f0ee36ed07b7117b742efc5517742efc50b22f244a15028140a85f26ecca91ba1e7e22fee472b90512ebc0bf38bfbc5ece2f37e4832ea90c3813a006efc00f4e24530863c51570263e25ddc2f7e20c7a3ee77c40c795e871b73a0178f6f4c02bdf87b230ef4e27f8d402ffe748b402f3e877b03bd781c2e11e8c5bfdc21d08b37dd20d08b6f718b805e3c8b0b047af1a54b04f4e25d6e102ba6b80153f12c10ca0cf4e2499706f4e2471706a6e2edf5a017df5d14f4e245f7f00596a017af5d16e8c567d7c20d42e8c5a824cf9c2411a7cad01984a8a03225084ac914c90f79ced0c8f4d0479e1eea2f2516bb654a4fb11146f2dcda4ba255bde2c8145999131a2c80bd0e7fd8a4d68a697a6c5a2525a491c74d2aa703fe8242e08c33de82545e87ab7acad22948f303858732346085b555168516b4a0652b9c7546e646bd71e3c6ad25040da2a2f6f2d20c8d2cbd991b345af595604a2fbd82352d6585b303720a7b6a611bb33cbc11b1da565d9af63c1878eb74c25bd6af67b56555989a724a2aa794321e8d1f6668d0e89a837e6c2f66cd073bd35ea4692f7e06060d0152c4cc0d4ec7957db417af1eed45681344ab62ec48e1bc3ddaa338564a6309a6e2a56cd987b0d2d4206804282528d484060b60ede3bbffd01e649181c58e9bd0d8b427718f9f56353c668f6119062c760c3791163bc5287c3d76e92ba5cfb06b4fafb516fbe8957c5ff66815e4326cdb6b9af66cbe5a6b66d3aa9ad56ab3dbd0fcd043f3830d861dfe442843b1c723b974608f9db1ce7ef4cc626bd20e6f8925475c62694f3691a747623f5b6f6596a1f1a35523fcc5dbb7b5b7b7c77eb4ca76add6662b53ddb36bddfdd15e3fbb3d7cb4d73d7cfce8306ca6bd2681fde04f8f56c1283e1a46992d82291b5932f4290214ba6061861c965cb0f034bdf580a9becc272353dbb35124d2d17cb087909b3ddaf3d19efc4c81fdd19e7c8fcb041d35a4551ffc01d2aaaf16d12ac8842cdfc307f66779df3641c8dbba41a10c75b0421826872079b06f5bb69de3ee11cc0b546a9cd06ff78845852530a9d9aec929749793e5145b2b8e0c05f4d7331d4d344522ad659e8860099136a150bf65b7a4638519ceeb275e9d5da2449e77664c010a30438f56113102a5e04467a8e608a7049d9aed5300651f60edd9302e8159266bb53696dc00d1109724e109350359eb252eb770c53dbec255cb57d46b8b24805e5c7211215f3d34768461df8dc49d1c1a2ca9395282f253e324c6ebbb7c6094f81be5c882d37cb023ed349d89602e6d810a30e8d418395232434fcda580134b7dab0a3d2314b4203494841fd1d055579cfb8c2b70ecb17e556ce10b7fd713b22c451af1576f6f8ad8881c9da390cfbe6af1e680995ef70382fb86e62a799a5e570f8c917f02a6e4a54025cf25050b8b91e88384299ed41839d24285508d13cd0347b2274b6a5aaeddc0da404a7c61daf54a02b41794ab089711ae28608c7cf5c9f2314ade6eacc14c1b362213a330c504546a8c1c613182a09a99ee41dec8914d8a27352d3fa202aad98ea44673d2fd93110d5db256ab26e17a02bca87c171592a7074c63c272b77e81dc1c8f950cc39223a78374d38e4e887d77989b07e975ae78779bb4e09cd7acc82db3a7cb956e37cbb547e6ebc29fdc35d88d35a27b45c92e9aa3630de6336231394ba461da2fd9d39e361fb1f469cfe542985af1965b61ea3a77ed0dbddf0d95513821ae472ca7684fbbd267e5728a568db45114fb4f46b11f9da6451ccb3beeca29582e7da44f7bb2a45d135de9237b4832ae9ca659aeeed7e82c37e6d1bc7643b3e82b37e6773ad0baad6fb664069103c27abc8cd2aa0e4f9181aea00b4a7bda45d6da526984af2850347cf9d4c07e7149ecb15b5f2cc76cf6c49e9e1eabb670db8d35da861af2c04e8d912399187eae7333c618e3ad3976c70873bc7c3ade0b4aa7e2d53364cb90ebbdb291b6000fdee05363e448490b42354eb21b39621161a866fb9101f4d438b9601172aa92921b2c1ab2ac5718b2dc42b64f28558106a22aaad59ac205e5f2216113e9347f34779751f2d533e1a84a190cb52745553a1c69810ec7640f73776badca347acca4bb8d6ead966511e127c6a004ab5ecf4032196cb46e688e59261acab014b27a647d7cc77a9b709cd52ae984a5a40d592341917b72c0fa607b46e6a221d110ecc93ed8b86596c8064587501483481be484c8ae15d1fdd1664bfc712900f4686ca669958e024055942c0f699abb261fdbb973d88891155968c2a4c6c811aa84a09aed475c786a9cc423a9d1e2b6e95c3da4ab08704544a6e42f2a2a3904e809491e2f649904a1275421cbd410a0ea8ac2fa15c575f5441c64f9a8736bbe356bd6edd8735d978ef4913c31c6b8139f2020d6c4254c903c3d974e7bd80bec77f55c3db0c6137055a5b04cc8971488c895a8566b852e9f9ea18cdd951044c95588ecb1a73d7941b97c2c70f9c0bea1b9c986735e836153c457cf05a5535234942357d7139892ab8b094cc93f110d5d4f2e2659be47cdf0ea9959d5342dfbd5734111baaaf46ac61208450896489e4bcae573054936f4207f1795212ce4ef3ac3952df944437968662aa1e4154388229340d4867ca944439715b91d574f9657cf7c4f0b20d24f8682c9f1135a4219ea704422b98eb4653960061a447d5bb46912d0291f447b7292c0b348906566023bfa6a3e9b378913ccd6c9fd43d5c04eb4cf6b9a4d254196a2ed439d091c77618d9453b0b256ebadac605a7337d6449ec89361557475d751e4b02a7289e14db15fe481432fc81f04c2b042d133ae070608d051cb326d24aad89c232d8e32ac8aba6dab4708e558451d2d4a1199b092e151b7b292755dd705b198b5d6aedc2fe66cd5d68dab64a8423a5548a70ae954211823ef799e376a9148241abdd66ed4fd2ba1c062531fd6d433744aeac89982abd047af43d647ca4ec7d68f9eeb8845b46235cb1289021f59faeff48db40c455986c7816636262976d046add1c6166dd838a3461b2511ac91c3166dbcd0affe36da08c2126d0c29451b445ea28d1b114ba65d32c248ee0789368ad421d186910b7f4d4f24da883871c675136dc4241a8031f4d619327d11daf44678a09169954c1f7162647a1a93e92f0f408f7ebb2fa0477bc8f4187dd440926803156778e046ccc19f0f999efe4484d329072872c821531883030e2fb0e7e5c5440093a9c5005ab4602100162c4a374a25171b2e2e2b6aac58d1e2434b0bcb0c0bcbca6a6585a42291463d8c469686b55d00ba4ec48348c4edc0719bccb66933342d939165580c8655985aaf18d765c1b02c9aca94663a5fc01a520200d6e876016b4414ac01ab65aa1888cef557a6ef4144af444be86174327dc204f6b88049a69a508f0b74903f38854ca637327dbdac86dc57a4e67e5ca2b5a88a0651184a0a30550fe514460d86d1dc5c2469d574a1c472a123515a97c1a2a4f48a8453534938595e12507bab294841adda5edf42f46fdbb6f39017b23d5bfdb4b7bdd6ba955040f82301b54acbeaccb46c45021a0a6a1549ca6a28d757d2d0ea0c676895e81af44250ae2b2a6b208d641aece8a4262b59ad32553fba9a126c8651411845220db56a7b3d49a6ea6b95f8833d1c10dbb3ac0969f523577035a557364b7cc496bf15935cffd99cf6eabf97d1697a8523572b72c5f296ea52fac6e9b0b8ab2532555fbaab1c99aa77b92b1c99aa5f715b2e8b97e56a47ae484ce413b96279fd8a47ae565ee56ab52353b5cad5ea894c552b532b1e99aadfbe72574ce42ad6d4afea573a5fe5b40a47ae5054f4ca89ae5f35d12b267a457ac5ab9dd106511585855c515ec81545865c516bc8d5454eae2e96e4fab9d0c9d505935c2de9f5a820b91abd5ebb242052507b92cb51b3866707ecca5b1effa1804c08187de5438cbe72d291307df421486fc148b06093869bb4dcd2bd4cd5af5cd235695f39ac195d93864d08b82eeb2b1889d1add1ad2341fa7558a329c1624e06560524eb55b55aab02caf5a32b2353f5a49bf1c0c67a8d72384c08b83eba8feb230c65ca877529f17763e58c849361fe2050ae27917096b0f24072d535a28b12d035282099aae796b0229414604cb59ab015250525a553f528201853cfc5c0d2cf731225a53d1c47ecc82ef1a7e33c66b2fc76a95d54d04501b5a76121f23ba8900c9b74cccb4b6ca2b20cb69fdd1fe4a5e9a150b6f9934114e61305caa6c240864039bbe8666faec33bb467588886e345f6dab457dfdd20daab97546026c29bc65d9294f6ea4940ed553690807295f84351c9358b5c0e79538feca3bd5a8fa22257242014905cad7e60aabe1eca0f25946b8602ca950494ebea27d76b3166590651151b01240b99c1c9f5d8ad18ea70044382350e4070ce86a88fdb32adb696d5b8450e47778d9ec1081baf9f9eee96515a15af6b920342f41f19a53d693a4a7b8f018a2c839552b1f152da33f5494752636a6c4200c77de5ddd8c7caca8dcc73475223af591db74cdbb0a8d5ec34eb36741b2c0f64f91c7869f34efadabccde4074bc8f18eb226eae24bb596fcc066b0abbd65b6e5b274ad7158448fd7ad97aecbb572aed563e5749805ff647912b6a85841403b727b61c9f4f6921c64c9e1a897aca28a2aaa88f733926b5fd8146fe5584a62c0f38417d0b0c52d6e59e71c5613168f133b9367f65c55b09f95f3c5a0ec5608d273af894172c5612b47a6a8c815c5512c27b67f560ebdb6b892e98d3d3f20428e9c10cfd9e7ce56336a95c8f0dabc4e269743e6c6d6944db0548486ea9669db46614db3a05996e564efa06cdbae5ddbb48e5a6f9a4665ee54edf2499ed76e51c39f0c0a32844a1158e280e80b654bd0148c5241c1b079c15a92c450152a8482a6ecc815778ba73d79eece6b8ad610f31ce68e04e9f3437067c148ac9cfb1564bb7f564e8e15976f8799e504e9ce1d2ba7b6d81deb494643861c8ecc073554c4a124adea9c68a371e219b23c8723cb72dac3d6122bd8ae6e2f5963d9b62bca5abd36c79515ee70a865db6e97b5daddf443230268d3b08eb32e902282b64c6389b9aea89bd544114b04160a2c176439038b27673db09f9c277d087a168c04777a1246c2890feef448ac7cdef63f38c462db32adae9c7b632167d7e6edbee4d823c9ca392b47a6ac258da594f644b9f6b50898e7ee639ec33ee8ad1c972dbb5dae7db70cb91dd84d36edc98ba6fb06e1931dfac82976eaafdbe3a7f1acffe64e0c0a2a8293035f36cdb475dcac8aad9cecda28a0e093e32571554a7b120b81fd28156d07a6e4e1cecd5f0c0a9a2e689c48a95820cba34004594e0e084d1c18a3cd6b95bb3488025129f51aa641adaab5560d530ad49efca8945ec11e0a84a3ad1c58c33a1cb238800363a4a573ad1c252e2c5829a57b484c72bc2d197242cc28ec103d6221222b870d1866e5502af6075572bca2ec653cb05f673bb0d7e1941eac80092ea020086510aa91c781db21a798b9d19e3cb6bd703ca40f36d1fcb0e20418d39ce478b10c87e03e4446babc86c3965d2e6bf156edb465b7662d72384c085839771f2be7b01127da8dccaf60f9c40777123642cf61b9f3925bc425f99b3b31c8ca534a7b326b22bb2c59bbf009201421c77be5be2fb9e230f59887d9070e1f8841124c706a7ae42a6201a6e4bde0438635c4a07cd119bb0d3d64e5c01aa2881d673ab09f9563edc828add27ca0584eb48ac7ca912b796b89653db1847ee44a2e295d39414315c80651c9aec50118d30118e30118a3a4ad9c4feae448e18417b2c643fb86bf18062a5cf498cfedb0b2488b9ca6613f4fd66ed5f0b65d18c51780307774b83c77600d4b07c6cc00ae9e64387d90a5e5021c583cd6148b7dfb8150d66e9735257d0d5b3973673221eadb7f2291e89f9523b2222b45f2db357bad25568ea5c4cab1725ab56950e3b44da3da7c62e5b4ea8343d61225ada24964f92254b0db6e73a208263bb272ba1c487db214b276693635e1f01128d453e3c4a4a35e439269baef28775f3065ca9303533c7245a940ca63e5502a5a09086bc87d164c34feae5cb7bea6bc5df8841322c89a10d75fb28e5ccd19c01d9db9a33377a4cedcb172e68e951314141474eb65d18955ae27431d8e5c48e69118ad1f5548f822b0860988ce1d4f01a88a386d2357250c402f5e34dfb7080644f8835528003db9b2a9b6f47bf902165e629cf662121871228d14fad8d4cdc69cf8929217255109f489561231c237a6692fc6f8c1531b1ad8e3d9d45aab0d4dfcc14676c318638c31c2c7287dac6c966a2d75aa09fc827c6c1ff48f8669a934ba26a5d8af75608dae33c8b2719065fbe06b17b40fd6c5282b17bd7beb30c9c9e9209715fdd34059562b5df00a0e0359dc72fb2cda777676600d4bebc815ac61927b27874ace92d611bdc34355da9322fc89be72293ae9dfca8ae82bffa28fe84256de9da649370eb52749506705eaac409d151df8915e7fdaf3e96e8ce223f269558dd2aaee8754f18ced6a77dc38edc98b80624ecc1145d1bfcec9522412891e391ca21db98a393b3b5ca0dca851d03a11e86ba049c57eadd33a47885eed8d106193b5e2b1e7d43aba3d9224b9de4fa29db68e5c4520201d201d201d8b7b58d824ba157df4ad0b23e1c447f6eb48cc5b4752d3611f54c34864bf4eb149d4f741dfd88893ee46263689e83bec633e3e6223193689b009017deb43c45fbf9aa681e48a7b06c4e11f3225bf05558d8ac5399946a048655e58038324f9612353d286622853b07774a060e1bfeec7633fd644122d160e681a8456775b169df45ab3e5753a6fc529e7e9a184f01b95925e4a2927ec9e48c9e392d2882bf7e5ad1d6f7940cbb6b6befdcc67774eab55dba5c4ae8b461a7165f923f97aedffe8e8e8cf7bcd7aab7f5dd93c68cb0953c06cad624db7ce9cb3a114bde5e735f5a74e9e3ef1898eb490e8b487c4882bcb77e34b24f3484422e7958227f9194a11c516a46092653294c247284b01b44489bce5174c8a2354c95e86521c618aac41065828051294642d6f9fd7b0d36b96951dc2adfbb6713bb29c695c8e15c760a6699f3aadcaae5d7238342c0b2257d7dec2724dcbaa967dc3b6ec1b761a89dd74bd42e28fe4ec7e5287cc2dae4ded15bb12f9d3b6165848851c8f16dbb5cce52d32edf0157f3773db6a966559a4dba7619b911839522467d88744d68edde46c2eb15d212d7e246bf79339a3d9b7cc0899bf982b1632391e5fe716cf4e350ddf74aebfa669f52dea37753295f9992a17fa8a77d4b778762b5c3dfb84aad2339c45ac3e8b41e4aac74d97103ab26b3cb26b4d441bda378cbdb3f6ed141371395eae6121da5b9ce3786c39fbcb0a09dbb02dcb386ee3726017b271d7b0ecd9afcc8431aefad45a6b6c81b526e20c7a79edfb766771ad972e77972b3a8d5cb142c3f1c9e56af4d9823f235723dc43a6e6e50afeacc5f359a645ad5ec3300c13927dfbb06bbd451e441bf4daab5cc96b986ad7b4162226340c7ff88b3cabd135ed1096347b1d9b3472426cda2bc6346caaa7c7de43ae82c8d4bcb5533b3d764535b037336fff6e66c66e68de7e43bfc8d369a7af5c8eed42341e5bde1e44ae20c4b063f3229e8c9dbbd886bf0858967669ae375ad9fd2890b3af02397b96b399ab0e2d5fd7b4b851eb7e48b2b55dbbd8cdaee4706cdae9e7afd723b970e4419c414f23218c3c883620cc3a709650533b229168f20504f287ad530dabc434edc518638ca50d68f1dd70899cf9444922679fd980fd66f2e1b9d2dbe3f00cacd14129724329c029b967b88e38f98b39dbcd2ebc1abc500ed978e9051b6fd201bf755eaf4399fec3600d2cd327329522532664fa64525a856ebd06238452d4649ea667648a360784cd33edd14f2c2353348915ba2eace984e46aeed0c9a3cddb5191296a992cab3ea94d9c21d3d7a05651d1ab9627d5895641289c9092a94c944c9fd49f4ca570220d943e81220849f257a7646ab3155ba655dfe4a11d954c4fa5002493a3403b2a7235314f0fac813379501a8e6d7cc4ccfd6c8a2a2c8e21d7ec9159ca24c8eb447bf4fd16f29f4ca63cf21e31f311337f9327d337ae4fdaa32db0df33a59d5027d49d01d5ab88432d4e23e9d636a0b9cca72197da83556468a18f9329b9b5b8414ad3d8e4d3811afb2945b5b006b65cf90053fd27aa14333066c8cad098137bf8496a3c2005144259ce4cd38d849653d8f91df2740a1a95f964049c085cacb071dce5e56e5dc869dfb4f66012910cec76ee5bafae472344ae96ef6ea79048775889bff90944abbbecf0b5752af68c81ddcee118735ab5e138ad5b0d2447e6449c88d32a1973a4843d638cb148544d68e175ac3ebb8e8d15abf7068c89fd199374102041112748ab2c2a2d59830029220848114166cc89315ad29a00ce9e91366d2953adb516c20b636c582594b2238c626839bbbbfb47f78dc3d4203ad5382ae46e8f56f5c0ea35ebf6a8d7267b224710d7dfaaf62efcf6fa364678ccfc19c9d326881e56b4668edcf51b992f6cda41272073c42838fb393e3714348892730396bec9d4a6096c7f729393dfbe05c18a3e4f60b973dc85b3bd9577dc5fde755cf72fe274b8c9e82f1cf7eea22b847b778dbb9ab5f2ee8a3eee138859f496af74f7e5a2fbf2f232390e7fdd45dd59ae8956ba8b848858442c229148843f96af5c6359e1ba1369d5ca5956f08ce538ee90eb5ebabd116dddb9eedc2127c24d465c91f64638b2b8bd16735eb88bbabf5c24eade72ade5461cd37398fe92b9fb7261d66001eccbbb6bd0001642418628194e214328848432144241593bbd8eee2fd7445fb942ba8baead5cab5be472b09cbbe8ae1c723b5856f0d77d0231afbce5dcca7d7987e36574d36d321abde5fdd1dda6e9c21c715a85b574ff6a915675ddf26f6505487b2b2df65f6d815bce72ade51621722344a4552ccf1b8783256e446e5ea45530072181fda0504eabea895431d22a110b1c712c177cfdc08edef75ac5f23e4cab56de9769550be9f09d7d05fe4ad9374e88283a4d6f9c8ece5f0538c85551c7bdfca26af70e7b25b0fdaf66d1b6e1ef4622c9f434721fab5728cfbee5c3e29b26d25ebf0a451c98922b2010062d6924db9188a429e9085a1236f68dcc324a0e08d81e6c6fe2effa8dcc7d9a8697bcdeb75e74bf225974ee7e31732d051394c8f6957b5fd9f47a0ef88bd2e798a7b2fb8a6e35c10e6f93e674d8f78d59d32e257c8e092536e98097cf01b57ad26b7777c46ccf5d9845f6247b0df230371f2ccb2787630546ae74d12d5d833f5828451394e43e8b2a0cb040a8c8f02329b92f92820951725f5b3f7e44f28dcc4244c7df8b102cde879fa643fcb5c0b5bd6844912c441e5e7eeae022c7035ee6403229060249b6b0c99296f51cd83a773f7ad20dd0fd3a8085453560d17668e7d1d874bd7f4dd7ad43d38581d051abbcaee7e03044922dfc15a1f42d363177f21a16d5c05a90e3d1ddc242ba5f58c8e837f293f846e60ecfd1499fdc0e7b78c9e91861f8826f64667179883f139e2de49b13427416f88b59f4fe8ee486171691858078b6f7ddc82cc21f12b975c83cf1a4f8bbe9c7aea5f71b5b55d806227ac909c8f1c87277784b1fddaf481eddba5fcca56b1f8bc35bb5e7b8aee18a4d3ab8d7e7e05e6924bca3d326d82fca82c5e74d3aaed3e7b8589ce6894d3ae8e773b0289df40961e9221da5d1b5ae10b8c30a81e5eea50b57fdbd7e4efcdd74eeae4106d88ba460021359f4adefbc1f913ce7e165a5ac7afa95bee2dc35e2aaa28a2ade90e71b4f20e68ed461213bec45222028a516cc54ebadbba2fb893ad37593f6ee48f2854ddceb9164cbca45327c77735c1d568e4bc785ad470e08fad16924bc5fe9478040924df4a61c1c46922936e9b04e9fc3c21f91fc915ec237328b4ef18dccf0a423c9b0a391a26bef72bf2099f415f72392496fb95f914c62c1334120c92b780231db4b4e474bb62769db69dac62a6d2fb6b2f49cf3ebae5d9fd73abd3ce6ad58fb9b50fbbc42e4a1bcf06724df741689ea37b37de925b7b43a6f4defb7e5d1b5beda75d82acb92d9b226d07984bf22f9a66b5bdc379abc34f6da644fd83eccf3f3d1dec8dc46c42aaaa8a20a1d12e8dce19bce228925d0f9a633279bc01a6d935a5fe6bc06eb2965cf9a8add1894bc402fcba2b1566b21b626cd0f36715a734a5869e67c7bf1eb5b74f663ad31c6d83146392594de67e2ad5cd1c0543c4cc5c7787b24561a83090fa23e991ff5f80f46e26fd628efdda6a4b00b1ae4c1b60facbc25639472c638e58c73ce80c0c67f324f40c9df73dbdc425a8e98e92586d046843372cf8e52489a40084811f1f5d7b57ac2c76bf0cac07819dec230ed41dca592add2c232ed793240dab3092248ab6aad41964d900b7ad0839e07af2017c82da2bd065244900be2196b650b0205695511adfa01a7e8f664604cfc94160a514b8a5e4da0663b815286b465b5d7ec3d62f423ecbbd39ba4b7d2e482ad32d5047ec1d6d82ea0960fae5a92ab0d4f2d4e2b4e1a57e68c33ce38679cdca4331b4dd2ed4773fb9c73ced274992b66cbc43a6b96b00b86351177ed8ae69c225863cd3967572f6d7ece39e7b41fcd39a7c59f3de9d39ee51f897492bd1012cb24e13949933449f324fcb11cbbc672e3cf1dcd69b1cf11cb081b8decb4734efb69a7fdd739d6da39e79c73cefaeb945bb9bdadc49d7302b58e3dd65dc72c3675f57af639e75cb14e9f44746e65ce39e7ec708f8a4df6f5c2265bef83be62234eec8d601f9c11d1b923a9a1e9edf6cf9d67a0bf3e04fd859b675ed9dec6c9d0ba8feb1636e2847423f2d749d847bd081b69483f84754a8f84bcf521e8398c449ff6131c1c1c9c9ad195d9de8a93bb5b7170b2769d4028928085ac6517666c4e119edc9cdb9cda9cb0a6c29a39e78c4192fc90a9f98a6d646ada503c23533389fc6cd9d18088f9c5285ed24b2a03632c7c85abeb18b66e9de209a5856b7b53360f6cbfd160e5e7fbaf8d8f9879c84c9e584910146fc6c6c608f6fb512c413fd060ab60f70f6f1af18df660cfd8d7268df6e069fa1ea632ed495ba2d83ac5fd38af0b650adeba504a13d8d8dd3d7faa28884f68b44a022922089098538a4aa21259c2209a1f801401a78020c3c70e441590e8c9c31608874810422933d32abb5a8159b9d20e4572c55db742afebb61b3147ae80c894fc77168c7109f65cf6f6003deb333edcc891e9f509a394221a30c6fad7c3b723d38b2e0aa6ac7330d9fa760f3deb5aca2282fe06914c2f3f63b3252906225731a75a5b8a393cb0dfcc2a7200a6e44580821e17f4c49c99991b9546ab24b5b029b01f1958a33d18190ffaccd80421c59bb9e1c1ec005536d0934702bc0761a0aafe4586779103b451ba50657d7381365e5ad4c03046da68e37105c2ca126dfc508a3686bc441b3371860703c6c8bf34968131bff1072c642d40e1013df96a7359b00a599e4221cb0f815338008c9141c419f2f20979e60486d329872fe490030e5ec00187172a2f2fa62e984c2db8d0a2058b2db060519a522ab968c1c565451656ac68c1424b0b4b100bcbca155656485620914655188dac146b3b2a749d680a221127058edb80b64d8b82a66550c832ec091856a7a8f57242963652da4869236de479481bf903481b7921a44d10729381357a36924b6e6cd0fa3e58f8be10a6206e3912230e1a447d3428cbd81da306e3d0d6dfaa926a2357510331256ffd2b5dff8efdf3b673f893891a88aaec18c6f9853f00e42fe294220ba209a04c4510680740e6c9c85f1c9251e52f0e45a129b6577065658a00593e069c0157f5f25eb4715d1e06ac61c5242ea08d0b470bc017b086852306608c3c8e9538596619877082a245040da2beba247310d6884618d16800fc016b6c993b1110c22d640e8621731f4443e6b4b7905bf8d12aebdc8968d575ee405a55cfbd885661e76caf56b84f0f58fa20923b10b992e71e73600d98b9ff90ab3e177132c7a5c1ceb73c9248fdd19190277d88d15b3012fd910fd6122d00a6b84311fe0163b8cf0ed87997c7cbcf0f213ffb48902eb14974234e7cb47cc5e787e8bb6024466f6c12e126fd15d8480b77166c658abb5cc14eb473173db1b006d638e1aec9ad35d1b539fa4869438e1c8f7ad3f6a8a43dee72ca0fb269c340748e54b4c73de6649abe5cfd8029ee9c4ce62eba5bbe46f70777ad7ba694207f937461cde8c21a4d6e10d680a781810cafd99be5edc29e294cb2e866b9391c3107c670308a9e1be41f727599e25eabedf0674ba5dff33e19ae078ce14ed3a2dbd99a62b943148785d4258d1d419bc256f95967686080727465d89565578f618992aee967d865d3ef436101163e21c5948cfdd27e6fa6c28673546a2f0ab9360cb3b41759da1b49d390f692b48f56c127a45022e615b94f2449af926c41518c21f7a3925ec1303021a255f00929a4e43e104cc227e47e732f776610bb9cd669ba5ebb8ef9e8543fc61e1618ecd69e25af1968f45a44b54a0b73a83d799a7e71290e4da284f65028d4270afda153d07ba99429de1201b094d8bc4729189094a0ae755a0523e3858cc7b826e3b64e2f81f9d74b64e0d6814902068ca7aec1b85850ea62403060603a76ebc1581526b6271b0f8c0b73ca469c424a5301d33f1d273b4edac049f40ad6ac60cd8b6be3312eccbda4553670ee244ea926a4a1131d92299f56a57e7a8cd22bd24f8f53b44ac64fdd4fa7f813f7138b9f1e936815cc4f323fb9f869c64f8f4bb44afbe971a755d94f307eba3f3d36d1aaeda7fe91a9f574b29e9ceec9d5cb4f87a7d3a00c391ea61ddce3b9c7cbc0445ac6656021a6186c7a7198651c6653d79d744db0e6a9ce83b9172355bfe083a127595e6a3c4353642de76a49349cf65e6ec644a6e43726b2fcddc9f230324d892cef2289fc974a301766eec697db3766174ec9f7469f4c877eb2f5445a3d968ff503833525579ba1936568c8e0c631f5f0ef19f3f0cf83116900613a33be43ffbc38942bab444c4c4ccc6fcccc64211090d9b4239e3b873f24115f3e3662abc3a470ef643cab81fdb0a14e46860db597e1d0c09e1eff61322e566506967b8731a0f6b8775cd775fdd3755dd77118d00e01b83c06744ca755a6cf8801e303a5277f984e6cd50cb9a23da7430ec78c9be96449b487c9c03d198e3f9d7b7cfc09470e7727df42c63f8ee3645c195f65813f6b65fc744dc6c582b81da71ce3295b1c8e139eb15810fd1ac8e2c174b6a8533b3a144960af0bd3b11858f4028311014ffeea1011f2870d5581798cf9d0478752a7693ad4e17b7b740270bf99695cef4392533d1cc61d82c2c1434f0f17abc243922c8f2f6c2fe66b0816ab307db12a9d6a6ce882c23ee185203c6104300e635e70a7c72ebd6c96a57eb5ebe4e97e2f62c87877612ee3f2e8decd0f06e6c5bb17875c8c71fa0927dbb1a77f8dc3e3f498a4553839ad8259768472698f0dcc11dfc87c7a73394ea76b3ed8173229987319936c4997e5b4276f6696a4bdeeee329cee7a623b731b931bd8c6320e7365a4ae8c4b877a9868a23db931f169d589f6b47735c1c67cfa090a3684d32a18fcc53ce31accb570e810ccab702fde37c6d73f54e4d4bffec186602ecc33aecb4f1b942c1fe3a69668629b8053c8f25694d385199e4af1847978642afa1061096be86995cb5d2814999ba33b87ffd52c23c647ee2faebdb8fdc384e54e291930cfd1bdb1e91cea450a7fb5c2523efd2be51787277c44cc2fcedd989bc3f1025bc366019c15ac31c1f810548e31c59ca66155430ab68053f3d9bcc9e8c899d21e11a6c378bc34adc1f660bc39209ac3435019e6306ebaa6d161b636a71bb34fc7dc6e22c6e3dc661347f08081dcd7e08dcd30d7b4138ddc75f8eb73a707c8e4c64262dce59a0f3626c608e40494f6a4c503e3daacc5ad7990615c52d6e40694615c16599b1b953d23a4964883b99d356b8b715d5c1ee3dc8d71ad795ad5c2327b8501f5fb497bb10318470f55da933834661c723866fc26734de3dc1db26599430e874c0b0c004fc68a6422654affa8b0a1d56514ac8e5cd5211f6e031baa43aff19913e00238ea3c7c874f256ccb2c065688be8f1e4bd80f72dcfd414457b7c0c1c0663871e68e8de51230468a5d01ac11816343b08696e5b12a0108400002d0833637983bb3d65bc6c4c23c9fc5611cdb7cb0524732a133c8302e97952c9138ed499944ca9429527e806403b1c82e6a2277c25f917c3255d38eeef7177f4872d71c8fd23b0c58d24ddd594471852a3995611456904286dc8e0e37216118173fdd1bd955da9335b787720b911316e7381c2cf08ccd77029dfb2ceecc22988bb81c30378205c686b2165818566cda1615994eef3c338ce9749969d64e780536c7cca79b2015d81e8c41a293bb6bd806d31fb09f8bdca75b383549ac93e9324ed3d890e470648d55991cb0194edd828dcf58603f6cc8a2c15f2500feea00f067ed0dfc9550f8fb0ef8bbe7d5c89db00e989b70cc3b2b8912b6fbaca156ddcb63555ab5c3e5339cce92b48ac5e5b39c56b9b87ca6a455a7cb674b5a955dd5ade2e11dcb3315581816bf381ca76b3ed87b9a8e1c0fd38eeea8a3b0101d7878e472c41e30109ddbd483e683ed29eedde162556e8673b324594ea6246b1e6ea693028baa5fb0f130fef50fcccd0070b324376b71b325374ba23d791a375362c6cd646eb6c406732314c890615c970c3919181b6a4f8a85f11e2e9022826cd4f061a655302e4fabb42ae6f2c5573afdb3f9c561ff45ea35a77efca5be22f5164c7b60b009a74ef82bd90e7f2fe1cf8371713862708c4b231f807b04cd1f36a4ba47cc14bd43dfa6c3354dc9a56b6a0c446796b7bc33e45a9ca663dced2ead2a5dbe792687637238b4f7e5010319c6c5219b2e8c220a392d9ea0ac26bac3b806b953c7912e101c1139e2cff421a8dcbd63369dee8724c38071978fc587a0b28bcbef230744ff8f9c0e54fefb1241e59fded7301fecf62132593b69316b5a8f2c939b4abc43647216a15843fe5019c22adf1803f93bcef0092228c92cb61832300d369094f1c77873df8bcf3887bf98c64288a072bfb190d3bb9f6eba76ba30ef4c97837153dfd3b5b9992e77c8e9e87e4265eecd35d75c6bdd37dd0f954d37fee4c5039c827871d3e1d7bdb1a80637868c94cb1b723b60defd74611eafe9303e224e17e690d3618af82322c3b8e94618d7609c4e441091619c8e6d627e7118f7eb0e834535b01d1e82ba9f1c8f176f2ce4c54d5848eafdd3d7e121a8fc0273a9b338e476b8e84861197c23738ccfc03306dfc82ce351c65b8818f88b59c65b46d7719ce9f4f4ee9c0cfc21413bee2713fe2207d47db6ea46f6d753bc81ee1773e704c6e9687cd291652ede8f887e87b317580e7f31ebe89f4e23237671ee422cbbb8f662071e0e7b15006c48ae4832872123460ef139e06073b783cc85edbdf886a05e9c3b00620cfe6a4a060c8c1707808b2b84fbc9e5a7d35d5cd3e606b91c2ff0d7f9c5bd77dd638c3dd008c00e3cc81c87fbc2c385eded80bfcbe00f9561727719347277981bb93b8ceea6211a300f000fa6cb1cb66a87a762c4cce8017734f0071300fcd1e001ef70617b32181bea3e03cbc05f8dc130d8500c0c030fa54cf87b06c05f5ca8c3bd78398198b9bfb83003c0c5597c723a3a7358888b9f1eb91d2e3f1d723a5cfce4e27207802e36eec6ab498e076cef2322c70e23712247ee9eeee2c27ce26ee7783aeaed99fef63a03203171f83b924f67f10e7f2ceee2845db8b82ea8fbfdc82caec3fd90f06416c7f72322b3803517cfd85fe3824092af4d2066975f9c8e96ece272c93d4697f7a5e20c5562122591273e893bf00702c120184425e6449ca1f8a1320c8d1b39e0f0037db8fb0d91c9d9b725d9743a77bb9f2e0fee1d76b95fcc2e8ff793c991f4977f7585430e395cd8291c5e2e6c1a19ef76ee0a89db21172120934df8eb9187c8b0b8dde2e2c82e8eecedc2025b4f947892bdd444ab4a1802a8bc7279eb8995b56c6505932cdfa22da12959c14d48cf48f808aac64976f9056e74830c694f5e52811d8775826616ec0785b020b9c2d60053f216a0c2812c9f8920cb182487b0a18ae9c00886310c613c3e7285e9c09494ab3a045392c35fe5c932d6212c0c44c81fa6d3f3040de4af0e6143a5f65e5a287fa8699fa08e4824d89188a4b3621636a04114cd0f541e5ef0144ff86fc257782dfc57776cedcd5a2194124a02e4cd527ac939eb27b468ea21b599b3ce3a6ba5f4b22c3ae79c737e4e284b98961034c8c345f3a4725a379d67b5be996f3a07dad8f92808bdc04e17cccccc949858f8a3e61863c4699923ad8e908a3e24ff9150b0b0e70f99a2afd55a3995b000a4b7a2554b95d2c79e4c0f7f10d157c71f3994fec2391187d29e744e20edd17f1028539a843e06fd04c15490cf0f8d4199feccd01fad44cf814c29fd2753922b58730f721cb0f01bb0f09c062cbcc42cedd1db0b0916be89956f21ce041a2c80cd0e61972ca4c2447b8d619167a7875e3dedf1f05c4f7876747a5ae584142852a4908c30836bcf3e5960230f4d7bda758f9841604ceff4a1a083a30e8db4520907c020b046cc5f5c62813590e187f8ab9db55b89070948c8349a65945af1422bb390003feb5a44c121178689508935305f18869d7ad4fb75514779d4baaeeb342211142b88433a603bea705b10b9da308d4c75fc94f4dce5b1aab031e2269c0e78eeda7578e3b10bfb752106b1d3eb72c72e770ee66bdbee901824f250893e3cf1270c4982b83dda8b920322e678886d97300cb3d8e179daebaed5565bbaaed8d35ebf1f8448ab86b4ea3b3bad82714707c22665e81345136dd129836446719882060b603bc8d2010bb5eb34fd8ac90cf1279321bdc4623d7ca66dd8b55b0fb91d19fee094dab59e5deb106af4ba3e3a3527d63860bfcbc8550ff98450123993202526429b4e8f7a94e222446e4ee4a6488c3ddabbd04d910f1e6288811021ffa31b4a13b2566be5ecc246e304f693a1544675e15761adc3d334aa55d74b7b3232edfdf85cf80667023b4ff127d3c387b5fe5dd7757df668efba642e19989256cacd520aa56429ab1422a2b8404e830679805811ec573190f6da260849a18445049952422f57589a2ad0202a62a73f2c591c2cedcd69c1f7fcfa873d62eba2b05b18fb310c3bca9bd6f5ee391ea2c476402c1ee5e188f1ca10571f3d4a331866410b63f893ce28a45003b7f6e67b3265e955c5c1c1c1e9a999b716bd282c51ec527841082184104219b9ea01ff532a824f0f0ccaa05c4b64e10850253b800316fc64f87849a8aa31c6286597a34b8ea518e38455c6286b97a54b494a38e19ca711ce88ef524f2cf1677540afc50867aca101accda8f46c75a5514e32552302410080002314002028100c8804c3d1783ca4eb72ee0114800d8fc25076521987490e43c818630c10000000000000000009020093cd2a3082704724fe979390121ee71352ed9ee62cd64eac3d039952428216b4542754a4aef70436cdec754514cf8481d1c6f3c596f606a65cdf747a31868e219409516d6152c008073e4d900ed8eb68b2fa6c72d053e4c4b92aabdbbb54fa476474bf5c2229e8a7a18e32640c409c10070978b5a4f857ec30c2daa6fbf4537ca13d84f05164e0843d444971348f40470a445da3142ecdcb08a37e8d1e8f7a8c336f94d97844962398b1703d6edbd8c47f4ccc4f10ffdd442728257f0010a0d36495da6f53880c9b46f44bbd819d5e567c23d5bb49a9988cd9946bfe44b14d5248a895ac62b6c21abc22d18d4d1b77f1f89bb8cad1953732d2707754881c2c96a9c5aa747707c9a23efeaf720d74b0190ed0cd49a36d9a95eea0e851ba9f91598a1c66c492ba426fdf85337b1c85bd225c5e42238a447cea12b2716478ae392fb44fcb2b4c785a6e1778607af6bc2085bb3ec471b67161ed8715f4de5c3213f087c4a46420a8dcb81cad3c063172cf04b8598661ddeebc7d118f1207b97a81dbd63dacdbc3b03981d444891ee61e908169bb30cc5a82d93b8d47e6a416cd0df0aabc8e5ebab423055ac1370fb7a45e2d2172aecee5ba072efb1a64f457bd45988d6028d820757f621dd8c9014e6e5c3dba9dc4b542842767a5211df7b9b3e3ffca2c66ee62014aaac426328f7aca876bbfa53ba7d028ab08269a25d5b6c422cf0dae4e9d8808005f81ab55e7bd56e36a363e2c909964cd8ed39c75280aa84c2c1291fdc28c926e1b4b05b5c967924dd9d1a5225da444670110a3bb431855a299965503a11bd8e12218a086bb58d05b40d2371db703c8aacd431e03e63c4a2ebffd52f0eaff3120a7b49b1231b32d556f89ccdc17b53248cdd638b85f466393a1577eb24a681e2917e9283d83bfd723bfee2bbdc80a0c73063e56c1469ed3380ba2b89116c331a624ee4afd77932a9e5aa1cdc052c78d7db0e03186d50777e24bac7c0743224d9c347bfa9e9ae3fb28b34d7c18450be7bf40c057285616b636bdf20822a8c344b9889c98309e6385a4e0e092812928d42d013bb23b50c913ea41ca30ed32f6248f7e3ce57a8085901129c228ac7dce419b01a0b118b2fd173fde9d5a4bc0e89cc07361cf25dd9ef277671cd5febc5f650453024100acb2bea66cf174a6a4e8ddcd37d686a12834bc878d1dc97181c590e79552246064f9f071f239971be323c29546a4b8e31d240bf48e5dce44099181f9355d2da6787977e813d3a6b9ea4e0ec660179b02cdec38d86833f67d9d5abd386353388c88a05ce80b5d34462e064316ff6f99f3d6e3a55038a59eaec49804796a761717f492034dd2427c5cb8b09db192df75f88325fdf2e7e8801a4c12cc8418b5a19cb931f7ed7479b84367f9c71eebabaf7d2c8436f1fee95258c12e19e57b36ccf6a316f05b4c1fc28357f34948602a8d0ce6a40a8a6a20f2545098fae0f52149cebb43bb31a41f320a447e1e1e100f47f8c65d4f849445271d0903237559239707711ac574579eb02c716396e4203edb0f0160922ba2cb188131d7aa4bec39fa5c845e4837ca53cce37b8f1a47b8f15ab62de89e71622e2e284b24114a762db876b0f78530665edc73ad40a99d90dc3ad121a69ee1f01e1bce1a51f3e75a8c466cc12413e2ff6dcb7ba4f9d2f6703264d343bccb59d874c52561dad45a01fa0e6e9c36eb62a4b6e2b8a4b037e9d05bd163cd065811990033a53fddbd032637dc9890cdafe7f9cfa674f90ab98efc5a0fc47efb00748395cd0c06d54631a4739939cb4fc17fabff153ef82fe80a7e933453f70cb46b4a0f113239747792682344c32f8aa92b8b61d2248b7422aef78bf74024b4cdaed45b3c64722d51ccc2952b11766d3deb81000a3bc07986b94b48c65da26f914935485f7eb9f9adff20cfde250614ba702268dc05ad6aa98ff79705fefbd00cf2623a57d2056333fe8740d9db99e3bd6e5dfe06ffedc9afcd72c59ae8b5bca7d2c233975e9738bf8993bc2547688ae3c0bda497798fceb2e5e9010e7f1aa0148af89e082048a5f82f49005b7c15c294404082b088a92fb630c3e042d2ccf007d03bbd10842f7b3025de05bdbb55b0c1f24e0b6d63b5f4be6d549d26150499005b8200920550ae9bf755244b6b8dd8df6a5b9c5c19c4c298a3136843bd9b5fc6989b11c58d91c462d15779cc5e1ed7be1fcbf7a8e76e3233f7e2ccd0a38faa1055154520f82733bd63b86226c256e3360c4b1c5f0bffd3d1bc30d36b23e32b415238446ff47fe81a4136eb7daec779eb170d6857846048672384e796c48bcd5ecfd1f2364c0a2fb6bbf53778e83448670bff1c8efa8191b689e41cd108353f920b247725c677dffb95e48bbffd56b3bef5e2cb9d720c82390ca2d6fc6de7db8fa4564fc604ed91cdc1f23eed00ece22bd99d92aba84593f29b67a25c777085c8dfd4bb31e3259f641462a86333cba2df004d85a84b2046e206cb3e489745847195c22b8d797bede4f254bb9a30899592ce0c2c88ad484e2e5a02fb34f35e87c127811bd3a6729d2db63939295d646b6288b266d4544adbf5fd99b2cd107c2be7b26ae8ac7411da55edbffbd6cfe6aa8ec8c65b9cdbb73903c370fd30c8d43c6ea56a23fe34c64e811356c0fa94200fbe87acab5741524d5f52f6c3838527ab8b1fd561ef8650c7422bd76abce6e89d514a0d41a896333d581f800a49dbf28547725ff40fbd4e008f4f6239ee79921c581e1313f738df699e32386ecd022f86313efa3e9137ed640bb9bff10ba00c1906e10750268619295d69234c20b0a7b9d4d57149b4d4726578eea5b1ee47211b284d63ae59ed38f298a1f78f972a03d30c75bb68072aa55aab0f44f225b24e96986fe08a417a3a44c7dad6db32568549e3479cb51bc407cad10258c65ebc8bdb1dfba2c9cea5edd0e1316fd1c60be710b698ab3cc4e7b9a2d13101d13ef64e93b0831e2f8f6d913be64915c038a2db80ff29657d04ab43df5d0c83027da13b4777e5b11ca1c0e6f6e79c04e4a03c065cd89203ea0f37103b5d6ad494a94f0472fde7729c53dd752d652343eb08ba3d1d33c2bf2154d6e591d1bd5d7082e45b0dc9876fec66943e8d5d14b50884d0bdeb2b2206c1fc3c406ddc06705ba97a51888017251c7b4f90d124875f2e9a4387108d9d452e4b61d05494e887a273cf78fb5f5f685c1699076db7a8923cd26c4aa9a1bd74534a23ccadf2601701d67540da8ddd594b3381898eefaece31e288c15661f2c535ecdcb40ac1a28956f7d1e06d91582d72f712c0b9c7b35febaf9586a35e0702d055fdf0edcc51beb3ee4108b796a5c96291df0e50eee97efb2b7375413285ab1d2d47c15be17f8df716eefefc35cc21c97949f45eb5ba8728728eeb6dc3aff3fc71975e768cf711507a07177ab689ff04e3ab664ee94a596a025711bb1467082a20a435293e0035ed45e2cb761ccba69ad756296f4ee36bd193fae7f94eba36df31b42283afaefb1096183fdb3ad08f03928e44a75702c537718636e26410b9922bf7578f236b7bff3cf6799e5e7e366ee1ce64d40f930bafaf03ed3534b35aac0e73555767458a176ed885fe061dd133dd646d86cd3b7f5848bddad892814e8cb630860ff67ee269aac6aa43c916117779f7bd3cb131fdfa66383b0c975695fc1594687eab70ed4a565739fcf653cabe44ca1a5ca4e94a1f506d4eb3eba365551a30c7f985ce136418565165d9c07aa4523c4e76c98de8eb8f8371a6dafa72f6fa7bf1b92e9dcc5dfe125496d1ece309474db46cce6b08a4ba267cc15db3c02d1c2a20fdb8a44efc08ba27730ce92cb6e1f18eb0beb5e52c68d864b5453a4895d98ea86249fe2d1499178d6a5b84f0e2205c8931db1267dde8f3c72cf67064139a0ac4d7635068e27ac4002b90d5265d906f2569f635c576e78d525673f02754c09c4d7e595402d1550661651f58eb638b15d409e9f74a2b38eca4b66d0b0a654cb6d8693462a521e15ebed99f2805072cfe49194b1bf9945d12f5f1c0e9c4e2c818c18f9be9e93b55f7aad466e1172d9eb1c35a53b361efe64206ca18ed7dc18026144f121ec449e8a102b9a8877e5837663709a764231aca2d335534e1335ead0fd16ec67db92aa0be8b09b96ba8694c1e4dd28e261befa50ce15e9a8943da9a39c1af14f1245fd309aefcca68f861c4f5209abee9d40d77323a38bb09c1b576b22db3ad2a8c96324e708ded49da0e4d885047ee16267186f190682ef9800b6a5ff7d9b97eedc2f965f48087dd5a7f207b668f2d66242d0e040ec0d8100716b86f87afccb5e8259a6dc523648c3723a926233dfe1ef623b8d031e367b4e1e65b28e994cb09beabd36a2c3de04a6ea1bf689fb547ec466b79732360f550f9ebdf296b9c552a9b0fb191fab7488e7976851c1e12b75313f3d01b13e7dfd50fd7ebb90e9b9a523db5fc31439378e1c2ba8c372dd5e546296d0c74eadae2b803675a8620ee21c27eb4f5a30300d37351118daf4aa3b6916130288aed072bcd10b6e9ed6c06a250694ca9680e43fd0556c963b2642a61faa74f6928c696404ddc081102cfed4fd24fad887fa85700ccba225871b1442221e742025390e0ec3fdb4cf447dfb810f29b0abb2c89a617626991d3e178c00df9e7f3f623972b740599b80882879c07c3ce3233a0579856df4970bd98a546013c9648762d10c435f792c68a5c438254c09dfa831bf9c54353a3a0f6b43d606c0b1266903b9717c1e926456027c3fd1c3aafafee6480af7df22095deb3663185ef9357ce02b454c5647ec7f749f0e4de03f0415f719fbcf5ac295d6e0c657912887cb98043cb98ddb50bafee309c16cc4d6a6028ff3380b3ce651795df1938fbf626ac5124cd46b4fe014f23f8cfcbf7ba222a68f8e84a909a714a9e7f8f5171f69ea0a3c90cc3964b621fbde3eae2ee6a1c5db940d4bcb10360aae8b00ca2ec2aecd9140b6d7297475f12b9bf504bb017ef8f2f752fce4239d083e365a5959f40db4e80bfff76efd927f48e9023beddfd1017a3c4062fa0d71287b243f9f9f8625277eb12c29320b54864ad4c2e442a340797707948b8844ae76f62b397af0d222d5f37568eb2e1a9db27853b45b22c88ea79c6e4b422d701f925eec204afc35367eae7acf5c0d0a50fe60edcebf3f6d251af0bff34fc402586f575dc961b65f038c8fe2249de0e6340f5032260b38ef1b58125fc384b679cfcae16c8e9c8a782eae646d21a1d3074133cdb94b187d8ce901e8b35e71ac55e931245d8b2d0b9c0c48461b4997cdebe86e79fcc7633138259ba7af042153860bee5a108a0a7109c09920d5e7adc1b69d9d532a2cd49bd7e9f20dabe95641435c4bab12fbdeab1b90e47842135066a5f3a784980ee69c1382860a01ece77e3a12629d39cf7e0a5456f023719d94fba01d0aacb117473fefc1fb98ea7d206ea13f3247a11bc45ca39130bd126325d9a49fbdc6808a2eeb2e188c04c46211a3a2f29db2f3103f318fc00e47a7595383679cc2823f56665f708ea55e5c11a6af816a31e87cac1582a5a09fd3f17861bfacd10d018a317cbf6258db4c87bc10d5597a701cd62e7c72b858ee0af49d9c53aaee3890ca889e5f839340112f6d97d38f7ab7dcf9c9fcb8a641e0198053f1fd5ebb4a8dc294ca0e1585384bafdecfd51a332c79beb9f8a0877f120c185d0ae2c689030bcd575ae8e892496e6330ff7de374bf6c2c457091686311ae704ae2443a71f7170f12ba18489448a025b7544e940a4af773e444de90adb40845d1016e3a4b11fed6eea0d5bdc799ca6851150110bfefeeb3e73e806a3764279e78ab0dab30694ad77c180877132bfdb425c07418f0f8abf1ceaf8205d91cd749fffcbe1cceb3ba36643680c962b0a540cf70c61db8734edee067d8f7343e12881c2d504ea9b541d9305120a08952fbc6677cba0678a3c00e504d069c9839c1b2c4576789aa18b099b2a9f010679b9954f7a446b5a00b3e7ade1502cd6a9049855c4d7dc9965b146c7853592f6a278c542236390ad4b7e3951cd3335d6674d240411becac25404e990665913539342c34dfde657b3cca117c4f418496a94a2749492590f3b4551b30029290f81d03bed0bd559cf35cb9207502c9669d52c44fc0e3c5e090eeb39fec0595e2bc63eb60cb48c598843a348f7a651401814631febf6abb6c3a6d79bcd5a9a965087c674a9a30be1d4d1349440a4c1a7b091678edb589c0128b41f12db62d9f4bae2b5215a58d03a588f24b333f303c6c792c16bb3ecb51cdb3a5eb9f422df762c444ec1152ce0e23c60340cd199bfd7b505ae95a3a1f909b5f59a377d1d22907325350a02aa375a11b667ba9fa3ee2e1966e613578773690c26dc463cd9d6122ed40ad64d37e4c193679231c2ff057070b30743583ac95cbd15f2a980ca86c16d0306cb8a3709cdf073aaf17d6e899ac52d82201fa3000c7cbb088246c00d7cd4861f7be1228fb8fbf61770b30dbbb02cd83af008e5adb0aab5839ac990df1fc582e38cb4e49731b68cfb2c98f9f5d76939ccf8a2bf7c81c19d2248d91c66d8e018cb0ffed65852f1080041283240446ba587c5e9cebf7aef5166ec9d0c8719b08da2e108106a82beb4577e889e118ec71c1186f92e416dc515402d2d1da49c581b013bd9b4a36938003daeee79f2500e62193ae3269a1549f826226762414090f342f00ec46ebc0782ca550690ffd6d956b041a92d88a7329426482d55774db98a30294798cfaa58d51a63f25fca11b5cf3f571aee459d081c2b3a35c163cce289da317a1937fe3c8e4efb91e0b096efb2c683ba0d800018dc7bada2ef09373e2e10ef672bea536e54dc6a839e54044482f8ddd90354070ccbc77dd30236833a5ee2f880838ccfbe156b196318d33e704521c2a7adb0ce42aa7de4c00056ff456878c26b57ba1896b822da36ec73307bc1f83f306e2d3b1e67bae463c5523e4f934ca80563e52167673603e33b3ebc82cf15e4fe32fc0cf55f10bccebd06671455c39bd8324f44116cd423c1a745cf3c719d052ce9c7f685709f8924181dbbbad281f2d32bcf6ae967d39618bd744fce2f64a4d7794fb18cca31b4536c1afce3d808bb4aa968f447be6828abb7cfe1d20e16c8d2acc839e269fd053662098f7891040e3178e203273057e56c83586230961d8a26fe34711fc15574b0a209374f603bf46b5cb9f7a1a91e2bcd65508aadbf3d8d2c1988daf8e185e3450b8109c8533e5c6fa7a04652e0a15435446a9368d39d40eb6372e8dd2d0e5c5dbe3a2bf4a4908488fc31b9e12f600283628bf1027c7c0e63c739be3ad0e9d0b0965f530daaf38b1fdfb83522b05cc625f836d58ab647cc57573b18dd4a0d0775d1a4ff278a44f1381dc87c22ab5bc2786ba7e5848c0fa57af1e29d6da428ac8ff9e2a3fa8b2f12a018aa75954bd16c4d959f17f8daf4b2f63443b1703d1b81fe148f9e7aaa23c6da2cd232821903721c09f2d6526e357e9a68579d4c8b0e2060e9e437466fe5cd705331caa265332033d08b2fc710dd99d76cf4bf400074c51a00acaaec6dcb00c741f55061e36ef8d587af68a8c8c5326ea4ce10704bd501693a4911f07e1f91421698bd435899fd05d8fcfdefa1edd53b1040c122508e1cbd6af732d09d90a3d33ec0e4d7783487a4f4529cc158b48ad8bf44f6d6d1bb57013223caba8e5d2db044399546fb39e4e92dd2e00bfb5c943ef0519ed4b49c777f6d64c625c4abe1d286411806c5dbfef4e68606faf43c824fe2ebcf3891e3c3ffca6eb73de512ca0bcc912a73aa85bc8d63ca161156a7eb8a8bc749f447e2b6facdcf5a249dc203cf7c899ea3b3d63d490ebde7bd6f7aa8289931a9a2a655ce255124513a85e62167051ca60a7d455388e390968dacb6799ec3d0cc60c2d78a7559adb40de0a1789968a69d481a6fe6fdf605e89c111abd6ca51b5ba545bfc5446a7d6af04c536cbd798f2dd710448c0f59b24432155db7bcdddd5024e7cffa37159e787e017dbbe1c167485eb1df3440d04c0c0f221b8b5404c2f4b089ea4a46c8a1124565d179585214e03ac654e5fb6f05865187c640f47fd15b913494ba08614d2f587fe61fd0cc496a9b006370b21fbea8f58394142af67ca063e55bc7fad3793b2ab7f612ed69b921d9e8c6fa4908e0f1d2bee72e93086fa25aff1192e4a19c1f8dc671240f89debba7c8a42b933d875ef7dcbe659f56befd7426fceb587357bc4b704c221088f654ccf7d03b1547a9cfafc0752a19891df6573cd55123c054393ba92361c8ab6d372dd125cfa9d61264a7b75c1f850ea49c7070dffef2ac040810a1098f99ded1e1b73ef0ccd9384e937e0d8783f1a23bdeecb4ec3f491e67923a678c04511d222278af754d5c9abba5cb32f2ad869b377e14719cc1309a2321dd5f0967889cb75d17dd217f0b439092d8b2fd2495b6b8f3c8462792d9279cff9ad46fdd08f9fd1200a922981ea26ec1d23d7ce3cfc76a5aa451e2cf0d9e013a00d914fea99deeaf497214713ddd44c470a6ac871575b02babdd53fd9b1dcc08ff98dd7498b4bb2b90920587e12525f78f368a126813aff88575af88a10b4335d768e2caaf528b7bb4682c9c14832cf31b4e30f87eb6c40ab9e679135f39594790b9c50942d9c9b4506306d5f9e743c3fc4b641db1bf794518e7b88d235f22fdceed359a0993f2ace28046a1c103c7bfe71b81f167fcce13aa08f76ab2f2f70343e37db93ba2cf34af9f4613de1ff49e5ba404d17354da5812d372d43e504436a334264fdabce01daf649da34ec2a3268fab4a941d1e474ab0d1bea36e269612f02a539c47c6011ab13a8cb6087f05c3747c48d4853337c2ba635112c4bf83f7d45b63a8506f37de133f3637a37c1f34ec9ad2d3c193c1095530039cf0914e5b131311fd72138495e88839f3ddeaa0bc0696aec3a2710630d8ba1321b6cb84d3432fb423a5471b11b805168fe7760cb0e84459ca0432baef95e0e00eb617d46b92f98418ea1cae0af4e514e4413a0c6ba83fb79ab84198035d2619787aaac14887547f0016e205d6242cf06c7223213c9f1ce457b8b5468ad87a91b6fa97f11dfa7897d20141651d62a4ee215fa062d4f77062f538bcd9f5699033813d04b50b9a0a34e4588248dd0734c5eb13f9a61a5842f086dddb379aea082e026cc278be1dd8ee56884d16609469e85d472f828adcc247af8d47caef34cf1a0515be5cb2c6332ff4420ddb02091adb1f53c0c1a74458bb79e1037ccfc6c62feb5c98df250ebb9f71a82b88ca952b74e3918b9e98e70e9450a97c25a2160554a6b5358f2f4965c63a93de8dcf041bb28d9765286454254ce52a092ddf54506685bbb2be9e730d0e17543188014e74d52e8cc9ff15b2797a42dacc340ce428720c507e1432d77017915fdc36bebc58c2b9399d0f23f8b0d005a081853aa672b76693c4e3b85d42f3d8dec1a9ea175b1612b8cefbff95faa8423c5f20c9f9bdbbfc3e853f56501d7b16f84e1140afbb7b1a565eb68c402f50383a422fea4aac5ff9153dc41778969a10325e8de280d2c2391202930215750fd015e89bd79fdfd54e9387204764759426bd36b8285d5ea06676bae39d99a359451a992af43ac53640243d73b2e9e8e7a5435c3f43536966764eda4f59c5c1bbd3c61b8d9d505bfe0ab6c760186ae09dde713610e0107105ea584989b39280b4cadaa2e3cbe1b6fe972ee0e1c326a59465b8a04e601dc41c94f1d9ed561830287074237c198ac692c401657b023993b742785d9d0bad116196d7c948af8f12d69841bcddb86b5b1fa8ae0f6bed8fdfdc7ab3eb125e28f15797d2bf488db2627b5fa42c8a8fcb73b0b0aa32906e9e10bf826e41f897995f4dbb8145455116700ff0fe81358285259c120cc26aa2180ea55addd66e4cebb1e6768d80718b06bbf8b70a6b01f4d1d87ca78bfee845647f0de210e70721f332b437281504e10d441d92c9eca88b6eed346a95ace90bf2041da01323b0576041a51efe9dd3f676e2e61bcaef595e272c1400ad8951aeb47643d0caf18548f806cd3e4728e7dbda0b8b2c03419fb054d6dacc2db51670f29de5f459ba08ede764f93d46e0d659b950ae22342a375b435d2f75b8c74e9db66fd64c82cb09a0803dc5a96610951f66a52246a9e5f1963bb988c8b0c17ad825563e0df4dab0916774b17d27812f6c8d29bf525656f48c9e1aa9df5d6cc0de9598515ebe130c8ed2838debbdde7f2897ec5af5dd68fe91182d5bb51e1b04683fe8dfeb75c5806508175af83cab9e81bd0cc7c6f0f82c3091422182c1e9ddab506e2a0ce0f9b113486ce2802f229eb90225d2972238f3dc874349be5eaf8e83e6b2d2d63920ae0d0f2ccff9749860879469456f8e22a690aad7517773db24e3e39836a9fa6a5e7063078a40c9b8138c9046e9ebc7e3d2cbf6708752d25b155607d5c595d8ba8ce68f5838a54108460025ae0097f1df5a96070225d94534b5322967ba7902848029e67efed2698679b9281e8949e42019269d8090d5a85f78a1574a4e8969afdc62ed63a6e79efe8a6209f8a01132a6876925425ded4de1e886379d1559883572121114b0809f4586d79a208e4f394859b188602a8da4d74036b255c6ba84329907ed33b289b6273264768466b9b125d9f7f247ba1571eebec0f078f96d4dc9d96ce74a6498a90d44cc3e31ad3f560db93a328043fbfd74b3485d81b9c96761c82544031013b2f0df870271b52e65f2848e178fc92ea4d8f2c34c807b91c232163914018639c8679965c1ff1ed39a93208c496c5f14721ee8b365c6596ce592dfe4d1d5a62ba8b7b1cd270a45305f327701ef351f7d405f4d22abd1caa7e9415ad5f172a198fbdc53d77d4e814da45ac0ce73ee8882a539b60ed4032491ab76b79d4c500f358ae8ec43ef5c8ad6563f1ee5c6dbc7fca1a3b610768913af84b6dbb5926174faf73a8fbe6a3c1ddd056f8d747c12b91f98d3d46b21b8a933e63b386865a5232f484d574f0b8bc728725988a69dc8a0f75bcbeddc211757a1394437b39c1c268906992aa51e8be743670b005a84ca2b37f3b4559319a7af98c30be56ef21576a476ec5139081ce637e526bd426adc30b84826a88ed80eac47a4d3039c39b7a3e6972f4c32047684582a113513c819285989f64bd197b70397edcc7440d067db1d9eb0c84749ad15c71708997617e2f4895c15265c1c9edd584de8b2617f54c7d4b5b1a1202aff56af9398e0340ff159af3b0a341bbb5b8d8c5a600595ec3164b5951aa06c13dba37da39862dcae6d1b53bbaf1bd51bd56483feecbd0e0dd62fe6f7fa9bb8a4333335d23742cd45374edc9d2593ef1bda53a2c087fac1654f80e4ecd7ca1cbd3e8f0b6cfce3c6d7438d92846cc09307ed26250d93ea7e1923eabd3ecc80ff690d30a6733b50a2973b8a309bfc1c1682c9497307a4b5d8b669c42573398f2291bb3060a54efd0932bc5e59f37ee871ffca22b6f14d1c9d2eb596e35ece5180b1b0e6a378c897203a04060407c1891185fbe814472c9b0b4656be897730c32022290a908b1eada64a7423cd1be3d4996a98e0cdddffb0902c691ca524e9811741819d98f24483f9af6b8daad6829cc30399afeed93f16911ef78ebde899701381061a98ae8959b33242743ebb03522d3962c12fffed88e21bace3682c0700f4c06cc02dabf0518c9956fe6e1893a1d96a0f510155914bd8d515c869c149c300b1349a7505a1ab177ef186288852437ceab2230c85a1ad1d2eae124bc7cae96e58ae49da6aa386080a3ac4d39117d8f04e1d6d839616398b4d01b38e6819a325ede009484f7795d31c8e331694c7377fa2efd2ff07f008ac53fe539edea00ece61eaa735088f3ce478596084271eddac935b17e7489146c07bd7240ea6006735d00c532a2bb6802ce740991971a27817a1d4bb221ecd4fa29983cec1aadb3f2970c68c16201e26b040ff62dff48a45cd71de413cc0ac0c0722301b78b353aa01988bbb3743b8d74ba98523c970fd847010c75c4618a981849101e451908a2debb1500d8a6355f7b85ce4994f38cba7f3fb6bb6946252339f3bef2cb1ca2043d5d0ebaddc7cbf82c95849ae1734c73f1fe339298c98c8711681e3249f2cacb82e9517c56a2d56ac76cc27611120d8fe34b70a184ee84c3a8ec428716b5df3ea4ea4ff5323b297a845548ba4e7dff6f5714e410507d6399193220ff1951cf299ac1ee4bf843368a0ed89a2797d292343deb94aa37414b6e3e9957c084fdf45d8f621e60b330c96c6f940904b1e26ab07704b45961a854ad0e8ae82fb5312927cf6a67eba1d6dc9f7d669dce2507de945dc135122475e43f71978a6bcdff4b652a1db3d75e254c9c55a8ca30cde9aa68e66d2b0b4f8f86b6ab81229c4ed35afba6bbb8af9eaceb15a27c241523a6135f9e07a329d2c0d6fc21ad582e3cacece9683d5fa67fd00f8b3e3c1d95c530b6fe6731cfbb13a6bc5aa30a3a7927f951f6b6beca8706d76911ee2e68296dbfe18a40bd6e01726708bd8ec933c03304ab98d9541dff575d225525126ff86e9f63778851d83f99608255957aea1e78dc6d9458d3a6e403e8aadb31bffe406f4f4d87159a0f4a8eb2cb6d37c0caf74cc7affd7e025399138e096db77af668d6e77846d9743236b53b9e7c624f14d7e86706bcb1b1320875aabaa6444e04c068d43704e1f3395f7b0da8ee1eae0c700459d1694f1cd18187eee061a681d1eb3144115ac3696b13d06b9e70a47336aa17fd85d95dc378e01b337552365f14d106989bd9841ce63e0e86e90294b5c47c002c99d8d3324c901069f691f0fc199039dd335da07a9255f985b19da5837f8ec358aff0fd949eaa098d840f4df906a528c69760cb75befbfe703d08729a82bb7447b6cfcf8c59c6510b26daf42ee3a7772ca486bc6156cbaf38e9727f587600bc90cfcd105ac46bfbbfd899c363845c048b5479c95293252c5bbb928d0bf6dc61436c175135928e6089b01c1c7b3740fa4acf7e856bfa0961d9a21914997a871915c88a5a432a127bf41a139c5e418df67da55aeb90f645f431386ce7dd295b5207d496650235b9b18208fd992748cc20356e5ec30b34d9d2984287bc311bd2ca695e596486f0104c4dd899169dd1bce6215adc996c104b6016d51db18da729b0b293497935fdc49cdc934a52f6fb8c7d90cda79ce6ca26fd87016fadf8ac8dfb02dcd94fc48b2c02eb78ed48c3ad570a01111ad1e30d682f66b04b000a8b990e73df380ac7e15d7fc1b4a199306ecaf8a236ccf20c8ee347708eeadec32b2b52ab800201df78e62a6fd050b783165d6d03bca67061b8ebaf6ec7e247d7c06c5880db936bb5783dd8978054692e14140796c6aab3946cdf56d955453b5c13e52a1ed18409094d7c8b64ddb78421c567843c62dd474059f5b7e6c3e2d5394c70aea85ab3f62c4577c019adddd2434f41a1b4ca17d033ddb642b0cf37ccd0fef88bd7c453e68666e3cb1eacc75429175a386df435bc3eea7df381fa4193c06a3152bc74ed2d64315a199baaa12f8fb519f5072ca91e82d6051b1c0c43492b34da0df121f2ac3603322bcfa15e3e53f734de583e651acb8bc614dfe51335e3b39f207c9407b43793e9ba45eec97fdad839cd790e99c95fd8de7f3464fa142ab6c53142ef00ddf894281967516d5b8f829db658a5018485593067cccd24735945bcb7d41ab0239cc727e5a6f3e448f4e5cd4b7a2e6e5bed812fae08a1d033286ec434056a1cfc6c6cee7c4f867c1685117853c5bfb91407875db3480913e1b33d03c6c5d189135164661d6fbcd6f4ba9a4b2217b8c801ee5c9ab8d24ea54a7b39b5c7a074441fcf080e22daf8b4f660d900ed36175dc297352b433221e447e9bcd2eb5862e6ff50411a57a1845755004a6d84c16a8bb79c67d3022eb9501dae54d1491647720978e9dca9b122c439675ca126d3ddc163a0d314db8f23c1efff594480bc3a810ece130e234cc1c76a0f1c06ebe224e4d1160814a944caa4b29a1f214f69a18a60b779d7452292600ed2ef63075b3a2b516d7cb0499941892b26234ad83ad2e380e2d1605b0db7ba8511cf5950ab19d3def9c4857a6beba82911278a30e277320435a5a6485da259649b4b765d3b12204c04d03c33ee74b84ac32dd578100f9f25fbb6758dbca8ae63c1c8a404cded3c030ba59124e7823f79f202488b5ce1ae9fa863796a0471a9cad0bf97bf01a16e5cec62f8309d58d510cac17af30620c874a430b961a570d8ce861aefe6638f8a3782e3b64e6f24e888ce0688e1375ef8b2cd804dab10d3f9385f44ff86684c80329e730d31a326965d181bdb87cfff584af6ed88731817e06ad23740de557ca4ac3839bd112450d261f5a57e07b2753424e4e117090275b84e90acfa5f34f512dd7496e39afedb3db14962b945b0d8bd9548688b4b450c4a97a314b906da5b3705de8ae143eb7151b7632e5f04771a0b7c171e63e4e84b7e18b42cb038600258856ad4066bc205a83352facc7985bfca913037c98fa6f9f05c781df409865f08e0a5272a7ab3718623be2b8bdee3ab7cbb8dad6d4f8e26c184f19465916586ab6d4df40bad686a738b5089f6a5c8127de8711b82c0cd6ffd8f4158e35332c7431bb92a4b92dc75a024f11f632d5d40feb58a2095cd0e53683834b9dd9221c880042c4413c3996ba566700eede9d5bada86393e355f8515fc2e78b888a31e13c66a91c14252c9fb9321642f8ab9617386545ee6c7774e768a17e81503d0800df0f622a4331cc5c41d148ab9d17c326beb6beb3efb9bd0d40ad4c4beb4e8d17d50dea7485da2ec9f641da139560cffdaf35c4dc82ffcfc8b10080434abd5bbe7d6c279145422c6a8c4a4fc4ad1b4e10099507312c196508644182d8b47e97af3017f3bf6036f7cc2549ad50db9f376776a2edb7ea799896f4d02aea29745b9521d2384ce02982293684db6d1669edb01ec849ca6e7cd2c8bc674b7a0004396ce1ee72c71355bdbc64233adc089539246c0d37dfde36c2e44af82c0c522fd2693498ae0881c3cc1f0e9428c23f709ee705f2dc3b19cb0bf5ec74cc585e0e019b5b910b69779c732e1cb3dab2f51958c56aa9c4968276b224b2ca0f54f9d3995b4cfbd987e868859fb7f815c0cc81ca72a6d12f873608b0a0a1427376856e023edd09d734c54fdb13f22ffaf8141945f978deb5ff6a2512116e5e42401701092d0a4f083482b06ffcc995d93f9eb8b5e3f5f9a1d04e0b517fa192c5757fb8372e17aeaec789fc015f67e24337cc02377c2d4db3093e0940c8e640affbcad8b8311a943b53b2782ab8c33bf1159ad33682c8ebe5560e50340cb59b743294eafea054bf49e3e9c3874067a961eed4263092e95961472b90ad03d561557927f823817c3123d295b4b0191230cb7a47b4e83bf4e6406c4080b6d9371301458d39aa65d21a3c15667ee960f83834a164948bbf5b8f9642affcc9f7da27f8adf0272986b37934d09a112b7c675d6845bec4c00772d21fb2c27737c7d6a1d886ed8b74b7b0e3b3d1bd1bbb809fa9131d0407a11b3896694b968a30dd887a9e074a24a7a3255611d1dc2d0c78949d387f49e347c73ecaa50780963e09d9c46a7df71665f2ddf9c9ae6d34d813286eb21132be0f5c8b8d9e5441eb3d8624d7fa58c945c82eb1d7c06eb270135881cb4050efc2f35cfca1b062afb6c0c76415c451e0cc7244a180a418584aeb456e89d86fe29569f0c0aa0d1fe797fa1eb10ed869701577342630b3d626ab514b9e72cd450e27bf4bbb128386185aadd13089345ada62d03955d23f197aa490022710ae39e40428272d46f02e9529ea9c93d741716f9132103b028cc01dddc1efe90952636b65c4d7444221af6f506345d2d5f7cdccc281423269ee297df36150130a54744aeda30b9cc366dfe3f0b64411952c0fc3a0363ccb1265e06c57839722d840f1be99d95100355f4554b85e9b1e9b73f125d40c0aa730b6fe13eeb083c61c8d6ca96f2eb9d0677c791d0a34528339604b505aa6a67e7064f4cd7785074656bf0a6044061c82bef9d9c18fb19e2f6f488934fa6680ba00ab5f7c56c97a010460033871a6efe9121e0d6aded2f8de373f0890581c07b293cdc54ab3680873761dd2d8768181de65490007c248b9fbe6ef9b4928f397c9ef3892daacc5a7fb5266126ab3720c80c07971c4c1eacd189c539b4f24ae9d5f54f682f3a905407d6899c9269db2b26a9d4f64f691609b2d69a9b37d0e64642311b70b789bc58d239c9555ce7b8f50999b65e4aa5e89a68ff015ca7f2b61cc6a20e96c4bd7e23ed35ab217b7e32e067311fb8bdc0cb2d01d5d3b1f46bfbe596b1323a0d4aed9cfb3a7198d850d66bed711e5a69d1bb36c087655dcb5c127e497d5d0d4da3d8530663b38798367974d7e59c4962054f2822f008e77e0f3b46ce1572ab98eaa91cea35e885ccd849680a8c384bfa77f029819fc3117ccaf727997aa36f45e19ccc6724f7edae2142867a3ade69b873cc5fb9a9d239e648bf8a6723fb6f770f43ace35e1bee087ca384e5406d9257b0a6d094258c08d51e6027483072f193aa1915c24ee55251e766a81d0076a1926c0293d6a89364c34dac6ebb619204d16f0808e25fbeb8b95a13e20f8fe5786269106ae2d77228a7d23c7834d28a26161d61ddde78b89b2887b9913af3f2475ac73eda1f7fb0f4dcfac0888d518667f994b966323e45252d50b0ebaa8abe6e0690375e880a9b34e3796e65c9eb972dafaa66f4f00bc64cc60283a4ebe928b5b0d210e34780e412da9fa9804fa7def44710e0036536df1d0b820884e550d01ab9d85684e803cf58ac04197cc3f8e1d30b71ebe341ed00845c76c6323f34bca557039b9b09591f8d262386015b32d365d18b5c8346b0db337ad4cd1559a18e969ea8f0cdaa85e011d1225cea8243b01c521f7bca6729d4f39c308e686dfbd5fd4204023cf9aa9d3fef67d566c2368704700de3704d57b81d9bb05dcff79f42e9be72dfe1b90b726e4f80231d31130d608c8787358237a36911ec2e41dcd23a4ef124d219f70027fca7f19e09ce22d84dc07a5aeba2ee1852170cf07f26e1ef5a6eacea9e303fd0d07dd82fba8e9c3dcdd7613b3ef942516608a52c9d1d4af1c5384e350f8a73be9828a31faab3250d1045d3a5bf90e79461ec76a2cc490892199b488788a16ab61440d395bf073e309729ce7ee33b11258c7aeb5a544a98ad0bb7de2efa688a02521ec2ea1a728c8920e522f816abb7232c6cf9bc37acf23656217408a3425bf8aa104adb5ab462093ca330b468c42e75b1aca9423213f5583f61ee660ed71b7d8b88cbd1c94d33038ea64c4f64ab8b7941e954036de52382cf91b025b48a1351bd4f693c61089b7799031df86b52dd60d3f5ec0a9215ee2b4a86733249ef1cce4c8ae208bfce7d2416f7faf88a233b0df3c0a239e4a51fcbe0778c46a426555373f0f2d939a00c87ee7223285b26b679734715713a2694a244983646140d46b7f97dede2533e1d896ff58678821d139c422c070a2a03fe23d7f6577c39f1ef5b3c023bbe7abab3b75022f4e2c5c43f9a9b61f6fb2d9266035a76d0d3a943ec1d9797dab81e9723db60a6133ed32ea0b958d7f5b6d2f358d63e3b20b2a5f6bb9a5e123b1b6a5709c490b237bd044ac890bc7bc0d6454fc8b3623d94ff40922b68faad3a2095317cfdb2e51038d1d6958c0c5206cdc1a1b162a3200789aa949f7e2c89027872012b1dad49db1faa9c066c75d1c4bc25d44e4d4367070ca003f6f0435faeae6e05e413e0828ca80b3a4d248cf0713840876e45fce206196dee60395f1e2d67604dc862d94f2a0024c0177de1043bbb6bb36317162c7ba9252f4935085164728e3027511f76cc16bc7a89b4cd2f0d1d4cc5ee4c4e3093415da28855977173427b2c24161aa2f1e9e109b22ffe56f002e34b161f369126f12df6021a0ae370f385e15aac6f2611f3c12ad7811c7b7b1ee2038d41243826c2fde1e5b5895859ff92c38906dfa4b47709085334127eed2f458767a769a220a1acb9b67f36d2a856a5e585e3db0a9582a27001cb062c1e8c5cc378816d0ad6e2db4c72c3d6f306303bfe33f747f9dbdf37f2b1c4b511c64197e0e754365d067f098888d240b66413f27ac2ab0c165ca927ea8052645e7c106f4adfc70455b9af45248c1b0dec806b1b688c78de145c43839c57774cd53dfa5043de600ddd5d4ba568201b882bd713588f68031c968928c4db39a9e1078a332cdb67acc384462554d8ef900db293a2dd170951517afc66c20f2e27220cd4208755aadbe945d4824efa2adc3dff8bd7c515f68799e11d96a96abdb29ac0ee094f8ccfa582d6ba6eba45efc7f4911d55c38f47a450f745325c3eb96fa5d35a08d0e50552ffb436653bfe06c353d2e89c1975f1c814420b185d5eb26a17aa16b797e755b81c218bb6758af86da435ba9c9f64482caba29447df0f21ab1acce6c70caf23dfabcffb3fd8ad4926e8d996430260b422d9c1367860c4d66afb85c830fc57192043f2ceb0a1c1a6b9082e0ebfc08ee6173aac670738ee8c8270e071acf0dbed1b51db044cba70e03e0c85c183a96b8fc3b2c47a56c89a0bd0e3fcb36b71f8cbb8d695dab40662a94d002addb263dc73c63e13542d4c19fa9984541524029c66550d4e4aa63983b0056985b7e6f188ce2e4a7e7441b0dbc4003d9e2c4d2d4c250d66a0003dd87d8d1e0cd73cb546974f2a85e965e39cc6eb3f29c0b7ef9931a529af8f04c26d8e33eb45a1baef090a9171bbe68ed63a085cb07910b00a25607e81587172a424a27e0376a741d82beb365f8d8c5f0abcb980449f863e827fb037f566564a9acf0d3f409d35d9f6a49835312066a4f3dd6e622401736daec7ff621c2fb85ae5f29bfd45824f2683069d7b2201d920c44d9628e2c9003ea7cc8f8c0b8ba1592771b1a7be2302bebfc647c7c4058433ea0e1ca075c24915bd2fb98cd428b8788e169476b62b8def259103f9bccbf0970c3042cd216d0635cb56dfee919e1496c67bc380565144a261c89d7def925157910c9d740d8510fa138a73eb98d494bf185b1c998331ff139ea1b973e1434c64e004e41671370bc0057e3bac63a61e6117801b7d06cb74661ace9952dc766849e1c836cdc41363a547a157aae1937374af8c88e893b6396b86645f986e2c979a072b0717172bab25afb359374a1c0b52c3472a76b1e0a14d9193280aa2da5fae1413ae0dd0a6aad73a5af615d5b425898ac6af04881b5910182a18aad1f080fb4aeea635f046ad2b305417ffa8fef2969f5659608a20775a43e01bf70152b116cf4a22f2df0da501dbe053db1f481bf399eee88d0d877c0c513f7193c66c4b2ce1a6c42d36476804cddc680d234ea870ca1f710136a0acaabea28b90e4775cf852674daa4529c909525da54b9f57b6e3f44392b79a10365eff72f699935f5104e11510d0cee6b61635e7fcbc41e1c32f53a706eeda689b1a08ec005bdb416afce5cae76244a9e9c3ed20a04a68ad12789c6377d52a84acebc4370ac205672065a4aa01688a06e8179f4e0c262fd93946f3c5582b2fa4776b49b0750319b5df702c839a2f2c67196ee17786eeb8ebf77c6f84adfd88362ad4e1b76ad396352fda33696d7947fe8b277b4caba136d7992b0eec49b57625d6757fc2778c68b8dfb4f8ab945ddb303e15aa0708b4ff3147fea68be14f012f3dab6e854d5a6a96c76c1efe62fce17e21a6e4a41a239040f0eb916ef90cf5bebad4e7ecc639b1ba3f034c1e64a1b58ec41ebe7898040664db268cb23e6386035c72c51fee1f44d2bebfd4a7c12121c3abf7afb8aad16b26418ed7d941f7d3a94db07e69f9d13be04b342060c9387e439ce6d05599025ab71c4a5ac2313c36ca9eb19eab485d925821e159e79429f9da2886e233ef24e4fc5d515c2b4ca3aaf2893548e3fea4ceea10bb716c29e4a2a8c4cd00e9470b4f70a72810f7439c66235e5b818927441846ba5f66ab18af8da81417fec2548477fb0de8d7ab41855fe8be7793b8964ff97ce3ebc28099f2c8f868895e64682f0da2c8d867e15f8899a2f66eb3a61fa59890ca476e1ea03c564e6f5de8e8a2dc18c80280c88bf875b56d993ae5e37b5d46938ccd048f99861dcfa6f392abccc6bdf1d942c040e4f6fcac66cea2de16d09926b3c204779677e7ba12574abe1e85deee3ea1b5527eb6b726d07676d55d4009eda39575682cb1754ea9d25fd5e2b96b4f1ecaaaf162cff178628d3a8c23516ef7c9032a40d80c5c0df18ac4e7fbb1c92679bc935aca59969db12f60d40eb1b27a33d50bf462b25607e9e8643ca06077de8f575e6b438aa165449c218a120975ad62603985ec1e716853bb2a338939c01a909afb90af9cffbf3eb53d9d56d71f8f7b52214997dc57b2a05e28fc033226deeae6954f568b4ecb1424c298faef7c1fa1048de9b4ae00d3fa37348fab656b6c48b25437fef68ce4eabfe63a9f16f1ef240efe5482ea01de0e3666279b977d9ffdd0b9feeead8aede96f8c50f0e25315f00674983a023c01b435069d4d13c332661b235e5ba7812b439372545d218ef0c35cfbda93034f98b40c526ddaebb2fa95b53f88c8b664200b660fc7ce99c2e7516821a179038fd67e49ab083013cee3bc097ad239c8a4d0ecc316f58b5b02301101db711e9f7fcdf6591f00b93f08abe3f488a2e4e8d7dca6540f90ff543d0ab52465236b6914a1911f06d04c8d3a0a5384cad0a40e7f1163273ccc5f2ee78498d9f3ee65614ce19b835392725db8c334f4685b1f4f5ca50b9a08291487341707a5437a69035a4fca7ef32540c66360ccaec411f55581ea43bcb90c7abaf795b2a00091bd64166905391c3740efe97cc1336b6e9df89b5fdc2b26c9297967bf1bccefa2508af7420b6ab38d9a107b1da72856e8248c7a3958a2f6fc355a57e1dc58e79e12fdf7051e68449765b154a0eaa43f61d44db41ba8f83614291921b5cbbda1f0aa296956e296c163b67ea92152ec0e92f4d4c258ad0a1ab6388784c643a76f1dbb2aa78d7cfe8c4617180102cbecbf308fc34b77bfc7e9c4f8ec657d082b3985917cfc48ae437d644039ccaf283f03a5a28073f17ff06781bd6af8b5fa19efab6181492cdf83ad0ea20d121f02e8cc82a59ce2239b48ff51e28cf21e09d64fec40cb57a547197c0cce6a40e62ee05146a26fc0ddf382a92b2fac8d346aca491755916e8e706bfc4d64a6431e9628fcb6fa985865817eabc37b54445c9810f32104701c2e428ced105fb0996a3dc937a26bd068b7c1a0fd0498ffb0f700532309fc18df92eb0ba8be8a3ab1fd349a49df91f7ab6505dde193689ef218da6c24ff64512c3b94fcf78ca4388eaf93cab1b8430817fda0042fb2c522f5072bc68305ea094013f4e5f68b937e695af56cbd8e7f89f834721d21612bb35d09c64e480e5814f1c7e7086d1ec90cf230c5389226fac4ac4c1a8e3ec0d5ef9603703ad7ba4b7434e5a6d33ab339d67e07ecd3cb29b075f8f4b3c6f2da728ecba5968dd8501b2e50a5a088f91d17e6083f459113d8fd80925e56ef3354c6d81252bc54bc3ad161e496043acc51800a382e0ef9d4009ad7506c0bafa36e46f36bb873b4836b89e7e158261af7dd24e23b68a1e536f0d14ebe064d16d814cd1588b4beff63b377cf42ae01012f4e08a295ab033fd517710c447698b04cd43dfd0a29c6ef29a4e943f23c9fef2f16c91ad57569b76008fb590fcf0195b83e84204eaa83c9d2c7c68e3524d3cae859b377076aea8b66f99b672a03127c6a5ecc7e3a9e0266e5375014fe66e6c5af133e5b8386be726b91ca1c36af21ed8dddb8df79a2c2905424d58010f648c5c73b63d215517c97b8ec195fbc5f13d1aa9c12cf2c1e1dc31825ad3e559c6f6ea96ca593a3fb94eaa53a0bb8ab8047ca08305aa66e97af5784f4fb1de10a82009d7c72e74190c4634434a72083546e173ba824f7bd9ed8e82d0e324c85d205ba6594e66b9bb6d5cd1ab5f34cd655a8470da07e0c9f201f5f88709fc78c7ec8267bd0fff986fbb4b5ee99734a72f69c21819346e0dd14cb929094116d0162318db740917b870c0e894ed183a0ca8803f71a312d21bdb947f7b7a435426555797249968c76e8135308396c3a63f62adc62b3dd30693dd0278de2bdb0961b11c8aeefce6153653a2e0cbbea363ff5659b1295f08e270e860ec4a0607741026316ddabe9c0ba030a19ce8542a0692c6ca0dffd63ebe2c57ad6d777f72cb3a386c3a779445aed0b81a791c2ce56da1c128533a622bcf92c3b2654a9ec773b75663ce2e0a94fd86a4649d4c6fd1782ed47738bd46d1b0302d7645b8c2f5809feeef2de2fd1a2db8f69c7a05fadfd8e1176d1ab477b4c22442c2e8668a7d6aa13c7471fac5794499a9503e2f71a2d8d6e8aa831b000bb11218a125400ef580e4182ef30af966e3caf7546cb12fd0462b0c901c9302b585c0bd5016d3e5343dd4de2bc5cbe1271884a72d2e82b8f67f9ed6f6dc5ee8f16c1c1cb45021ef51c77e4688a206d00a3caa68b417f9b46adb579ff445de247db6f2b681fd14dd556cf057779d7594af477bd096a6b5235ce5a2d89e8a15c945a89874e219b699191a0bd4490b5de0fcfeb2eaae237865bc5ce6891a6496c4fe938e5542ce69367ccfbe20c9813b7c4490bddb5f0282e48d1286edf011f3801b7a901c79afd481fbd0485979bcc05dc27ef7bfbd40ec8d4285430e9aee23fe03ac7d7b44b19cfe83a9cb806ad83b0c003dcbbff3c3e9728af2a0b86e78d23d67b15002b6b893016c320a91dbea79ab7f16eab20841e796bccf89d6d0147e1dd835d46b354090683c943a0017348f2ec6e8a836312eff8cfe15c6c15fdf6f859a7ad00a3faf9f1640f6d724b00796e25c2ed6a0bd90e18d27501834dbb93893f8592ad9359feb4c8c5cd20940837b670c295be86ac1c2f2e1efd393926e8e6adcb9d0289b02723cc124346c8f4f01a49bff0eeeba2a88f9079e96f7a941368c7b0f87782e07a146a711789d44ca54f5d26251454d6fe79eb205fbf5e9414c86379e42227c62f49d48121fe56b8821ca40945f05ff37f90c0ea653e1d3ac4415d4600835d20c4e6bcb7c110df1b4c0f808843bc349ca12792a35e17d0251ca0cf59a9618005bddc83d370565a94b90dffe6664f9b3a3da9aa0832834d41c68f7afc936d278ad8bafd8ef9635beba4d510c744090c29dbd61df696ba08a80dbae8520951b4797db01126c81df2b63009376b2f49d4a44ebc4d02a1606b4c73b93918dd7405297eaea0baba33269723427f0424a8f7ced83927bd489d5067982f842300b5bacbbf15b8b1ee752c256f95e5f9174358a6f6114cc260991dee6e0e1dda957ca368ca92c7a2b64f12bb5c36ec8d006772c836cf0fcc88cab6d922c8c2d98580b03a37eae28b41fd8230b45b280f0ccde280a8324e430f7ff6c3820e027949edc4810b7fd173b407f76835e68176df80bad2517d6dc6f03de618f27223568995bc75a10a3839933b23766f822aed38c73e5928b2e38184a27a10fe0bcbf6a8e1c3d4ef63660cc01d2959e749b7aa418800c358224e1f8f530e886ff8d16f5bafd53a47e1c61cea0b630a2697e60122df0972600e69d3126fc809cbec5ec8665f0c9c504aed6eb69e93898c19e324baf83b02c1dda38a1c3872cf5609ec577e3039ac2e4674ea21428d08816a0ae10ac5a19f82c4a9d8504d0786e547bdf9e80c632590a2639955b65347f07ad8547446f58d4497c4d7987b98f28011e0d10dbbf6b37588adc8053d13c6a1773921d312ca887f142ad62a2a941e84ffab15113360a05800e9fc5b8cd01d4543dd013604a81a0e1ff15de31c099d5020318a01d436cf499957bd8badc59cf3e4d28c89fd6e5966ee3cbd09f8dfc39c80351e3845221bec942bb6487196f125f2c0f0dbb517048cf0237106448fe38b2dd1e5d9de552b22fa258811c2344fb79726055d7ef82402978d208222b43c4667bace2688d593d37accfc80dab2c66d8835cbc5ed270c1c49a382f503750ea27f7444092971b3494bf2c19888af030c74c7f86e5536e66b603e5e352e25c9f36191eb19de3d960b17a7b8f02496a6c1f2dc2d604edef995356a6b6d2f9759525d4ff75f3f0908e406ac6c42076b2e4ceacd61e931f91d712e6c2e89f28139f2d4297e186032587e5cfd602f1eb0a6a0004a2f29b7aba8c74e20ed940c10348fe46477ba29487b9967282779bbbd35488c75584da34867fc9de40d2f7209633fd17941e2ea3de6bd868c88fe09bbfcc9680f2a9a9568b88ec985f8089d3cd4bc2a7d403532f076805784f66e09f7846401598204219f7a4c39a643c890d698fe17eb9c9a7426c3321337c6ddbcd94bfb60cfdcff2740099f34750a4284539002ead525d9f2cf39ee9ad1c9a046691a2c556689138af781e73723d05033c64b64938ff8737711c70db487c699ce8d6a132bf691b15a6e3f87abacdb9ab533997f491313e894c4f0182e90ee7813530668587e4fc0c3791a1b30e06fd92852ba6194cc206a2ddc60c8414bf6643883a22f7b1c923a28c59d8aa9d6c5afb90588e4d6f6485ff3e645ec00660c58f28706f6e35bcb3ff2ef86c3cb026f59cd338c930c6205ebe84dc3d2fbecf0045b38a84013cc7d4e8ed97241125793a988e866fa269c4069d1be1448142fc3690e4da6a575feddd085b4b7d299dfa523e64f2a9453a0d69a9811a08e6ea20836fa9506a5b110d185292a9aed19a2b211ae58851c372621017adce62d61d4d06ce51347bef7313b0c940155127442342ad960ae0362614dca86fa67822f4d1faedd116f043993e242b733aa3d6500f47bc6084a5f70f42b61de33e3c6962b70a46d213ce7a120e2129595efa2213688d5a4bf92cac650e22400949b23a1c7051aca80d11cebbf644ac5cb829304f471696d3c602b51d80fa573f2c1d3e39d2b9ec5d9d908dedb22de336b1b0a46203edb9349d3df667e882458550f0186ade166904cf75e086ed72db32ab6862cfc37ec092ad39356c58bfc8e986fa77a0b8358f507504298f778bcda24fa6de19fa07aaea6c47294ce24eb766e590902366ca2b94a81a4673ed541c12cbc8c57e230a87cfb020618ade3f5b4f6e3c3519ce201788f918bc40451a1486daf133a04768517b84bb9dfdffa0659e0f4d6bc5b54b53b00e4acbf9a282f30d062e3a32f4da897ad91c157240096211ca943f1d2464cda996637b5a36d946281438046ed9b11ebd25b9cf3fa4bfa236e4f5fba6c91aa442a901711d83affbb0523c819646aa5da5406f500acc2665150f991f5ecd294d3d630c3252605c620f3d88f4fa15a827c2411500ba1c21027de8526708a4202233384e5531278380a57bc6691b03b0a8f012798433f12bd204b36039c5b36de056409366aea0a02d8eca4540c33e37213140fe9400bc54acc456896140e07e6271fe355f282cfb8c4d1820f7ec0d00db06826297429a7d74f52ba2c28961ee898be57fa83134e8bc424b9083bf9f315c0118c66ace3be5651c5866bd949dcc24257fb5b161e840aae495674634c5ea7589e62e935f44aa86bb894576591d2f78c7d77d6d4234f581334b02724add0e5b5bc820df2873f250f9ca2c5d4cb255336c56b4e90de6235e762d42d65066c57288901830c283d263e8a721392ce65d2eb8785c0b7a61e6a1bf29ce6756e93eabfa16f2e6a4ffb6725a526fa3ea88fb0f4b222701a9b0a8fbfc85469a76fb4d1a9af20afbe1caa293556db8303df1b555e2064467eb32189b47a22534d5ca66027981dd94e65c6963236f0519c66b54bdfb675d012dc1a8d18e024dccf579ba8a46ed3f095560bde44b910a0940866a285dad2c5e5a53975916f99ac2e4dc617e2cdb5aa61c4b650a348cb251b8205cb7a3868b1a92c4d321e45876ee74f29dec89fd04a1b225647ef697a4e21cb6541c634abd4ed2938e7077dc217ffe82ac9fcdb91813c5a609ffe7604cacc4e17747b726aa3946bed01b5bde59f60bf30060965d9cc38c4dc8587f8e3462e7bd296f9193e790a1efae47ddfdf6fdd77845fad9183324804fc14e50139cb51d783ca2c4e530f69e9953569ef1138f8e7ce30b931061aed94a9101aae4ac82c4b707a4d399f349e532dd3fe131c7d34d8119ebd33e205e767b0b62b9f20ca05a648d3cd1cb6a07f0c1e1937bc0cbcfba88bc2917cab7ba74e2adc93712d9e5f4fcb3aad09c4e41a8a0300424d98d182bf750577dbd03abfa603a2a3095e9d1f25d7a3dcf6e6e3f86c23ac4f508702d330f44fc5cf6dcbe217aaf8b7d91aa33ba2a46d14c1b24cc3884535c8dfae3a3d5931a9443e1878267d8b5b752171209978fcedbb460a8440cd7309757e070458267b8c1ae61155b98d4b5d41a0549982bb2bd149c54c9b141188dec7727d8d755cf55dfb38b8fe3adb062f085e73a1c16d66f50d617f62f621c41abc19ec23049068170e9a5c1d687779c2abfc834fa957262676070b9377c1f6314971f0fe986d1cb8ae059fcf3c0262d6e39e2c75b41549a9dd93e17f7a3f56dac41a56d9926ffa53d0512d93d4bf47312d825c458ddd206936012b034c8d93ce155bf53058b7324b73e8040ddf834709618336d9b8cec69b0d5ea88fb0d6e15c933dda80594dc9e3e8b4a9a101b19e0113cff50074b449a6eeee907e458e984a3e4ba7ed415542d9369d7a8b63ff228d292eaccc21c33260573152538bad52f7ce146a9d752c528bad3aca554ba3e80b280aecca8c89dd6c52befad5048bb97172d70aa12d6956f19b12cc273a04601f9d8bff822f3198151213c9f88668cfd28d1ba2912ffd5bb07a0401d80241d8993281c17bbe0f42f403660e67b85521b01adb8ac596a04c54c3e859017a033b550680972cf00d37c5943bd2738cd565f5c2056c884062f95aad356a5afa6698ef5c2c7a761ca8ded9a82d8533798fdeb8ae4943ab5e4b7ec14bee798abc79de7976bf242658ee3fe52248f28e6bcb25a5950f6b19389e4dbe7107d3e0b967d895058fd2c6cc80f5db1db2a692d8423e7ec8436f18bbfb74e5036e8333cbac1cbafc14bdc80d2631494fb9233e6df30f7802a58c68e92bb596d8bab39e290cd5dff48b126fd80e51ee56d57f3c0795de292672eb943964e20d64083e5ae326aeb517ed83d173b33733a8e0cbd73a6fcfc1f2033450d9f3e6b5d06f64905a55ca187ccb7b134b240845ff332d638c21fd3c525e4386c621de426e28d6623d8b15c340c1ab40a0629765aeb92951780a01a05be47e758508326c8c4a129a622ca0a5fae786103cda1982344bb5a753404dfe3a932e16fe1964b02980f19918e0153b3b51cdd360a50879522156c0acd7ead39f7d1d7147f9fb8867b0ebfd0b503201b05ee996a8a36bb30e2aed30e7ee153b080a372afd2d3650d2ae810310ca9c6606577d9889bb268705c1b18487cae1db7643863c7f6b38845b076f153a2e7127263be5fdba5edbd5d0d2fd4057b2df11d9de141adff8c599afadf32a8d40f6364a921d0ddb4863f37afe9a2d3f37797ee6023d38b53f7da3a6237001a6e2d12918504a1b81cc65ac6151476958ce6ed8842317e1b627ea205c32caca11be6102c9977a316222e562a1491793df1442cde7bacffc9e29f9f04bc01718f69d5c728d7db3c81691fa0ef2f7876ae9112e8700997981533c80f06d88c69a45f25d546ef597932db8bc57797490177a4cfd617f734431f93bfef9ad11fadba5bb21afdb5e0738a1b3aa5632819ed887317290c39519db83d0a70f6608aa3e623e9d5e4ee0ef38ba99c8b947ca20675482d17ff4d7c996d54a32697364154a4f87021860a32fb3493278a2becb7a5509e39d0919f97f32ee877a9c06ac67dd2325a6a96b496df3421261d45d88d0169852a6e10a41725b84280fd9d2190594a568db8b6568130bfa562c460b96d092810f19c8859d6fdaa6aae36adc98e6c158b7e3ffd1a9c4683ba0b8c24dd4a031855e35da6b8083074c3248a94d1ab11dbce2369ca8da4790b7e2641a7fbcf67d94037d6ab9eea6c25fb3a7c496a2888c757302b1eec37a3da286670cf6e858000b4b199a9ca1015aa92b372931f1455a04e2e7c5a5b6e7fdb40e032751b252d754b5f31498f3b008841b0ce3df834136d5303102bcca5c223dfd245c88bf6cfaee2fba3963f2be2923cbbccce3fc2ca25d86e37ebf88ade5682b804e8dce6c04c8703bc164a81bea228d6e77791c7a9c7c9d4bd9e78073013b52a45efc3fd21a72642e52f1171ec35cf9c0aa769b29de06328c6538fa0a2bfbf966fbbd2d782c2f52cf3863b5e907a5fbf4f33f172a9fd0df238fb44347f91287871de83f50b44202e628c853519762ec91264bf22c2f24cd9eb1f7f4f9709593ef620cf07d35a74994bb82386cfa3204b901a5d86dd2ac1d2b0d52d9b58be5341531f567f8a9b11e3af0943260c3e45994d2a836348a3c372b3b31ef3022a10560b93653f1d1947c30f9dbb998fc510b356ca864ad8fd713f622d95a0cb91491a4bd181c1b16a109d7d561879773b9f3def0806057000c17523c56a00dde9f6a32e62f6926fd4a06ebda429024c1941f3655097273710e431b4f6b1e156ad4cf1e3bdd174aa615a37b089e904a5699e67a0fe4982514bd3d477d69b0b30d4ce58fe881f5a9b1372e574066f8e53110f8a9090f1b49784e675e99cc59012a3e8cdfd22a77b9517b654e818abf618c20f847080ad2295127258e2653014a11ac9c6c75aaafbfffe1052cb80464a9eb1aa21ab0c04ef6701c4fd17b1ab19189c2f18d361dc3269061241b20cbd5e28c0c0a5f44901266648be9c92c77c891504d24b318aec7cb7d82d83a218a0b3b28127fb5dd0d8e24b4d5feb01e2d37bf587faafe4c7b5cbe61bedced10f72a612b34bda66421c24b436d84ded94859e26b6294a76336e9518326159125f1c23201c56cdf6a44c8cee3e728cb62b0d3f025d7d77244e5780cd859b0036ba9cae051b71458b2a7e3689e9293c265b77f1e395fe20ca5ce7885ae78bcc1d740227556a40f59d827b9aae58b95d79e03a8b113180e49b83cd181a86b62f8bd66205768751a8dfd5b86673e156a31db9d05d922d5083dd79beea8a0122c36c9f223702d41ab3adda3f180c4e85a169ecb099df12f58d7fadc2efe496f433915f64d1b10b800c86199975cb4d40168e81c59eceb2f70f050413fe0ddabafc78732c1099e8b6ae2c762cdcc2d70388433801ee291532418689b93a8598d32bf5daa6d797b2263c8a2bafc4574d0af2a0a461dd2b89375539378136a8ccc504d755b44fa5aa01db125bc5c71a683dddb3632868ab54ca7ad76b8a36d3ded59d271732ba133772a5d298c6382f4a9667c8b7c860148172cc4ec0f7cad6a9151464fcfb8c36450e8d184f12be4b9046e095fd0562a9645fafe023a94000d37b638f3391aa1a0666a3bbdb336592012a312a52fdcb315ca31aeb0a88a4ea05c36c6bc5125d902751562a1ec915bc65ab576527d3ee5b11dccca9d894069052fbd3be127b4d2b4325072a0ddda0af05d503126a99b9f667fdd60e48761175cba5d6cb1561e60a4165fb65c8e4bff158a1cdeefb27a7247e75eb2cbb5da40baf6c1db2348adf8f3f20bda11d4bf486897c124c84c2f6a8d9765bc987c6861a55e8c5ac884839129b6ceae1563d8b02b4539e2d9200bca42ac8d0eee3068851e2523e9d9f91b17779bbabe6359b78ed9e6e9ad52dc827286db836606462f02b5893133020ba66a7f9e6b7fac7ac2509c901308c0ece0933e1b996404dc6548c5c7311e348eb923dcaed816e70abd8106d6e2b93e0222a7d1499a0bbc1788805a39dba675d51f8842e41af5c1095e0f5219aa36eec2b5d4a2766ff5ce5614c2bd220717dd567fed4ff9326bbabcfede64f0da9bbffa97f15e193963e004bd8959121b4fa5cc1c33294bd05768c452937c71c5b6bbcb97df967927d4a8a142c05f898190c0621d1ce0332724748944539655299fb144aff92769ec25ae5fb7854d006812e2a87c70bd36624a05c3623f812787801ec096d2531d568a1b07aa346502f6ae359e72915b8422ffd46f37606c8d0edba4476a0414c2804cd60cabd8ca65ac37f9ebcd6c1f19d4b01b0e8a17fedda94fc00d6c11c9f40c651f9fe782b2bb87b7da28441e8ff92c9a01d981abfdcf2865466bc3fd4be5a4006b209c6e8e1ebf33410261735d74d832336d15579a0ca7a3d6d9877a5f8261eafe1aaf02911b2b2bc8ba66a41553855b18f70b4d2be3418673d7ca89c0b417d20c8a9d649cf8d9fe06f2846b344228d9d36e8a368cc942847bf2008662dfe73f564856be7e9bd00987e4563b5a18709941ca6d8aa320cab53a08dec1be78059384854d0fb8e167a396170a52440ea9f4dd4b409c554e0ec6af5ed09220ea2776fab855c959e268309ebcda16ac04af626c90052a116b492c7b8d8d16e9705ad63dc4b803c0849b50768a0a34096bd2aac0224ca5a4eae3a40394b53088e0bec02f23adc2da4b21d9ed4a5846d8b5f6928d6013ec2b5e4129fc010544c99e255b652cbc7bf2d2d8ff9eba5e4d82d1e42a7b1a736d6ddce1acabbad5eb96c1a4b4448b12fe77d136292258b6b09c2cf1260f05634b8ee1a785ad61731005aa58369951f48cc74b2bb470ee8c60fc402fef4b41e858733ce1256f23f72b2140f58f2e1ce32df18d3551fab69a92057897298f4c4a26786309f92810647e7dc20e81ed3c0e01e2f284368931f8872f3cd7939f04eb64097249ae4ae3853b2f17310602f22ee2794831f87dbd4050b0aa6a84ffa758a8dc1e651cc2d68636c7c923ac6bf4613dc7b30b0f6d8dc4f972f321506d8b067240c1c9218e9d946556b3fb41eca1af30535188862705cfaa75b3bbdcd9fec06b12ee4fc623b67e60facc73e9e44f42fc9d2d86bfc7a16fd1055b65f481022a00fc9357e9d90dcc19c191a78361b995da7aa623cb966f2db9d21d91301df508e5a12cc531864c1085acbdfac0a533cbea2979dcfbf7390629aeae4d6eba5b261ae017585a3dadd59b002e7aeb8c3dd8a5180381acbc51e7d033e16b93676c93d11a004a4d44430964ab923918cd3d4888730f188c3c1809244186e14f988fbec3cfdfcc3d1660ca562d3058298b246b42d58e263a36bccbc433a47f92c85c6e33c0b605d1a21472eaa85734e1b4a12ce80e680e6437874fff3630b647044d7739635536e7f1a2b4263d144b3ba34d55b34cd4e1e980604f28cd2d84f27ee63fdaa2c83c6028a3e97fde2ac3e4c56525345401791782e6778ccbe62ef929b177a10b8070e4516b2844edd4ecc25bc5f4bfd12587a397f6a8b28fd78023a52fc2ca80a8e5f011db29adcd42e7b2c91e9dfde3345080e0ba04d946acc664b1817938244f311755f7c9a6b35afc653a35cf59b147c85ba6187474515c1fb312108933f7abb16eca5a5d9e500868d8eda7b5d1276d4fac6d74818b39160e3e0c4a755244f4e1215c60639f606c31ade82689854e32d3d3b50f1090ef56a502ecb9e42a37be4bdfa47459a10156ef17257c823430c3d2f049b35aae3a9ca598675e8f0baa986289ad7f84300e5dac1338d6549227e5419c8ef2283815f8abd02f365f5df67d12d58b6bf5e90bcced2636140dcd5940baf37e65a3c0ac840cbb206b5f53ab28f6a8b3cd0dc42913560427ea1e63610555bb7b3263ecb1014d56b681d4976c448655520f563dd36fdaa9646fe0b0255e58e1ad323d864d8782fd740e18f8c84a37ad33d13946a9d5d97663d9fa6b66001960afde2ce3d764097daabb4e55252092eca815ba29a49a4039c0cbdaa9f708b94cce305cd400fbf5944463cde0bf463d0eb5e899bcd3a6e611c2c4cdbf6713beaf891d8108e737f511819d987c924399b812c9976d6294df4f80ee000edac5fcad09b8969d1eef8e5c21a9c5d812d0e1b3e2554323aa2011587d3f27efe3d9513c1bb4357691200c6c29ab7105be615b4469fd7d23866c1598a4c853549958c41c5bd6a2ae8d34119573f250501cdf6ef43ea321b520085c5307f3ef24ff964c6634182ab195346abbb14bd5fbfeb2e0833f566fe686277c2c21853bd41487570829e7be66877e56a9fc30c3b14dda52eb411696dcd9aa8773a532dd45b60ad662a203b38e4abb897dfe21d8ff4c397b158222837de32300c1c57c9383e83a5fafc6ab8828b8c2aeb7de0b5b80e1fc12585d407d49e1afc515a7cf7e2d68f5243d8d823a41d8890d25976e1c30d0bdeafc5c0501e8057216c6b507a0013a494f0a8244b69418ff7513f2ac5b46ce54031f8f1688bfe29aa4033ce622475c3d5c951e98dd7efdb7c1dd2ccaf0b36c2dd303ff5fdb0ff8b7d0377fdbe434abdb024b68fd7d43ac60db4ad9e20ec0537fbda8c94160fc41b827ece18a8d4461e0ea2f43bdcc2bd6858fd6092b8e872acfcefffa3888c07618bb08a8a4d863e570120ccffe13d3ea28cd6ccbffc35face5f36ff09b41f23d94f3f2f3b1c52f00320a830dc3f1e786bb13471786531d984a0a42874ea251e7c42166824af7dc875825c512131fa9b38f9dcadd34aa29b8904bf8a7815c611d84132cb86ae0c73cfda49940fe49a3b5561c3a1f761d4a8669942785ea5b89655680fb59bed7059a2d0b9d83f040ab7762ef3c2251f07d542aecb34deb59ceedfd20c912f3c0c6923ef60770f6f21a479b3857d6e5f1c46121e20f5a1070c2f9034f99716462836de03da72d50580db7bcd78439887089064d1484e24e19a5fa3e5233c67a1cf75b3ce3d8ce58a15497fb65cd1deafeab699b25efa5b41b51a6305ef5df02c39ff3ea20e4b03f8fedc9812355158a1cf3082d05f1b9b15e29930a494a2f5dcfdad07ac48cb89d87066a6ee8d692c561ea8ba8b8702d6ba1ae70212b29142567b1daf014bba12ab9f8c70ffcb8a567a1d3ec485d5600584d560f328fc1451d6e71814bad8f79d0667c59b66c08e076958a325305fad18ae5d25eaf8060c7fec74079ed1246b228acd7db4e21eb8030beee08d892d8d013eb343b0a26da97d4a88d61f4530d6e4c80aea019fe7e2ced930b62e61590f9618bb798883c6f1aceb1db0abb4516c846753eb04acd789546aa26db8438892a160ec67077feeab2a643a50fc2b72cbb8b70c5de50d0d1e189a8e04b0a8d1f4dcfb0f335a4630c13cac9c46070bf7830c946cbc2074ba061dcb31ac266e709bdea96743061ed832b1abcb1de297094c95e5e0c0ee70cea831d6e17ca292b4e8e18c8b1d42748d916e486c8592c0a815b9f0d6392ed12ed6996fcfb51562dd1f3924f6e590ee107da3060e0c6dba750091c7c5a07898437b805a02683f958c3978d22363d17debd9c650a1b565ec4502f645f7de49b8e63aa1f03c65682b0a06638322593b8e81a47f87ada565cdde616851a41da31c8428313b436a035642c8bfda47ec239fb0a0d9c50d21293984d0c843c8b30483af8ef9e7906c875040e346ef056ae2329df70980497456a4b1f2add065ccc91ab2f219d453fd904abb35f20c67bc15b660d23ea44af320a9f605f6d642b4c21705d949981bee344df50df330d0e952a28e5a9c68e5bd27ceb269c104b2cf2fa18730ff10efea04b5c80ec82647e7c0109ac34e9902be5e5c5a8512f64b689e4310213eedc7d54bdb879d064c7481d48988c562365991d8b9bc644cce0f0bbd4922df3149c8ca5f8c3457baae2bd951274808bb66c6511eacd4464fa88c70a7f76b612d84f239ab87a173efabcb1fec251745ae8ae63da1a514c03cadd88e621f30ebf4d3d27940bf1e778c04edb3354ac2e5a30f66280048d1f259d0115f561e5903edf6da9011a23fd06ff0ff5db4b40e7c2d1b8996d4df38d9a4794870993d1fa3b8cb76cb6da4da0878fd6bee7468c421ac0f20b1abcac4e3aac67f6eca943e358bb4c4e69408b632e1a3233c04e52a8647618f33a0196b094bf21cf1211183135b9517e96c191b69e5965cdff98508a3b355299f54de5b1978382c4de4a10852405143493738b782466a166fa8659c0b4bc7904e06fa9e8150aa032bd07f700e1dfdae5a969da52c9cecc5957219729c02817516f1703162678ec9b068121f601fcf0fd59187ecc1249f157f3606888383351092f5ba2a7b0cf0bbaadf5da6f747646466f471993e492f29785960bb6035a84c2b5edd83196ed465037c7b4ad9d2208585860b7a430556d570cc4d25a1953def71a7c79e300c84705071e75eebcdbe1c0b99eb4f557bbee3ff7eb7d5cb5d2c46fbb5a45ae0853097f34da4bb7d59356c03dd50afed25569c1004838b0ab688f6bd8738c74b5b3f98a44891c67e0fc6f156661dab18b7813fe3e5d3363315cdede19fe8bd404f202a2881b28e39fa0fc7cac0e213a18e939755061d2271e457449336f58cc02d2d188fe28db7600ccb9cfca67528bf445ee90b65203309ff58908ceaf893ae620562da421646501ba0eb5c1274cd3d4c6097390e5e2f5b0c3fcaeba69a6f1b3ebac662accd96e7d307fcdfdd299ca57cf63a5295b334b1c34fccbf72a4e12e84386873742dae0969d109a9f42e65357f92ca5248b9a8428afc922642573b1a73d450e86d75d37b0ce9fe3aa9f9ed831de56679107276091e6eb981db267133312522c3a9cd0f38d992e1b57d630602130f0237a05663636d3b4eacaa64d2fd6911da64a4f63b6014c94c6edb041a2e0b981a5f1ccc10b3531c7b72ee44e8cecc7797b3c4ed88260f911809ab8709da32e6687d1c56bf2f7bc3c1ac780c6c653c2f1ea264f9b8ec9c4c78567311e1e1b9307fb756173ca1e45c088f27b5c20c3c65bd7ebcfa83de2ee63daf157be8f1fd721f684d2139bc435ab341e11ba85fb9e23b1be40b315c4849d790bab03c631169b3a141f1c75e8dbebd8ed7c55fa7223380d40750fa038c72999876d9fd5b9226f3dc6cab9bef578c6a2667db564634cbb0dddbe293dd6e8fa077054cdf0a4e87674f33872233a96910ed3ed72f0b418f377a9ca75bc0d0e721e87fc5d881b0c203591c6be10c351aa447e431c756c1fe80667fce1e939c888794d75984b11cd853034723df193b8fe42c3bb8d43db2c3560fef5a2a20a847ea614e21faf5bf0736a8a66c8c0e2589d1f4c86e19a61acb240667ae23ac9393b22d2550ade5e154886edf3146fc44e112a303dfc03de60ee33546a8fe53ce16c3734a14b596bdc97d393404d3a242e218e340eb10dd9a1691611a3e1e26562db27ac7e6af081a9874246cad633ef4e3462b64c2c1083b45ee275e3c86469dfc96e95a4f0cd8bd0f8246bba7e123bb258bf2eaa95cacb41fa11e08d05aef4748917d8d6818e22494e7d89000dddac2320ee670815fb68fdfdddc288580d4c121e3f675d6bbf651d52587ba9e9a7e9f4a4e4602a73a62671d651d52496e69373eaf0f5b4f40ff52a261be340c525ae1b8f09a9c13561c4af684499fad8280d586e9a867db0fdd72fa0c7b8793866b6ba754393c1a6b1c5fcda18d84891e238e437884a639a1f96b6342781347a2ef58494587f1859b7d4743d1c6e2ae5484b7ebf390671c79dd7f2e4812e76f03799eb16df389e39cd13a4fdb2c1d98a529d1746df0652b9e9bb2f3abb003765bc2611f0bb7e4949d0561a4dcce385a4ca4821745e72be1aa2f949c561976e4ab8bedab8955a50b5d57ecb9dbb4214be728e91dccef87d5fd8fe44e843e1e7bd489c6369d768d864b9c26d3e82001d494ad72013a9987b8a1e2f8a0e86a9c1156e408dd625b195f8d960402808da90539e0a67cac52bb893460364e843f01c2f70c2677bbf906854ac8749a023e4469d6abf4597d04cbac2f884cb2b20a9af1f79aa07408b45069c7cf3a618e8feb452af252bed8e50a8ec263b76466fb43498cbd97df406714a571e992d8c4c48e2448180ca1b212834f178c9e3f046dc42fb206e79b7fa81e1851e9ce4acbfea8408d59ad301e57d640570f5c020ca0e0b2cd3683c37298b116df03404ab975c8edb9da4c9090079d99bbac08044b8ddd1db9b69bf6e7120621606f68103adda65e182e515e213c18101197380bdcbe0e5c61af429616a6146ddb2c704a230aceceecdc604f8a2102b19a6affa409a9520e2d019e6df3cf04a1cf838c119fcd3763bee386de4bf134e50225b2f598a4c98af53d3c19a574474a908649c202a16fbd403ad5740b934c20111115b5212525535178af6ca65f8dbd364a3825bf1fc46055646a1738bcd6f4468e3b51ea14b2baed05431982718a4157742058743ac4c928e256d984f54d01f41ff33f3a4cd71d15f381c71ec2b2ac212008d52d5665e54aaff487d24a9a9bc2f633ceb7a1098f4f77856775a6d3b9fa70e7924eb121ab64148514989b43d91aaf046e0965ea05b1fb8979c242c08001f5de1c015a46ed937fd36f711f134b0b535ef00d03a2b30a72a97fbe5c4f8ae85419a49fdf457e8b96ebcddbb1a78b46a046e720e27ac17b92a56ff665f754012ea16d9c2e51c5ab489a73fdf161ae5465527191ba4b84741768082a1d6212a4444fc87e78bfa2d5f8519d8c2c8c9ffc3499885721ee5a01be2a209e98ee9b55f3ce7f09142f0eb1b642c7b3e787464d76f4f1c375a14a7f8e3ebc1fd73621cb72896db24bfa538e46a86829a8731036e70fe71f030c906e5e5ebfa467c7f9cfcf5752eea3c389a9e80465963b911e4384a415c9161996e19e7eb5f59b85acece1160f7822133550fd23ce35d0177b7e6219059b18e081a6a64b7fa87ffd1335f3361c9dd4ce0a4dbded70529cc87c6b47651329e600a1a034e1edecee507d71b7ec28e7875cfc213fca0447c70d872f40603d59eb2675f66eda713d57db0eedc5be915c8231d4012c04ddc2236e40c750c958a89678f70bb23de39a2d019eb085948ef3ace9de099de356c9dc8906ed3f1b49e99fdc17eb0997d35cb20192c1c607db77f5eaeab5237be2e5af4f55b994245dc0b29d1009db45fe6b410b29653b7eaa0142496029fe461f94555e3d904e50c2a2e3f4a2a6818a90b9dd6f0c40359883581666bda98097005fa0d8b181d4c009fd8c62f044399998fbb8bba11914de03c8d9bdea99f7edbcc330e75406f63ccd5f93bda06c75879b2f15f024255dce8bce8cbab5777ee56695121d905c84a27e4c96123643eae711ea3c9b8c224e452705521347554179c3188871073d054a7d86ea856a0ca8996da028d232b3ee199dca621717dd616634d4eec7deb8f9de266141007827c461a417586d96f30bea432d7d990a0f14ffbcfa0ff07b89c626676c53c7b7c7afeba46b34ce2333ed375052a79db8a4bba708973f1235ad616028eb316798b37ae0f0059866cc78e1d088660c5ea8cc75dcb6b5ae3370816671e50507e27354901bb83b508c097aae63b97f9804b481e35d4afc2ab680090710c476ecb069c231813a07199e732de6c8135a94e3b31a184fee08f110fda2a18db2312e476e8d9f57ae875f6e5fa37846d5f37f27143b63ba9b80078030c66241f5679457bc2f4fdffd397e582233343cd4e18b397c0d2bdd7245621eff96ca79611f36e880373a77554819f18087ed9a22f0c0ede91c09c5a30194e4a5f1a26671c601c4542d7dd93b25f4360d0bdbca693cb871879ff9cdd3a3c75447b5ae84af4a90209af1e8e607714d73762c9f0078f660f89f5fd4cb6be2ac639d1d4d2e5f34236c708d24f8fd77d9593504fd6d4f14d97b26ea9c1cdbdca043b1a573641d215db5fd84b7df5d88ee75f9107eff42493e416e3f7c98615fec5b555478e1ec991551916a901f5a6e53242cb3eff092a955b51451bc22601e0b4eb40fa36fde10717d695a63a77329603efc6785ba30e95890c06675702ed81622e951de6169ba67d3e2bb9183e45bc120589f048ab8731feeea3dc11bf51ed119499b22b307731684d5dd1831f2c6f4a83135e7ab0d45402ede611448ff832e85b7dd5af8a2c12232df2c230ed32c1748fbf8c30133373d9eaeee94a321334c8934a7adc318b675529154eca37e0a1fbc833b24098a6064dc2a2d786511848a08b821988526cb006bdcd029d25c822f436e60c662250e01cb30948f28d3dcd99e83d75963f4b774125a31bc5e08de298d57eeded98f071ff489f63435021934d97225bf586c10a1280c7c3ef3a279e4250044e8b6ecb76b6d26d4954a1ed7247b76cfa6ecf99ff0ac9336f74679e9a34496da6189f5a66f11e1854000f3b119748428c45d747f3d734065b1a6519a42d47cc7fc4c89645d6821935601512062f268a4b958e33378959320f5a1dccf43c1a73b069e89923e21133393d95b34b491c79a5dcb1bda9c869c879655ee4cb269ad1933494ad0c7e3b04688ca6691bddef467857aa612b0baf798644d9bf129e510b7e828fa2b20a6aa8b1f6234f5fa072f9907ee735540a662ad4931483461fe82cd408ef6d20927b0e7bbf821e10cb81837627624d76e1807e75aa681bc11a5149cb9d25db84f19a9a50a78ac0289fba3648c3b8c234ba03e7445a5fcec70bf94fcb75a9108a86ebcec44800d64835dbcf177bb96eeb14b2daa8dd9404212360c6b772a3fcae05f84eb7556f8e76a7cd4210ce665272e6ddfce023ecc33864d60c0c622f0449d90abf41078b3f4ca5de110badf36421dd5d3e050a6242301e4e84dd3b347dfaf90b8a74ede3d5087127e0f9d18d7818d09be08e8eb1925ff20dc30e0a87ec946e0bad54980c30f298b184a542ef73bafb569ab5e3d02be45a8e6ac9e7ab583d8c3759d401352c69ae6a7c3bcf474af506ea9352236255e07830fa6115ab1097e433af62bbc509f9ebb5999b405fdc78471c7ffc8142e4a27b76bd9dbd4dcfe72940b1ae8bbc70d5081fd1c39a2b4ebaf32ecd2ac8ef78838b81eba83bf170f5944ee26bb5fb1655a0d49f3606ca30c1412fdd400ea92a8539f4dd2cd3616e68088e802c32a21f4ea53825c671c23fb86cecc895739093f7d1e5eba303921aeaa7e477a1a1a66cf0f43599eead2ccbd6258fe5c33d1f5b19472eb9d595e1e8c1547f3496e1c85fd917022e018edb57b4b57e142bc8e16510067ea82eeb96372a7457affd25fa454b2ad54b98293e2d463d73b3f1666537a457fd8347e5f34bf32cf81c37dffa567a881200b13aa02d10f217f45673ad64453b1dc41657d9c3e6ac5074f32f16ce84dfd26fea91bb2baeac985b06f263d51273b99cc5d851e09b03e7f67bb613e23ef6b430613048e52cb129daebda8556a2e8707eb3dfdb38f27cf4eaa8aabee4bdaed1f66b1559b170330084de345f95a1ffb28f12879364808d83c0af94213130bab11321b08e13abccc697682516a18fe868bb0bd93bb6cb5b73dc1ed0d86831d6a4104c70a86769a26f1818d6954057718c77760b75249243c4bb11f568d9beec32687a908f3cb2055207ae45369f7deaf13e9f889ea2d29298cecb9e828810f85b856ea09adb991d0638fc53e53046b80724e92d18405e429666a4e78b1fe2b07f6f1a5c4dafcc7b819055f009da442e9d72ac62ee09d4d167a5c02313532f39a5af79a61bee2ee777166837f18d84a5d155df769eef4465f1d7468e164318db5c7e11b2eb80d65144e9084ba424a0dad061e24522b7ab12d19882004d70e4bd31a8ac709eb7d665eb6d804e0403c255aacbf2e1e3581b3a2a4d0d74c0e15687195db385b641566f1d7a7baf55adc8506727ab8bed1c93e5c3968176aae748acf1147337f219d58d31a04f4ad038adc0a935a309ad9a8036d893302ad4f3b1462804737845f18f32fa257843a7c961bee286e01fc1bb53d98539c4fe110e6191eb58d774d0560e00018a64328a5e68594e393e0e7fad133cc196a6f6e946b3f81b7bfc94aeeb6e59652ca94641d09eb08b5085cec0666923ccf1bbdd11b63222b76d33f673eca22074a077b38a7446864b25136ca46d9d8d97e3257fad9dc89c56ef22b0a45c962e3181b63b1586c8cfd40a6789f0ec352bc4f8761a9d8126e625ec29ca7611d9a4ea5789f0ee6de7b6f13d88cf9e8a6e3e1ec15a014efd339e7c14d54940828c5fb74ce79b074ed6892c3a9fa782920223eea0ee7d69bd06b854bc90b1653ad5aabd5aa023fdc52d56ab572adae1792a956ab71d55a2959c556abd56ab55aadbc2152bc4f8739cf2492bbf3fd33e525298aa228e21a16e7513277c0bcdc7bef85e5701249a138ae0383c1603023925e180cd64c68fe82ddb8a9034af13eb59b34455f7326c6c498181363449cd40ffaba888f5646c466757752f7607f4de9a29ee8899ee8af57cb9ee080bee964de3809863d4e67e7b198181363624c94b97e12f72bfb933c3f9bb9d72b36b65ca7badd98f8aa9e243ccd5650743d5ecc5f92d4b1574c7c6db3730531a69aa686c15647dcd4384e709ec8bcd469184593227293784a4236b349ea66e6b80a159b261f55a26aa5528db13136c6c618ccf58211511559893e6a5847c6242d25127892fbbddf5219a569522f930473552f95ebdef18e7784a956b079c449fd333549fd49ae12cf26d424f7cf9bacba2b51257b82e384852292a289926716b963b13136c6c6d8686138aa719ae429858383a3528de338429939568ca3ca088ea4389d334d3ee24c93ab461c15cea81275c04919211d733fe72182779f8add32285e4af9fe9933b3f0d2e7fbe76c46714ae325fcfd948897dc4b45bcb4a24666122fc9bf2eef1582c9622d4ed53471dfee1a3d9628deeb92490e96f275915eb591af451fb124f0f56f3d7692feda4ada95db660759ee774b1bd5a956711f8ce8c542d5f3bc504ccc94957bced524f5bbeecb8bad58a33867338b99f34d28df4ce2533549fd1e23b9bf7f3a917e77f5ff87429ecbfb3a7fbed624fd3ccf4f3ec91d6b99788a75c813afe79a51282a6585bb6cd7789e24bcabd92139f472cfa6c95d2e4a52bfa4b7dd955ba463677eb6c0491961ca9861f98e19c33ed2471f30bc8dbf20129635296514d1d73224cc7b8e77cc23c7f767834b8185f4e2639c63f974a8f12ccf02ca5c03e4c0cc385e7b7938dec673edd23b1654872645a453c447b6e5a3d061e3adc162e32d6cccb3bbba1f01bcc8f06af4e843efe696967453e8651a04f8309469fc360b435e7679e92e2fddbd5c672f7dc6b715bcd06bb23f00fecea6c9699ce4df4f24c99f48f6226e6406e56691bd28a11a49f2a691a40a4892bf00c010e6e6a5c9c8e695644fe21dc9fe35402345b2ff080c3db0550030bc3510e0064972d03b090da0896b47f60f0018866a70a192745f70e0778cc13048287fbe65761a8c5d9e0b87f4a0b97ca110b94524fa16d1c783d038be7efcb5606f350eff1630088dc3fff31b8d7fdefdbbdbb7998f565ea2016e729627c68dbf20327e18000d0978cf0770bb92ec50728c63ffbc2bf151e38fbbe3dfa2340d1a5f67e53763cba7058bfc6f7cbf0814cdf850f42eef9f88e5492f3327127de830d10c9148241281e18c777996af012c4f028170cf1283f9e8c6e567b880309e7ba9ddfb5f7c0d1759be8a503391b8dc78cc61ef19e235fe96961b379ed42492cb5767d7936fb8fc0c97effc8d0fc80c92cbcf707920337ec68c9b6f4809deb80186339ef4dc0c52bb90667476e089bea3034ff49c77bfa75d6038de06f592e8bf172f608d1813251cc7650efa13270e8be1a09dd11dfca1330fff16f9ac3621d7ab874e0ebc0f0d1a317a836b09afdcf2dd842c721f91a5124c80e5966f50b4009a5ddee51d3ba0bfe57968f9b03d1ff987d52573d41ad634c5f8f99d719a70f879f38c1948cc80591ec70ff1c26d66e33b28d14f91e8eba0667413926b907efed61191b6ad8383e61aa045899e247a960f4924d19374103d1012cb6747120e120b0b0b0b18e2f81acfe1f82c6a56a3d499e86b7cde308f1a9df1cfb722d0d6d9d69a486ebc9fc500452c2f4f31442496ef7a1fab21a241836445ca860dd1cff0512789a613d0875bdeb224ddb871e3c6b3320e1f76c608f0781c409ff120891ebfe8491ff591e849bfe2a550fa4844fa95f7f0933e2904f431be83c46393048b018a64401f04e861bc023e88278b5e87eb23fc22d0f311063b38f0fcc3ad83c4050c7f70ec03f430409f3cbd7cdf8d70cb0af850f2c94908f9e4040314f9c77879e2e1f230bedab8499e3619fefe80e040e3458fbf06d008fd39d0a28ff116d10d2f7148c7fbdff0897cca423264b9a40a5d98486633b8b389a1b82087dbeae388c4f8b6d9244d2b629b2cb6e5e4cd08cfc69b60fc8d1a62b85fc1bbf10ec5c34e310f4c83d490453564202d2ffa30480d19487fcbdfe801d0e02e2ec8b2e75dba05c7d7efdf02703c8e7ff9c221390061c8b97797b7f1a08fc64f1ee041621d3cef120097ecbfcdfcbfefa357daf0e73e9f4801349000f587e3b916517777b77c7f4880442ddfeff776e3e002823e1a24d885e6cf07d3f80f0691007df8f22d7fe3fd0b83d4905bfe86b77c32e3007d7efa7c0398bd7c32d318c07b60bc631ea218a0088bf0eb10f5ebf8fead08181fe87e0d8d8977411fc0e737ee64beb6449d71ae03b615e1855beb0a2a6072bc0ddfac1909e613f021b1e101f0855e3323ec18093b4ac28e93dc89f2f942ce0917258867916d780ee6d3f1393e9945fe64ee9e3b0012248867916d80f9ece788c00c0f024533a087f1304021301e048a1a7c409f402f4f316cf88020c10bb7d9ac839aa449027ddbcc04de8c77e9017efa40fcf15ba7f1f9b77c0ba041e36b7ce1905ce3e70e3cff440df0a7ef9f0fc62dfff942cfc2b3c8fe9f9696af5f620f6b3c7efb8edfb67c8c63995b64aef1c91ce3db0bbc27cdb8e1b2b5c0eb1cf1805ca0ff1fe31a1fe3ceea6edcb8716317da18e31b05005f621ee0c73806c356856040f15664648c0b0025df90d1d2528002644046be018612c84164641a6860f918c7fd3042a115cff384a450b641e33f5fcbd3f874f87c0b187ee1cdb887ce1fd203e077d27f3e20f86526bdc478661be08d1b1fe3de2e3a4bc45ec2200766c63fdf45a75962fc2c9fd3380a77631d5cfec63718d2f037404fcdf85c6583d7f21b0bbc96398629ccb20d592e3162ccdc931adf98f1316eadb5d653674e340fcc4beef900bc0c80cdb715bc1a6a32013eb4e3bd9e170afd8f46dfcb7336781f8e173862bcc64bcca3c6c43c3e9806185908cc8e18295022b867281ce550dcbd653ef2f7945bb7d2dddddd3b0795bd34f35e7912de727ebbbbfbb43e7d76eade7babbbfbf4d49c34f3e7ec18f7269c9481c49500276db5b5ca1b92140adee791fc31270262fcce7bc1f0871a8674e8b838a969eac968e601f12316625253831f5670fd2e1bfdaa8c5c5f7bfb85f5b52032b283a2faf214c449fd315e1ffc1185e7c3932fcf953fa48dc6c01039e485dc0d334d3ee4689a7ac858f340be7034ba5161ccf4b9150fe4f0c12c4319a3aed2e6c935c6d8e5c5c7b88b4bdeda08dd5292449ff614997e0cb611c899824c5d90a98fb623327d09b87ce24306e643c687b87dd73aaba6cd39e79c736adbd63d6879db5aec5535e2a50a72c07be525b1699e13e3b06d3fe77cd10282ccbcbd684003a6fdce3605f4230896808fe80e2df3117d6928eda4711ad637eda4b3052fdc52dd3b18beccdf549cb7c95abf85c81dc93ae7b7a9b6d496daa6674b6d44367023e2a9dd17067941c2539f3e8f3a83bce479af07fe8baf8d38893efeae717fdaebe9c27134f51e5871e70de3bece75d546366eeb36bca5b62d354d7d83c170537560b8adc4866da9179f3ce1392bd8b01faa8312c06f83d75ded471568273b54c04794763c69da3630bca1cfa1fc92e70fee43290bc271efdd73f3b9d73eec0c8a44dbdf0d1445c0f39d8780070cf2d2f921d9ebc771200f3f62f3ab5fb843ae31de5fbcf83c5fcff9a57cc3b4eaa5d6348c83f71a78afe7b577b2e0855b2ad72b03afa17889be2449e6d30d5c9224b3cfafb186dd74dff8376360c360b15ed117bf9a019492d43ded5e8061686544669a80983fbcb4f2d7a9ccf1e4bcf2b21199f1923fc55b4ae53fbfa9bc84f1f6e1c8454900607c38237f32645771cd90dda67178ebe81712a40dfa21e8fdef34bd78fc2bcf7d210fd99fc3dfa65af9b654cbc31f6ea98d08e6be95c05092e98bbe7e428ee8cbf035147a440509a5731a09a1a7df2e174fbf6d589e7ebf42b55d2c3fdba6ce6c2fe3a5f9e2bb3c644f03321c97b9f7814691e9bbf842508b2f7c91b1ca46c44b2b4f7f53d179f3f4fcf48042bca8bc644e85d2d58c975a747dd8282066427ce420d828206406a2515db7e5eebbfbee25e8bbc17bfa5c28e479a07b9f02c6f828a5c70d35d7a75ef5af735540f7d059d34091f60ee87e7bcf31deb8012bdfb4069ee739cfd7f9ee8311aa812764c889f2d040190a0405cceeee8971e8dc3dc538d43cfd0b75d371a6bb77dd6f4534af3e0d922ebc51329ddf299933539b6038c5ac7d32773ae863c64714f401cef8c88797401f3ea22f23e3254c7fc63d5fc32689fe4684fe463723996e35991ec9f4398a15e04a7c34a231aef916824d045b111b0ab614173cfae196caf465fac66a818827559039c97992a9f40f1b4aa6df99db982500ba3b36c0c0e4827637103ffa83742861ddc474f1cd38a99fe3baf7d11f92a594d71e862c7d5efb1652c70e2d3e64c9daa7c812e8b5efc892ca6b3f6569e5b5efa48e0a789ad4d144c22d6b0cd0d1a371f4db0f88f6f6b9edf3b1edd02dc0d0f3caa701c9810e428e68185001cff7f7c05e7b34afd97b8e7a666ed0fef33f6268f6c0507b99bbcf1733b590fb0b610f91dbc746ef0f9503355bf086ee1a7cd4f365e4e2a57ed9122c50d0b2167e95709206afee089d52984679766ad3a74f9fd24a09ca5a291823f3b2e961936132335e7ac1bcfa979c8006390cbd7200a35c7069ad95d65a69ad95dea79b5c6c948db25136caaca5d3fec0e20ee7b99ac457eb6c78ebe0ce36af66b5ce0f6a8e245162a35aad5632336ee96a358e63cdea4812252995b8c259e1e0e034ce5f2fe4a81f416688a5c4bd10ab358ee338e28c28140a85428d234af62ac9bf5ee85537c80cbdaaa57aa9605ee8aa5a36aa56a9542a954aa512552a55ac4eea9c7459cb46d9281b65a3ac53301b191dc7d16d644e66c7bc6532994c36933531f98b88f4c699aed99ae3644d71ae84f86baa5238a228ce26382f5114451147fc108e688398fceba1602e144a48a326c943cd4616ca63281c0f8542a15e30d40d8a8542a15028140ae52e99cb513247b96423186cdcd4387f9bf48cd512c7d96cc6c30f5ecf5830eb367ebdd96c361b45966b1cc771ecd9c81267b3d9ac67e3d833eb63cfc69ef56c146700937f631e8e2cd57a8dae6f85c6ec5df10720664ae6e05887a5623829d7f86a3549c564ad54cb52295fb52c254bb5cc4eeadcd56e3a2a1f9b6d44a86ca014ef73b5d7e8e3a5807266e3787abdb6ab8da31dc79c576c7c89bd61a1f2d624758b151550a53e394f2b852383798e0bef9b880efc3c112eb8162b2aa04b359f9c07b7e88df7de9a26549e815456be099b4d3cc7fb1cc7611e6e4e28f3c9cad759e62a4fde274f5ca7354df274e30447f662b55aac168b056bb15442d06b2f17c6696a99e6b3d296eb055bb1582cd98c0fb754ce562c17cc1b27ab75bdd0af643219eb084b64b1582c978c2573b1c62fa4789f4ec33e2b35f282b951d9bc9224f3c8ace96c3e2bcd41848142bddf7abf5f51148dbc6aee91dc301e5b89a2288a2ff1258aa2f812c557ce4bc479e1882ff163033ba9731e7cb59b944f52ffb36639c47a80fccdfb74776ad4390fbeb9ac0fd11b8f610fe774b2a6c971582cd6eb0563b55c5763b12c0bc682c158776e5c48327a497e2a964aa5523b5460ca2c5232563d494a894d931b556a954aa5c654e8a652a994d6d952a9c631623d251b27956a9c21a4789f0e4fea9cc7a666ae46d9281b65a32cc5fb7498f3c4242c87f125de9a6973392414e1bea3f29214c59818136362ac498f98492aa24a4d921524eb8675040a15508af7992b231dd6112f75a014ef437dda5858f75116f64ca7f3f3ecd4ca400594e27d7c7a7027d6749e5301a5781ff7e08ebe9a70b32c7254be09a5f3d5e47eda61cff40f4d7f3cd4f582c9a0c653bc4f87a73c32ca46d9281b65b7ffa6e648f7f1523cb25136ca46d998a7d5a0e024672d6739976eaddbcfb35349ada5964efb032ca9731e6ca9731eece19cda6aa7fd418af7e950f625c60109ec7dba4b9df3804736fc44c6711c31a539cdfa3add8fa27ce4436eed483133d12091164fea9c677b5b5f8232c5fb747852e73cddc74bf1704e27ee59c7582c36c6c69b51e67d3a5927756e6524c6a2a88e75c65136ca46d928f33e9d9dd4033427cf9734059472dd97171f2147f3bde756405f57f01158c42e15105453bc5752ba158a76ec7ba0733895ea82ba6a31cfaa619a9b9fd0f970a268b629dd6a9a30c8eb569d0276af99b1cbbb5d7dadaea438dd3e1ecf27eaffb4e723c0fd070c023ff71e3008243318ec58338831cfef742acf519e3ad61441eee3c1df54cd0e9c2829eb3c274f75fbee49a6e80af2f66da74cdf519d0fe4a1dffc0105bb57141d6b92e677ad3c5193a669bf50b461fdaa0da32e54666aa258e20545118b5eb2b535d616abaae4ede34ef5934ab86290fd9b591662572ac4ae10bb5292d4bfad78b4ea2ea816684eb7ea8cbc40ca19209161d783dc6123a40d19481b477cb8c649377b645ed8adba57b7842cd5958f2676cdf95dd7ea5ca5ea02d9048b314830832222ea144ed4fc8b5d13bbb0115207f5409e8f6bbc249570d9204fccea5ed5054deaca4bdd1255c0a815ae49691a466131b59add6ad5ad700aa3308d8f2646611a9c0a611eb5b6c02c1fcdc72e2f85dd7a7929c4d8c64bb809cd21466154c75acd6f85ba559e4670e5b05bae268021878d9a26bcc46dc2c350e4895df493b5052c4b0008e1195285d08658aa811612fa724e6e72727e77fe362f4c9e7542409e68ec74236c288f93ad43f64be6904d5c28f29c5d45be540aef4315f820a8e7da73ccc307fbda7325700161a4b58a6aed5737e913e0f44d2ba7612deb9c8ed24ff2fc4a39eb91ad839bdeded52d882cdf0fcdfb51271efd0ef1f003a594360ff35e4d7b35b5dddf40e4848da23f4319f49b366d4a5f1baa9384933458f9f3edfb68561fe96ee04d279e0f39854bd102e4d7af3ed097389f8fabf2518f1ceecacefaf558591bf3b152dd223e72d55579a98897a4a452cab82a7bae4a4a293d76458bc490fe19edfbb76f5008920d9ce997a010214392c079a293bf8f69126da0e801dadf8f40bf048390df7fc12090ccc86f50b405d1af81a2ede5497b799a73fbaec731f12fef30d95d572421bb6ebc8998ed73f243ea83cafbf0d1d097b606d21a615b604f207d5afba37f09b3329d5ba9f0ecc74c92858151b143ac80ac97f26995cc0a08da9094cd29c3f2eeee1a920d34170a81661429bceec55fdbcad65aab8221b2ac6c57546c0c10067845602824c3b7fd8b4ffbd0e7e2276bb2e4e9853c71b4656dcb45e99cd116554251dd9cd11645ad50d4ca376733ca9cadbc05adac805e52176db9fbbd9ec7691ee681c49d24fbd40a2fe5bd5bbde0ad6cdb4bb1af61fc1ca54262d0c7787597a9ecdfeb79f61dfb2052e9f450df07ee2b285279d151a190e789f7722c2c2c200d8dc7c56b2c9f9ca849b2bf22b1480594b9b773af07c4a9e08c26c405e8393ee4e49aa60b02e74946fb18af3299c3ab17b2b543646b43906dc5825dc974a4f054be3ea84ff6553e95a7b369aab2eb857e24a3b32a6bd1568bb6aa8cb6aa8cb6aa8cb64e3975864aa956d98a2b1fe3ae6ceb83c0263eb255860fbbae515efd0eeb501f48d7bdbd57da57790e7f15c747f655ec83beeac447b67e8cd7989754de7eb55f71ec6310080456988fecdbe0555a5f348a97420fe5a5fa36ac34d9d6afb32a9ba61a9324fb7616923516cbf6696b9ae66c92ecdfeb79a1d0ff68f4f232b3547829effdc5a0efaf42f191fdf9e5645bab90366c151e9dd9da6febe36fdcc3cae397b8870a6ea0f3ca77bf9ad656fbdbdb90f62181803c690ffa64349086e6f3dbd378fe76adf5b9c69aa669af81bece87a47bae7ae8d72aef0859621e2ba048260514d5ef78a0a882a2076c5b7d219fdfbe8233f73bdf018578feda91873de223fbb4e7d6b11f81fb36655ff42c4146b4f29a6805143da0f3dacf745eeb7c0b70c6f32669e5bd1f72eafcca49e5d332e87354ee4f767e46fb0e2804498b17425f035b80339df74021f357c05933f6949887e8019ddfc02090ccccdf3e08fa1d30887951994b79fbe1cd219d4dd30676eef578de27144af9f746a3fbf2c2b2273a9b267942a5b25565fbd2fe8cd9b74f335f93647fb626c9beb43f59f6678d976473a2a6c951da5b1bb2d65a9c69922759b639d9a252d94e55b62b6badb5cfb9cc6dbf7126c9763e796acc43868686a6619364bf03b66b92ec6f9f0ccd057b9c246b71e0cdb720102c66090021ee102ac41ce242745f0290a0675afac8e99479f2fbfd77bc0ca1fc0665a40e40e4cfb8cf395fce39e7045bcef80863647c482ff598263a844b29a594eeee3d5452a854f096ddedd6adec2692e482f22d13bc2967f5188e4ce65ebfae97be5ef2f29560a881f756cfcbb1b1b1112fec15735284d738b19e457122b963453ad64e381bbc1e3eea1c7cd478fefd72e8f73ec6656468d090b51c597b509a7c4c52bff6316429f4da7f32478bd7de852c09f1510f91a3fef045d6fe2375344d9892b507c9124bc9c56b4fafd4d1a94ed6bec399b5d7c03088b4c9db4f991e5378af1c7c4c53ab2669882c350fa4102ff5e8a36e1ddd6a1cdd3a5a49e3e876358efe2b03f802b43479250969a33f050c3de71ebdd4363e6a1ec8522b2147add6d14d1a47bff8d07327b1a2a47534ccd53afaa671a89c68716fe885a199b4d16f599e26dbbb16a09436c2d6c0162203d1be9590a58ea29be0ef6f1b2fbd0043cfa1cf593e27811cf5bbf8fc03dd638075dfdf4ef4cde7bb05e82790a3feee7e050c5d72376c6048d65e03bb6695e734cfcac778a90518760eb507a9f42c65a5e508f431a0efbfc1e205682d41604c0ad81f33bd4fe6cfcc3d10ba085c0534fbd039782903d2a687ccd69a86c47d8985903627241990363d0bf5cc5584e821daecacc0c997323c777737cc8eeeeece5c4bf74e7a7c24e5d370367873ce39a7e7fe02f31eb5b5d65929bdc14736b4e0f5d17c5a63d0a7962ef9924de4cd8b24f5a774a14ca69dcffbae66ab9729d8030f999ea80952a6b512e663ce39a5fc7cc8cc1d64667c50fa1446a783d4823b7c34274cadb34e771d75877b5310c64773877b05a79cd377c4d04aa96b57f0d1572a3fe2a21ff152786bbc249bf0cf5389177a8a88c7472250fae10bda747e056534ad6add9f0f992a33e3c3d6fae223aa8de8fbe8b14303e77330b4445d87dbdfe1235a41181fc5ecd04a160c294cd9bef49264e28162026d8c018eeb598d077666732a114cc60f64ed45d6b4ca71a3170a942cb1a289253491936d0e6b40a2817666736c4e0a931c8c41b3597c3eef29217f3ef73f9fcf472a71450f98e0810b7ec08ac2e97385fc51420919e4cfe7f33e7ab8e98a9f28647bb30d9efdcbaa5f5b740e1c56a40dfb97a5f261fd4d9c2a9fe723fb97d5a0575101c3fa1b4bab15bc2c1075285ee7f08a304e0d23afc81c3848fbb785cc7187c0b2570c696008239f943882083277effdf4aa5b230db050040a4508610ca7f0629143af4b69ad3f2d49eb2df04ac2c5841480d08522ac90e22a690512349c83c48920084185f2bccedfce7b5eeafc8a9740b9d3e9747ef40213d3ca9ddcf91e39ccf8e8743a4c9ae081dcf91fbcc4e54ee73bd5e9bc90ce4b5711b6cdc6004c98308429cb120d4c9a3041d60a9035adaa72a3a6491bff7e45488205296870c592278401ca0aeeed86bd5a6055186995085aa082051fc0e25585205c71b54e10b8fa692d1f8db53613580c483589124938c207479848811556d40e9314647b3b9d25b06e305982134b780278c2882a8a08c2134500c34956710393223c210c44c4729cc8b4e6eccb50beb44f6b69a3366a49acfd7cc0cb126beefd0e786b3a1d30bcd6e3b821d4184c3b0276d51549d05aa0f49830c102017cbf96a4fbdb29b1c404b9fb152f69b9eb7ed47dc84bf6bb87e1264775ffa44696f6af34c993d7fd98266dbc4388e8410c0b62280211d1750abf0a391c5dcd08ae0b6aa33301b5d14b1d2d09c62fd70a32c62fc34bf6f18f707d8cdf0a4d7825e162c1132f226031cad6b2b44e30de4b9669261b14d66df1d6b4cb46675e51d3012f0bbce26b0846645c793d1d64cfaf7809678fe761c8f0527dcf8f3cffe2c99e8fc1227bfe062fa564cf7bde87e77b78a9f39ecfc1f34f9258b2e4c9186ca850842554d030a1e20823d38d9c9314643a729dc211b9d6295491eb2b87b2942624a2faf249b65fbff7517b1227c37ca2984212a480831c3f7ca0052688b08680b2840a4e1b59d95a6b2d05c32873ccdc3f4507a678c2e6dd2b04210a2c282d8982128c8083021b1c275cea101f8c200746c40844a8200954e8d40a458a5c6badf556e96a2743c8f68922558a1630418a2b9c80c2926c9d18d55aab4aad5740e55a6badb5d6274021dba7511c91ed11a2a8e2e6f1126cd0022b6ee044112278c2551106289ec8f5697d020b7255c20b0d6921c1892f48411543c28a53f853c8e128db1a68ec6bc916384dd33450e6a8b9d38102054648f1a850285408b0c8a224337542092d4e4031c01335703d514500b295b112e8882dc1048a11e4d7670a277a906b8c8e8a509690edc3686fadb5d6d6ea040c58b2d4420a64e082268e2411022ba41092b3ee5367271c21d7588d5177e42aa2502811d427727d981b6aadb55e8f09a81b4cc00197ed87603c138090edcb58c2842f64fb2e5e3a40b6ffd2caf66b58d2843064fb3bbc248d90ed0d936cff062fc925d92e718207b2fd1cac8461d1a4892b5ae418020fbc70832184a0c40ba6e0ac604113213840ae7f9b5022d7f7784986b7e3092672900310a420053c903839f46ac80f23cb712c3c87e279a9c64df4d4140bd1cccec29bad57eae4b0861dd9be0ce5ab2497e41c91edc3dc20237374cef151cfb2f0ec873607076b413b8341d1c2e678e98259703249451252395001148af003169ca290e73b4a07a54e9eeff39d8817f11511a7f91deb983cd7344de00b4d384214523441093438cdef97972414b25ce2083cc8d3e6e4ccf8d861fe0f2fa5e4f93cc44a9d90a6494930ace00a2d4002054f38e289d3948295e7cdda6ae2e47e19a3213288420c45a690e2034c4439c5ccf2cc1667921a081460f181224874b085214e338a3c7fc54b9e3c45d044b6f6af7d8f07866c99c876c90896c8b649b6ff5e924b88a820db97e12518d94aa98346f6bcf47c45510463e6becc7158f0c22b8e31b1d52449cb1ac756cbe57abd60b963b0499239bc39d3742d984345ee3ced744c389e60823a85f63b57e4b690e33a756e083c90efd37ba52c8170f2b66957d4564ce44a23d77a595e72170a952feb8a5ee3a3bee0ad6179c9760e0a95430b5ed6152fcbe24c93362e4995206b4fbd54c326f6d31cefb39d81d8d792f8a82f6b92acd6d2461fb5365e719c5acb4b48681733bd82176a33e0640f6a0e9141881e8285e82153a345dcc06753f7900c3a7ab8bbbb8460ccf9d453c04919eda7fa49496a7713b480e54935f98402b25fdd846bd8edc4ee18f739ad8ea28345fd9e9727ee83e83cfe08789e7b0c061104fe8e3c350e0ecccb4b46c9508af7b4b1cb052c0485d7449eb75b22cf25dd4d21cb0181616744a703d901c15d17bc2eef56d3f4432633c3c738e779f77a35e2a3d902a31e862886565f3c0cea1269ae18d5f5c51045516cf1c9d38b1a72d1825138855138b542d15451d3ea0aa3aa78b52ad69591d5ca4815efc53c28ad291fe1ee7b3def87d452a867243c4f3df527cf4fd20cb1fc2747e6d054cf9c0f8b0ca17731e7bd9e3773dc2565ae1e44f5a789c2a62914f23c9a9353e60c33cc00d2d0bcf8ee69627c8b19e83849d3d32a28130ab9e83ef433dd875ec066f71d28240648e99093aa0bb950b5b82e404e86af4fdd2a25435783959cb233a2850bad2a4979ffda229cce35438c2ee675d3d402a6809df8a2135dbce86bf1327c2f1e8542a1429f3c89b96375630b27cbf2fc39fd2bd8adaaa45d5ef2401f7a5eb7bcafb5e5a3e9813ccf037dca73a0d64cf9eac23c52526e75b9585b620d2bc4477cfee7daaab585310d12fadbf7e7830f3d4c31a0b2f63ef4a04541a132fd90f0bcf6f52004aa072128540f40a050a8dcefe9000858fef38debf7d7751dadd8077fefbd97b807074594e5f3da6a9abad524cde975ddd74fa603696842efe2695e7c8b6e354d22cbc7c5773fe3e23b5008127f2121300824339e67f920f077efe21d9c69f1020cc2f32cdf22f4f9d0cf7c3e8441917ff79dff7c0567f0bf008578409183a20774befb0870cff22ccf3d7e993d197ede900c207e21bb2130671542a1b2f65d54a69f64a2841a3ad2579e1496b5afb138312b4f3ce6895b797e0b9c7362c1382c2086b987e5c3d895eaa6e9336114679a3c3f9fc2a6093f6c848d79c2266c9a66ecbe4f17e4f9218c6ee53487ce2a2ac7458b7866ced402f761d7ea60107bee9d26cef330151ec7757b1e775dd81981b1cce739cde38e6318865f9384713e2cc3b3499a8d9aa67aef6ab59a26b99aa0cc87eb8ce86a9067a7833c3b20742fd884c170f27c2ccbf33d7896e77338a743e5f9170a2fa439ae69c44b211db3e8a570863447d2745d87696b9a3a3f9f8ed3c43dcdb91fe3e234615463118b168bda9d5a9839186531aa511a485574e5a5a6aa89a22bbaa22a5a84aaa88a16a12b154f144591e6d01c9a13a398a884ac994a7ad621220100002000d3150000280c0c8704a2f168a02699b07414800d738e647256a548c3248c611052c62042882140000060044406b3710050bfece63556903f3e63784820549b34521aac99f78395f459e40a429659e44dc4954d56e126eab730b6430f8fcee3aa14421f00708308ceb83e1238ed08c3a5e4f15bc05e001a4f5411a8b849899cf2a525b6207652abb73eda8f97ed7fa7ec614573afecfd7fe1dfd36cf847a2767773a34ec8c76837250bf677284e0e7a4992d2da6ba20e43030a516970343434d4856c3e65d8decfbd08538de2740b492b0077f624c58d285b5884c077610d03ac222182f23f1fdd45a3538d911740347fa363531a798ca9567485522326962940c8f65f17b8e23b2049254d22e324e538c01c88939f371dbb6106a59c2357390cd932d079f20a526062b807c24161e8690a0c78a294ac84125393c0d0764a383ea7cb29ba595d105ccd53ae21292a54c5cd4419881ed41a53fdc385a59525fad4960cc184590a9e1bc1c8d91ce9523d58f0eab7b948025b568c003ab93685035a008ec46eb715e1e01b539935e03da97794733ed0245346ecdbbd0d5739434990a3975848aa9be3251760cec660d4167122990df817fc0f8cf9a2120fab29347b43195c971eccaff6cbcddbb61492f6fe6ec26f3bcda8070b7bee9b5e0a24fa9da385d8ffbc3f888c0196e2d4c025568428f867a48005620588203f48a5f8ea129f904f87520a9d181f766c8daa0185ef8de85d257a18025c396cd4ffd4bb0463dbf7120f8d99b2a99c622334f994d4123f27c51337f8274d4fed953ee88e506f41b9e2e9f7b04eaaea7a50487644d3634315571cd943fe80857981d6215744e29487a8211139d0a03547d1e17c65a49d1c290da26ca914bf841f19d020f82fc44608a2519d7d76a297b7c58960e9d5440d7df755b34b6990e416b136dad3e9b4cc4c2bde4f9f59a1498de5c9dbff51448629b5f92191c78757dddb9e8f22518086a36a01a4000e966cffae1c6586c1f8eec759befdbd967e808d8f997530d091d91d199fba70f574d9ea0727195c692debad114180a0703524f50c5ba8f96a48084e05807df0f254e9b6d96d3982d0902dee4c339305e83c046315ab66cd909998f801c3c847d279ed5c91ec3018fa5c2c97ca18aeeb2c5035f6f36a6e1e07b9695a100d30709cf489cb53a9f7af760c7ee7406362f487160a717c332e9ce946967c83699b5f1666d5f69fce51b63ce98eb12efc6eb8792ea6a7ed6cc42c8dd7e8d5860a4dfd983171dbb43a0634fa214059aca8d68df474c4448d543d72e1f687a0308235ce06da367b64d3cdf964ab0bb34d0ff6f70a56513a149afcf1f1b7fdfe9f5a7b86e9fd8d40b2ab1fb355818de06cd3d9705e145d96d8f85030609dbcd591d4bd7b713ffe82a59a6fdf0be3e615372152347b155c9897d0ee48b19dbfe989fead2ca8e377f669c748ad65fb7e38ba30918e1db8f562876e61285a5767e3d25f8915e12e7b9d84a0385e1022376e655a60aa3f360390303e3642695a07bff694dae82b7f345fc6fb5f38ee7043436c1cc0f275472be8a5715da83b3868d42b1aead7e6c4e5767a3a86f22352478ee599afea90d49b47b1e3b52242f45a6efcba30e843912f771b13a9c9bd2f753f65f608eee9fe10d411448ecfe5f28d88c2fc880fcc0f6242c4e3cee5fa41764ed7a221e42528a6a9f06e33949db3a15095959e106f82aaa0a29252b8327eb2ac4f639bd95996c04d3daef10b71bffbc8787dcffd8daacc3459d21400a0e8aa8f5786778e4c4b43a63b18f2439e12e2e9fff5979fe755d84646afd8494aa5a2a358dfc2e1ddcbe83716a044a3d85fbaf46e6b2a0ac6e1592b15bfd51fdca271adc6662e14d871726692066db119afafa631bcca7cbc25c961b649182f59c96113bb30285c9fe3cf78757d81b5a532cae0f2eb4f62e89975e608027a2e7081634cf7192387de0baf32dd5f69c34f55c0e8b385b75917b2716e3c9f09e89faa308a644dc242d90332c9ab18c004a52e569f606f4b13c164a2c672816016bd38047a64ef0b477460b99d456ee017d02379706b7ba41a3c8b230809a52427be7a52bf84f8fa61eb0137c0ecf03d09f0f7e618479a63e790d1a16daf29fb261e120579db46ef2fd2d7bef13571aaf4f4a01567f517395791b64d3f249daa365594ad8c1bd776349d85287da38ee41d1efd056420f32e9890e36d743f2d8a5478bda6a08c1fbcee61dc76da71b1fe53d8b5c69e1b3bd4af8d62510acae1c152122cda995ee02f9a344dda2fc779594ab2df63b6c89358f4e4c671fbf396f95fb3e2f3a87e775d21c1678563fed33b805bfb658eae668910ca57b6021e7da2b3c3fece1d9afd8ff4f645524ab39e0164f0406c1354505ec01421b2bf6362158b9f30f2839f0b9d2b9a427ee0dc5c75c8a8b0721a99d707792962753cc6d61b0f3466d46fecf3b0e78e18b040a1ea4f348e88436012501801d54f7eeaa5365f163cbc98d56b0c6fe095da3aaefe04e94545ca23b5953e3d499361a1e5e750b4511128a6cb9a82454bcded9d9d500624ffe6204b507ffaffb7875836c4f579e0403024af4ed062f64e42bea2e6d8af5a27e820878b64a787b7324338a84e713710eee857d58866da7e0275a991f229f3b1621a9ff41468021ba735f3ddb749b6ec763ce454edb5bf81f40d53e2d90f9db8f24eeb194a163140abf1e6e8f0361aa8e7d0e610e77211a036ed23f441287def8a3dfcaf72c0b1525ea105a981ffe0b353bf736c76aae9ed0a5f71e08849d0facfab8995e379f7a21fc8ee774dc1ef21415c6664c5ebf414c6b8c7010003b8e18be4d0e39526fe6fb0e3cc789c322b998d34f74440511b94782cfddcf9e14b9ce071c6b0e81d9fd99261737bbfdf93aeea455b67c8f8d836f1bd7a06eeca534034a7a799d9f1ee9a74187ceb345bce810248482935d81e7ef03e6f4f223a634c399fadac40be44e2fbd3484a4986330460ab2ab1f262ccd11c267f9fb42f2a720fe4f7a939b764bf2ed1bfeca9673f32a620937bd27cb4596cf23e9b2e19924967bec64401532e899406d66a3f333a581eb0635bb118ffb03b29dc5f5a8fa4cd8f8d50cac12b4794701e064ace12e31b5dd2815464cf943e6447c30c89068935377b2e854397ce4bfd22359466a198cb6386086353aa743031df318dc2cbe5a32bbf2c4ef5c8a469a127cfb96ced4d32f5123d067b223889adb8dbc91620f0c78bc14ea0c8fd60fd202d18b3fd2ff50bc830c6e4eaa1a5641bc6a993af29351119058572fa1b34f5941102a648d6b42d0864087ce862184e469743e8ad509ac75aa7443643c8886c7523b83c23e9044259910c37f0076205214e40d62c26d1251cc134e39a66ac6ad3be761921c80774946ae61e8058c464ceeb9161522b5f45d2488a151db7474502f7c041707cd4b714542d72d3a36759e712f3024c21f3311c5c4222f4b5491761a99922699fbbad363df364a7f2601dabdc3f0e04cd0149244e53f6181a496e35d8b6e146842d72bcb4ac303532c5215d0cd9f436777a338e757c5a9544222e2db2c8daa487af91b21e88265d45d71cd7be0c127ba41fedc9a51b3b5f62703ff65476c262819170ea936882038e3f7a3e4f4203141470aa583a6a858c139ab84306478f57980a40396430cf8c2cdc4163462fd5af685a2a1e080db023e60ba72a1eb59a9332317a0d0ae8c4be12e11bb2fed8d98fd59aecb0d3bb8a35499ceb487b89df06f9078a1504a21caa8d375cd6292800e5be609c7cf714966d6d4282d8070d6b4b4d6aabce35d2c26f22f8a09b63d8122c23fb3fd25247ff942f3b70e557e6096b1ac8bcfcf0c523cb5268f893b5dd66ea28261a49c259bf04d7a84df72ebdbc1cfea63e1bccb5cdda55e42748854d0b051d7503808274bafe02b73f73771377d7ab12903043a3f5bb750b7cf11c81b08490a3b2a7d1498ddabf8090f0f300b96ba8c8db1b65ef8f25bdad5b53505e84281e24961d9999becf041a4b3e5326bb479580b1b31c97870869844b26b96f1b534d2b72544d122190a0e12816f38e396730352d8f3656342c8c4ca2f242eb6d63049c89f9cc64d067063277f489b07f1b0bc25116a0fedd60b56f3ec318601061e031e744ebf17198579ac9a3e966fd710595931e1ce9bd01f248442c645731771206643fc2f687baa5ebc2ee90e2944883651a53b209edb1020f49f1c23ac6ec006f2a1fb29e77600446b84293fad83a9b1189ba9b8f1354d9dcea5df9b94050db27f1f7a6bfea8f8794930b04712be86820b61af661c58ab158e39c02102d9c0b9fd86b166833d82f85a28cdcd074a46b117eabb360fa6f884b09f2db03ca24cb218f42e0b19ca7d6449eaf12a1ac4749c672f03bda2d6b6a89b48c959ce884b4f2c10f10395225c81294b7089ef1d31deef7afb0c8167f6035680a990765147913e42774fe8f40c249d14317e120453716abac14268d58cd0357907f2cb414aa9a199d1c9370425c95b66baafe218098a96c46451f09e809af67292bff4f9180aa43cf41d8a357a4f049174ccdd849220896a9be5de0d3732e3246cad0ee301017658f6438275510129e986fe9111cbd700e9c6b80546c876402946bd7894d6f99cf3a427b647e025c86c168ce0fa456fd1c3fa96a871b4f739ec95aeba0545cf5132309023517d3c841123f0a686bcdecf60cc7f23f86e327af68bf64dd7722437ac94f6092504f91857efe650fb17479f623e5bd9e6446839ca1b978ddbde50cea8c3283c378c03be6ed5c63d8bfb2c10f1b27f1d8082f3d8eda1f28b60ac42056ea5ea9e2950117a48f1d653dd8e8698eb64ff18221ee88871e0240152d5ec065a20309e0bee8cd8903e732f736f867ddaeec756f583932d31a74d10da48fe25d79e5f1dbf4ff211d666a0d6b6e151f7d83cf58b2d4911937ff92ea3aec6a0f2b1874d88e6e44b1baba8550d99f2743791e46784aacca333f31ed4c59752b22d221cae6d192d24f1f8f4b8deae58d01ca7eb69cfc3e18b0d3706d69b858b2ddc837b17e9502f286223e9f90777bf3df244fe4000b77359973d4c17757ec83592d01f5b65fd1029c6b79256d6501a227ddda3e9c9f148873e00e8f22c509d97ca3b20ac0553bb74fa8360161649d064dca23b39c4abb83cfa6b1554cbdef63b1428ccfc42a08fb2bce66ef2e81566fb64cee05c13a7e82a6b65e932046806cd3faec83463c425e40b1d0d7b1681c801f91738470a353dec43e7cecbc19904e7ce814f41c0feafbf123022d3fdeb9f321cff31683ae41aaeba42c4eb26bc7741b1f6bec98754f49c0532bd74f2dd4e2bf1667b8349a092c3aec059d7c3e616bd5ae6ccf18417064925d482a68b7bd1a5970748c619ee5044fe7032d48e04f58b8dd327298a80bad02de8867ad5951626c7bab87a482a4c3ca1af87c963c6c3ed6069b8043de907e60b6790d02836a195f6f375b77ec2a45611e06a1969eece89b370129b4dc4a9a396f80824810664e3ef6e432350f476fb4074cab29a4c07643de6aeb533022d13b8b40d9f380283c76dcd02aaeb84b397cc1fd7a87be3218211c7db3cc43da26aaee5fc085ed0426f52d6643c646989c691f33f7d6af12294f618b643efbb4500148e7d1a5593136592226c547af18f621cc7d77b62fc787492ab260df001a8f0b46e4f220d2e7327cc7c19ec7a3cae36c7771860199bfe165eed4d9f440181c5dfa03982f55ae836ef93a4094722731c1d31aae79027f7e34cbc81e9849ca904fcb2c79d0f11ed6b6af1e0eddd95a8c325e9ee2b75403206e135483a373d7f974ece7172e9a09f2eb39e26c63eb4abad0d1c5c45d0ca3346b0648ff994d2844f063264e7f808c65eb7cfc4ce9e0838a7d3f6e02e7bd0db530403f5e7251977af7f68cbbeb8cdadd34774cf27fc7228680869435de26c09495ed8148ccd961ba4c9de6d2353e0cf4f465ff4de9430d46adb4395c301b66821c48a8e7b4a2747e910c7556853303edfb3ae7e8aec9de99a826b573220a5b151507c17a11c9772dde5a7607f30091be0e0c5c8ed1636a9fb32418311e871f9d64a42921835c3aa47804daa7f21d79af514e47d4c8e78fe45251dbc79dfebb819a8e6e076d8273e10ebbbbaa405deed04ee2ff1089b757559ee15510efd4e72b93eef60fe8885c9563b592f66894cc6e109e7cd648d5da2b439cde3e8f4f9b4a4f5c0679a20763cfcaadcf0e694f34fddc238bfc885b3100c319dfcf265ba89a13fdede5497decbfcd57630f409d164b3ea50cdcac2178c15a08ffc22accaf57ed382bc7e84575ea44edf74d454b26bbd6c8dff9999784e7d09d2b5254cd5d040d9250a476382125c280d23437223335d4ea2a3e6214c07aaf0dbdd077a9491693da6ffe7fa0d53840925fb86dd778470c0db1e886c18a74e0f9b350f4d6be7859bb5cf50d89b25aed400ceaaa0e1d650dcc2bda6ec222f3b4fa7ba6daf3286bc47cd18318c1b532501da68358636a5fac4e144b37a1ded12ed91304b001dd3276146dfd1cb6c1cd384ed92d6d4b14a5563ec1b432bce517392ba6eccd3cb680bc19bbd12478d3db402dc263c72e001a1674becdcd8669b1987506954e43a682433f39969ea042a7acb1c5c6886390ca4c5d8ffe75ea8c0d184d5cfe439d1c0ac739c227f0ee8f65b7d730b0f74f8bed64dd9ce9c3c2cb6d1ba9f44d04ef119a02a72e6b0d765ea1b5756e6003f6ba3b86827c36478e711234762d6026eea1f8137f83961a65e214faac5e43b07a9082358c47ed82fe665e2c44a4be9e0bcff3c31bdca63c857ad6c4265df80665395f1912018d3c50d2328df3996c379799b0e460228dc4d8eda410333d51ec0ddf607128529070c6060660784e3f70698022425db8c06745a4a727a9fab45f6f768f22751891b373e7b8570fef5a3749c5ea802d0020c93a9200737cd5917d19cab7010c2419a6808b47253061dbb7f75690640491374619d983729daaaf894edd2f592df020cb3e7fff9b57ce21fa016bd8e31480aa8a725d6036d9c1e3c5e01a96d4adbefc7532680f9cc0a502dcfac68474abf2e5bc77b96526efbbb194b955972775d75c8a3e8cf244442223195ac700ab11ee117e9f9a2a680360c59fc91055093f0e58667ea1aec8c478e45df79eb45f68c13e92059b2b95e05d77a225ad893ca9cb4f1e6058628024a4602506d3cee64e3dcc78a9e5f2b52b48513f21089e3277bbcfff30b5e2056bf9706d4a5f4a8be289314d2dc2a25775d0829dc4fe04b164c5b28d4f4919055318f93b55004216f6d7b5c90e6f6985030384d290d426a4cdf5f520aa7db9c715073c341aba1d579d0379dfce026bd05c4e1b7200a54f7b498b93aa802e58ff965781a767a9cd27d2ef157e9569fcf5d0482703ffeda8e3d802efc5746c433a3e116398b8023562682b5ee3556b210fb2778c097efbf2edc76982e0579cd9c008e0f7b7e53487999a1356865a07b1329d81a7c7a8791628db024ca15ffd3e8d6b618af5507dfad5834eeed3dfa4e097cf942f675d21f2aa9711367931b230f766aeeb2bc0c647543235be06d837671cae43b31a166b554c43ea86956ef777c8d4dfc7258af151bc28d4e44bbcc07003ea1165a0994460e1ab7de2d15665abbd70d375ff5b1282a25061f943cc6bc52d9ee58f42b7dc22acb04517a74e43170cb237af054e92c5b9c5efcf2f156a3304a4b5308a13c7e5ac8f2008a1dbe7c2e6d660e0f97915a37791b930260fa7271ed4a89f305bb6e87bea17ed52d3992a11d5bc75d54a212a151598e1ed4902b4d94cae424c816e8a6e031b73c95993186c02d03f80c04f2436a05688de5cf98032d00de6ce5cdf0d007d1aea5e46a65e028c544c670dd051de0d725e21103854e8fc1ffd954eeb0f4ddb4198760b98fa814b927f1c22478ffed45280575029053a6f1c1155344565add8834b5034291629d6e86764f7b03898c117d18e6bfcb048e16c43a910dfa5a100eed4a335ea12781c7958f76313e0c3df66b725be34c187734ed82c69ab844f434d8290ffd9832b7d76ad9233adacd1a21ee9b5100647deffe58ebe5e0baadbc6097e7712b5121eb40193f2b41e3cd01edef0f5943df905ecfd3975a78a86056a155ce1cce754b8d7e366b4ae2e7e7dcd329936f9ae97a241d531c8c50b361b1eec60846797c5208c8874fcc12c76f47d23fe2d9d2cfdb87c3252329f5c178abbeb2b8bb315329f6cec34cb450c45be5f0b43c18536015849620a7655fb4fc7b786970f9cabcb79f7588a12273f1e931a71f2c1766c277d893de6d2d4dd2211964f014a8026a82e233e4038c34bc68ff7df1bfd9f44b8566130e40d4f871e2e239b0d204fc3bdf6d7bdbec949d68606c07c8b8c3a872d3da0dc36f77b9921710967d0beeeffc8b1a38f1efdfe8b05c77f013c57018da3392e025daf4e2c2f29d7416f0bd4385d4ca8b0cca4622e418647cd0d7feeed30a7efdb410e256d086a223fa026a2633d0058e8c1ad272b023f00b714fac35734c5d047dd15546f186a26b0ff771da5490d61ca9c88870eb9d5b4d0ef78c42be7ff0ffeb3ef38073d056a53f54f8c5e5a42eba404076896fdb9dc6ce6a0a2d73c701a6ebbbb9f9aec3351cc9cfc3ed2123377122c06125ba5dd2ef4f1f623a500dab23ff177aab62ce860bf7b34d4e10f9bbcb53b33fd0b49c01f8e3dc3f32d433f085cc64824390d9fed8a42d5ef9bdb67c8f0f178847853e8cecf796d023a061948cb3f424d816a95b1181feb4140e2343256f013805e739ecade3f017102c242e6c40420be153bf6d02bbf37a72f27ef659eba5d5e80f297d05a1342b0c6f9ea2842206057c26719b230aa05cc684a70cd2df44daea3749a8214dfa40e7b44b2134d272af51107523fc31d271debc6dce6d564304d6ddd2c2b311be134fcd68aa0be4d8d59fc4a9906f239eacd38b0801aaec7feabab056771d6970397691535915292efc06a66a019c9af1570f80c12785124ffd79609347d05523e17159b1fad3ca8394335ef0563af2720c7899cc1c6ada3203be87e3e0f09465bf9c592ab0f2ff80f55bfd95c3c47b9a22b449f0aa222d71d5e72a6f51dd13f2136fa722d48013e5ff5e1f06b61c729b22b24bc99d65e3ae7d071f795d3e9d8f10da46528cafbb247f6db902b471dedff0f4864bd3c861a289bb488fc4f68aa1ec3835520350ba0700c93088335e22372d818624a2177951632d7470c4fd4e71221b61be6b1653d4dc1f07b6ab4d35f58e0a810a6a9bcf6e72fec8e57d233cc8f41e1e59f72e4c7bdc9278b1f55a8f482dd2a074a8b46c875120a7ddcce1a030aebaab50e90567a8f78921911fb5880b9a5867dbc419c6d2c9d67950db4ed7a15ef3c36a095f4db5b427b29e1fe6a5762ac443196b95b1c47e7d143e0f6f438d2fe86192da94094f596af126973ce141cf9002e79f8a5d4e19e7c4e9e0428752e039cf5759839273fb738898b39de53925bc281f7f0464420a1ec3b99fb737afec70260f7e23d94f600f4d5210d19d23cf9dc4c7647a0a8327623490f0ddcd60bc67c91caa7dfa4ef953d8ff01aa90c892791f3d860d0ad80bf8ada1a5539183975203eb64da374a0ed3abb12bcb37ff8c0b1b89796368cd8cf1759f0e7ed2769176da3622a6c915880ee18c7b7da22be95cd9e4b7dc10db2c37c4d192c858c3907cce8138e1b8fb8dd164e7a46d652512e8df363e4f89f05388226de7da3ec40f81fd519b4f000094af838ba8d7d4a71306c2843e260b7bd89092d46c466a8b06341a3df81cc07fbb7cdac599f8b9be3cadc700e86c314a37dce7c74ca5525939c4663261db4f33fd59e5e1383be7054e36e4c6acf6cce7a49d8f84f93a817462da5e3cfa20ad132d6082497bad1ffa62179631c947a80fb5bf0ad1efdc9cd2300f67f231fe3cc890e4d2340569fd1b9be94a84c05db2937b9be529f98a4176db71416eaaa405d4b675b3df694c1585c7b0fd9ccdfa35056513ce5f190979d7c17066f07cce3ba96d87efeddfdf4893e2cafaafc76bc2001767ab1f0785493ca2122a49e4aac6143af1ee67eccedfc3ecfd4926a7057afa9c283c76e5864ce38522d696c52deafa61939cd817791420c431a1578d8f3b7691ca921de8fb7016c9b5b0c42f56f2639706b966975586ae8a4f9ac72cdf10cb071222e932064ad13f41dcb5751e2360af3c28d1fa85aea76ef80ff5275bfa7e790023d946931ad186835e673f62504206d22ff9ced23f71d23e3478c184e01b2e4d2fd29913a28a5c3100699786e40ec5951e433fbff6153fd49235e8867c13057632a29a5b3f18bee0338915273038e704123db17c4db529919979d4cd917e84d4f9b5876150e9686153e45d79ff78b52fd7f3ba3f615622cca517a546dde02c2abf85fd0f7ed49c2eedbe3f0f77d2f08206bfe01f8c61ebe3d08fc088a07ecb5915e847b7c06870301f448badb4e2e63682ba590afc5f14a424fd807f7859e67ed22fd1d827f78646915165efc2201e154020002b066afdc84176cd90b3d5034796cedfa16266a7aaf3ded29b8179cf4663b3b325e38b2ed03781d2d96751c4ac8e9e889ee92785258e347b07498565cb6dc9527acc7a181998f4c1012b613cb69e2ace65514d0c8c1157bfb56594dab9764704b426dcbab275f257d886fcb17b691337fa2ee80f4efbf029ed80189ed1c290298de31cc030924f563a9c8bb014ecf1678a9791adaf8084d0de7894a0f0dcb4e619f5a1ba603d7f38160722608c33a4ccf2d2a00fded7f672886ce6d26cc2da27b073732331fce510a24b5410053dde21f82314a54d4e6d7bffb125dec18fbd245fa012bad7dc64af28815924e44e22d01b81219de736dbaec47dda0d82d4aa3beedd634329d39ebd75ce8f95e1a12c78f0d45ff0d0c83a1bf71efae1aae8a44e853e25cff33dc007e6ca33894911cd0668d600e8a163f59e8770484960cc6bef16122406ce519c5a8e90f61799da41cc912477d80966ca064bf094b3bc74a23d44b5c6f8d8f4e758ea073e5c48b5e2a0fa6243795530029077ddc01d60c81755222c094bb02f8ad93f7ca52575900615e9248f0e54e6b100ff8ba59e7792ca5ac42629a707d5d4374023217d3b45717a1acc6586fcf2efcb045108f30798355f9001602dc12f1c9e5870cb53bb4b1978bc8d85e455876364b47a74f722ee8921f9da9aef1a6716f737634aa8d0a295f12bc1d71ccbb57e9ff158fefeba1c53dc3d777bf4360fa4436620a7cee8594b3c2aa498fd80e1bc5e036246aabeb1cc6d7becd11ee4ce911d25237d726dc38237ec26b22e8b23199b861e4151102893b12148adb737ce98a9c8a226ca62e570237f632ae82a8d4c4cb559610741614501bbfdfb7157e4309889f05ea737a713770b5a87400a75aaef0d93804edd3a98d378c319279db9f41e286cc033182409135d2c075295400eae6025d1165e5aa7235cde7e9509b104fc8c0bddd5c98375bb09725d641f4c99c9685169fe84526b6efef3384bfe96b229b2e625e749e16eb0e277c22be6b49c163800e3dc97894b8cee8400cdd2a709840b7f6aecb3ba9998ea9fa34e2799bb5a33a71fd6e6b9543e009d25714bd4697b2ffcaafe576c7914dd6f2ad36667679ac113d58e6121f08c2f7736f336f4a1a32ed77f7ac9b6239eb97129effddc2171496ec7e10f91597663c50293808340b6ce4a5fea9bbaf618a24bf514e6cf72110e5e5cb81921e81906e6f24fa9d70333cc0e78e9a8915ea61e27d484c7574b1649f8267f6017f60a1f1d9e8443b6a3e4c7cbf2c982a85f6614ab230f382401cb55861498ef3daa7f0895e2395ded2076328868fa4f0f8ce02f941916302cf4fafac7408496e9428421cd689910be90206b519ff79cd642f7214a5584d260daabd3ab3975f97e9b62780755a0712a9ef7aac73506b2d2314863e592f6275ef25ddc79a6e80d20dd177d4dd21d31b813d9496434713f25f115043ddb72216207dbaa499c624824e583d1de19ba4afe503766185ffc4ad06712c56d06684da703fc219bbe246818f383a78042611faea6afd427028a664398bf90ad11531dabf9cda38dfca8d639afb4689cd1413600c00534b2f370de0109128e8e026e80fa11634888d060d3a4a673864d05092a385a555493559512bd2ec13300d53b17a2be23b596757ec0281b3556c972de3d7aafde01365c17bc169575bad464812303af2035eeca1804346b9d0463b53d0e856ba3a58b2a80df9360a76ebf5014a552aedac2a6661352070035e351fc20096b124661fe23ed9e3c67de070cda7744d5501c6b4c61c2cef0bc07398cf3d56835f90c79c3850cec694bedec8f90d17b1a9d60d0e34c9c1e737ec881b96750613f98811556d30f92dcc29a5d5ea701dcd7d84cefaf6e382723ade1be8ba6ca32a04e84d0dd0f6671d1e9353071a47cd71a3a0ba7adcfe29702e51d7e0e65582e3a9248a5eb7d5b05e6dc0bf75524432e842699488b01efe3429df0a73dd96edcb142ea5193ad3b7bf71026e708c20ad12a82db92f494638d1929163d089ef523c9759e4fd721ac0153b56aafb52c0c13380de998fbc9f40155ef74071b0c2faa71fc3b6701f82af0cc67114a2893c81ccefd531507c60c2ef133e6e30801af7fc7cea6495e917d82ef56638167e16285872d73bef56721823c63d84e95ea72c71a9ac1da5b281f2d37f52ec0d72ca8d78184bf8264bd07112d082dbe904ac24d3cf1579d86fdd1615fe792d1e310c991ae1a05244aeacaff63af1978f63c50a9dfa558adac546cfb4a3e9b80a543eb8af41de8ce149884de086ebb50943c29ebf167f6fb7b99efdc515d570cd9c40f43c77a33d27a3655a23ae7f3f5ee86e1a08835a2e8db5a44ee30e3c1c66a2daf28e22ce8448c119c4a87b28a658d141cc7fbfb568fb867af24cfbf313b1872a42853a1293a92501e4f8421640ace2102fffca837b8cd8d07cd92495138417fec90a1ed12984647a1cb18c50b25785d16dd53705dd5da77b794d41a4ae31cf5eaef17aa6a0957c6595185105d70b6ef4c3e79692f503b45b8f582b1ca347f2939254107b70a6abe092ce53fca136dd4c9be272ab20c41de426620a7efb56dba503341fb23739b37323ef078d128d039d4400a79e4a8c20be93fa86cec1f52e34925c7e00633fc894fa00a0cccbf50b7ad3aec35f9fd0f10b82d1b5f185b63abb1ee19396217b5d8411fc45cd11ae815e728d9d09acb20db0f4e537fb0746cd6385679242c6bfb612967f3008afa44a0269dfc064c95f88cbcf34d2b9751f06b145fde657446a7102fae0c7961be02e59d6fa0b75882e637c69c82bc2cb0232ccffd2964d8f91d0c2a1f7ee7754e0d0ac69646b210369d3feef9f68b8a1866c56469942ffdeb286d0e3be6eece122cf741165dae9de778016599ba5cbf8826fd1db561e10fd4f9c3e2328c64b6ad0b75c49daaa503cb3fdf7bc79f5fa91c3a59f545a969ac03c72a869dd1a1c82eb97afe85884616f011af2d9df656b8e652feeea2b8d026c79ee19d3f7d0f8cf55907abf368220fd097ed26fc942a46af35a5519bc8573f57df1e97cc507159e696322ac2581ac930954d8352fe7d4e346fa1cb15056a5aed412a19036d3c46212c726a37e2442a52548c27731bec98f5e500bea28c8608f3fe4f24cab5a2582b9c739491009287798b03995f891421e830a8c195cc92720e4c08509607498f05f6be99efb14cb0045b1621cb63e6c1c19743496f315d49daaa7094dfd32aeadf2510325b767070a78be58d9d0c90057598fed16fd9f617f5f5a53b7658a9cdbc510c77d17a757f6916cbbc7b293c956fc23f2dc7a6d236518100e715c68a11cea41286a0989c4f27c77f612d7ddaaefb7b715b4a1d31f09a8ed1e00b131db832a5dc7fa05ebffe2db5a8cabde42b3f2329b40a309e5e19a7a22f31843a932c89938e86b057d0fb2a9afef44b0c58bc879bd1f407d2e6f435bcb294192619f04a2a70923778ccd4329f24d0cff3d95a22f408ad046b4a195916844ffb64faef20677bf380fcee634c38343a39c7c23016c61cec95097169b0b8ae55e380f3657bb2a7756cc166d5287e948bd28d07fc782a75f20387592eccd0c0b146912aeff22d83d4c652c302751b2b8b8cd25e26c959a9adcae57a0ea75c29ad0a0b6293cb8859887d25bb4b331e839744847766ac9f98a4467f0fc99725ff98b17ff48ee81b9c71166e965e4d11f8cdb3e95890b2897534a8e1b8efdf39c847c5200c48ecd4f0bbe143ffc2382b4408dc18f84b723af4c0d9641726d5e01a5157ff2807110ceb7aaca8cbe64b1c380afaa957301835f11d50565e8962e18780c141fb53400dbd52236b5582709b676869488ad27b8290c4ef3f626302cb95c2972641a10e71a59589a9b3c4a611f11d6687ca66c40e5841e7ec15996451bfe937953ad7ef30b832c31f3f22518f3ff244e4fe150b2893e68d1c0461ceed7df57e09284fb6bf5ca142ad4bd9f1afa8e68eda1078c8c16623d21d1ae6a85c414524b0104886acef09061d7f91d4c60d77516869d81d6ce45dfe77a817af1eee577d0e06cfe55d953dae73710b8b6b01dfdea1ace9a894e40b60f3f4d5e154b7de9bdce416bc48151bf86e2586d8079290784245934148bfacbeef5687945b7cff578148e58e045fb1766854167bb16ba40948ac7a204a6360cd6c0e7a08b9072519fe51eb7111ddf37b606b514e7af064d060a175cd447f3789c86f2cd860c14a9af5d263af6ebe70235bcd7250ca7335d9561382f32c5a6ec1185137992fa93bc1e5cb541cc14bf26f3f964e86cd0b03c7a43e79ae4eb34a4f25e9db0c1583b250332457b0e5dde34da72aa0edffedc5c2458b10f1007fac0a883564699ac492f6e4b7bde19d4c955beb01246f07c98b69a3d9f8046825c7b8ee920f361d804941b56cd4cf8e618da16c9c7638994840cfa5c2790895a440f53b32cd0904393b5a79556b052e3f8ee48c45d274883bdb11168bb9db4d4d822d5dd17a21466fec066df569f4306fcb16f3501e6bb5ae9b5ef3c5e2236e6016d1e635e52f9996dd48fffaf4ccbf226b3eb9429287e28f714f463631ee470a3119955f78ac8b828cdeee71b441ac0ef5d31056ea3f463d032d98758c4550c72cfcd76e33f0ce3a7f703baa6a2e459abcb3bb0e6455226ac05712233306d9fbe3ea6d5802ade13f419093e502bb7aac29431ff80d1f4c82741823ef7e0392879e889123782fe324eb266e7334ce5de4af58a11413f996bf77da9e612f584e4436b0cc01b64e7b0a4febb8a902f3a636ae202f4b6add1fadba4b04bf9e2446dcac60195e33e1f4fb495fb049f48c20eba3f9f044a403a18361f4d3ef1f217793b9bd2ac47d5e4b938fc055b5012121b536e9946046c3c5d7b5650bb4b334441df26e35d12f47de46a78b3c3e7a7d417524b68c50d46536ddb821d9b9b18ceaaff3002c11998dbe007c6e5c6995be077def8c915f5b57bbdd3e72f4c9666d6e7630ea386b81e5cf16ff4341bc2b8fb8d8a8ebcd399c0994498e99194d9cf30e0ebcb04b0461e2433a1dcf4206a141002959e5fc9510155385070afca7fd23fe0b71b5fae2f3c3b8b55e1947caefee2988f187f69ed2e30b4360b8402da564c25e9791a0e94633f4e8dd396a82779503e0d0689a111a411da1968c7cb2ffc735c6e8c7012725b21cafe64a01f9a1061807fe4e0450edd30c7edf7410a1e60e4fbbb0816204e87cbf1a0f9bd664a60a6c68ce1e0a03ab644bf7f8c822b817d6899def7ff2777dd4eb9843cd4eaae0fb3237e70552d0c129b98deac2431510a1e99d805a577017b6a7e67085765da456f8dd822f7999a8fa722f96391c3a18d225bab0e3f70c262ac19b6f6e0eef107b15e63f3315a42c1c752d0fa46dbfcf585fb30b3aeab249dfff7061fc1487bc2e0da6fcf51bb7fac7b63f3c1e5311c97e0176562fbb503d3c94ceb47ba58a7bcacf9e177e733e29e8fd421f8e72d22dfeb778528092d937e6a17b86f6731f7d62664cdb7569ea0f50d496bbe7265825064bb5403de9a0fb7f5c71ede9422a2833c7daefda662d69787c9520babe6a721afbc0e828952170235f00115fef331a511f9bcab419ed486067a3ca6558eacc25f4c3daf3e549874acd379ced987b31898d43d7975ac440c6f3483f0009c343ad64a4710cb6228f65a2a98933af373a5b033e7601d3da6468c025f45ded748c26aec28976b331fa90731233d91c186122891ae68d1168857200c3ce45bf74b322e8877e603af28a0675ee241b6a8fad1fc7caeb9e557bc41e1c569437e82b652a00ee2c22860a07991f6d5f04d05d879f4e3bb45c877f1948908849f3180ecedabf1b655e8da9977915bbd563ae56b5e2a8333622a431bc0300e649e42d53645dfc03f0d7ed3f8e24181cbd61bed5d445a374459beafc7d58a701d2b6132159f4b4ef83c0f6ef31e9dff3ed323f8790c2449b993363f93d583dc670c182ed9ab86ef8c1e42ac38e85b5b644210d00ce5326675d99b53c97447e8d27d5c8f97fabef699b757a3b6480456e654ce9eb92cbef39ac522db6ca5b9a9ff86cd212cf9e0537451b7e0265c78aca6f950c50344d4992575c080e50ce6b0c3ad4a84161c2712e797241d1e4e0db1a1e9068e910a44622cd1640305e40c16cf1d042d547b3d4643a55faacfdb6b26363ede0e788a11913730e5f8f779907f8f8784996986b3cb7aa22a64ef4842c2056d18fc322bfa99601bf7f5fa8f0f1a91f4c10f456d47d978df75010c2150012c0c80ee251c5a429587b886f9109c6bd34bc8a6e21c90a831c91dbd3fdbec7809c93083a937f50c22e3d35c3a265d906eea91dad4b7436e58a2060fd03439d24dfd46c60db44c79dec4a11c86d7200cfe09f57405c0b81ad68593eadf711b73058a2a0e41c7b06c13fbe1af5c8d5bd6c31cf2827db85c98e11c7a4a2805c6f3a86c205ddc2aa662358395336516c90f1cda51d295b505ee41455d36e6f53ccf59be99a36989df1ed5f1590de14d7cbd8a31621c27ccef2b2887ba7f9d53818517b5c1207aa8f6d2baf8ce11cb3286fe3522fcfd8d7bdafd3a2f053f1e58b737ede73881038167048a067258239dcd11707d578cbe03aa5f7f6faa09bd4bc25b3b28373751bde5ec6cdb5525b66d0e699772206c0cc1ef57684d6f53529710d72f8b2f0160ca556d2b6c35a98606fb5282fbf13a21dd6fd3a9310fb4032a6862088fbcf65661e47792b53779079c596dba547ba6cf1e0bd1d76da4e2b63494d9b1aadf215431f254dad54c9513865ba08c6c255f6c97095c2b879005d906bac134efc15589664da56dfae148571c7bc8eef56bb7d571701568c78e97d891a4eb53bb2fd7ac4f0f32651585cbafb9045ebd66859cf3b51364c5dbe7bd122bfa33d9724313d4f50ad4743ab6662d02dab8371ab2cd6e8636d1dd431e442203a4d7c61d23b5d4c48ff3c5d892fe9e6009dd3ec27c282015cfc3ebf69dfe2feae9cd83555b44ae879626a09987e1c1365e8ac192ae9722fc3db22168d657198e2285580a2ffabc7b0316819582d661a15df8046883c7b9e178738974839cce4832a0130c4c7683aa1c73636e514dd08c19be7d525da975cf41db3d386631420d26f67037d477f7fe317a57d6fbf583340426473c516cc8797098df00c48449847b4743f6d3512989e8c187db3b9a02603f620a65e189b8d3ad80f77330031d3bd02d8a51d30e216111d79e0a4bdb26308a36e113e7108ac96114e309ffae04b9afa7e4836ff4e61c4a4019b9070ed6f31ca1df8d2e2f1f658af306ff1db1207ed31bf76fd392cea97f6d73bd7e1453f773d5ce5066b82a6f839eecbdde9e40564fab1b5aafe1646eece8e9e6a97b950e3411dee93c322c383d56fc1ccbf8fb88335e2f39683f7c37447bcdba3a982104c7d075ddff671a510d1563af16c1802c87c5cdcac0959f65323f206991618f3d9882ad6a4333a354518ce1d3fa4c9d6fd8bac19c7ce4628321383a298727327299c1a2a371105dbc66489808e6cf1e546e58f54a5048c1e8426dff8d7a536ae17345997d8d47159db8a9b374cdf74db269dddcab9ce7e638137aa6e1b46f08cd3e37dd12a3362e9e9e4dbbe004527747792a864e1a6943779022bba67b37221fb7ec07234af8e6cf4c51e263c5f9eef7bb6c5cb97183d3cbec83eba9477a9e16407f1ce4a77c8bd8c0b8b38654337f7378370a99c11004541b9d2137dff8b46b561a25a47ccd19d0c36a6f9cbdbf0057885124a528e86e946af909b29c0687f5147595bef449a7a5ecbbaab0b91f45206888079fa7e93ac52811a4224ea5e45aa91418ff4a36ac21161a013c4b2c63d7ebcfa2a7494b3d00b3027ba0a2f8fd4ab9d80e95316bef8164d4ad132c66583eebe1da8c5e339b8507e9d4c0a3721f13cb9aa8b844b590cd99e50821577396ddd7341f49d1bf42b1ed28d4d0198d6ad1b538deeadec5019d871214b3640b740253d9c49c981aeb6c4bf6321fa78e6a1ca70f80557a15cb07f354821a8f21c7b8ba903486d210e48a3a77914739e1b7637c216885f2baeb8492f459d3e7c8166852648e852fdbf2592e03ca4ec41dac14a09f5516596301d385c2d89669d4fb9b4250ab0d7f9315e5491ed429439fcac08d69443a77df04a657a0ff0b944e5bc3b2254cbccd2c5f676a9d64ff254e0cfe3f7477732c5b314a7692992728888a7babacdcf6274310aad8615d225239d0f45a592ba7bef1d5421d2f66ae07f40a615f0aa0eba05356e8ba895540ea8e35dfd7a09fdf11355a31da33982dec4ce0b75649ff17f9d508dcad88224246e1489ea2a73bb07aac44c93ac7b272c48ad4b6d0d0edab963c883ff3aa6ea53277857bc0208aaa84e858d008ab098f1856db1fe089c570abf5717302b6e428ff3f7179de8cb58677265c758592b4756f62067ce53b849e42b3e25aa85b352c45fb5e92f099db77ae8470080a0df9fe351a6949d2eceebad4efd9154af5d0a5595a18c82788e8d3fb44ee13ab601235b6592e268983cca394fb36e1cb43b28407b851fe438765c8f27b08650b7315f84cfa2eca79bf068559ea993064d69b788e2bd47b6f842272328f4fe6cea70ff512e6744c49802eef738b76dc907b8ed36b257beaf40db0f71cbdc3ef3fd38c75f0038da20a7d0c822e5cc46221bd478f630d3dbe9c34f30ef781b2b550a028e859a074f41d26fc6f0c2116847f08275a686eefd655f5b327c4721e22879e09bdd5ee4602db8be781dfacb7aa7147471fe4d437c5414fa5c06e16fae35d68d8194439ebbd5e7c862811d1dc9b8b515dc05ba636e6aee4a0752ff22a869f18f28e927e67e7c57aa54ffebb9aa167121d1b6acb4d670899d5412909d6f70db9be36b80383f1f8f7ac626bd9adc04a9aafcf2ccbe93ffe13e1877a006ef09ddb5cffac33aebccb14826dac9a801c922d4d04bef6283890f97753d5f793ab154d856735f9992a656279880c59bc97234ea621c06f4a010994f8a270f34e961dd0b40498dac3c710fbc90d6ee49d7b0962c079b06aa86953042f713fd5e0168095578ac4ca3d8b457771e4ee90e0053bc34892306d14e78469e7b392c046afbd3ac2699d0e750c2286857894920b1e156df111f7f4a42c84c0de25570cded32f8de8adaaf908cc4e34e99fd635e8f4724f85425e8cf05c8ea7e4302afa99a77cbe498b2b4eac0db16d9dc668608ee1c820672fb9211d864e927bb1b84e5cd107cc512a80f4fe054749b421426467702e504499330a7438ac2fdc5cd4e622f7fbfa6750ecc6e622e4539b0bdf940992e8131a229772a967d2816d9da6b62c17808475c710c5f4ca3d31c492ed6c6e88cbda4321b55e600ec9efb77a02dff946333ea50168e3f0a5894067f83b5a46b372445335cc4593e36369212fd43f76ae100bd4382e221029705358ed10cb33b1b137e424d1b4c96412fefffda10ed6a57cae36df1577361ae864596b44bb9cceb4d2706e4b6f8fd163434832611efdf39cc2eea35a690d8e3c9335b62bb27c917b09b1aa2038354248ec5e38423165051153d15096af7b0f9a91b245d4c72731414d9e7bc312e5371e9d1bac5a706d2a544eaceec8b8a958ac1ab8f58b6bb0ef6c4dc63b60488789f687c6c6908bc68bc56af801e2558d5d32f4bac9c4b714a5c82d9e52afa5ef63850478dbf256d872a786d2eb94b6d1970d8836aa0ef1dc11d652c60e13812fb4d0763843ffcd425738cb1ec75e513868f5f34180aad853edda3346e4976f215c5e1e557cf671193fc4ed9068ac463b4fd2e4a21842387c2ef1881e8b8748d5c8e5fe32a564709adf946a092ee42ff5b5641aa6f7602c500c71b91bed0fa03c0a171d18715b3e92d5ea83d85f1a68ac19b52c1808fc113098601925fb0b0d60580d346b46277f910aceb8e0bc88a5fa67c5f94d72199732cadc63a86a9cfb171e9c89d82f34377bb1cdf98b73a477b56d2b0442a1a62d262cd7d0644e06090c60af9a26da0e28f2c7ffcec886280e25fd225bcf1b77bfe8e4702b9eeaffacf85730e38f844a772504586f9831d5b98fa6687fe1188c647d93f25987dc8eff61243070bf0da8502a596bf7ba5cf4c5ffd2dd00f2fa2f4b69696f1e77c023e86c9e54b1f17b0d8b4ef9669f5c596499b744e333582b1e14e8553ab8e0424caf5d58f0a5076f23b3fe523e67bb2625d289b99c6854a287c538eabb31ce446d97ff88923f25927fcf6f1473bf609b8400d7261d7f31f1b19de1e9917e67f96c81447a650349629a420efab4488b36178cf7b640e58afcb5f3363c5207323695e1376e45ec1393a35528d40079f8e5a42d560d43704ffaf2a6c6980f1e964996ef3e4964b1d4ffcb4c5e44e8b4121f420a499cf3a1cc7e2a82f1cb4a04a968cdf8f7398d90279e97b027d1310dca10c3e9c0887eb493a073622acbf26961dced5c11a548aaff86ace4eb8cef16e065f7779e28ceb5273ae6a8afcc751d9842f9d874d215b9e605ed332e197dddf8da6e9cb58fc76225df541f5957b955b31d8e45ad96bdcdb8039e571d5bd46c1794ea30ef0ad9ed0cf7f8261e225f7eec68df5634d76d40578b30cc7c46f84ea7a8f71b08098fa6002a332a65a14749a503decd7cf7f08c2f24751f4a2606bbefeb4c7e77875d847e2917cc3c0982b6f97dfaaf1bb4e43bd69cdea172d07db72fbd128afbfeddf89d9f299ba1fdbee23eda6f64de17cc67d286753472fa16bcc2fe594dda0a8d0edd50441aa34ef73bff1d634318c610e18013e175aff7d4be742301db962e7b6d4be7eb814e584bc759953230bd655f8aef7d1d56d4139ccd029c8659788618af6f19607518b5a55bcd221d64fda7a859087b2f3144df71d4678cde3e13a651a49681be738a31ceb36428dea6d010058edb4be7400ec1507c7d81a226c6cd96ce46d962b05cf52ffc7723c887ba4958ad85ae703c4af093f791a73325ae621acf09c198cdcb6dbe164b82d9a666e8098ec00a97d4cc0b6baff09b53818b72d32b73312f6136afac602354af167bde5340a7d550dd6c6508eb57eec245864bcb3dc7c6086e7ccdda0b3d6c3c7369c3df2edc471115f526c576279a7356e8ed65737eb62ccc33c7114d2df4b35ab21637be33a9afab0c492a988bfb899e3ddd2e5379de129477d03ceddc897148dd1dbd287625d3bfd4999366eed5af5b61e91545e3088918998c621e04a89386b3993941b82ed63da4eda12710c6cc7131a85e9888c07127dde3c80cb213e2ca072495b40c254592bd27edc547e149b73eb4a138cb3a16a89cfab2e6a899e866c67926c9f1bf1824b46a712c1cd8fbb050830538716269682949c3073d936dbf66121f17910a77342d35a048c3c988498ab3a84f5c1356b4360590b65bd8cbf7a693c1f8c28139352083880e444a0a47cf840688fc0e7688d621d0c205da5070b1314a46340dae831178341e1c4a5dc3dcdcf9182e02da304d570955a36f2eb593b10aff9dcc4c467998f5bad023611498ddf6cd88131c3787440ad2c18c36c14287c81ee173fd6a65833fd68ab16ea5f4436f65d8c29ebc32be185dd9e53ccf004353ff6f85b349b518cd3133f4e29ff92a0147f824b56a33fc9357a2ba81ea7e44cb440c8a8616b50d5e9fb60ad125a9c2065a167af4974a6f854fc925ead008d933ba8427e8353c75ab816b7e0a7ea9c27e9751bf615726127a62b95198ddc7013a23fe0d0f0deaa0b39540a59f768f36c4d51363629b560a1115bb104b4fb7c11a36e62122bfd23b475606531a867719e62aa2b112fa291e359a324eeedc669db0aa97f8a34365324b546e5885532ceebcd7e2ac721303dbca47619786990b37aa04177512417b1032d295740fe6512ad98d945999cf543597e65f50c1a337f93782bb265654743cc295cc5ad6dc0259ae4675c291344b086bf15b9fe6f03c45780f6d9b57c9586421299ed335ad17eb96a7f72628a9e87f59f886950e3c6d6e24f12a66f3b11f0bc39ae37aaef8cd2dd2b4f895516f0dfd5f0c388025742759c07b44e099186c23f3af18b416d14a64a1afde98e27aa64b663035c540217fdc650b03e9936b9f943f92a704e0abc68d863973d7dbd3e1649d07a98ac900f934cc555a3d4266c94a28071445f54c5b9205bfbd65e9e247ae4282270c389be9fdbd6d17254089d3876ab5a6eae9c0a820c3f02acdd18cb091499039acd1309e15a5102ffcae26ba989a9294fa45b0d65818f48fbb1964dd1c4369822bc1d0c041bdafb5c8f2d4426c99e8d3f7bb3ac9ecc0b56760c3585ff30b8235dc2cb31e4b6cbc59297d14e15886380b5031c163d34ea325ad1a7bc5b8318ec3ac6f304871614183058fddca54f856bdad6b74f39e49f52604ec40b98e4c962f58ec7a107b543758abf5eb648849ab22f49822c99282f11dd48ab5b5a14aaa20bfa24b2216ba8105f551ce443331c26fcaaafd52ee4177646b8ea69ec26c5fa07f46ed9861001ca4f1d54e24d258a36f6eca9d821dbbc53354a1c6c1a825ceb26a6e24510535f14469c5b889bfb336347ef87c742a2c665dab3351e93a055d3fced550ab6b9cd404511c6d6fc31a0536f7d89e5201d38dd3c61f061311f8b42462c3de75849eb4d6943de42fd0ca28d670655a31e4db4dfbbaa9beb27e845c613f48ca587a56a7c59014d778124f7aab3810c9ea3db2eab66fa2e45294209cc7ae390c449a0d772d6e3a5f1ba9aabe8a4a7dd3442ef9ad104cb3695796e121f2744d85c09d95b0bafa89440dff04ecd6966d25e974162bd1616dc59f29ba084d92595ca7d6484639780163ba0eb2fa1db89aaa39a60b0e522f0dc9410381bde2e58214e629fed8807a1628f92d86950c51313d05f2b4e799ae0c703dd93db59669bdd7f541ec69a6059558c28676ddeebf47c7988e0b731ee679f76227efd111030d8bfbec7bacb56ac32479bf1da0328dd97eacce3b270907a96b293be400aa46999278c9a011a22e552ce2a4dcf999ca9d9c7bb7245f714082d0cfdaf7bc071292988209e6579e6f28b6654e3e3a726cfe26bb72f4fe48744acae8352b65f2ebaaf2bb420420cf23715559be9c71dba78f450540357c27c0bf762069c531dff8c151759d0868278100647ee4f01a1ff404ceaf0a078c92dd3e0ce3140bf7ad33f469ab0ba97f1956f646516a6551a05fb8d15507e494ab1598aded4058cecff394e914e8a291b77ddc524321da124d392ebc00b44781a5a4d1ee3c4423ff25df85355160671df896cdb04e13c4533e7c9af3ba524434763c1b85b414e2cbc97baa78429c9107026323c668eed2d973ebd05f101c9fa89897e7bbf3a7e368cf382b326a16fb08efb3fc0dcb756264b0c2f15ffd77477b435571ab16b8f9636bc8889b0e41da6e6d1f3db8c3a6c8c3cd09f0a25f5000255ea6ee5b47bd554131c23ec781f02ace1d429514b865dd94d71264a2af6fcdc7be07a8d56c017d601a0f810bad30dfafcc3fcdf5d70badf513accc2add68caa742d32cb6c2fdd28621516443c227d1069dc576992452b34c602ede2feb527617fc5f881c55b608ce840a4e03c14051fd99f857355e780a84cac0db71f63b840203ad5f4d2fc7dad943737d3e20a7b6bf8d2df712e1e64714adc0789904143ccad8d256bf04f6bde5b5d7d15d43363cb2792e90e6795912ec051dcb24c2aba172424902c2ba1aac151ef85185b179f1abf694eca0ff36e165da4f9dbbdcbc53700e5af7c2a8a576087834b6f2c13e67fbb570fa0248382742be8c67e53326897df5cda04a912c84a27e48e27457a251e8992dcd1e14d480ae3d29dcf56af2d8b8534e1c621cc8a42c21ee389c2b0678983e822e9741f592c6d24735995a6939f5112977390079b881099e1b43db80037504fb49f57ef8e4d745e3038f3dd9c9a8a0d734e7cea723577eaf992755f9e41dfd2420c45d9894ab4565a52e21b9f307ad948e6920b9265d661e52a3647c8ff48fcff33c0780450bfb0ffd661564551ec0b5ffae51b24a7411cbd51ded64d5fa3c50f93f5b3458aa0e5a13a39a32b567f47ba7c91f6b387ba2498950ec257d6638f28eaa07758feaa2b5e723c406849983abf5c88b71fce8bbbc4bf786e5717944ee6b2dde10d690c369572fc9bc3b388ece0dee35283be926dafc2b4d74590a5cf3d4a5168c65a3441a7332accef0ea7c2a86ad448c1d5fd5ca5bee03c298c1963389eb5176e71d94ed2f1f3d9e92700868d97250fbc0d608c4b6651b2ac8d496a76c389280898c6ef115daff0658b56dd4d21a931e1dba6235b8ee50e3415f136b9bb73b52f6e6a560804e60af0ed22c007a80c29ccc9849824c09d91d00e7c47d152202a6068c2ef98a58ebe1cccd8e5a289fe41173e694d94e08c01aa70b50c187e1b7955d7f4cd2286f26c42cb92b22a732439411b73b4a92a22bc3cdae7f37046d397a63cb7db3c286261b156b22dc4d74314ed02ef5059cd23cc877964dd2eeaa3b41b25c7881470d1a974533d2be5d5e1b4f7bd287ae54ffccecd03878ea90e4818f27c6fbc0cc21c7130ed2d1b136481d82330c0904b0031bd7fc72e5c5c3a96d4ce16660b2870cc599d54f9ecfa0fb1aac10b2d207ae2f44700316e617d98ed86e7c5be92ba4f85540eae7667861790d3fa4d5c119c5cf7dc541fd8aca7c0b6d8ee4006dbff4a68840ddfdc2908d0b76d117464dac39a0ec34f4e53d84bd3d6ded2cbda15d9e814db363e4e10b116ad94744333350892c7b536b1235d06ad1d463f0f78bb96f9177e866d7d478bb509631350f3fa98ea15adfeaf6fd806ba76103e4809ba47c596a0b2efdd1bca5cb908c25aac8c6fc0d970bef56ecac8164efae1844a403540ab11eef72ecfe875379eedb7c0c8ae66cd47e27bec5af035c10f26d4307758aca3e733d9afa9b1d2586a9c02d2e2bed5c907fdf6844b2aae7df4c44b5235d0e43dc2e9a4cacb2bf6cf7064b6b7acd17e6822dedfca261230fa9f401bc0442ecaf0958e3d7d4e988a883cdbe720027cf3fd5ae3e7888a77aae5d865caad16f372e4e35c8e7ef9af4dae4978b35d45e90babbe39016e1713830e841755b8b968cd97446af1c12a037131078c89a6e78e1acb2c40da8b548067507e24935e3b00c2daa5e78ec00bcfbd6f250faae6716cd574aeacef270ef19b3a466d7726caa46526410a72e47d77d2d5b2aaf100f5326ef0b8866b1b93b5872438ba3cf4b3da4e72700ed738d1f0d0687f3a5616f0f69eb8d0b255107d737aa06224e0685efd8749cac9c680e897866f040456d18ce1a7e847eebe2c9c38273c230b80035ab7c02a2b71c5dc0d3ec9fe5992b351653e86c5d5aa43709609d6bc07ebb33231662356b04a2cec7e2fe4c52bac21c34169fe336aac347d47dc8406b0ea02c355302ba9f04b55a22a0655bbef302b40c4a01c47f8659695709f3d16811e348acba9dbe8c84ff8156e885994531487124d5492d4e05471d4c9b073a5fbed16820ce4c7a4f0dc8d20a09c44efa10bb2e3d065c73b1d5820087019edda33a9af0f8fc91cb025aad11251d01e4b48b6529925508d88adb8431b5f839d85fee7fa25378165503a0b92262c7dcb663b1a899fcb945d55197655607659594734c365cabf3faf883c02cf01c8c06df433f1b2e241a09b51b8194c3e9d01f3800d8020c54908646697f88887025d5ff9dc1ce3c8c6f315500497ed0082cc3aaf9993ae37cea1b5b695ea060013f1680c995500fd6fdffd72a404d1b08c80d0982f7964182af53f0924420bb7cce33382b7fc74a4a12d1113384430bb929ec3dde9d5a776a338acf1feab609a68024605e98fbfa7774501cc4c3f5d21ec1fb30ebfc520269e0eef4568ab69b64625c7ea49c848a3a83eb2ed8b38b188f50acd72cd4584b30c1d167942dab9fd4dc1e22fb99f6de7ad59bdd63ce8d0a23b501585c6f2458d3b557a5e912b8d4f33b184796577ca4b5099c17e4d1c136a1a6222bda01331df79ce97802bac7d00db124c69c8ae71ef4e614fa54e59c523d06999e62547ba1cb6ec6e4160f4b40d507a15fe759d96d4988fd9d1d8d5587670f6cc0540e205793ab3a18943a1df410229f6e3dc33ae6200eceb531d038b89ff85e0a99f3deac0527c186d3e090c8650b1b7f5b22e524af9731c4951d62d2b3a0c34109d77c77d4aa62cfc58f1706bb1ce4f63fcf5f9cd8c5c980f9b8845d247abfc5e087d12aeee3a8f17fcd089e8b68d66858d8dd3c116e83765bd3a9a5f1230f42efd828faffc0ea5f2a2c9f4990d59887a50ed0864355fdccbef2873790644434659c18f0d85514fa980564c0459eed1d851e5fdebfe49fa41814ca4ec3ba50fa4a2d7ea2f53dfdb9086c77568048fa61f873626076d752731d50281c598d7d5ca3171ebc12f58823c8a21a4f4b305b3eb232366cfcc92113b916b3514535c722ce968d7846b4ac40075c842e0e85457a416d697947d7b3e0c8cbd0ba2a94f884a325522301501beeddea942decbeb63240b8f845be6b7e62290f99a93c1e753b39cb3eeeb8c1f2ca05f1b5f794ca3a11b448b4a55ea681e874f9684b90314bc3bf38619e3fcdd07ac4572ad987e7d4661b9634ca05cc1e61d4b15ed17af60b5267ec3021447521cfa9b0b8efe9c1dc86d4c3275642a788c40c1debdfd67190195906d482699cd3faacc3fef96195268d1237b999b4439d4fc960dbe517c07692d8b839d279ac3f7a91f5043ca96298ffbbdfe41d528ff0ffc906d7dbb2e41e7c8abab13dc2379f20d449baaa18b6b7bc43b89b69239aeb694c7369312908d4a2d018210e89a353726da4debf8ecf42e25ffe0fb1d5f39e29def4b2881b430c65f2aeb18e25de890081ceaa2ecc4258c5901cfd3042928cdb545b1f43a50d21acfd7cd1caba016f53388bb814c031837519dc0b1828074c22341f74a0317bd09c2f16e9baa5066da44457cb47d8627caf1d30fcdbc2a1c5ddf67a02bc4089f6e7282cbdbf1e4a56de5a58974071e857fec4b0c1926a02bc50c84377981a15c72d9645fdf412f9c8fa4dc666c70ee8dd323fb36eecd951973d41b66f3a0d4a1e6b89feff24aada4f9989cbc7f666d2a83d5392d1075f0896562a81c1acefb88468ae64774316743d5bae1e1f83a3a1541bae47253d91245ecf137513acc7062f462d9d0101dac3d5cc76096c135eb4859947823bb1ca78f74c9e2876c173b758ecdc15208918646929653e457a5a90e300016bb2e2360f143e1d16fd11894cb2fb98742dbdcfd21f84a32cc6566179f24b8c72388b507dd7903114b6f9b7da9b3418653f27ad6a51b5b89f8bc034c286a242df51ba24903b4bd1641a0bae8e8ff7cfc46fa339dc619382a8b3777fd67c8be47c3ac011115beb551f915702c5e8f8c66ace7ff426ae3c34c84c44cc902edba6cdb83b17a2e907628414e0a8ab00f552a9f119a975e823384d8d723a931be70150bbf9226487ca17e23be0c4ac3bdd4125a777a8140bbef8019911c0c20c1a3df2580209acb71d3433ee35bde16ae972ef1352b96af692bef5b6b38dfb492a06fc740c2d700d0ad1e111101431d05c4c84dbb247cc8aa9da41f46ef0db4f0d6fd2ce8012b9bb5a56eeb7f4e563ec0440f329c49ad3fcb020dca270288b2c880fb82c2604e98490eed634b74789eda19b45540afb802a5e30bd10729661a3911eafec84164017ddb7b80d8122aad7fd748ce37ec3f8d3a370df83ad4a529e7517bcde30c9166469573e1ea2a3981e256c3cc08e12754b8ddb76a34348d1492ebcb75875fb4a0ea21909bb9df84500355e6eb6885201b4ece4a3ca4686528955f3f92b8047bd43c68fc3311509222a54261d3ca726991efb3a2ed3af21f0c1ac2446d823b65ee1c328a8a6bfc55fceeeba594ff268934ce2c2b9c85f5f12cb88d1db6b4417adbae01003bf0f1bd309fbfbf609017b63775fec0e4424a46981c2a305b25fb58e7a11df880f15d0fafc2b0d5c7039301a0a2a1e970aa45248fe79ec4ab2eb247caa142b15dda38d025818cff8fd61b6f911fff74f7eeecbc14ca507d6c8837468fc38c7e43d1d2d628ade78685f63c2f8ca6c0a46a4714be8a014552550e26021e041f6efe28845ba9f30f2af6d44ac03a60440d794fa355ec49d6bab14ddb26efb851782032676e689a03b7cf77af7d0c480351f42623262056e6744cc38f171a3bf5f005d89e5be1a786245b8ea6d5a811abebc5b7e7254df7baa4b77e64d68166f92c5e894c504753e4848b5c02e8911565b7f4b94015d86c3df26ad6f9eab1d344c6ed22193e488aa460aee2f138cc79016e163f0738f9ba26d0cc20cadcc6179593213ee8f013fa4588af9d5286bc154b4b1ec68858f5ec90e9c7da4bf99aae53b43a71bfc33df354a897d05b9bb46ecba9989936dd00a533862a5531143023db6a509c24655d552d4c1761831bcb1f52fb7f4ae66b7c3c6404977aa419973c52ddb2ca5c1f0870a439402029aa5cf7f94c8c5f3f74e0059d85fa16ddf4bbbfac6c253e54046c14c86fdaaba49c98c99006f997bec2f2a82c05647b5d72a85d16f7a40886aa9cb57d7e88caf8ef8eff35028e2aa5588fedd21caafd05daea308d1446fd8744cd0766f5d89b0cfd98b0dca5982978f1977c45e5988057c07bf595bee1cfde1b9c6c22f6432340a4f82eb040cb270e7a1fbe1a226e576312b1dd7ff6de4345d994942c90ab977f64f0f794d01d588d48a034a1d33ae5830ccb0a30e62164c9a9f625db6e00f115a350495457651a41e611d5de8eaa6f108eb2672a4cd892f1dc742ce78200080b798d9d57ce7a00bb42b0e27555a0c0a46f742680721f0686985578870c91cf6665bee2db74c5206080b990a750a798c92251ef494a8d9f93380d2caa00aaa4d7209150dec9213ba9854d9f94184f8b1f38b308288aa267176fe14f8ea0b46808c112e1545b2c2b07e2a8fad7e2d6cabffe3abdeeae79c4855bf97417d0dea6f30826df53fb8bdaa7e070faaaa5251edd8ea8bf0d567ab7fd5bf49ea93e06beed54f81fa766ce3def4b5838dc361332a285fb45019a7886ab79a1c31ade620f69d4b9e9c737abb756150d59d3455385555551c8eea890a296ace59bd6dd234c772ab6faa5453585bc5aae14200a5c695206f9448bcecc86aba9471994aca6babaaaa6b585a6cfd3f39220b3dfd19346c50b177b67efd2174f0a0ff438811686cad9f045f835e7f0a4c245da1febb74ec72dafab675eef55f225a7d6d7fda0216a69c8f58b2ec9cf3dd38dc95283b3593c66d8e8ded0bace12463290e9710e20ff877b8813d0f6e489498a638dced86cc92b452c4ca9cadff47eb0e76201db9a6dc8839a2238acf8d44d08d0bced61199d5a355e3d6b79ba6a23267e7ffc9c72ac89d8f5c4e5f6831ed492303f7b7db8d4a8e0b36f8064775adcdb6d96c4f64fb9eed33d85e83ed3720d9b6ffc0570adbf61d7cbdbded3dd8de01bea66ffb106c6f1c0beedbed96d64ec8606723991f3bff4ece3e9b89c43e9488a1e7cbf625471663c815212634e150f303fecdb181bdbca4328ad1c63133b6ce3963508d61beb6d628b168b399a5903145cb4d500c4b5f1c3a6b6badb5988c9ddfcc59625f3b6f71aada3266e727ca36602fbde59cf305fbd215c6648b16195bff8fd65aaeb67e0b3d6d6d49275b6781b1f0b2d9ac310b0e1c2e37d648e5682201938f3372d02c2d817243df8a3bdb6c07304ff8d7095ad76c5576b6d96cf9cbc7d6595f6270e7d2c600e312214a5b8e5269ae0dad6d4d47cea48ee4716b2a6033529dcb82a4daf6d565a74c3f39e733c29dd39b17716b2fb02fa800984979bdc16415650c95af304b146c4bb63e83666a67342748d929bbc250565695e66999541b51a4c593125fba52f420d6b845d939a7699a33595400c8c2d43004a9394d73dcefe5aecab448d3742ce835e6a5568d1dcb04d9f92dd832cb9daa326960baf8549929dbf943c8cf01b9f377f070a6cbce9f810fbeda2a321d3b3f085f85c694bc948979d3e345d98d4b63678c1b0daac8f4d8baa7ca8c18335bbfa9b5ba75d598a5ad89d08c21e5b4ad2a4c982a31426a3f39a2b7d0e3b2e06ac61713c4c0d0d05205264b6e28cb85cd56a59452e5a5c7d65daabe90d03022aa0c9712736698b0fcfa01f58c0dac0da96578f0ceb39c858c704273e5e518230913af1fb0b6953470313393460693a5968c206bd35a6bdda569e72e533258b50b1caea58f99a4dbad2c2cebca51df6e719048b828c2c68a6cc90ff83136b0773bdb39df6ec833aa2c2b5106c02044e68dcda635175617279b9a855c62a5b5e621bb61b3e550d3a25835ab4a15952cae176b0fe83addcea576d2369b16d28a941d1e48d9a261ca0c2e5953d8646d59e11aaa59548658d15a6b1f1819255027aac881b181bd9bd6faa6d3348b4b2ceb38844b0945364beb0786242e69fbad7bba5b1698ad83704144dcdb781dd4343067137aa0deb6a1c7f180433ceb3d1cef857840ade3016b39deed66420dad2a1394164c54e07154e544ece864000d1812400607d4141439a298ae3035630bfa91a6555160b6c6c66530184c310209171113ca1270cebe5e00516d6db3b131612c79c128db3906164f8c2b61328864d0a0cd6cad8f2d8e2e96b48e2ebc84bd70d24568838bf0ec51fc94532a9d7c12b961e14804cad65bc7222b287c2da7e939c48a9e5322c60b374ada4869715dfc60790d0972c28d9030baa6cd8274790911727441ceb99673ce393f6dd9ba2b08920b20d0856a99e6aa0491ad16b92a1c5a6b7d7dc009fb91c5821f665e40a46879f2a1416b3d228518272c96b47101e5c80ff82c36b0f763b77ef36c6badb5e632c623cace5b7af4e8e24402cc490b903d3aa901f3216500c79e28417634b9808102d4ce39eba82265b8b4f5efe8e350cdd651def8256a0cd9171f4556f85c6da6f58ddcf4b4b332e90038acc2e40072e598032d8b97591914249668543953b1934522e7cc23cdd6578e36a8aedc90a1c108a9b329ca293425bc86dc1276a0766642913c3271b16dfdb59f1cd187516192f103ce092654dd249f2f3b2f0db7d6f6b844a5831c867cc575d69380704c0e2250b0c8e2dc143dd976aca17596733e917572ce64c19dcfe57996a6471a6954cea50d0bb5355a295ac8203cbc564881a32f0a3d268d8e161a746061b154c3a5393b6ae476ce369bcd4cd4ed6d369bed76bb71dcf9cd6c9b90e470a0d8f9897070d93907145886303dcaca74f161021212277ec8c8bc6a4b6db69ce399c678d990d2c046992e17045661a89448ad39e1c684adcc94ed53deb9b4edce339b0d8d4ac3894c8d151cd498422eb5d02dfd5897c476073b33cdd8d98ad1f6243554baa1648854c2476b5d26666bdbaba92d458bbede07ea07a2449d9b90474dc457bba994ae768e3243c50cae9d9f28e591f0b97a2cc9d6aa366118b5c4b8b1f3ef64aa186e76eed9d99a50ca08a344895adb313043e516242d344c5c24adb5d63c6d7d1c401966c206545765ae6450da295b5fc72652bade3cb9c10a582bd2b6aa311c61e921c72979f6236bce4d4dadb8f40e2da244ad75ce696a4cc3b55555cd75204e981671c0bec6d2c8c15d75ed9cdaf2063796b9013b971d68d9f935645555696469a1cc82c683000095a96ad651e52583adf5ad8cc679762ecfe569769ed9b2ba4c6cad35eab6e7d1560fd52a143bdb6c7aa8d3f48629d95aab5ec0cc2441d252a3a6478e937772cea92d2bd53e4d89780a2575753fddba9f76f97a55de7dad8b5561481c6cad5120a063093b361010d0f7808080deb2f120e9c8ceff9393cc76d660e73ce2a7359027a94b638eb050f3254ca665e11794b8438b6a9aa66d9d828a03d51e756d47e187cd36f4606b14625bd7747aa15c2899acb8c2d5e505c72c8ba16a556ff09c4f90ed344db5de5a6ba37eebbe4b0c06832bb43e03646bad356ab31d91a6b24cd47e722d767ea22309af9ddf42afc7ce9f4189323b7f013478b041c6ceff413e9af0b2f394e309223b7f87e4df65bacc6aee7b3bdbae649bad05112f172484b6d6baca45d3d64fe4ab00b6d66831cd7927e732346cefb4f59bfa350b385bff4e2d45cfa0bd9aaa69ca226821d5b148d257d1629a5ad9203f870f8440e0c0f912b628924fc86976e415c3ad07b0b5bebba4183572ac78898981963fc83993a9d8594dd507a228140f2dbea8ddbf5fa5226d6bad514f62a23dba49cae4d692193433e2a7f37193fb6a8e34bbcca3af437fbe79651abf98c4b37dbe39c4be112cc8f818eb9212d345e5770afd79b7edcfc74b5f757f8e2dedf3b1d257fbc60700393dc658992dd972e4773e469e8f8fe763295f737fe2255f83fe7cace42b857d3e1676d9e7fbd257eb669f2350c8c9615c725ab1bcf13bdf95fe81033c7c0871eeec13f7e75fa5331d3ed9a3bb8ba7adeada27cf3eff8ef90af4e75fb2f3af99af67e77bd01e25fd6081852bce0c252e7e679b7dbe17a57cd5d9e76bec1ba19424086589834caae9671644e769b86f6fde6e4343424240d46cdb856db3e974b9dc8f355f05240695a02022f6e9a10f2f5b736dfd83b8f5eff8aa61e7ecb465a36fa23e866cf4777c35da40404e4ad60a1a873b97554e2a2cc82a543bb6ef31036b0ffcdd06f628e4ac3f4759b1338aa225385db27d5e15216e5055a4cb952a2348c2f67986ea0d4c616243868c99211bab052c0a8f36594d5353d6006d6001368ca03d80ce0927c263a3522e9cca1243ce98d841e6f503be9a0deca1d9aa5f289aab862077bef2f3da57dbfef95a97fd53db3f3fdffbf979a29f27562100920eaa909880c1cee6cf2562dfb90c4a6457320bd8f6ff11fb61b2aba9656afd346dff1f16bedadeff47f8b3648f84b6ff4f10fb4ce44f120abad09eb89060f020fbf9edb2fd6f48ecb35f5d9ed84853034b9ad8cfff96f4f57251629ffd42a3452c8e0a2048c6c67cbd5b9648335fd3b3b45b945d4d24486e52dbff46e446bc15ed916efbdf86d867168bb7a7b125f6592c326441122c726449faf92d887d23564469a932c5751585e3e77f4bf2f56a112add967cf5bf355100b3abc9c4b445014921698f72db9f8211fbcc2190c23169c957fbe4ab25425128426d7f0a52befaa0d9d5443291d2c88294d867268d6d7fdb10fb46d4502aa5acf8f266cd929fbfedc9d71bb6fd6d44ecb36b905ca6cc9a989812f3f3b7157db519b1ef0226809181d2424c9bacdf4d22bb92befadbc46c4c76c565cad89ab6bf8d854d685bb24740dbdf16c43ebc04da92aaaa946dd950610645959f7fede8ebfddafe3524f659af1c56e4809942030bc6cfbf96f4f57a6dff9a12fb7a94806c2142e68b6ccccfbf36e6ebcdb22c62765624ad1665576cc54a4d6afbd788d488b5a23dc26dffda10fb7052897d56ac8d10305792a6cc40fdfc7dc67cf539f3d526f96a854ab52521dbbfd6e40366571c15e523b6fd7db67c903e497bf4b3b1f1b8fd7d82d867bb84e9f104489a3554543f7f9f245f2f96edefb3e4ab7df2d512a17c8a3ab6bf8f94af2a9a5df18e1d6964cb337b74dbf8c9ad1c30634e7cd0409344e6e7dff3e4ebbdb2fd7b88d857c14a8ed41b17295c287ffe3d455f7b8cd8378247d41c1c348c6cc959f1f3ef39fa7a91c8aea47f8f580f935d7109b8849ea6eddfc3a2474861fbf704b10f0b714fd231e9ab1df3d52ecdceb2c4d8fe3c693c517675356a78a4b63f0f111e224fd11ed9b6fb19cfd3f6df51621f05b69c52bc28333105e477b9b6ffce99150b43f5050c581024623fff2a42259e255fad310b8abdb3fd77c0ecea60603b62db7f676b07b9e3bf63c43e5702778edb7f27887d1f1879149320c93833e4e7bf93e4eba5b2fd7784d83701123eb0b89480b0d8f2f3df59f2f56e6dff9d21f6ed145733a62051630cf2f3df79f2f54e2142ed14d1b6ff8e94af3c6876752aaa34b2e5993df25187d867cdc6bec4d0dcd0f811f5f3579f7cbd52b6bf5af4d51e7db5c8aea4affeaa98ca64570f12446ddafe2a0b55a82ed9a39eed443569fbeb18b1afc253d70f3428a82e4d7efe3a475fafd6f6d7492ab1cfc2d11a3bc1aa2a98a2c6cf5f67ccd77b5c9a9df9eaaf93e66b945d9d070f1da9edaf434487a853b4473cdb5fa7c97de7d23f1df3d52609ad6c7f1d25f7d57efe29985dfd86df48c5b67fba95faa752ee4397d2aba4a5272294ed9f42b98fc2cf5fa3d9d5911c49a76d7f4de62bd0fbeba53ed34aecf324e49692293f90524861f3f3cfda5e74258652132e35ba4ef8f9eba2af378a5d1aa364d9428544096f7efefae8ebc54276f9aab7bf16f395c9aeb74c19165ae83eab7397cba411258841710356e6cd9c1d3f7ff4e8ebbdc2c053d5900a86931a4d7efe68d2d76bb5fd5125f659325c4d3f908a802d71faf9ad5a9a9d15d3ee972ffbfa9f31d89ce0f2149566ccd74bb53d023dd268512951a4eac6cfff3cf3f506b16fc414942d3496aed8b092e477a10895967cf5479bd021eae48f12418968d11ea5dbff04b3ebd5a2e514dbfee7d6893c93f648ca7da7d28dae92969e4ea291ed7f42b94fe7e79fd1ec7aa9a8d2b67ff6cfcbec9f95d8778f44ec3b89cc3813638c0a96e1cfef93ed16d995fcb19dc9ae37c80d92330b5f7fde3fe7257b745e223169bb0abe70c8411b621943fcf99ddafe6652897d23808c95e0fa51b544e6c9cfdf1cf3f54a2d9bcc7cd5396bdaaeb3fdcd28bb5e181786d4f637899866d11ee5ed4be65892af56a8642ea9d84e61fb6330bb9ec0f68078cb579df7c7487f9cb44746ecbb410772f9f2862a0ac5982c3fbf4eb68bc841028b96e254d59c9f5f13b63f1e629f8d7363868ab22461694b7e7ea3887abb6b34bb76c04b1a99af3dcb337b84b7bf2bb12f04f61130d824c17281e24611b39fbf3ff97a8bd87781375c66a83163c411f6f3f7a2afb7c9881e5e53a2a84a687de1faf9fbd1d7cb04d995147326bb3ec06ab170a13b07f72085b845bc518c81e5e777c9f6bf49bb34f3bf69be46d97500b6777f00fbfecefb5fa20f3f60df881c41946638515af230fe2ed4f62761440f2c5c4436675a92557eae44a8e4ab59b67dfb5b0cfbbe05ec8ac1f6ee7b2d898d6e98af2f5d4c18c3defc3cc916b18398648e8d1e4e511709853528906e82c07162f5bbc4ed462c63e7f6d7421c4ff8e6cb9c186f9248d43852e32d65e0b2d6e4d83adc106e68a76c3205e54c56da8fdf35824363244ad132cad6e95eabd1b175bf93a506ced6e52e60e64b9428655e748152e4a70a9658d67207063515068dac3426b66e4493a4a9234f6be6389570896c60ee6b4b1c0ee759655b5ba771b61e1c0e37e684c3a1f1b1756feab2d0c4d93aae1a0e87c3e17470382c24a2c709090909111191d93a32a4adfb1f5d161997adcb7a1c0e870b010bd943cd172b5e8cfc80bf7177c806f6360ec5e1deba692257e9a1d50087c3d9233c3474e6cad6e1703b381c0e6764e370389c3e43dc3a9dae4823c5d999e8f313e93e7f2f9bc841a1e8f387d02167329d0a9f3f05162409efd21d66edacb3f37ffe4b64f7f96fd178bcc8373b07edccfbfc57ec86b9637799ff9e79506a67ddce177c7e6791873ebf2fe54fe1620f0d0d0d55a5b0da434355494c7be82fb8e082aa1356b6909090d0d7706ca1ff114291660b3d91affa793c9e09377bb7dbfd5799206e0b2cb0e077850a3c0d3593448b8dc3e17024a436ee7f709f2b51c2c63d11ae84978d7b0bbe22a057545414246e9d4ea7fb9ad9d6fd8fee7348505bf7443a9dce8f888828eb6016245f5a53615b29c684f06421abaa215dce43391311f1803a9d4e67d4e95e48287862e370b85c54eb8d2161c28e303368627ec0bf4136b087d3e1281a7a8d129fd47e9748a79343b6716fe2a8e64c6ddc71799ae572462e4e3b77dbb95c0ef7b99c71cb09185c4964e370b9b3887de7f22cee32d9ea5ec5e970b8394667680ea72b52d9b95cee760e75e750e8732e8fc1c8bdaacbe97432865be84d21211d0f78b790ee9aa14b9072424257b6ae0a4f95219dd0ee3c3b974242a69182d08503c8c15af305864978e6e9d485097d8e27242414438606399d90d0ee829b2566258479d9d27506644899cbfda8e961be7ae86b857d7f68088672eb74ba9c6e0c0a1c4b51925cc46cf991e6c8e0e85ee8559d904e48570543ca42fa5738ccbd033c7c0891faec344dd3f40be02b859dbe1efe10afcac6969dcbe550a2108f49cece6f661c719fc1dc6391c83ab2b0ba826cf2f1933399939d73b95c4e0d917ddf5c73b91d4acc39e79cae19bf98c1c008e6c54eff27775bdefccb9dcbe5d23349a15c2a24b405cbcebde96b91cea95996966c4c2033f3c529cd39e75ef76a4e97fb5b8e779e1571bc072485396e694274cb48e4be17724e73ce7d8ee2b4330e97f3c964ce4ed3d7beee7c4dc74eff27cd6a6266a71bec34c5f574c9e1ae4eb74389699acb31c1b271fae62ea468d0a28e8712736ee36a1b8723fa1c8e0724cae5dace4ca680769ade72b10cb6ea22a68f1b16b7ae1d956c6d1c0e770b0a8aa202cd0e0a0a0afaa0270afa22d4cebe9df3d2b8d334282f611f4ac4a5699aa66642647c25877845fd80bfd31e1bd8db69fa1fa4699a3e4af41e5ac4e17868b1cd2d4d8382545425e1da019f61f7b2756b79efbd329637e2bca850b5be5a8b73066c64dfde6c7b8f79396c84d6b051bea635dfc47805d7f39573dbd7eedb809c2038c2dc888251e58589f33ccf145d748e0c150a375f29a850a89d6719248c51f4c032f4c3c7169b2c2396091714c8809da892c568cb8a0c193056288f646f91d58c61ec6c9a182335ed930a490c06245490e062a5c4910ef6f9194a8c6131e104cb0917461d271c2ccb5a28aaac58d3e2881b6791cf5ccb790ccecefa490df8fbdeff795ffdbf7a73f67906b3ec33035b4586505466728459719ae1f1e6ef9ec639372ee8a439bf97fec5a64e793def6913cf213a9590c06fca99aadaf1641ca5c93eff2db8cffeca76462fa4195fb14051143d359aa23aa8faa6fa36e5d91f8e7304400d8dd219d27291603a12c6630c128dab50ef99258fbe85c7bc13d55ebcb7f57cd9131445f51bd39e045046eccb93235a2b5ef040fb01df4bd8c01e8a6ba6355ff3ce536b1e10456b3e288a7ee67dcf028afec9437716bc77f27abcbfffd8777ff71ae1946d7cb431b65e6937c38534d55a00ee04f71db3c28a14343f5b80d3f4d99d6d7f8c2e7820d1b6faf369f189b1c5d671cf4efa3ac92bb6d50e6af7f2802082857dea1feff98ef65e0da8a3e33b1d802002057cf89c888c3ac6d7e61e6b3500dae3461f45d1021460a3ae2ecf57cdb2bb816773b9f3d024bb1be4f773971fdda9657783fcaadd6adef9692e5d4707eb64dd9f3b7f8c3d608c8ed898833367dcb3f3aae5511fbbfb0ab67e142842c5dd003ffae70e5b1e1086fcaf705fe3be497783d383f7fcf1ee547137381f25418fb842ef9da8c6eaab403bada477d0d74bbefafcb8bbbb3b0f68db69e1f0cce7815aa8e4bd7ba5ac06da47c3d6bb1fefd572d48068124d6a5dab01f140a061bbcdc7c6b3f178369e8d67b3fde501c1e63c218cd8ee1a7e45d04751a48da7017a4bedfba78e1ad130e7bd9b236744faa057280bf4882609bd771fefcee56996163c954be8933d3237061b1c75f2b0d13f77d8464d471b87e7f9e7ab44d848f33078753704d64498db45e8ed0b6f794000c0a34da81389da851f81b981e8d205b4c957fc253087a8d3beefe6bef097a701175e04f6c2a749d4cc1e99fb3edac61e4007ed06f7ef081c4a28685c69c185a2ea97b42f069ac41b0b0f44c9f64597ae7bb5835a08decbe789d4ed42f05ece196ff0ccd3fd061741f701abdc27cf03ba377a55b733fa0b76465bb53c0d307add9f3bdddf6e7fc10e78f70556fbf6db1e0025da0deedf8005d8b7cfc06fafc1d7f36f1eecdb6fb04719fced897cddfdedf7ed2df8faf337606fdf803fbedbdffef6da579ebf3d9aa4c04389578835e09dbcdfe0b5dfe018ff799e0feced0c5b67c0bd5eca807b0e5bc7825943936812fb4c1b2f7d7409dffc3e3eaf5e5ebe353cf4e70ea7854b4db5a1076ae19056b2b0e4ab05eaf044c8b0877840c0f80462fe690e0109a0e8ef4fd16e77778f1e6ef0d782bf9fe1512286bf185ecc57023c07c93d80b73c200ce037b88a8f1a4e6c931bf33c707eee519b3c77b95c729f8f77c01df0e2eff5b494af41aff33dc01ad0e723dcab3ca086f386d007b550fdd9dd1d04b4440168096df235e8efa3435f6fd00f50efe7b45133ffe7afce6f70ffd959eff59ccf83db59ab810e5e6d21d6b0cf2d9567bdc7c1e31d50040fb67e1d54398654c37f86f1f5e481c0035469812270f02aaaa309700ee0fc0bc47c9467051efc8a605e069e06ef9defbb9ddd1bec2cd869ef9d2f805d0d1b9dafc1eeb1d1f9b55d08de3b3f839d07abc1f945bc2fc03e7b435d157819bc77be6e07b4caed7fc1ceeedbaef701d8015d6807d45bfb3e86dd084c606e6703d1a4850dd44360ce6807aca004a1c7d350c385d917761fe86d00f03c80c19f69befa3cca62df244b8224d434f97284c6ef7a0a75c76aef9d28062f426f630c7816764c392133965b8e04e50441b1b5aed572b9ffe1897d7e550eb17d9e4339257aa4f0e2c2cdef22b9d059e11455a4196245871913178c61725020866c4b1397179314252e9cb0b4cfb750c5a3c671cb846114125945243d2376006152b606c6d79511a9f79fcbf957edd672beda8e5aa0d4f659e3849a2a5658644dbf33e85301ccae27185805b1ed5f61cbd7a2f7af80ac90b44716ccf6af60c43e2d746085e3f6af10c43e23272e2724c93753b27efe15927cad20c4be5de2461430e3f244d4cfbfc292af57cef6af30c43e1141ac4851dda0b285c9cfbfc293af370e11aa42b16afb5790f23545b3eb79e50a59d1b2e8ccbf48897d3a38b6fd8b86d887022559c8d24a484963f2f32f7af2f5a66dff2222f6d9b3316326a4b1ba1a92fcf917157dbd70b67f9111fb46a0205316f5244c8aa61e3fffa2a3aff7046457726afb17891531d9f59c3265df0716356dff221645c2a2257fa234f7e921b0c8c4f62732621f04e0d058b35c73e24dd6cf9fe8e8eb45dbfe4448ecb355b86851b16122a9889c9f3f51d25722242e3d6a0c299282c7cf9f68ccd7fb66c9c4cc7de8cf9f28caae2712244452db9f88081191a8688fac95ed4f34c4beb308247adafe434aecb3cb2029ba7074c951e6c4cf7f68ccd7eb66fb0f2db12f03c62d66826e962d68fcfc87ce7cbd6db63f5110fb503859963ce9419492faf91325f97acd844a444b44b63f51d310985d4f2626b1ed3fb435841c4ada2323f69dc3e171fb0f05b1cf8261f1f1e684651334573fffa1245f2f9bed3f24c4be1145ce0859ca61a1640aede73fb4e4eb5db3fd8786d837220619374d6678c528e1cbcf7fe8c9d7ab86083554f4e2b1fd87a484d0ec7ac6386308a56d7f2116673ca6c084c6a99fbfd093af4244ecdb50a21827ca1c31595a7efe42455f6f9aed2f64c43edba5ca0f206b6a44bd01f2f3173afa7acbb6bf1032c6f617eaf2b5b6fd8592bedaaa1b2db6bf9098afb6ed2fa4f4357d7fa1304264cb337b74011a1a0b21a1d0923de26d7fa120f69dc1a050d2f6d71d75c9b1e58ab315ba28bb662f5e7452db5f474447d415edd16efbeb86d897c7c6744f6367beda245fad5049b7e48562fbeb9a726076cd5a5a39b1ed9fdbca2173497bf43b2391c7ed9f4b5af2d53ef96a8950b9a25789ed9f93f215a3d93523419246b63cb347166cff2025f6e562716cfb070db1cf0256dc6cd1b1c4c8d9959f7fd093af17cdf60f22625f05628aa9609890271b3fffa0a2af976cfb0719b1af68c5172ac5b4262d3a7efe41475fef1964d09ced1f14c464d72c4448d3f60f6211240c5ab24715b63f509afb506290090bd6c051b3e2c70a649c9f3fd0d1d79b0452629f9dd3e6ec091c174fa0c4fcfc81c67cbd65b63fd0324b9aed0f64061465d70c23c390dafe4044808840457b54b4fd8186d89733d0d3f6c729b1cf04727ab8a1c292a4a4f8f3c78df97a97d8c7818a208a2c1361c6393f7fdc99af97ccf6070a62df10d51628683e8642a07efe4049bede314225a02533db1fa80907665713cdc4e1b67c55df1f874bda23a2ed8f33625fceb8e3f6c705b12f87f6e5cc8aa617c8263f7f5c92af57ccf6c709b1cf6a09e305d54309968c1f3f7fdc92af37ccf6c70db18f02589c1c8933e5842d27fcfc714fbe5e3044285cd1577f9c94af299a5d4d2f5ed2b6ff0fd9cff2cc1e0d29b1cf1c1b1b629fb5b2e64b18304aa427533fff9f275fef97edff43c4be1126b28a43c08c2d01c2e6e7ff53f4f57ad9fe3f46ec1b316595b403c6b14a141c3fff9fa3af374db6f9a6afea0743b2a0beb41787331f9344c18eea1bdcf62a6db94d33efcc123af82226aa0d8c2626b47012677915870d760e1dcedcb6c7245ad9041e3387c2e92390b01441c291b123cb2367c4a092f9659b5056db34f1a9bb882e87a50764070f4a884a8a4a8c4a8e4a904a924a944ac6743ecf334566aa37cb9b3e3f2cddc82a39d34137b250496e644f1f61de91444c58b2cc8e1f26684125356a29ec58a688c225a7eb292cec170525b482e2f101c46f608f67b902c84dadc4465647e5b05f0e4c84d8c8ea1db925456c64b503b23c5145399e4e5d36c7e908a6694a4962294a2c650c4b59622967784a10638c31c6d939647f23463d35070fc80e1eacb28ca6f51535636cf3cc2584103d2f77d00fc8104a1021b48c5a472da456524ba935a6b5d43a33934ca62e1c9edd8d6fd254777712ac24b99115eaa5da30f7f4443732ad14336cd38ad18dec46cd33b7a8009717ad1c593682718a4aba8a9e5304e5104a1021acb88ce6791b3605d152f5854a0ed68a5f132c4b24658e20736b8976148750820861adaccc94fb3493fc3c9bea71d44718eb19627525b94d3397504b6cd33f9867be1f4084a07245658b4a1715b11c95306e6477efdcb138423c357a1acfa6e86019cb2988562a929048da02a664d2e5e39886c899453800aab81c414410c7a9a573060ba630c9f27962538ac7fc800ca10411226c98cf5a129d138fa0246129820430d434d2c8e7084054ec760936cc4b3ee8793f80080186c446d6cc3c531d01fb549e354dd3344dcb4bcd117494354bd522a9967578238425f5cef41e0bd3d4c0312a6d479b2e325a7ee612ab3025cad32388385b04972388382e49dac05e50c76d45ec9f90e663daa4367596250e2b6e98836976f070868dacce5184dd6a73e846f6c98dec5e8017d18dac3b11bafa2bcc171907eccb5dcc9d3d8006ec06f78d70b2609b6f710149a3bd9b4512c9a1834d737fb6359e65d9795b2d2935315094e0b8628c1ca53068be1ceac7942133caa6b49066fcb092f33c93c25a7e8cbc663eafcd26566efbaeda322c3951bb4193b193610dc35281416b6af2c1464a529223992295d30d179ffcc17b219420429ca9699aa6d736b33e91faacb9f942330f5da1b5cdcff18099d7cb90817efd6147a85c1212c46c080f2c2465dbfcdc091994e708290d13a8658bcc152969bc18f9994430493a2c4710a1baa13a310f94aafa7892dabdbb9afbcf0ee60141041e10aebbfbdf1dfff949c2d7e469c0dd5603fba699374c4f61b4c6b4d9b1e4088aaa68766bdaab16729ee0c0e262f3e2ca8d78d8f82db0b7ddb4d65a9bdd4451143545e86deb59c132d374115c932299082a730bdb152ca416dfcb50f5c2c9cedb52099ba46bb269d313638c71de65e0bd32fc1ae324633636cfa9ace50332841284993424694cd0300e4a0fc80e6468488444ac7c408650827043dcc143c72239283d203ba461732449ed820fc8104a106d9646a6e69816944153a42b4dadc207640825883666887431938b38283d203b98191bd2c64b4af401194209a24ccc9014607a08cd17213690a9d00764082588b22e418810cda032614f564530d0d817102d42306eaceb071b1deacf12cb8f1247ac39f9c641e901d9c1cc151f4c3bb60fc8104a106ab89c9ed06a547a3029537d96527844f1c2d3c341e901d9618dd68e2ead7e408650824093352453d4b9d201c70c9a7e4086508220a3d2f1a249e7e4a0f480ec90662ac7509b689ce0500207c51c52b26253d69ad43ff0422841a4654b6e809d58ca4cf354cfb30cd4f2c3c9d3bc5d06debb67cef33cbf9665e34486fb0184722abd0a7862d73c3d9da68a0b656bb0979f1e747717fa0cadaa1e4bb00b57cb353a59366e5be317e36966b938e0c06e63bbdbfed67f7bc05d849d083bbf11c2871b183da8ae6c3115d1296128445de16367851734a70d07922964663098a8505222a242898a2b8c84b182674e137f85a79651610b9b17265c38f941f4212b54445911c34c4b28a3e2cc8ac8903483cd011c3ce0cf00ae52c2aa52826363c223748819a25c120708d295909c0d0c7e628cb1948d711069a229b08e56566a501b050583068c18b487cd9680f7e00ed299b15a9c7e0acff33c831462f8e9417777618f8e219693514e55d7128caf3cd0e016881d6b2035fb400b9fdb618c31c6f63c791a8c007e90f8a852f1a6899991201ce4f88204cd0c2ca28e2725a1b975c6a6a9edf99867fd9af79a585f8fb1db11200c0e172e38586b9c3890cbf3371def4464d3c482a18b89629428a539427ebc10aa663c4b236a4c513163a2c68b53091f69e62c599c49b2e26e4dd45ad35a6b8ac0fade300c4328278aa0c5800115c60983b9af89dd34cd2bc2cf7bb7e0a82a9264620a880e243dac759eaad16bafbda79b3c1132d8f6fdd18b690440a3e8e91af272fa293ccff30ca649180966d27082a38844c5d317950b1e57439edc9a46b4b042d4d1c3ca92162dbe230debea854f8c0bc3ea0896d5135dfbc9fd6c8b758546e70d0fc618fb48629e35395237332713dd426109631fa68531756854418b6a0223499a314d7460519d6155913031c6786b638c3146765d20e6be974106a26d8f4a259e353b72b452d998284a5f35a6a06dc911254e9c28724e5c006c7bec82660b6d7bec82858a0e091af3cc2911523b830446ed0a0fd4118324594046de1821b9ea61d162e39e236882562cd101e7e78410149d121839340a504c35255538a29022a821166e5ca0e4cbd011283a235240467edca21c09c3a0848dac8905283839146a121c6d744886ec2c619243235a51640bcf48160b4414665012143823304c20a82c14922ce1894224dbd8cdd6c639aaaae2b66d4b550544830ad5fadac3465746a9221491c89393f72ccfefbd43dc744d37edbd37e79c7356f29e15b248c226bc7783292041c40822840051334d5eced41fbc9701ad510f1d3884e0800f367870355c6ccd6c62cf71f13255ce12eeb14a0d638c638893d34fe1799e6710638c31c618dfb6cd3296d881ddf0649c2163bcb33cb1ef13c9c10cb3939ea669ea642b2d4ca9d628ba632299e6150b1ddbfc9c6942516e739b6ffe8f692a4d5329639bff63f66c9b05e5ca56b7cd8292a543a5aaf8ba756c5e7467f5695e1eb6d69ae6c559c2825049291b8a0d75fcbc69f74ec29621469c2d568e49a24cf01b653e6cf3efcdd5dc5ff597801591b7679e695e11198e6a7d059af8627c6dc6ee18ef601116633cc2bc8ef6bb0b690b6b1655a59382605ca5236963a32f124c61c6232f96fcdc86551124fab66d558e36bb67dbaa1c64dabcf57b2dded6ed655282264dca2a694e580999463cd972f2e68a1794176096984c38d7f6363f768a547e512dabdc60f2111cd6207b63748a7ac2c60a101a1724d93a4f423f1da3b06aa8a454a9509e1db3ccb03272311df9220a8d922c515a644a8fa7b26c9c216b2acceed9366bcacb0cd2059f495e74c484235a9aad6eabd584c615ad23432350fbde37e2a0a374e4a99a39fd149ee77906b5bbbb9b29948c6dfc39ecd8bc4a18dde0eab647266df4f0de9a7fceff3d03933087a2eeeeeeeeeeee1b34d8b63dbe39b1c3320cd57250738cad06f7cfb79a67efb69f6fcd6ac0039a6f1d63afa1dea07d6bd6e8faacb9adb5fbfe5d5203d6b6cdf9ea8e4faceb8f545454b4ec611f07f302f4b7b307f86037d0c232b2f19b1a631e50040b3be571b03c2c8c3da8aad02023e787161945d036ceaf73ee7dc0bef36215180f815325abac842c673c7e38c6c65fe3b1b19b1e1bf37a3d0e1d941f40f48e6e92f6cfb6c736661bd8c36699126a15856d8f672a8e67287c1cc1c0397335c6ece73036b07685499bc4499dc1b63512dca098297cc49893c4426275e3e74228a7e2ced34e93799a41b30142db0a27122d80c8b47ab47152ee9e6db59cae28558be213a33ba0083baa35578cb1b5a639c480bb33d87ae3a049a8c40b5aaa6a542a632420020000001317000018080608c5a2719ec6694ba11d14801358944c50584613c742c228497118c4188308208010000022c420a598550f6389777ab03642b97d0c65fd2d8822e250ead82d721010ce49c097ae93c2c09e084cff50df44d941cd5b8244a24f06b6551d6a70b4208bec481bd24f6fc7cc54555c3536d2f3b022a9039099155c91ce28de4da26f1932576da885646cff08baa2c9927891c0bbf269c9e62c079393a5727b4301d217562242151b055f70a05f37f9caecd7c1eb2bbe80a3fdebc08a83e5c8c63cd3ab52a55b10b6d27a20acad18689d96b9147684eff6e04aea5fd1a917089bbd05fca139453d1a2c1d564220148c1f63f1eacfc8a125a91a402f83f0c9a5221c678158664021542c07ee205bdacf73a1ff145db3394ffca4e53ecf076b38c382b25dbd840a61d4cee2bfeeb5b373c45435d7b96fec6b837ee9a2bf4d5e69f98fd172bd92b4de7e8dff8c471d47bf6f261dd1d2ddeb50711d0e47b9233e97be401b647c2755cedf8948df80e0c9f7d8787e4f588e5d1ed275361ab0620be358e8fd4657dadac4b08ca1df36d1c4bd70f6302d83676951298313b9de687af00f8ed241e11aa611e405a0ed822c665c98383f155189ab01836ff07acbe69551990d889c842e9e1f9377c390a0f05a7082c53484a6eb0bb3f9f2b8b0063a656ead696a6249aae537ec46f9d985442035b14c84d4e3d1d25a7845b5131e8cadc1acbf2216197f0140797b416f6c3c416d6c303f250060d6417c662c193a3da0e8133270cf375f06dc54a32d4609ae128d5cb4f28625b6da449306a4f63236d613b9b063021dcb6c484d549f5fec4414712d0575b90d13b5dafbd06932314f9a54be7c8c926879828f93d7c0e33dccc7c2ac49516a6feca24906c791d02f3ff70a5e4b45a164bbb3b55aba9eeacd580a4009c0949975a47f3d53ab9deba3604a04aca99e83fbbdc8f830870b098269651eb4837fda43aff6d96e28a50be49650f9d1f27e80a0432b84efeb15a95fd3d7b2ec03d722cdd6b444ca7cd7f6f019316c967bf22e576fa640bd80517d1da2b6de69eb0081b7812281312ee219a8a3d62e83f8b18545c4379dc72574e93ad75f0357614f6170324172649a97c72d5caf3fa0d55a5ebca01296a3d1f54589f2a5c64d2a80e04b632d1fcf62f8e3ed0a56cacd83a806f969d45933a58e20a3e8cb792035f999a2763929a9f89de6c2a524e811f2c5d3872a3e4a9be28e74d7757ebc8b5f39f9b5273857b37429099cc1f506288e1cc0c360e2dcc0284d82c12832ac1a897da6a7c981040c09adb08d0896c9caa9798e60384dd173cb82b5e4d353807891ec68509876d34bd84f7ce065d90a8a583007dbb7293b13788bf78cc5a44f06d80f1abe86f78812d5ae8be9bb867a3de4dcb1bc61148d6ada06e06e4a76881803c2622554b50d4d00f71c5c0bdcf048b48714979a3e92e2e0b995d849df304fc584e3cb308ece4e252e8281fecc2351183363443b129d450b50d2c4e5cab34d0a1d15cbb658959bfa0a643abeedfb20189a34aa7619fbf341e502aac88b717620c8cb7d71a966b6b52b10c0df8f3f57f115ceff05584ea1ab5420c4640e59d79e4c0649aa2c16d19a9f1e9de0bd37a5c898164c00b64cc7eb31231153938911669924d6ccd7412b358615d1f7ecfd38aa576e9c4d3331ad3805528caa6b7ec76a04dc32d97d5edcf9aa67471f789eeee74866d45815b0bf55b3493f27036e5af14973feccf5602c5db7600dee705e3ecb7e049c788ec6a9066194495429df36ad34516567d2bc97703a89e0a362773df611573a616e24b7a0a93cee6dbd785bf7b95546c700b029cd426a5a465b004e871c01c4be0d9d68d1120121f8d9b78f50b33dbb962aa6ab61d7d701ce3979d05f34fe42faf54430a48670e6b4f36f59af094f8ea3358090bfed098d456d937efebc7b9990ed7bbfc3ed0e81f36e186ac3fd8e6bcd548b90041a68a172c11d51bb0a32d9cc9d4dd6e3a1a4bd3c60b96c869f9c8905f6b3c30728011183c9aa010305e14ba11a2ab344183d64cc91e8cd26eccd69423a9a09ee441ad3947ecf4590ecff2773097faf22c8c5fe8a85b1d6d2bca0440f32b2c1d1216b19c4ed9a15a3025af13d341c2793c30c62af7afcd4826b3b64bd0892abe5df58c0c3618a144122612e60a940bd124b08ab7d04f1f78d44343fe029595b0685fc5fe0eda05109f94cdc8d10e8a015351f62249ee382d66043d7bf23b72a23d53215b8e07291dc6b64e167fb404642d9b3a36c94517ea93b04c4217091e68a3090c047bef06bb7834fa401a281509c1a805c93c4ab22e71f1ee5628c00ed082e128c22f4db6d2dcfe25b81eea5c15aed58ab75411df1bf300bffb8d5d8ac4f4d21c8e5b5e19a300a61cf2e161eb48cbe6aee2b08ee319678ac1d64b15b3f8248b0a36abdee014438224ed3ae95fde30e6e913f1c419482a18ad36e48c600afaac980135c681e8bee268481196edca627423ce5124107f3bab135fdd80c7a52662278afd6503ebda600ef825914ebadb1d2dd41d0179a708d600c988cf7f2e3221cdc576872d1d75aa21d2d6a7c70b2ee6a0af723a32e1faa9f40b6d3bf82a614f40a005069ddb3918fcd062f7d2e2a67a9c6a164c20df61af6d0102df4a1c698a84acf6cf33524f586d5ba62181b4ece2cd4ced29c2ba5624e900821f04e6e3916af104003830707658915caadb640a2ad1967b87566ea20a4d0798429c8fc9a900e548e21033dce9c25f464179973302999540efb1c05fb0845f863497fdc4d571896ea96072363dbb650faf31b1b9c278d3b60dc5eaa143c983fe6c1b84a9e14f22aa6a63704b0ebe5e5a2dcf05c9db19949b9490b111f37311623c84609148ddfc67a7db54293b38e8f8e9513dbe0270ec638911c6674e5218ebe656f55301904ae6132ddda6fa7fce187e1a6173b2bcb705a993b01dc28f20e72fd43de85142fc2dd4f9569e23a147bb1cc4a4490dedc97fa748b3becf319ea108bc5f7d56349d4c62a40c061ecef717345010b4c4cabbd447846339b3d8d95628f1037c7494fbe582e8a9b18e9eb1261565cf2205f191f69af0ac9874efdc411e8ce23626d41c87ff3f5c32f07e2b786d361c165e8a01dc4a024d87c9e80a503e70bf81ebdf8720dd3a6e2e56ab389d6028b38f44ff15e814cd6bcc1bb355ada04edaf7ad483fa757b571c68b60bd34a07cf1e16a27723aff19c1c92b7d9f7cf8e9763306d4738f7201e5147740389f2c2e1e680f557d368a70383142ea3d08e0f28102fbe709a4b5ebdc8c10ad7c08e06e66ef884d6b0f64266ed028923f288b619b3680099ecfd5f97bf1883b4173c3b119619ae611c0d80f3dc975b76ad7481834d0a954b50b687b20d472732ab6d9008e147e498038b06ceb3ec7dfab94c4acf0afc31bc21fe2fb397a4ea5781bec729e0f767f3ba49b343c5a3027f66ee78ef912b5f67065a7f05fa659cd9de2b1bbf5cc869e76b3a15c730f35a8cd301f00bf6dfbcfef50bd2968c871fc72174264720015868e0ec6befd3c345128b7f7571887df4154637ac3b6ca0b0b078fe46eb25a2255862d03a3e473cb235c72c1a400e4effd7ed2fce202dc917f8613c4277720612816507ce5ef63673d1b2b13a7217fe551a8bd743f4e18b5b9896c4483c29169b289399d6169c0ecaebe97de6e0ab2f9c76c953153d30f2dab0a381f9e69ea805dac866cc07ecc284be80adefcb5a2fad3164a50d1271a4c3c84650c0407ef9e5f4baef855cb53ff06e32afd2e2061a71688f3ac379f309e8746e3fd4b4e421a0bca25dc76fb3a1d6d438ecadf50a1508ed16ade6901324d395d20eb8e91d52122686cbf0eae635f636930c1448e314eac56b4c76f53e122f807480ce3ef4b0307b105027ef39371bbfb91f2ae122a0b5fa1afbad409deb4b10fa2bef512a7d90ff45252e1aba530bb49bf386288d73ccb731218689831f756bbd2bcec8ecca46b978bf1867da4cb14b0f63960ed08229f67026f859baf246dc2b20e46fd34312830e1877bc7d8e9bd9581ebae29b68a96d4f21df600d0edcd30f333260f1886aa5a0bfa09c075ae20b692b6148b6f702bd101d40afdace3169e675158843fe33bb951b05c1d2c2e846546c82edadfa14437148f8e4e7cd500bb0cded55b4b7d05209ee1fb4bb29b3bef63c354b75e893dd1d65a4bb3676d8c622944528668fae8dffb71a86249d7bfd7a45fdbb232120115a78c5bb300c45638d10c18d6d4e0110cd4f859a28b60215a282d5621bc9022c020374ea8891d5f6e8ce402782270f188c5757b8b6c7a32b2accedf27591d8f13e47c6819c33b2115beccc2ac9059b2a63a6f4d7b52f4b6caddc8588d879be9badac5f053a34fe628d7ff6c018966d15e303b3320e2b7edbf659f2c62373db9e7545e9081e0de2725a5b91d16a344e1bc5f52e6fca03471597257a67fdad4960f62fffffb895116028a1fcee66b317acbf77cc7ce17a38864274dbfb15752714dc4c56bfd3b2e1d8d23dcbe12027f65120ec0db797a6d3348df908524f6dee0ba41662fef59b0039ec2d764c413026f35f5550055849dc9b79c67ff64f1ecdac71449e26043d704d8d9ecd6298d30f5d7e43f1d8ae31efaf62a7f48fb79d9f93ef4c499064391080e210113feb5d51aec73e0b80a138ee2b7e8719e2310fc090945767df15875fb1708211732949af64b0a6192d4c3966930f4004bc1baa6acc27df308b207102c750c856b5d09c6f0f5f1127dd1d0d4bc591b391cbeed3f459bae89e9988e5ef9c3203bafab4938b790b6f93ac5899410c0e0c45c1d03202592b95c7576cad5aca010a71bc90b925a86230c9f13c1813d5000740e71e40ed0de963907108ceff183ad25a45b4cc8f579537c41a056e3e767dbf49d914564d58f27fce2318ea69f2aa3b28c7bcecb5269a2cd293776e618a34373a06fe81097aa5da61c359cc87402cb0e0a69c5c7b7bdf50907efcaadf2356b8eb2deee1dd95892b269a6acddb5f88d26d27f703a2a91c565ed89412cd948523289e5b8e4eb6870bcb03f9a832b88f9ccbd7bd372328281b4f99c9536d34c0d2c23886beb0cc2da7ac4ee6b4636a19f0d54026511e7bcf28b8e3dc1fe1417503f15503fcb8c213a040d035ccb9ec142908fefc47e81fcc346d21dfb5a113766dfa4161672582ba3a7ae2d0c76cc30a767f988f76bea3074af272934c60f6b151d1911afe57d58c383366726b1a4e2c648b2e8f28391ad80d149d41cd2e1a56af14913b57b8e1b5b5aa562cde5492cd1029b6b8b3e1a8e42a341d33ab27ebb02b3be893271d483e63f603b0e5cfc8b86b205f4fe44ba2eab051e5841f459a568a08ab58d929151206861f7f2bb2a90a211fad4005c8b4ffdabedd7f29ea3b459df03e42a942075400259104020129883aab050ad5c1c956b83443e4920ca3fc3b0b715f7c85d34526df55f9e03f63621232eff71878a9ea0de9cf1bc5b6dea466e11d4cbf536e53d077c9b472452393a59ce3c819003ba4fe53c71c0d0cc8347bf20f39bc8b62c0ff21e26974d84691876c8789be5a3b97a2431b9aa71d8e14f1415c0b8382d6a8d41d0158b6b0461b33befaff9aa7df60cc410e789b21b9f6b8064af2693f0ea1430cb9f82a3a25148b9cb1b51325c45d47ef841f28d296070625622d66b03f6378488274fc176f588916894c958ec897e8c2111c72441df078c5e3c755d80d604b1ef8d9acc4e86404419fc022809afcd9498ca9bfcff9e7e3f95af41d50f010fe7a09fab1ca45ea1370a18f7c5274af446af7d5b7b3a647425a8107e68e1d631cecdd139c9e0d773f2c6fc1c04dd97c6874dc8b72128729dcde0b4ddca6571ea15b6137b40ae70af64a77660589f1484ac5d6a2125e8b26067eb5e819dcf2412e37a42e592d58d68b054df642605392f853bc607dd13a6cc837266adbb011fc0f4943dd16795d3550a213598516603bb4fb5681703293df16b20a47f131779fa246df1efb00a008ebc725760ec7e953fca11c278120c09c94b607ddfe396ef51af3a2fa7c4c24f4aa128ee49da46ecfa3cbd9d0cc75f22a078ad74d30c1c1da30f22ecdc8348ffab0fb0487ce2f3d3d8e1bd401b51b31e0eb9439b522e0a32de3ff07f3407869896503873ed03e35a74f9c72c454ed5c40eb907e7058ba0513ae2e2d0227e1f4a9aed7b7184a0065a0b0881c6ff3d2b49bca0d42964075ba5518090289cc55142b65f1c82358819047197ac82a91f7abe48cb182f816450ae6627215144f0eddafa2595303dac161f5d8784a230b3ba99033c40488cbf471d8b880812f8a47c8486c452d8b08f9f6cb69136721f8b13915c5ab4f6ceeaad6f9308814571949fe35c416890a2a641b3d895f39ccb5fcf305a6522b9b554d689df58022e41cd5a65caf6f9eeab3ba94735c353496f4463ef0d56bc656931e984aad6c5635a1e9d80ea42f2afaf8738e182c753e9890ddd49c0dc8ad46a8394b20315d434cfcba5d1c0e05f18fcf699563645e940f4153687781c64e7c3af020ea00f43221b80b584b884239f4b8f748d652e810646fd8bce8b0268c14b30333e71423441c59d982ffcb6a2a765dd6771ad0637f713ae869f1ecf21e6d3a3444bc67ea560bc160f9e97d1c7a7d114c1a399e437ff06be71bb55f408692c4a4746489cf9aac1633917533c224c53d58287498a0dc82d54f409164b3f4b7bf4eb738cc9c8c5637db0f706dc946d1b9ad8afbcab45584e691231c9d3856114e73abbb4f89e93bb490a8b8ff0f0decb68185b5e5a8b3beec0f20260237b18a50742270a5cc0ac84a1ff39f43dad859d3d2dfca4b561aa7b8cbb4460ae41154a340513936eaee7dc36d9eb8f28ca0c73c95dc31a383fe279945e6a281bac08c1312d59d63b06f53df0181c8160437217cdf5e68dc13279cfb03d26e0d5459802f8cc2eb6d4cc054c28d6f8592ec29a40ff6b44a713252859e52c4a299678f36e8bbea9c4c9f609b468894ff0009e7ebf5f40b4c65aab6a0cda317225b59c96f41ca6a2ce17702cc84168e2ca41a4ff9fa2011bd22f994716477a72d10c9e12a2279696917901033aea0ae9834bb53b3286448a8c0c9749c6a09fa734d973d4cdf11d4e0eb1a3ed5bf20c2987097b52ee2c62ea558fea2e38e8ae57880afc6750d818ada6604c6f68618d8e50a6a029cb32843ab2178bd100d1634067c49a165059e2db25f42e0c59ce888b0316b1cd2a6afa1c8ee0857c87362e1f542ee256ac32ca671b460471c65c407dc3fb0cb8674d503f6d01b5a4b6ac62936bbfdba5e464b6ba73035a3cfd610aa7fe8bb2c41c521b440490088dc74f9ea7e5247e0ab0994d2c26771583fc1729eb8259cde096554e7f69ebdfb6e9d81a408ecfc01af151a8053164ef2edc629570f0bbf2bb45f95cb895f904d9e9842dd894c0bf20fcb8f34d4ca6167dd12c6c2377d8694f4a318d3075bdf1d9f915e7230df0649e2baad53f51a4411e70111f3959220ca21187ac097dcf38710d42ac4b0db4981dba097f439e1c7a886f1bb8067267c8fa7566dee03b0b66e6abda9f7896066904fa6a5c2ee9dd61e1d850727b67f1022b93030f262cf37790dbfc15959d4b4c863c2131c46b57b118104425c60183890b21825eac81827bc766ab10b43268c576fe34d5b937e7f23334806dc77fac4b586c56b03f59a0a1f8c04321deb915e702cd3d079b1a3476987618dc8c3327626d71c89cdbef3b3f3113666455a4b12be70a3115ae00cfd19ffd6eb43c486bcde1804c1c37e6e2f7aab96ba8b06b3aed3c66a330ca481dcb627c7c5d4b8373444f7dbf6d135c913e4719cbdc14923f8e0a172a674289a04dff44551616f9d81be677d5a79c5ac36565b3b9b7b75fb41bd90ed793391ae771295e25f669a6021a8a3ffb0434140a51444053dace985176daab9cb3ae556393d782db2b50221ae18e64d8ec5c9c21fc5549914f9c6b7d34e5d17a93c46c278344f5721511421438c22450d5708650938680adcbf4426084c4e410a40a7433b80bd383e8d5df08cdb2bfa4f375b648599ddf7b5f5004b5ba160b3009890fd2766ba486bb2adc7145cd49602e001910cdf542602ebe103800a91a511b8db33c00d8533098dff3707b33d7891f406473584f5535818abadaa694efc5b0e557d7d196232ca4aa0fbb8e6241114ffb7d4b8b6e919b1a4f627afbf0d37cd0e37ce48847bb75b3028a9cb9f8fca49ed779013032e040737de69b81b0ecef3c79e187a86f7f55d696a94a35cbaaa3e4149876a0cbc20ac053c0c9d035b194f7d14bcbd5e033244dc2c98557f4a9a40bcb250ded1242435d8e2335f812d23954882206fa6e2e45556dc606514347b71d994b31a8d98369e47050a8fcc9adefb0cf3ca3170a0e53b8c9fff1938d47b9d5d322eda18ddd0f7f1b7de79cc000360caddfb0be79b609afa12144db1376747993c69107f21cb5666a5b1e9c2c3ad17a7f728c1cb569a5862f78cde95b44ab274c944ff5b3add511f8fd60b2773b27e5ff5d3c00065257ee5bc228df511d5edd4111200701fd3314440c1c5a5ee24e56913f65c9fc9eb2748eb092925d7ec6cb84b9c6006a23858389766097818f287543f981f10402e58755a10b1b79ec4d672f05b3c1130a5aab430ed3d56870f846d11b027de2168c76ccb6335156e1800735c4ec8fb053bf9c14cab7167440f488f2fce0bd3d16519a7c2cdbb7fdd8eb832857c0cebbdafdd263d0774112f81eb744a2528b235a280a6e51815d025108f0d75a9ee58fa3bc767f038a9e569f7a34f9a8e85494475c84953a5680fae3b5eaccf392def34a4df0a9219b4bd75b80abecba06c1869b7be901ec4e8043b9a2bda1c3b50981683ce96c73285f86b1a3f5f762ce8f7fe96735a2742ad5c7125dd9cc0b3219e3ea875bd498c13f3317a29fdd02a4ea701f415cb77e32c5dfe559815c6c8ab37bf0227a6b01006833b9d9b65fa7c62460171311f23a71c816e6a36e4af7ce787150409666c211b56edfcb443084aa6356fe93759182d31c755a71490dc7697b035bc7a860294ccf75f8a0a782da27a72aca03cb146f084e44c299b128427db61f0ce1762f4f93881b8d3aef4608006c0e421f4787a0a46415938ca0bf5253b136becb17d8d018c676ab882ffbc707ff1cd90fe131c2a241828dde5dc5686809e8e98198a76a5a9f1a997bee8ec0d30847624202411ac8ed235ce629bbfabf53db3b11c39a856ce4ffab7236978700704bcab083c09544c15d2d63571174751384d0ff2111fc05a171b662052e8616931d3dfa83b25878c0dd89d8a6adf25f8e819bc3f53758fa59dfd4db3a2cd5fbe6ab122c1cf9504c4458ac272141fed9c242104d11ed13e3abe569e1116f018453c1d36ca344c04217a9312ad1bad9410c39ff1d76a41d8a47fcd4c6a36a184039369396cf000372efb8e6d32779ab9390a8871c5eec97077e199922ba40d1034b7639dd9e7801620de3a03a9cd4b233f32070334cc5ccfebd92a3c878431510acf220703e68c7036e3de566b46cb672f88b6e69d535dd4059e04d842e74699478aa331ee89b3e320486fd3e4e4e6869023badfc95389fe96cca1a8c9702a7a4be7fe39f0c5d68b333e97c085f33b01f0c9c33de0f28a44a997da133e8116e2c0fb6004442144503f3c189a4a105e18a9d12867c3796042681439ed33b61b6934b52c39bb4ea4860bfcdf9ed6c52ce31587ce75d80f0d35b1ae61d602bdd43d406701832cc28ae53d826a71555ed8192c94197a048e58733652eccef97e6972dff76411e69895ed7a83306ce90c89d9f0208b1a682d96cfdcfcb60d07005d37a264004539f8b0de2dc9b5ef5daf3af577150e53f399ffaa1153f488f8a47fe48c15a8c7b54289af411db9e00d35e48ed244723ccc40729d8b9e61b297bbeb89bb0a16b7a7f4d2a5bfad0b924a63448191b0c0c287cdb9bf05c0837fe5e16ad54adcaa26eac412edb91990a39be9ae4be741472dcce1542247b0f37def363349832ad760608ae87650166d8f0fa9eb988437737dcafd3c0d23c2408db5884f0e34b1a993de18e7dc20ad02f675cc678bafa17b1ca9067fbadd97a9655d2b6e009d7974429e06ddf122ae646bf5da628279029a019c67080e1f9ebc08b118e7ef1510c1cf073622fdb3a975020ecae2ed9180dd5e70e14167e4f0b2992cccc3114c88dbab22ac2087a00469f3b92ab11a06698eb1230b412c8290705644ebfc23c10a4083b423a0bb59c178a1e948346e7bb7b835f9ba77c651672f4e6d61ed0a9cf79ef21687f640fc92c4437ed0342feaac7daa5c1ddc1b43730a9930a0597d61dae353b49cc8899ecfb7e183e094540724d56ec20fd7583348c6443a09254e530d7a5394399c3284e3d64f4c8b920820433fa27db8a571145671d16d69177feaa3010ac8ce3e06c88e8c897058706e6db8efa4e144d36b34c28c726f57631f1a36c9a1b143376ca167304ef6e34f6191a2d07dc0627bdebceb494adde5d911077c305b7700b23f3ba80b91ef6d0d6f061318ff6e00b401d4f073a84d5e6c79ab79f7b0299dafebdcc8b1a6362da9e4c206f160b4fd84f4f7035c0107970f180e11ea64d02f557f2b828744a5e061c3099cf1ee816b9a41f288782def03c00cf98c993a7a99b10c2347e9c02c1ed4dbd627a533cfa1860124383c0bc7f302b51924187ba11503aae86d223c58e7c0a111bad99100a0094e5644c2d565b3f8b51f6322ce7e104b16b3f7a6c9bd7f45385b614372aa383e9741282d87d3729dd3a8bffd1a5de19ec2ff8e71710a0ee225dc7448af680799ce1944a6688136b0b732e616d7450e4a154f8130d190818f185a2a8e0691107a639986aa5818d2fa1a92011806656167ae4b60f6ca1e670c744ca2c491d77017e45536a5ffa3926027c68c5b1798da67ca0e6c96790ed78cd2983145821b8dd05a08ba345d8df887abf3c738ce034f82dd386edc0c7cc6b617d88eb9acdf16b3192ef07ebff2f0b4c20dec94cd722750c64696005edb2acc79b4dc6a112ceee53e4d9600f22f299b5adc9576fd3ad03831f424b4172c0e53ebc66b34ae7ee05ff250c6258d79995b549a07b0e887099607e38aca2bc6654d822735e54309b5b004cc8af9317ae96d6b0ea39791061a36fac108563f4cc7d5652145c4ab511599e692e61b8ec8823e5d9f4bae73caeb0c680e3a59f1409a7bda3742d061c5d51d7e3416fdf5835eb1a0eaca9f0963f7e47b006b5e6da37c35d481024b47ce263eab3d604ac43daeb976663c4563bd544f020cdb49a22278d3705d30139e86d932a5a4ed2519ed3c9167838c8b695492b2f6372ffa50d39eaa36788bc3dcdef6a154d54c02a199f4a6ecc85c2d9860977bb5a8a0608eb3fff2536bc21d50aee725302f6d8328e3ccfca0428707f9fd85a63a27b3819aaa0bc23307f49ea99d9505c9648502222c38849a779df38dab24b95ff7d25d4e202b8d8504dbc5ddfc9ac3816cc8a1b6f4c74267939315a1063b92d14bf7e754584eca455b0874823f1be30504b804148a113a1f607683b66732f2ee67d93ae40b7374858341a4bac7cc2daefc2d73f86623d34656f670908d3178cf7ff1539b60292fa279330b891408348384bd7268736b29a60e5900659621346c162df4c41f03339507706605dbb02e158fd3b42562b1486c0e172796beaaee6e9a1306e6abdd2c4c3f74cc5f79d9bc18d00ea41c970b44b941bb275f8fb8f26bf569a83656864355bede4a095843976a8526bc8ce934ee3862c8f8c9428d800fadf62ec259821559b08b8e3273f73b1d212f44cfa28be42d4c9a6a70ebe04b375b1040a7d824f5f63b4efe3d6b32040c62fadf0d2693eb9d0ddc6c64608ef6ac466ceb3048cf66c49d3c4792889a65bc8e214c1ddf043df9d270229f5f82e92bd0eee6f53172e28e0a05092f19a6025a002452d79606d4754080e8e9f3b6f04f18847f92113ecf29638b9447d47ab770464064a50aafa8b131a04a531215de7838b31a62a7302c5f26e2598a580162d84e28cbdda97780bcdb706c90e503da46fbacabd59832031a8b14804359161f01f952032f6f5bc7655c73912724885cda43187e4c80fe72f4ce377a6ab1dacdd420c0d09274195bb75c992808211f44ff9a1102959466d70aaf1f72c734ce887ee4cadb407b0df5b68098469d378661cf601e34fb171fe639ff0a602217ab0708f0b4091a76e590864929be395600b8b94f36c2a48e8f7bfb663c2b26028d6bf9d4ccf4212ee08e3f7fcccb0b2bf3463d62d0063402a13c633f269c8611176397703e9ac79423d01ad2d92511e81aa9959424ed3cc4525fee3cf7cb0e8f9651d92610d948fd9bbba8e73c2af0128fc448a2519ee06f9bc9d4e6605edf651c9388d56c651e02bdf8fb718d44cd9caae8323d84b8448dac6c21b7e38651fdb6a5b76e26c414bb643d0f2dc3473fd80e912ef9f3ad5a76bc73231ef0f82714ae49231b73afd0740be2f353be997f6ffcb32ab3a2a473a09c120e74a51333e6d71f012ea4e3a137e349412f97d02a045caf0c6f5954a92c7dded672a15dd65f647a6c35f056a5c8caf7fc52c5d40d95159d8a384016d615a785d49c47d8fd83624027965a0f7971ec08d156426658eadb5744d3af5abde10f9fae79074b76f6ab3f5fb612344633beda95ada8b3ae818938606bc208c33061c14839392b4b34ad42521af3ba25120d1ff0816604f326bcdb677a6909b7a8df05c7545594ba33321aa40851fd89c95695d7a1834a69e8dc13c2605221caf8df6c826dce2c020b099dbab68bb87548ef523bd9f55271ca2fee36f1690b5d5e3166673e724e45a43365f28b375646ea31f0166e2a7db5f747c510ba50e452ba11e174cd0fd8f39bab8411278e75e80cd99c488f403615c0439a68fe1b384b5b0cd2a51b136d04987d9e88b87ef1dc365a65dd37881a42bd2577f385f8f9dba2c80b3e75ef8bd7406bd3333cc43f95ba1c1db8000dca1ae81b27bf215da5ba6ffe2460f0f672bb1fa64a3ad3236e2d9e0ef90743951ddab8ce5f3853f3d9b62587c54bd02f6c638c1ee631cd1a4155a4f829ed933a082229da37f2d502258937d4951a3be28fd051175795f0beacf5c34b553ab02f73bcbe81b031e1df780eb59bed5fde1fb4fb50c2ef569903e879a32ff5de0b22f55836d37e7cae1d1904861646eeb3bae6be8226d9b7ca582c705b8c5cd450a5e2226e745601808d43e99305433f59f74737b6b09e5f393566388052e27a3aefd85794515cca02f24a1eb4b791ac804da23088ec4cc2e7a5093c5cd95911d2e1fa8a6cfb827f11f791ac8f56b4413a283767ea817820a6681fcd2c3484042734ebd530ce4c608aed54ada23574fd642b16887f42a7af7ef3b2be9d26f51548c11b8f4866a99b7b7c28468a4078ebd4516a6e2d0ef89f347949da096fb9f9d6858cfb30092e50160d680e3a2092facde25ba8d227c596464372cb624262bf273ac5122c7a9b6168f19a782d5ca3f30719ff092c7da632f263692e1c7abb910d7681f7eb8d3d80f806e78035c845148379bd26d3be443bc9c30c6cd88eb4f1e07a55b8ac7254e5d6da62ef9e69c562ef14397a01f68cc1cb20d914793793572fbe562ae99d3829ebe5da020e0bcb85819dba4d925e6d5ca1cea1993c0f18e0beac981570da71bd82e2f288c83c1127a36e58809fe7bbf26a2702e39f2422252633b1c780894dbd44bfce9f2a8279a2ecaf14256e890d4aa846425e98e49dcdc84021276bf483fe61bb5cb9dd2c40a1d1d7b75b9f18ff53845b7384d499f21ff33560ff751a348f26236b5102b7370e42d18595f4e08f904368c8a4e30d53ed3ddeb964d62db70bd3010dab0a8ca8f17758cb50ca35c59ca1395b2c3bf0c49595d05224f94d02ca6405d8a391c638b5a1a1c54c1c5bcf5f332ca1395d7b5f2b4a17ecbb9ac8cabae3b52e4b4ba476d473659626ff31edd66696457dc45bce02036b44abffaa7964a91f392eeb2f64aef1b188a557720b5482a230cb54e8abc73ae956a96a06ef9506f9478213921a1a22fc4a3358b089324d1838531d0d48590354c279e35a97ea1a3e838ebe9b7d97470051f91f095f9c802133d2c9dc080fa90fb071a2503d0d09a612d07be33125001f74472b11a8dce6fc4af1b26001f9789ec43dbe168576eb1f9a43241c5e82ba4831344a020e6488d1ce08778873e898842ec1cbef46a9b7730cd360da14ed1bfe345aa32a95d04ec2d10790794336a86bb86c089d28eb1f2dc8b824d09a2ffd985c22a9ea10a6a887424f3ba3fd76939006a2802182f8f0fdf3ba1a49d067076f22be9b3dafdf602eaac5bfe80a777403e6b70866cf51542fb81b494020a297196204fdc51acb9964aba622eb2629b7d9d5280c9f72c7ed372298db90bedc38096072237489a36c34d01cae3bc2a681ead7c67896116a8346e4b0982ca182d2a8278cb9fca8cfbc25a766323489bfd61a7cc8bb24465517fa23d85fdba024e86efff8565d6152160faf28cd18b73222d85ddbe05b02dfed9a1bd24785e57df9904c23cb3032d8a0854ac0b48e8e8d7710e55661bfc56519f5d2a333b5aed05b9ca8b1cd42d06c99fd60e3510b75dd55b814071489245cf14b7901a1cef367fba3b0944e1261f3ca8d42817f5a1d8ed172602418de315fd954cf2edb4a24244dca15367c8c947a909d19a90407d77c2b787ec385ef0f0cdfa0e3e04f22198519f89ad2f4a3bf058306f39b41954c8a438919d788390b93e6d9b425a704bc93ed88640b4e93a6d1764ac73f174c20c2d7500b8d2069b604f818fac107d330dce013ea6f2a0706230657ffec560fa58d52d7389b99a71d89e0c0ee6be5069d738363aebc29e4b966983e6f6d5c23823ec60dc3f06e992e9c14edf9278c0a8b1313a31c51fd59bc7ec8940bdb3be715c6a9225e12ce0fbd7e2e5e6e5651261cf201d4712a931f7742bf2210681fbb910b98ce1f068290cef31bff8eb6e150d0c8a4d3fa543a3dc51dc3a1398b2da0c5c06dbb4bcdb6b11006e9ec0c8c5a082f4c2246f922577bfe15a50dda391883d48ae11a2f5fc9936209ff57e660373d79e660337e6c054a00569e5b292d6efaf7c435afff55c3ed3c59830f9128625cb192bb4857f923e51bf37b7219c169f96c4fbf4408720576f12c85f0a667fa439a57868a94bebcf94fa6853d709e5928d3f1c8ed75fd528b372571a7d7d0163d8c44a445489a6fc65d31b9491ccff3868567702544c29985a59b4d08f2e21f9d5ef7913c928971bd42c9b54631a7213480e5f6e641b3a29c21f5a01c06db4fe4b48d854cb7d141011c747006ac34a7a6e3cd5e7a10400cb293deed742a3bfafcd847481c6c9b61e91a2b2e2b08014e888f698e29d74d279a29ab65a95cae7385858916de539fe8b120adb133d940bc875c0ecb087add8dc79daf8537434a824d844737b8636d4087748874eb6099593c7d038da9741777dcbb72c7062a454739ffdb1879fcd9ecdac9fe08550be20fd8cc5deb48f689ecacf86ea9e372cd6fdd42699e1d2473416042e3628afd37827f465a8512c109788d814df2cd9c69a12ac7d3410b09da840810e957acaf9c3ae863a0c563eb0df5bc988d54c1372be411f6abd4c99e336e8f35a5442f9d784cd109623f42f53c6d269d2a293bc968a87e060136c95b1ed621cbe9ccfc30ab1430e80f8426a422949f71b62145ba86b243ba281235f404a760c76b0413568c9468cd9bdedf23c1bf18a5317e9218af5113fff84c40fe5278c270bc51848c701c40a38b0bcd4aefedb7a016adab2e80aea8d87009c27a0665d01a3906efdf8e2bc9c28dbf60ba79abddcdf687ed53f618071bee3237446ed81f6d40c3784ee55a1811d101115d0e74aa77899ed4df352bf471bc9d368cb2c0cc5aa387ee4fa6e4da9f51760207d318f6d21c8a02664012bb4f17b406be0a604b9f08126e5713956f1fb723804e07b1479367e288523b0edc1869d406514ee9b94fed949711051419b3cbca77ae615ea1b28641c41e58d36d9b19cc3a644019ba87e324e23b0827b278f181eae32b085dc8f296d6c2d9bb205fa1e00d24d7a6bf3148a7364cecd3d756b32728418e61f623551d51e516f9c5bc6638c7bf49632735f036012c55979af8c8f0f2fcc090ada54254c801d074315978585f39a81bccd8907b08ede16c00505cbae9912c9a832c8563032888476ce301af40327d88cc1238b3fa021e124ac60d558d37fdbd5c0bb901b49c9e829f6152ea7f99ec6db67ee33f5d89afeefbb23d3a212188a7e4ba11f1a99e4a23a17d60dc67539b60c388d29187b027995f20ce4fd243c4232225a032fc732d0f2a4b7df919e6657628db7ed3ff274eb31eb8b35cda7c80d19eb3cea01ab94636b07c38acfc6813acfc6bfc743cb9958f3887426a8253b5dcb6bf4e43961d3a3862cb02b8df63b454b34c183148cc38f14534a4692c04fbcce549b3f92032f4ac27b5079687d3968ce087b459b102193fd685b87de1b92ed6aa771776c9f7740dc0a1e6b3911bb9820b781055e237f114ff085135146a439c0cec9fae6931b6e13aa4f802e1984243a7484d337a954789fae8c83c86f59b3aa6cf303d69bc332b3794819262018eba3f3ab264feb48d79c32f1da6591a8e9e09938fbaf176af9d12ad3a0f1450f5025407932837876a45b72ca071410e0b8cf4d5ce4f4e34376c50e3531218eb13b248cc4a9f228c02b30a6f6a474419e0b3f498154912c0645fa6a45deb45ef904a280f2e3921ffbee793489e7420a8130617626d5c6a25b84b23acccd6abb927314cda0035cb6b3686e1494d0040f091dec9d55ca6e8581971ebdd46a5f3f8a28428a283110441e2164c248a5cbf8ccb704c3f37815ebd8c1c223ecd41ffc2b6adea44e6681d08c462f539bbaa2019f21208b48a8881c57936ba2d7615c05cc2b7ce7d4f0ac14f826d1f5fbd7e679433b9f168fc01f5d8353246c3e7711ad62e584a65423cec88933b44e6d74fddfcf841c24f88de9d12a65fa995f518ca9aa1b18aa704d839044beed1f7c957111d69cc53630868c07a3fc86f6e9e3a7220df53718dc49997d7d7d499e6a1b319d5dc08c261e1316db88f6d691fa5415972f45e9d023d5ec8040e3b5f43d4d8533138c27c4f6200409d36a2a61f349891e029a2a66cdb1caf52d2da6c27c171f105286856a1403fb241594f61d9334c13a2749562b2eae7865ff90dc7970e510dc25184bd4872f652bb44220b4ce993990736613e0dc7d26a57ddd300a25fb95ad7a8bd54a393144429f5652179dbcc90f851350255fae4bcebc396aa221abaa9f952611649001295254dad3aea5bbc1c717cd1711bd0ec3573e587bf6fb2fc527558d864b4309d184022ab11baa74007908bbf083d76a47deca1420e3cfed265c348ff4f91595c6f5a7657bd7504fce5dc9d9f9a2b2dee6d895fa83e4581427e5b6690673d2762743a66fd71055238acf9f9c15e085e2143b846f81a1f680ed87436919d804c8313c77fcffdd1bfbe5b9ce6809483c2add440106ba0347497f75be33b986b3002d552b0b8e452d7b5587715d32ac2f02cd32656b0abfc993b2389500816f975b7f96116f0eb55cd86baacfe1442c1ea9e6cfa2a515d0b7605c2bd0f21f8730e35eb99018701669e14281c72fa19ce85e62d6f534833a71fe56eef20c46133ec123731efefe97e02ed0b5099e5e03ac7cf4aa2f5eb6755b630c48a3bb1a0e898c70d20bab8833b764643944e7201d0bcf13bb5f16e7c0c2e2b3135d464d33ab504964a8cdefaa049b638cb72e37738e903b56ce07cf4717f140dc1b5c486e8936867b48ba560f0bc62feba277612785a0534031a2034f7cac5bf66a04fa11753943292ab67d570429c129474e90e590fa65ec82e2b80f69745a19b2025eb9a306664a105bd91d5b7ec3abdbeb2258086de9b978bed8412dc735b97bd76feb6bc09cc3c3c262e8cc42aed138662913d84b2ae877153fc93f3fcb640695db9fc2e52cbdaa6c0336b5511340def888fb8098d345d99627f4005d4914ce08258e7a8bc62b47dc48b9d6aa6dd0331d5051eb6453d6450029e213bfd03682e1a890994b5f98f6eaa567556f767985523d6f20e02aeb2c76fa760c62da61141f140eb85c5142400d531a7cfb7a39dba09b09bfbb6703de4d94cb37ce8cf417f883b0dd72423e6cbf88d6010dadd769ef22739633b93a3207f0e0ce9bc4e1024543031cfcc3ef2e83c09e9dd2a6eb2feeca4756c82152b0c8551e3d218e3c4899253d8c24244b2026797761064c6f99b7c9d0c72a708bc4c2ed40037d677c80ca0071e32b526e5120520041daf2dfa74b0680190bd28e023ae92ae1485f1a8e4fafb1209606a147a32a77dfec622dd6e88a68a6c78d4f2074331700a3fd2100f817dae4ed6b983045fef01ae2da62db10bf5c1643c3362286244f5313e1c432845b4574479694dd5980faf88664e26bc4f12a1045121382700c818402eb2c9818ac314236a560edcb6c025b6a593eb7e104d915d53ca067e9055988c76036d60e94a9eaacaee7bdfca230e455c657fbe221f5542364fcdc515081bd3d7f5362e399a6d186d53ff09c0281afcab371f99e140b3e82e5261ed96cb10558e022fc44cc6c58435b21b5f685bdee813516f50f42a1f9b0b272346a1ae5ace321c91841ecd861c7e978000dc476e21b87e1d9b6a73f379a8e5b0016a318ef25785c15bf3ed36ecd2c357e93fcfbc4aca209456670c23c4d92b03d36e8d778500ca27513480b582ca472823bf26615455b927b7504e1f2580d2381a2b0641a5891bd05ba9a8e8dc386bf6d3050f6571dd941baa6dd678c31592ce621ad6461393f6e6355547acd00ec6cc5a40f5325ffde8b4a13a4c6cdfdc1f8c34bae8393773d56daece7b61fc03374bda500f20d4ee93fa2b73bec9fac54219228176caac834de07f5b7acda4cc4eb60344661f1e60c7836763558eeb7b47952fa0559c45d158998c279db09c89e40e3132c875e8633a316c7a975b9b46c6ccdd6d86d5b086ba17111c7da5a1d0f895e5140ec0c2ff605a7b5b13eab176c02cad39760313f56ee9e8113bc70b98eea8b0d81294326f14cc95d3870c585485383cfed23890768ca2902aadf5a4590a4784105e1918394a190a396787b0b00cffb79d202ebbdccb1b3efa7cd5bac8bfa9571e47910f9f525d25df350a68cc46fe7c0eed35d8504c3c62c139932d512bf48c2cadb339759223c588e1bab3d9096abe83bb66d624b465368f54ce878d18e043253f3266658bc4eeb45a86bed9763b93f491b5c503d074e0ba3e4dcf8a45eb59c41b5d48f564d82dcea7896e7fa1ffe5fcdbfb04f1048052bae7d55b12566051c0b70e05c246a88d59b3e110d0970641a963862768fa8b264c19282a35158a50c1cc72f1591e2ff4137fd2ca580b567fa6fbfa6eb77b687d8939eeed56c9d8f99fc38c69c755ecea264624b58106e618c92fa5a8aa1a60d48b52936a459bb6610cc75d6e9cc7d418f9139001314082d5c6e998f984b0d8655c7c603eef9fa778727d2aead4141e00edd44832d85d374c6215905caa4454adc3b3916fcb1d9cd5736f3769ff15c60a2ab9c9a848c809f2f565922b7f956598de34568622b8cb00cd46264b748f8b12e80c6f5493b62cdfb848d75ac1815712d4fd4ddea815602130dac57cd35f38f338010cede9458425d0f06429ae3a9b621b08111c20be373aad39cb59acc68f0728cbfe86dd90a4827d3c21db46721abe5e1b153ccf05b03ca150902066686776a225cc413f6652c6fd27dbc0cbf83005c3d423992db166a1c806a506e600e75ef801fbff87414e84f3fea14543c6ec36299aee9a3a00d399e7dfc292087a54e369032b838b85d79275583609cc7daced79781db96ea2ba522e1089e6f0f88675edb0cf1d0186f8b0e8d99c673ecc4cf404efd19b1d80f29f02198d33ea70b16d3c5058efce7594fbc17e1479d5ac6a83edf2de98e9aef392aaacf89c36351ec8aaf8716fab2ce5442e13962b040e7e01f8cec11e56fbbffbde786d825a9b4d6da34a33b43842d6287f787192df1bacf8c93e015c531a8750b3c5861d03c27331d9747ab001c8cf5915c55b83d84234e6a8aab181a8e51baae4191e5f1893350c6bd1f486e8185f0f2b0bcebf06c4a22daf470870cb5886a619af4d40452d605f3683aaa1ef1070243babededbcedf1e94cdc98f551843020b61ecca1e7dab6c84c539b5acbb103b364f3ca29ae377b6ba4386154696011d1fa2f040701358344cce6b82e3149903cac9f47df3af8c0737bf0f5828cd07533c57266dc952a9067902144be61a1aa3ea7a60ee03b1b173453ca7cd26b022c09713c15d3fd6d5d8f8afd5a0d93be3d0215246d483bbd57584a83833addb397267a23c548f60819e826dc95d3a9b1651edcb5a06d504d7b9ab2898022be0c3a3e0e3cafd88cd7715c511cf72dff9d7e94f9c0f14fe7c3f9faf8015ec106907335d02999626a2b2c92f43705082cf84990550bdca4d99bf60e6f605cc0043c7fb99e94c90653df9775708a8b3676abe218c70aae07f2935445915237362ea9283e5854e0878c0bc004ed5f87cf196cf671c222b35fd2b11d39cb908ee82c5a5cb3733d00be044b486533512208f20fd2984b9b68bc543786a10b3921cea2b396a30e0ce7560550d3518b26cdaa19b41e8a823650e4abec755c7cda00e6fdac78f9af0365b5c43717ae89090cb998772c62d14b7d849d51bb5da3b8ff796983a5ad82d33ba45b8c56cb7a806609b11bb5077ec4d302888454be2a48be30455800af5e1b2f67031b6e7e8b3662a2566d9e8c6c4e10b502710a90252345d2fab81128e880b4a4acada389fbf19d8570b6b96fe410d1eb62e691470014fd925855ccf3efabdec31e4265515b59f8976bc22b8a2fcbcced06103fa88caf64cedd81c4c03ef896d357a6b6457e41deeefc6b5e8ee6104271b50122c42007ac9799da5bc38aa8ce460bee018914490cb9c51110cbf79391c0315f27e02137df7e398680de56e6605804235a70eb5b6353e4c2037dda74320d4bb1283d238608e45f36107983b29308bf2dc8b802da0480b35804a82d267b98c459944b2cee470cac18a756b9c58789d99072807af8f259c19210d893fae5763088ff4161967ac77daf552de1fda207d7a30005b55e41715f80f3964033fc5d5824f1278dd687c2ca2aee24e7e39a02c5b0b8c7826c0ab9150689bdeaca03970b8e58ded20153491c4cde963a6d97fb8247a55c3255e5c45787216a3fe9483038fd9f7c16d8ec2577e579134270cbfc8046b124b677a97b8a19e47ad480a8903ac1f130773a6e15688906d49388738fb4c806fd1026302ef18484598891087d651ef8736f4fda290e6e446a311ffb30959964f3a46518f7dbd21f2dcc4b9c0862516225372814d6da3b2a9b30f091d2bc46102b24a5877a2f80fc49fdbcaa997a4c3cbf085aa4ebafcabed2f822837d2f9a3ee29dd00d3aec15e32cef3072f48d747ddce4d3e3dad89bc2d50f6c609438f7310f1b203acda4e61fa6a521552d2de60ef1efc05920a689923ed321f703075658b96c3ff698ebe4f14749e0c1e4a551219f6b982ae4a8619f0ef68087eef968e6d400e6782e5775b06829a9429f950054db802d1a73b8ca6cc6aad132f751c0ca54266afe69c3a49ef0c8e5640cb9b18d6c1548107f4495f844d5349468f9b9b10573fdb860aa6d236d96f4490a2cefd46eedea5e11cb6798111771d463837b485ed4cb71427166bb2f036d70bc49b672e6e4c64de73f8c7292c8ce3e9b53e5f0f5b920346651ea81dbf37191fa57aecb0f88f0296c953017d1f916dbe09157029d919cc4c322beb348614da718db3f947d206bed234d4a7a4bcf956d49a286234081aabd582aa6ce4bd01e9d8d41d14a4dffc908e02ccbc82c5ec2668fbee59aebb47fbbf4cbcb47215ec4a3ce901eb633c6c3ae5c0c5fe3df55ec400db1ba3e7775d42e7b9028276ad14414baedf816edb390b6dc8f3f1cbca2f68066f27d8034ae88eed3b69c5b58a0211105453b30f4373a0152e6c9022ae1b9dc37e6ce4566f49201b9569d2dbb9f9f0296ae17134aea3690f7737132519105a0732102113f68df2f313eacb0c003670517966f86ccd65ee0c8d4469c62e00066bad3258b55e11058925484ca7405cc8037163da5da0d3fb0d1ae552fe6bf93111e14c87dbb1362e45128759cf4db0e9e62387df42ff73fed9729f028db0e9c92f13c6651e0f5131bee881b6bb3e1ca53af79e58c04230afc1f19718fb6f89b8e967b1279e0335ec20689713c51db167e34e63579dd4712e445d27b63ade58d8a64ed54963e227d580302dfdde4cd2e78dee3ac1090a7b8781d51e8fc0403b688205f26c9175275754f356fb7ce67dc510cc53e7066d7d0618a1f242853096ea331d3a026ddb443d4653624895ea206707968426335a5f0220626ea4c3e65868b3fda162d7f37906acdf9a785c63fb740357c723e0e1eb23da55d40413edf84a531adb030483da47098bf3b974f445e45d2263a4ac9fa3f01a80f962c2e8474ea2e35d048feea24e6f58a055628548fa71cc62622045f746d58fead24c26bf07c690018841df7cca84f6221eed77e8beec78f5ddc4318b116305ded00cefedd2320518b5f0f2b464715c921b522bd876763f76c91051e4fa022c6f1b92a39ef69eee53f17b1d811163b6e2584bb6cf987513b7072bc610a889387523cfdbf84021a9fee1d7de84be80c9b0ad981014cdd6d96832ae5d9e9598d530fcc466a2fbbf32ace1eaa82efcb3cd8e0784ddee6481cab3f91eb4e832e6162f80ee57b3b9689223830f1f6185a4d136641d511188d15768e6d60a1386921e13259d3275a6e8dc5954a4305bf207893751544aff7a8c2072ff10f4508da594b9fdde55f4189cc3e2d9c3961ae50c6018f143b3eed2833e2a594af69a7ca1f067e36f81f8997ef2a217d182d89cda28612731d0349a39c55da60b4140e0e03f1b4e6c65c5581f94b0fee8dd5857112cb03c0e0d86003e8992c4d5024c8e9939591568d2e54540152b7b2868210e244d967337c9610fed7fb5fe04f4d5b621fd1ec2337fe2c612664c509fc31aca9e260f4783a40d21591e7613c2905f600723926b1b7766e7f0159c5b92f1e6828ccb6cd9b2e8cbbe5f5e56000385c5f8cc571a960687e53d303d346fb4ccb5925fc506fda98790f6eb9f29bed65d984c160625bbf2c54515257ae81f4f12accd947911c036ea2e1d7c8b119f328c330f8b6a7beafc26c9c3bd211ff49428aebdc5f73783714f3efaf9ca92a9615089eef1e8cffbc73c7139f006523c7f0f3941d991a5d9935903d40200f7849101a86d1b8a23abf72d335996630f2ed1cf4222d5cabb47b02fb5c6aef05e0cc4425a29e057786c5f1751d182c88af3722d7f0b32a599506c578bac798536ff30fad87aa73a0549548e1be839079f56088dae60f7c7ee842079d901038950ec5929ba5b8e894c983a79ecf57b3da7cf27bb412d1a20b1e7f990b661953a4ef1ee82ea2424905ec37c361c908303126beda63fd1e776e0de976b01e27274a23537562a1b4f219cc1c6fe3687fcccf73d0d5c28277f9c9518aa3723f99bfd31d7493c6835cd21236dd7a803988d2a92d2d1405705b6e33905a76930f5588f38f67985db33645efe4ccef82240bba5e2df5c012e8bc15990815060df4ae6eb15f28e159ab844c12ba205d24f8a5639e240c599c01e8a9ac504b5eb49e69af578a619004c8ccffffd515247e20c8ee9f32ec4a57839dccf221c8a7fe26fec2fa771d5cb504bf70241fb5c766bf8562041608aa376237e49d8bbef878fdc11fae3173cc44155598e4f2175f582fec2e36483b5b8698802a2dc33111da8632e568d924095820aa92031c17a7795cac7492be4cb71cb90284ee2d4f928985ab6a5d0110cf8ab8cb6bb4fc84f96f3db1915ff0111b63ad88de4be3cb23e0686badeb09b2a5b789b958675b262e1f721b62a2c055711a5ee315a584b42d8af201351bf6005bffca22c47ac13f35c47092e33340661032181ff452835cdd7849519de4a215956bc486ece326ff5c5b30a58d12b116b2aafbe15d38ef853808c87118e19d3b8898b2b900bc260d124c3812db01bc70282a67413dbc499fdecba3d82da809ff28a3aab3825fee797d7e841ed18295ecec55e0b228f723411aed7db18fcc53a4031b4934769b725c89e588224d3f3d988041f219cbcf63155f52ed331869cb6c7ed1a38738f6216fd80fcde7e87dd7c1868948e497a59f03f905cd09f8a546d679850392c3e3249a5bd083e72986c004fc96a6a2c357eb55810d68f3f8db8924345fc410b265363002c3f7213393a38a18f026432178c6b337124c4853313c742e8f60e18aedd8f7de908b0fa768a62214c2e75af28472a1f10a20d48d1465e66bd2078a7286973f97b351b8d7f37d177f6bf6ff281d6e81dc4be7e1be55ae382906faf8aca926a2dffa5f92ab125403cd26728bdf03f110f1d6698bf488120e158c81c10703c5a7a1a4810dbca7c349f02aa59d356f75d5bbb81eebf5de908321f2a6b6bcb04814b8f85596e3e947993b456c10a95082471f6a1a6f7df7b23695f4c70b991b9b19fde53a1e9c7401b6f93f2c74a0f9ed347b7bfefdbb42d74b7cc7110ab9cfda87a18e0d32fd8e2368f2efa27a0ed39ab8477232f75d338554ab0726edb22e76151a05e7486856d19168a742444f1468db9312536e0003321c1ce9f30edf317e38ca6f051598d4e96c4fea58deb2daef0fb4ba576df98c3e0cb6c2c59cc602ba32b0bd6f22bf50367dd7966e6ca4d33d7abb991c026a7401f74ecd5ea7aaa526c816743f6764a9b5e9be03066d54315e31332a2990f4c616c20cf20457af5829bb1b7287ec764bd1eb221cd641ba9d5a95d66647226e0879be1ea0e2c1919f55fe2fb95d47f799f23ee338285be8ffa18a38e454f8ea6348066d1862293d095f949f3d68f011bea87be23ccfa67f1885de67bf267ce9e162946d6cb0ea8ccf364cf63ddf4b90630fd26b33e6ace1e2d48f9425a77f156a2196b56ff712549b4208699c2b90b9a64bf1d7ded9a90020ef10dfe4000702a8564d215aab9a1dddd5a084a48c0a409755c8fc0c0b5ca4013a23b13f5d70c8a4ab0e8a10f3bd370dacb27bef37580d4618aee251e5ff19b84e088303f9593d7c4d5308493887feb8d2b8ba35a1676383e5063b364e318785c19cae911c305f082617ac5183912dc4444988adba48579078e1ba59b993944a7607d3031e04c803aef312a3c10c6a0056447c9a31e1b5147c12b2958a33a8d2bbd3f2492f8b06daa8c944cb69abba3bb586324a05e75c5d2ba333be401e78daaaee4e3552a6a81f6734b1b9bbbb3bee69896be76ff7773f8f347660dcc5352973b6e1b8bf4e7719638c319ec08ea38e2329381bbf05d8ce23d404495c3f3e7d61adb598b63ce433a34c2ac121a38409a6244518f83f7ded58208913243656453c21dcc9aa069984f9c58f8a39f6e610e32791827863c447d08f8726bed42c8242b19f7967a07c4940b921868ab73119fc706c209b4474a318b260c06670018bc160e8646544dfacd895be5577a77e20f2da898484929a02f200dbe910440001c4d8717246d22cbde724b872ba5646b79138445b8671d7ff585e3bb5623e6cc580a0d95af356862618956a94703e5820c522414c8042f52f37184045ac374b11ca9b20b210482190b49bac980eeb313a4a9a8ad74d7fb6602e66de8ea440c7965d3fde5deebaae38e9f1476bebfd6a912f80b6fcda4e8740e79c734616cdd8b2feb7393340bed892c18f7fa6bc7602c9177eb05edc7487627d30ae24dea8786256d4147250543ca648ca8ada0b40c7145b5a02471e1aec8408c3518fec8820c372821dae0c274527471a3f19e2d94f84433e2dc421a3ecc972082973e20eb5b327c5212ada109195dbba7c79603b8f257ec438f05cc6550ad6bc2a225c8584ab903fb4c4f83d1c652c91e99d5577a7ee9fed44dae0b16518f71f2c890fff1a16bd31cff5bd3ddf465640a3fff5a36c777f5e3b83c22131c7b8c5fff37fe89cb33b31bd5577a76e2053a7432083d2eecc9766df31d6d6c8a9e54d0e1124354f548c486a52aa7af57f4ed1803704922227986e20250571959824047d71453b9aaaee4e3542e4b51329c608b26625d1622ac74aea09eb486f8b77ce39678c31c618ff8e82697f9eefedf9843bbbbbbbebfcf973767777f7ec4a1c34b64e5fd5dda9449affbc1c34f37c6fcf1773c5eeff5701db587577ea8b6be7d63ae79c73ce9eb509cfb9ba5646f72a71ed4473767777f7ec392d62ef6f772a119e18223eb4e745e5a02f56f0a60959b5bad60c00a81029e890a24fecad8a430eb410b7e99599c11b2b5616b0603f63840c6b68b9c458ad3636a0c4305998281c5b8639c003ac8fccc8937aacb3fe796df92b64b7e0d8db755d43ecd038d7d4b5323a64cf6bcb30ff44dbe910bc0ba9f77c6a57e669667694372268cbfad377acad5da9eaee54a40a9ea14d63a52a98ebc3755d3fb8d0d2be4f240aa260cec93967cdebbdbcde4ad09b6311c3ce02638d1dbb3b05cc2564dceeb924e2855e5c3b6d9f835cb1e6645e34dd7417bb40c4cbd8135b01a4b19f312c84433b26e87562038e5577a73621f2da8984c43581c279bc3532e59de77b7bbe25eb929fa6e9d744b4fdae1c1316c744598119248e1c8874e8e9e124d5c387e62e59e66c21c1206b4ac88ee0d385a6221d2090ee5068fccc704a86452b4da292c67c90019b812c07183473fc26345d04d84e27a499221fe3c5f1a73bd5878fd7ce2022249c0f247e360aeb9e4f878e0e1e1d3e3a8278ec9583fce64db57aedfc057154c2133b80b79734d0b4f37c6fcf97032a87548ea91c405e7260c158f8b0e2e9abba3b9587168fad291ada14f0050686dc3e2f3ddf8ea2d74ea3e376b02fb926e79c5fbf7e1e97901afc7eeda61f5ab67c3a040f78bc76ed5abbcc5ca0f5aaa291937979bdd5c65ac1ec355e71edb4e9fd18cb60d1cee2daf9412cbac85ba4d921eb345d6063eb977bbec296fd02823382f53fa3a25dbf5a3f4ceac0cbebad2c35341454ae882920d0aa9449155298431e3d28a0580979348930b36a0a25c880b8440dc486b4156056ca2924125e44d69c2d5c4101bd6252cd90f04258aaaa01682c16d840ae1a0201e08d90b79102765790a00bd3add9cee331f83202068d95a6a837236d3936c4220587ebe484c482c3f13b9ec87162723463c1b250b26851164b8d1fb09d4e4d924ae8f759c1d982eb47e3fa21d9f2da4903d4bc2216ccf3bd3d1ff39ff714c1dfac5fce39e7ac813470a5adeaee54dc11616679962c69f0e2b2dadf381966679d1e3f5beb9a9c7bd064cfbc9ecb08628a5009349ae1b45c29140c7ecc704998228ccc7018289d9804d12c8125231fed365ccf27723e2ce8910c0a7101742127d9a1261b4c07de2e595c37b07037b4684b4cc007b8b6c800dbb95464f32e524ca5e29eb28ffddd3d63281557ced5b5323a0c40a3677f659d7366dfa4949d5f4d1aaf5fff3ff1726673de71570010121239480c111272c11d69737702b236f7ece96ea5c99591f6e2e34134e503071b845716b034b0f95d69bdb8fc884097961ae50918960cecd26cc5666903820a8d118ba942e3f0c35282921241d3860565a6394265f65bae7020dbc03c4688159729b00cab909617ee095139c584b6352ca958d0087e44ded9cf28893481d16c8996bcb678c170e36660f900038dfb240183866191202a18668209b09dec54138c8edce6640c603b9d629cf01a8f318c09d9c25671338afe3a1f3330000230098f5bb501245926092c0820e7ea5a191d8d20538d0a018841642a620100305aa4080238f044442651a800a5444e4d80716a229540a0907375ad8c0eb9227fb42408070d18fd3c09f46002d24d325990700c26af2244681236d5488080b4d6c492a098f020e7ea5a19dd8b57c68397b455dd9d8ac46c5a42702043d97444420327a2134e8b4b8d9f138a065a969cd816969cab6b657447d6494a6545c9e2944a9a53909aca51abc481403316954404a4b03f258e151476296465967375ad8c2ec9a854124196b6aabb538f84d8dd03beb7e7336e55c178faaaee4ead62ead73510def7f67c2eae9dbcb7c970c2adea9783c3ac80a963a73b07498829a855d368f6563f99c60a66960a05df860c8fb25cfc2ae88ae84ac5aac5b5736fa5dcae9a4e4e7e6443431929455aaf9d4b97f9de8a346f4656fc36682edfdbf36505bd760a6f59c3618fd8761eaf9d3e41b79788a8b596cd70799f857473322bad8351c96bac25e5b5730a08be6961e97fc78e3fe6408add8d7101707b345ea1bcb7244294d77b79bd7526640476a4d84289caedc87a1c5abd4e768c0269301088813aaf5df8beb7e71b8135426bc4168911eeaef5306b2d82a84514b508e30b8edeefa33d039bb876eeac3751d06b1c02ca6ba7d41410c785c0b2f05a53b0df7d6fcfd7f4e175d7ae9fe808b6ddb523e53b53223670e0d1f10244051a82339a48d068fdafcf4b44c8dff925047aedd4e1d138a14fce39e7ecfefeee3826d3baa6423f3ee6d83086d92dae1563dcd418638cf17bfa479a98ef547577ea04c47fff7f7f77cf3a75f2a8fba33492f2beb7e70362718004fdf8c0a1a7c8c7d09f7e31ffaa97067a79c432cff7f67cb80998283a43e5f14b6cfeaca8fee3f69cae95d1ad60d198677fa318aa8288c662b18f7976d7ba5444b5ab60d614000d56d8315c71f11952a0d28282c8246341d1d2567a8437565452302d48a1f9b847af2cc54473e9688b86228111189bf11065b2134da7213166b114eb051ac07a5a16b197044ce36c9f30265bd01244ab8dffec7975a8f0b843524cb44b3194bc0c951e229058063d3821444a967889664870b2f276f0fbd984d8a4d8c4583401d6db954b3261ae0f74d7391d781f269d014bfcaea100e2c4b229e8068ea80bcad7b056bbb20828b65fe9b5b35dba7f7bc2740856824f966cf79d71727659816b8a8ee092d9fbf378edb4f1d9b4d71abb9198cebdba564647234533b5ff517777f7ecbc9cdddddd3d7b8e6a25b7353faf9d415c8d506badb5d6aedddd1d8679beb7e7b369eadf3b7d5577a7ceb8334ca0fe4f95662ef746886be79f4594ed6ed8b061ff079359441ad8b402052b3cd13e38841177e0d6f62a835209b585d3a0acd141254313d7cead2c7af19305d142b5eb97a4fa315572948ed74e1e9f5b5490e6a1246fdfdbf3ed648ea636facdf26802d38e01a4d74ea81b06a4b6cee9291bd70daddb8d2d1aa0ceade5d17aff6760ce39f7c0f96f5db35321de4dd608a68cd09a77523575ba7308372fdeef8f71ae86cc1d902fe4fcd95926136c675bce39d5391937ddb9604e42c462ee3a84c17ebc46b3978f61ca0e02d1d01f3f603b7bb745eadb05415a361ec96e3ed87db380a972ebe1ce6e2e91a51252a1897a1c28cd0d7fd775bdc00572daaaee4e456a608d369e0c8628d8cddbb3a46c193b2015926d4f5577a71af159ba3efaedda4c4b80b60ca3754dcf36e14cfa371313a52dd3745cecb202a11f505942ed4cf3a7d1bc03c9033a3013987eacba3b95431047631c8b61ac8fbcdc73aeae95d16d10e2dad961c5ff6bff41435f7577ea0d91d74ea41d7383a4a1316086279ba520455b4a517ea327e6efeeee39e79c73f6fcc33173ad311c96be5d8c7ad02550ec852f64baa6b8f4ca79dbb04e66c4b08bc3f38e20886be7a6da31364c2741d0989f7149c971f878886b4f3592f031bb44323b91c92253ffff8c0f1e10ac8e550b6d2792a5b165a17002439a4f391bb2923cd96812229b4ac434c8629a5a0a9a31fc278c9fc3083a0ca13b6fe6a57d6fcf67547aed34b6dbb8a4bdb040584e5fd5dda9482f5233694dfabd2405612c54a12f62a631cff5bd3ddf91f1883d52d28eda17183449f83a450cf5574667a4f4dad92edd9b11d3b104e8ffcb5f9f4cead18e0acdb42b2dd2f1229e221fda6b77c9450c588ca1d74ee22d4611c8ebb95e5ecf25c70ead6528616dde4a1b32cc0a59149731743153726110634a4258cd2b69696467b724d6451285c662c1af1fc4942dbf8ef5929227fa774ecf648ffbea52933503ea71bdebbae6d0649c7375ad8cee6cdacea44d5033e79cb465dd41bf6b4ce2e769abba3bd545d4b16518ad5d2b07ed94010ffaaee40c513683f55aef1ea89fe6fa7a5d07d775dd595a9213fbbd5d4adb99cc917271606a9da1122d6108a5e50d8dd708026a11f300049504ca11f4063aa47ae8ff53d5dda9146051a0855feb17fb0914cd737d6fcfd742a705cfcece2e903717501a27a65b60b5d0dab9666bf71744b71748ffaf73479d0cda952b06bd760a6fc5a1bbbb1f518d7af6978350b2351196d74ead1bd1d60b870e4118ab1c289697508e0f962d24cc3942530635ec5ff0666519e499b1c11fd86d851b749112143caadc58148351af5bd0fac0d212239421244cb860f710e481c803d263122e588245af9d460c41168453ce31ddbd6c0daf990d1cbb8a18bff61da9161743ce1acc393be1d078bd739b679a9bee8e3b2762c2265a3c2f50e0646d2e18096d4ea682ed3ceeac2830918bbec6396ddcb2e5588c75ecbe0ed45157dd9d9ab4b46598ffaa7fa48b4673680ca8f6a7f47fcc612daa2462b36f970989270ba1502811d31dca540ecc3dc5f8750efd0860da9593d1c9685b74d5dab7031160d77487e2178b988cdf8b55d962e91944048db5ae95d105197aed2416f12d8811639a940c88bfbba38e5d0b39d89fd39c3353e7993ccff479669009ad260c1b51378ca4685ca091543289369aac80796e94dea8548c5e2ba70602331a04104105922009e35aea6414000914c85878a48c583c168f45616148500c0382814018460100c3301c444124869358ca5a4648157e107cd6319645cd8265680f4b706dc62f5b31a3d6e48fbc2bbae21c5f4609f6a39f0ad98590e87144692ccd8fbbc25c0eeac3380f6b0807dad017f1b0a89d710a2b20675709aef9e8b3dc5ab69e46ee8a1b0730c57d8044e3c9c80cb036631aa50b47b6ba320a3bdb9db0f1ca8bfba68561e6a6d24502b9b42a12283bb6553339804d27322e11982f9138096caec858663ba39a25f2263ac8f996cb0bbfbf21ae3b07eed5e57abaaf79d93d4acfbc2ca12f4bdcc400d2589adf41e3e625b8c57f25d23c30e71d06198677130ba4c47dcff1187989e12b7aa5bff62c79fc2141a1fee2a9c489514db6d376e837d8b3216873e25e2f5eb78486cdb9ed060a74b0a68a30711971e5b818c2b4a34c961a427723484f2b2852952316eab9bb23d62b25b5ea2bd356d025b3f2ab211b878c776b4eb63b4a709e7bcf418dada72bd9199658d4a153bc1d08aa16a1a56424e661af5dee935d772ce4bcd04ec0112b3460d3ec6bda53f45a7d33926abbba78f3bfdb15a7daefcbb0fc724c4170c6b73375558d1706ca042d771be42cc3341d83afc8bbb84c436a208e27d39938edad18879baa50c170ea0c824b876b96b8819b34c955f8cbd57162d8c1f64899c747a91be3c1ce6eadd38425216dece9c6363a964633ecc8e669ac2642a0969855ae959b87a36eca4c587c15c64cbd354eb9a2a690fc4ab423dc98196587777142313ebc34b8d8f7349d8793224924401413020d3b8acb791e8b1aa48b97cd91b473cd45b942974d034ad370ca85fe3b97e78b8b7817418ebde1930405f41160a9d97a4b24c3dea41318d6019a482441f1a4a1d362e472933e491a16909e867311b914e10a95b8b12ef726081c2b83e31574c4f046484cf53bb807ff65aa73017f4c104bcf1cb49abfde0f31c92dce2908d305b0b49df9f41413f4f2183e417f7163422251b8affb85152cdd23f3fb045d9a077c82fcd810882711b1c0783aa894cd587fe0a576a862f72bbd73225db91f1693783cd1d22aa06449d7903587b367685753cef12dbbd8e209841d825e43dccf1991aceea287d3bc7fe4959c068b0cb92c32b553a92b5c5af6dc009cf9bd0113105d1504ae2f601d284d6a24457645644744f55dea772ae952f3dadee93e54d67921f43f621ae5ac0af2fc32c5a620b6bfcebee293f599e09fcac249ccd0ab2845a3002697f167941f56779415d721f265d54d7de1a17a052eeb552b50102bafcdeaa5b3693e9d885bf6417185b8afe46220d95dc45287162046800a3eb552921c5d83ac394d76430bb730db9df042d7738ddfb64152729e7a04d4172f35dafeb13b993f6633e670431a5cfe9d9cc4c88196dd1795d101997eca744fd58159ef125a5843b46b87c86d9fb2eb10c1c350ae87ca7b92e91545b3fba67d172fd7d07036639b1d9ecbd575c2293db107e4fc1625bbd157ac92d515f5be983fa2f09a2980983123b0d05287d118d45847f925cd68348398a4ba997e15afb32323033e733b6a02d29d922e87bfb6c386a288c1f0332d4877f78ee8c11987eccc517bfaf006088259dd2a03c56b30077bd773fe7ee8a0d8d3a571752fd6ff94c2add28e8406eea57622f21cb78197c81bd1c79b13fa42c2372d267875286bebcceb6e64a0cab922724e35996c028f30f701e188a636f7943fdc3d7f7c43f88df6da09d4e80d5bcc907e54b13ffd73cbac62dc94440706e810e4dbec005c53522d44554e0d325f5e89c51b76cb5c21f3ff14764ac5b19305d1479273896aac1498373187272170e49cd3d6ab0470821c4ab28b46ee14ec577c19192f227335824c1eacc4e77d84b1535e11bc1a5446c5c4533bc9ca07810c2acde39ef88d8517dd74cc21537241e926b941d71b77ad0a8eaaa14ab4203a95e02c7a7a8ff51be424b92e5f0b209b60127709523fcedf0b9134ed5be9b2cac7e9a81ac9bc794b6747d4f66b564fc76f1bd03a87f5a0380930cdcc40d1bf90ba861db82f679ac5c3226a5bf13a1f45d4684e43f3da48ea74cc0788d0c1195c2bedd66ca5eca73d3ed5ae6901425bc2357f447f8a58b84dc105e586a59f8a19cb81fc98cc59acdeb3fd33aaa49211ba8b2cd5b9603a4908e61aacc892600c626e5dac7d1b4770348fbc1f8d8ad4b29153abcf68b78743d007ccf3b88f0bb94e1ffddbbd143d2ee879cd4f53f56fe5556f16eea4f2220ee90e81f5139bbeca837e06618cea280872c5414e57ae59e2fc0d116bd6ee70291e34b14b8bcf45199c2480934f8f2ac4b4f48b4050a791a052f95231672fac73168ede059d9bb57ec6d1542cf1809fbaf50897d7594bf6dcf88c4e2a3e13a95fa7e4c28ac308d2a290512035d3dac172e28c82b96993959361cfaba33883c7a25f8c5133b595aca8f784b80ce30c60309d82f857f7c7f8ddfb118d356ed4b4924ab8218bb3cdb22b5494e780310c516e8ad85b8d323a5802e5c230642c8cbb984a1752e6410b3bf3369e36a35de8ce7966166c63fd2eea5ee164ad9a8696734427ebed9bdc89bb86c963ed0f2e9be9313444d7995e64407b04b5b90c68cf377b9fd3c8cac0bdf87fc44c65457ec10bb435ccd86d519298be78c4c022348563df1489426f8bea5742acb8f047f11b2db3c44ca4ef8b38f3cb9ff23f2db857dfd38f4a9d13481fd594b8c8544f3421e4969b85733efead3c6529383971e419dc597c716a2c82e112a73d07d070bcb11fd5bb107cf39ef02ea3e30d6ed0c545bca8a1e3db9778335322e74df9d3cae4e4e386172e4a68d8bd30bf0d732b047999b0d7331f945e0c4306b18924bb817e7ff10c6c0b14dffb501d4d88caf7240ddcc4384290e4904ea26676126cd0cc6011fe67bc9fae274ef900004631d814ed890afda252beb81c0f205906e5bf9cf2bff5e07fc835a144aa5a788e933f33463219c5d72a168f878463dcbf21751e7f7b11759368a5397a50243121a9dff5a8b4fe6f4f1d227a509058ef283d074a8bf017a8eb2a6c6223e4f1e42556f42b35c7d7eb0ade80aeb83461bf5c580e18f2589c2b91f3c52e593277c35209117e35a0aa1eadf06f1ba4af09009a20960cb5a32b6e8d0671474f5fe6d301bb25e3f7b60b49589550b43afbe5c4d24234cac34c99ec80f3cee62c68c9394f2c1c347e2d2fbcdb1653ac8b52eb68e869e1ed248299ea0d9ecbaa290a7bdd651b0efffd5a146a8f9b87a3ecc615e7b7376a35685615f814806a58dd1c12329d7ee30a671ddd760998fa55e603c7e6a1257ce789be40ee86c00283c925450b02e92a8860d8eae39492e8311d94327ecfbf85d75cfc0afbfa48d3da1e8d6d876597da69310f7e5a854eeb510f8f986037c96b42416b8131c8725d3e996215c93b1508d3113630bd37652a4c9d8587c740c1b4f041b3359d5bfc9eac357fa00ec6e871220c6632bab2574d1da11163fac1fca9147823b0da8d5abcd85e222e5a8763b0623bc3356398f8db49b5308637f5f0d7ba2468a49da05f0e1d055c1d60f006c2aaedafa908816c06faf6dba62c2c3762f95df0d91baa95084e5b18077f6d112fb4e58b00c00ebd7e4d64e56823069d2980b2f3ddc107d6077059da3d705c996bc8ecdf400f1f875890e64a1140bac72413b8f80f82dbb81ef3cce5e054245744a126d4c3250a2f18126786ea178ac721520610dc3a8c271d0d5d02b2c9b74e1196d149c8753cd23a29f996c637d14cee9d8cb146f30e69e5d18810cd569db510181ee252242a5d62291645eb50b18e46448c98c2e0d5641beffb9c5fa94f65676f9564d57805cae735a5f4723270a9cc1f182f64443039aab4690cfe21081eb932fd8f484a89d42923a21290a31d7ca432bdaba4d59ebdaa77feb930628a40073fde135d7ab2f940bb39008efdbc93e6b24641c84743a74acf82a647176b121cd47dcb5024180440f51720572817ca1bdf15b5ba3bc879fb18ea1ce61fba4931b0f24ffe27ba526943b694c895b9221170a27784a07b0de2f6741a076a1c34ba727f883260e5792d60667e567dcd542c13a69599e0b0605e103f631ee09baddbe59ac1f2c9f66c555b79651cc0ab503439c4fb4143b386a914d13f7baf3c6d565b2921fa0e024d0bffb822e37885357ee4d71c10355fc06c3b3693697d40882acc147b8e4e423565d8c64c9e5ebf859a67dc50171d9172a435810c4efbc897974d73150e51e5800277a9ade1916b16c7e012dc7e6c6ee9c8626612a2f5f6c4ed698c0e970effa8df574b8cefd218b71d07c710e922d439672a191649683afce3816f89b8b8d357421b9f088b4c21c151094df6aa5ed735178b2ad60f2d5411af8cc5f05605ef3004a0523784251c179f5a457029d8312cd7f35405ca7c98681ae5e4e933111b721b7d4cc0c52339a6396d5bdb67e04d741c8bbaa3f19ebef20e10dd90cff7dee2de19dacb7956075ca0a2eff46f49f3d50dc27d5640903c4877006f7e30f67d0dabe59a1da4f5a865b029af3c72ca2affe8726e3efbaa4c9f036e613fbe61b9c9651ae3761f6157931b1bbc83bb55ec26256393d6702767bcfdbf66660bce79d83a5fec2f25e8623d0285682ebae2238fd4830b110e1c2621992fad3971c97d53d597060bf0d131df633ea9831aef9d0a448392402a0148262b06fa24015aab7b2b173549816fe213fea1095bb1d596abfd7a1d496f3a71e42e95b431cf711249549e6cea4b2971a58740c819bf9454abd0e22fed47ec0c2d165d39d158961ca8b94ab880d195b02b55efff0a444565805ec22e1992a8c302e9bb34982a340d3f45a5344b98d2b0136218f5e81c917641c74a41a488ba10413844b66b52674d269e53f419e100f511e090ba00bbe1fb1ddc76bf3d805d8c808bf3eccfdd70e5e88b0feb3faf94ab8cae0ea03801f404dc9989dfc3d4c018e133948d30650bf60f60f88b18aca92ec94df8753ec148817d4297d4e9985cb8faf66ffbf150e7c0a8f358f6ea5fb68e8a69b0d49e8fd2393e85706d8230fde3f88e4f97f5846b53642385b137cb293777fa4cdb0cee6e4904d68215092ae4262038a3ac8b9cd73b634503d7060b4364409a1c332ad29c132abad00c7c175615919bb0c6f1a7ffa1ababef6ee146caa3ff47541871b70e09d2b81b279460471e5f8fd591e7ae5ce7ed0a0e81624a22f75198b60ed80a7d13c742ce328fc02885b4800893a2a18423540aae20f6118d40e041ae12ba0c4e6609a5e252232cb0f9595920db97842a391b869782519f9e34c5d0c1fd8bc5edca13ad706c8f73620393ab2ab82f1013fd88603d81ec9da99e649b035143e323c2d258e9b2ebe45874a3d0cdf57c365cbbc9894d2d74b843abe7a23218fd9d00332b134a34a204c87016f29c13bc008ed97f8238a2ff01f11bfbcf006f4adf03e00c8d00d5fd87d79e1e5d7ff133e05bd8ff437c82f70b7164ff07e003cd1cd27d037eb1c6fd5ff790d804c004fe05bdabf26efe3b256a5dc85aca18c73180621935be6f2cc70d58cdd594c3cd2fa8e8fe2b82ad9383302d1fd68b948497ef57cb1d01e37fc81ea5c3ae5e68debc663c7ed307e7ce22e634ee099c1a84d062e6725b5c116e20a9f5517382be49424b766f52bf37a7856e89d5a2992eef6e430be559d309259a22ad7d790096cb191670fc550f00acf6cd9de04c24505422cf728cf900298552b3a98be0bac6d91b18e81081634a440c7cd3ad00ac3d1b8c034df78c6527f4844b1ccc8d9533af0bfac7a84f1740ac11783c311d18cb945188f1f8514180c5462d48705671c885da5eacd04e3420cef7c7f2809708d24dc849b11b1bec4bf5ff23943272a910b25a940081390f3043d5611fe73f11ff08763af368df827f3f38608be10e6b87d819e7316df5214ba239e4bd70870474b798fc0e67603d57d380a3caf8f9c22161b1eb9431091f31be793120e323d446a7e1481b2d2aefb6e918e9d751b59afcae35df3128869ce7831e4293b475744eac050d8b283de62686a00ffffa2c872e316835d06f06882d064421c71908f974f52700319eac478c7de52fb17ef801023c9aa079a3a6a9c412200338aa4c5d5d74e048a6900604bef3695fae120b578190ba437a57831cbda99f2cce8e29ea626278ca3049de33303e623b5972fe4e49f632c8560fd08411ad00c662732027e1a67f996260192c785320f661e334cfb52e032f195feba1b798848aeea4483f0826dd739235ce864ed7921aeb4b00055d872f5835d1d3e4b5ab51adc41ecf8db2fc343808bc39c17e8a0dd332df5e3e97d5f0748ca6283846838278770b73522d4a345bf3be1782bdebe008977643f0ca1be0e34581094754bacd62cf58933e6ba77a608aa1c1ff6d5a2e4da378334ca3eb062aad4ca9904764acef4e130cf195901f288ab682436dede30ab1e24c8dc9ec460445f986a3064f73016b3a81f5245a92c129a492b99ad8afd8da4689c1a6d26a8d9ec04316ae67e6d1e2a28d5a5e899bc527a02dc2bd483a9f7c6260fb59306553c94b548e03c8bd3a338f06ff61b371e2fc61773a3c400737e7c74ec3bd7ca75548945a725f9722ac619e83bd508db65001015ec88fb4a7899b5b8be8e1fdd0b4e781228a5207f7dd6c83e553850c691144583efa49c43937a68ce498c13e1b29e99a8374b34969715206695ba6535251af006e4d972494cd90c6e82ec390fced2dd8a21952cd93cfdc354b97578672ca4e4b9c036877576cb2ba684ce7e7cad4cd3579a1e67bb273fb76755641f142220fab6b2beed7101c8cc8f13a15c8df03cf204aff9288d418d2bbef8b725709d41b9aab34dd841273e2ec9fb9f57552cf7c1ac63945d0ca21fa80f20762007d0142a32cc25712ed8923af0b9e7ff9b3a4ac34a5a30a102c4c820705e6574f980fc375f3c45daed17201cfda6756d3c15cbae0c73caf724c3a604c0de94c9520598211c2b1b5da94ff89d864ead3c3c951a1b9b7ded45f1ca95a3d99a07bad5649973aa940a73de776373a63c1f1739e0095efcd25ba8f3778fa0df3e4d212b2f95077fe66c55449441095832e3285de93706c44df5d4944e2eed8d7ea8d18a276489194265177ef85ef2cd1cac0ec7ebcff2162b159e9acb45000698163c26844cef8ce422b7034b7f5c382000ba6f658e71fc04330c1f7027c3b90eee1692f8ac333c3eb052ee75e4fe808e0efc584dbd9295c9dc794a22869d6842ca92f82b4c4676b11e54416d7e75429a9f7c354e1c0731a476e7df8b26f393d0011c65e234c51b69b87002d7f7320968653659893f792a444aa92111c3fc4c018334cc9207165fb9f67ba487907ffc2c6bd86fcdf05a48305cf1cc7d691f292686f92e1ee67ad13686b6540ceb1012539cabf5f2bfdd1fc18a44843b1ba8e6a3306fc94729e21278ce9190667915e1489f62659568d73aae1c85c3ad9fbecae44e63f2feda8ecf1a4e466ce5e7bb882a0c0efa83ea8079cb6c21153d608e8b3f27ddc53ece4ffa51c9e6139f922b2273a399c813890146b4abe83e748bcf599a3a9ecb803a4caed970fec69ccd58f37e05c3a94cd04505a8751d4b40089689324dcf3d8c0bcec703c821a2d6be8d6d679220a46409a25a55ff022c9049f9d9ed281d0fc147af417395d39b853885395e9b02a8c8b753f872539f82a2ab16393853e8e632b8c9bf6924df8c17f65e80ad531f1551ff970bf1116792280afb08a88b3f883ff4bb419eb6ecd3815005b946e43bfcbc414dd74419b595e976f9cb6ebf296884bc3947aaee3d2bfba3ca90a024d7b756e8cf0c3f5322e461c009e7b17f041bfc09ee4737243255b9811f54fa064dd498ec812cb708758ff5c186301a62bcc4175959e8faa42608b6345cdf4573e3d2bdc36256d8f0ee17c30a0150408337d7bc5e909f70a3f1dd9ea4c40f72c04ece8652528374b008ee7c0f6c40ce1e2c19e6e1d83968f5dcc6915e5027b7a045302b15a72aedc136ac2869c453dec4f4b753d23c54d73a48767efaafdd0cdcedd8fde44a61889d792bb24c971301f65e8ce0da6c59e65cd625d8f2a7e98eafe3634b8bc7047744742d9d77413a016ca690dcc3190e00a38d97a3822717e8cf84eba543dd5c44697cfa95a9b8ecb03990a18d94bbabd7083de6dda00fefc0b21823877580a746e30d12f18f90d90a4dbc42db9629bcc96983a329f2c52aa2637aa2de2c4cc38c82f256718eec6b05d67987fbc5eda0ddb8036b379a7529b2728610a030ae3e1fe3c493ee35266e0551a228c11ca9c9e50bdeeca40ae4c78ce2040c214478e07d26c3936a4ddc8b061ba0b09065254320e4873a4c830ad81c5624455d843936b722d2848aa8e08858c0c524f642830e552160569ae040f429a354a5687a8495352ef2bf0f1cc66540f6cf19dd06fcedab0b19c2fc36799baf255eb71a9d1a96321e93e8327d268b7c9f649f71ea034022560c51ad9d3a419d372c2e5044c18715b885079c25c7f3bb3b986d16e95dda0ec89356982c44d1c986c4de7a452481cff88d2e716a98333f798049993b87d4e4f64fecb781f156cf7743d8d1e0e1da71be92292dca612d467555610dac4d4f587a801e3825b46d96669fb11a74976b35fd0cff6001866c742eb7198dcc37d6cca78a651eb177724024716312b9e6914c7ec9008ae6dbe7131bdfc8913f1ee2c682dca9afe5c597eb368f819a96a8c7c28a68e304ca6bc332b64337168afde36db052bb1b6b2f3f1c0b6a12dd8d9e16202bf5502e3a1b8845c941d5ba8e7d546007a7226ee7caed4f3634ab5f15a040f6cd73d722f5997238104d861e8c8af163a8fbf73915f21fd63cb86965444f2c25b7ce0aaf3a5e23bb9a50ded81cf5e04159930cf526c7d49c2891036b5c384479134224337d48a8b503168ad3f5b0ed472daec31aa4736ecdc1e7a1ccee19a0e59e5202726ee42821d10302e69f92e9bb7ba16b1845ebcfefc8921200dea7c1e5ffd2d887bb17cd3ae687c11ffd163974fa873a65dd485339b09fd409b9f39a78fd5328edba28ddc7290fd5b1dbeb80555afe9411b90db458213b3211afb2c843e81212353a1d442acf041602252cfe60b910fcdc72409f9262b09a4343e4e94287042c92c5d48f2b9df3b038d075165b336f016b6c46111c7e09ae9755ce138a9513067f34f6babed5b88ca7c3cab11bd93f1512c7ee94c96e5519b428a12ee1de966de7a488701863c9953296444ee8e143276c8ef791e720a1b860283f5a0eafa00bd92dcfd6e0de5f06ff1bc07753cc57895888db4df4427c86b06f0e9d0479e4f6cd1f9a77038053c6d1fabd5b8586c1913d2e74a1090417a015d53a64fea3ff4af57e5c10144e5ee6c0224e38750827ddd0e2cd503d2057099374b2015e43f1bf7d19c1f7b1c64ecceaca3579ca3fd637d08bb18687d0a2293081a02e26d88a8c44f90478638cec0b7728530087d8801e1b61cc6bf76645bd05cf0ca949419230dd883dc5080fe326bf817a8e2c1407b8c1e0234676842a093a7e2a0ce4e0f048d3c1d003a394a00e898a18740fb7a3a18aace1a860e408d3d35064b6766468d803a1da5639cd1d853815083b3e4fc11044ebe964b08398a8b1ce0bb709200c74d978c3cfd92f36b1c10be35e52aaa742d77e2c7789151c0c42702e916563bbd785623bd635283152b7fbb223ac5b570a56cc7ea2ba2a3474e68ab2906cdc8cb3f4a7ac4e95f667d5089078eb418517457f805b8d1a48cc559f29e09564eb1ca96719aa9a2529947d80d0ac386b609a5e0f74530ea60a73742bcc8925721168cefd24a7e1097d205eb40998e12a44921d51664e797cc6696f60dc5b775b9f1cab19b50fff6a093550eb84cc854aba2c5a110062ead19608734e1269eb4066fc597f20bf6e39bbc12c4cc24c970adb1751a8fd8ae148c3e825187fa1c41e262327261f197de43186e6efb802eab0f5f19cf28fea62454d0d1419e9628f350b19236c4938627c6658b87e26bb5f02948e5f95cc728935f4d29ddbed4cd062a6e639edee79fa9bf21d89aa558cb74cc250b31f2eda548bd6493be22a1c3530e9639af4e86f2c54375691388306776dd7351549665a86e4ccc4b13072c5668a147a4f497e188773345235c4f02a5c48e88e1f4d0514abe95425166f52b09091f413f7e3533a37c7093ff528634c674818158efd750b4b008aa6424c45919da754a16f767788a54399e128bff0341ed072a7ffe34bfbcdbfb4a7ee1ed594c27ddfabdb416466061d3fac02eac8cbe7f944bc2e7787223bec815d85c50bb313ec1fd83c5d1785bf2b7bdb973922826896f0db7c6c898045f2aaa73ef1a1c8d5d3b6b831d71df4aaf0c0f05bc0e31d5fa77dc1da9fed71c0187e62a9875555d35c50ef0f6809012acdbedbafe26fdaea8c46e891ad8e8c79b84a6a55060e14b1254a7c25a0caed15fac29a03ae246891fcf4775a6e194c7dd4698373cd182983f265f143d0a48adfd63923fdf8aa7b6be47069843c5bccf1b4c16fc3f73e3dd95bf442a045a3eceb8230358d4858e1ee7f89922714384b01c068b48e36423d0c880744a592a74b11642d558016dd4abd1ab8c4d694c1aee094721a2f70c0f44d5bba1b1ab07f1d3c8c270f2f9be8c04958267a562ef58e35fb0f76a13352a47293e955a8721d811ef0876eeedbe9d9d2dbe5c2ac8091c88e258aff75acbf4e680d2bd60bedf52a1e368fe8440ab44e07fb5becf8336e49012a9d360c42a3bda109ca025a55b563ccac5976aad4bf73bd863e84de65f74cd6b4c47a4f2f6ae758a743a9a8fa5feffce519d1e0a33ac375e1dab827131c6c656c1faab9daba8a1d6a65cb8b829ab5e5fcdf3f7038cec4a552ea9124b556ee9124b5560ef92f8d0da9edb3ca491b08ed741ef6167ddec8ad97793e613fd25d016569a39148b8557e0adf67460b1e5370fdbef79718306ebbd01232548e5d7ce620ede0abec8427dfdff8a444ca214bdc85c0a1d7fb9e4349cbe3479a0924fbde3b556eaf7aa788c2c1c34bab32b1962dc4c7ab7d915f30fb3ba61ae04ba8cf9883734315c7b441d24b4fb22038073c650139e004c105a1cab2dfad8d53da1d1359749135c4130dfa2ac4c9f296083295edc3ea6c556aa496fd363416559f7d5c6f7a59b3db76d53bf942aa29d226c8ebfae55b2a395a9641a27432cd845223198f079a1dc58ea595c2dba03b9d2db79e0fc593dae513064e3b02a5d3a40d78e090e595a32b6a9cd8d3e222844fa819697fd9b3e6d7ce13297cac3619cce9972f34003e7e877b58375725066e50b7690b2f0f2d7c14e4826630588db20335832d9e011b7a83ea38053c75f5f97b4bb68d7c82847d9e4f0ec439594702b203bf7dbe0f978404623778e4c249ee0e94e7cba60ea6cdedbc37106c7729fd56293510538e0bf9a4d36a3098f0a030511a7154e88490fa462bcf9b4c5d21c236ce19b5ae17c07c47870bebcc6807dc9ffd0b4abcb7b90b09c9d6b7bcc5725db7abd5f04677a24ecdd10003c0908402faf1c3b16cbd0595acb797f8d0420f2d01b19203302f93773c5ca9e3484a97b03e32d2639acf535b2b6a2205a74204bd29a1cb2581f8c09253a81fd8267e760784894035c4ee98f5b28adfc490122c5c0c17e9a0a6d5f9e2e478caf28299349a52ca9160b0f1d50c0cc9fdcb43c3c4120ea9f01b7c83e7da20fe7cd643e07baa2a99a14c842dc09a109a68754d463baadfdecfd65e975c36e23e3ea536ec83f239c6e24f9beaf2a73c30cf26c03fa0e9f7af3873bb127f57d8abba66b6e9dc6a7787f20ac9f1ed0f93b54902cc50034b95f644ce9a090de0fb1649400b05b818c31e82c20a6f34fa38eb160ec688ef73ca3018ebd10e0afacc5288c4ae0d461ef3a46a5aa7023dd7b276c283aea36d6003ac564a3ede8985d7779136ce442074254d11818ea5cab33e0cc617f0df5749b045d51112251df57446f4583510a10c5b1445459bc02ce9f02a132a71928a9c34691def23b4cad3ee5a32627950164d481d73bd7e45f07885ba2503e8967b621efcfdc1cdf7eee189ffcbe31c20fbbc1d509b381827089584cf90bec16422819baba88c837d2795114a871a74fe28ab15bf76d5925b90a8e6e63ed2a765d07209f7630669bc0b7a7fa40454737f2b360ab3477ee298533a51dde8f67273609fe27d3cba56458f0b437e8fb7860902ce10a5175c1da2711bb79ec91d96de52cf908a0b941c0e6479274b83b119310f7fa95cda8e069cd8ea8c10adc65202f90028a8eebc6ef779f728b4707d9922d89a6104940b1a1cf609a1802b936b5b990c171a49b1dca8a458039bb1303eaf6c7b44befc3d9d5091afbae3e9749f1d31edbcd81e3a34d5421510096ea76e828085f375be9776767e414b23f4f10d25afdfa1a01281c48aac0674a656dbf32561272685ea15655e82008de530b6a35511e5e262b9b8ae8474eba031c1645d841ca528ff7ee2ea0caf3a88022dd61781a338c0a692a090f5314292448b1a48f5bc37647de788e19d63586d36472d45bf1ef61573468d3945034fd41851cb11c12801e058d1a6d867c93eb4758c07f4a01e2d86df420dd664723428f45312612181abe28e8ab1d8dbe24535c2a0d299a35dc9418c4d1dac308e7a9279fb22d909739a208a8e504e42bdda1f19a8ef25263f0e914ec200c3b994450b75ec5c2a2f46ac0b93f3bd9f81daf3f721eb0de5d59e0e5f8b8d251058c8b2143731cf9613813bda810d0dde8eceaef0fc044921f7326c0333a4f27255a35a31d45a2fdd3879ff0b01009368a2395d423b7547f3edb32cc80a844c3cb6a559ec0b6575bbc7d02170d101ab1937100a4aa1f21b9764486caa19342ac7f6e5f6713784617a0f888f3c542a0e13c12d372b18a8955e875dae1d4ea22349c1fe90199ddfe059303cd6b7eb92e63d063b4bcca8543b84b1ce6c50c32850756a70d5996d671d9db821b30c941362dc846ec2f20a2e51c518bdbd8ec862d783a72d995f446439819c66be249b0bf8a236166fa01dc4838ef2f1a969ce6b7ed02b1c30d8e8bfeb1e4c7a7afedb0400488106796be4f0f6b210c16565fedc395990cd7ace118daa17860f670c5fbf273594207e1c717f7929155ebe166da74a765806632477d3b0b31bb3999af7638b2788ca8869c1de730402810cdda05bfc82c3ce2edd009d206ec86036aa58a855930181aa503d6191ac0b6f08d1459e927555182bb08a106da28d228ccb3855ac89f287574da6f6e7724d065e9d85870001c78c045de38bc742a43945462fd41296b142caf9ff7c2315193661b21846cb2f7965b6e29659249a6b308cf0724083ee2d6615a53bfcc7ee3f558f25a83969491b5b97152dad4a9c7771b5ff67b17a5cc22dd8b7ad5d263f428f426628c2d85105fc01f29fc063288a450a1890e3cb184c62234c60feace0c8c18a20929b0320588de828a1062482a4260714b97a9081154868c8c4cdf44ee0bb93be3c309f870fd674c005e5f22a1032cefe8c7ec67f24dd97fcd1eb3f5b338434357aeb45a424216d370c0aa66430b9f3dcab5a8d8bbf0a2ecd2722c4ee40179b6e7687a8ea497b716f2c47e1b3fe3397a0f937a8e34568f7a6ba79432890fec8294736eb9df0b9f4917bc2252c7fc4c3ea5c9418747e37d9dd1b099535a1df3d9b57897fb5df2ba24f52e2e17e8f65f5674af9ff2c299e223d4822fbdcf268b8ecd2b22df4bd29f2c1a02ba22a5e523d47f55f9b4eaa0d6abddf7823721171bcff13d19167ec5aee5a3f90bfb165af80c9bc9816385ee46ada1f15ec02ccd579cb871cf26fb24fb25ebd5782f2f789fdf8b664a1f29a594d3ab5a60cdf53a3af82eb4d0428def19de776930de873a7dcafb9e86f7ad50de67d3353cc825ce783636aa1cdeb762c1fb5627ef65bcef472b781f0ad579df36fab359f24c1e9d1995f3691790755d1faa7eab5b6dac6a757aad33b2c3c88e866de1057f8b1d3b76ecd89fcdcd0c20b39fde07338fc6fcebb19ac98dc3b1b159ad1ec5a57ad95f46765cf99f911db73ef79fcdc5b69f9a0df28b548fbed472c8ae7c9cfad7c57128d4f7f7c3a9d973de26b3a77dd3859683659dbc33bb136617a574066ec6bfd0783b03578a5530227349df5a0ee9b1ae6215c36aad15c34a9fa5be44b2f66badb64bd2ee90e566df47c7a01ee6e57df48b06e4ba36c3e1a1fde84dcfcde3f41b57bf46871367fa55dda91b755ae734266f46d7d52775dcabad7ea93eaa8ba9ffd271af603a9b5bbd2ffbabb9573632a31104fbf836fcf5f197c099a42ff4bc0b5873fdd6f98816a562ef02b2f85e5f742dcce80994401d14f7b01dfdb8fbb593ab9237c53d66609afe7e1b338d0649dc767e5df5b56b9e5ef1f84ef7835c6cd757d5378dbdede0d56620433527b26f9e29466c6e7d0178ebd0297198a69f865e6138a80d9e88d05aeddb6b9a80fdaf6f6ba9ddbe669d1154d69db8eaf5e0d73226fd6e9d915e9d6cfd936643adde3c01f7ed40749b74e1d4acc381b3ff65f734e7f6a37df6ae7de6410d07ecda4cb3817b8c9f6bb53915ebd87a6e774e6fed3584678906b221f633ec7d442c495f5d11caa62c73ec9ddc1713353df63e1a3281acec2bfd520e26efeb4bbfe47d6d6bd6591ba2dffad9dbeee3ee120dd4c72cf66dc07e108a9dcfb7da25b5fbfc4afb59ecea15b16f7ad772986f5fced898f85abdab665ef5becbabff4d4f56d357ef4b123d69fada7db0e74af9258926ac336be95b0c078a79b6ab1e0dfaf231fbd5fb82d8af39d8af3fa46fb0cfea671e563bbef5e53fd87331936643f6d52b52dff4272d870c5e8bbd78983d613fc22c662d36a7d00edeebbaae8b9abc2abfd46d4feab8ea0dd1b4cfbe568a3d567fc6c60457c47ef64c20eb83977e557ee615b19f24c2fad843cd00597dfb98fdead1b85e3e7dc8e4632cdeb60497245eecbf24f1662f7fca405febbc65a0de97246e9dfc17cd06ec8b641e7d182d87ec62587dc804b2b8da6aadfd4e5e7b2ffa368b0c7bfbe0cd3c1a0af0d71e01fe9ab7e4d6eebb6cf7c1fad2d62517ebf8ca854c608d7c1f7108939e06f2a1bd6d0d2d4b2f4f09820eaa34b901eab21541462021e5dacb394001169e185f5480c271d90a32ac184388323c40850647688113274290a5870857f81c013505cb1177bb3c850865e8584186969b5db6628c27513821a88928f40c1df156bb8ecb424500e2729785b6c0c116e96170f11d6915b6fca842179d1d9d263a4e74a0c818638c31cea672073666cf2d423dc3ad2b3fb60c4979c94965184ea464d10798f880131f88e203553e60454a920fe1ee2a90c17539270d2309528351a567d8caa505870595e57f80a165659950e1ba8618021543d0786448495112252188e287d614260bc01863680642ec44a125075780906286f18198165234a4a5c390293a4054f4849cf3baa49c0dc648d21d5a4486782042734005a0ebdfbd7980891339e7751921842c5e0011e5b24cf03922bff07aa488882042c084a8765fd709823005931d50ef48128f8c23b3a790f2d19118630ab448019614644981168f31c618bbdb638cd1e514030927ba09291ad2d261888f169f2d3e5d52b033278f3b53c18408badd5d0c2c62b41d5a448678207204d11145477041810eca694f2ac60c5e6476644849511225484c414208891675260d04cf6d77efeeee6eef29a71852345bf4444acff013a0eb49108772c26540010918287182284c100610a83042cfee6edb76c79900e2bab75379026d3686822a3dc3562e02a0400b6e4e2bc4d88991b41e29417777bbbbfb16ee125234a4a5c390248892284a824b149d283c44406184294718c18b2cae24f1c3b5f062767777b777124ab405452de0b284ce123c4bf4cc1e98a611588cc862841623b6ccd973ce397b7677b7bbbbbbb7e380933bb4880cf140044a14284c4071024a1450aafcd0b3bbbbddddddbd5d483f714d17f2a345cf30962c04f8d1426d07465ed4de93b6409371871691211e88b04087053c2ce861c1139e07c440e80454f8e04a932b7ef40faeb082e7b6bbedeeeeee9ef249a98f0c29294aa244892b4a0c2941a444114a092ebf5a8268ce873ab39d386db88228565065055640700113b020094b8031c64f0eda073bd41e994180e00a156038a1090abed8a2b3b8020745567001a2b67a86af34019618423961a204370c818094f935c495279b15e2092bc0fc228110095adc139ac06a8f8f0d2ebf4620a411408821206c3a4a90041882870845802652744a44435cddf22b082013d8d850c808981881131c174a581108350144d0e24a3ae808861539778831ce29b25ce18931c618a3b7b77b8c31c618dd638c31c6183d6e711d1952529444091843128c2e4c740722433c1099420a51746473e09ad73ca2a42889926b0a243c9112440e2a744b29a46508b6794921435a3a0c9942cb94eb2f650d9a4210210c2a30292078d55d8cdedd2d3bd216a6e9a71d690ab023e3c29aad031eb8fd366a00c1375b12bcea875e08a28860053ea953ead4b72dc6f810724d9c574248f3623aa5501dccbb96238554e246242e259de8c120bd51878476a428704dffd4805c577a9421bd6eecf8ca496132e61edc1afa68b83e6944fdf7373086ca8002c104751336a04e5ca653b02e4d3a0a0763c075dde866ddcb94924e0fcf65e5cb945bd22171893c30f8e30ad740dca4c0c0617bb76d3e309bcfd51d358fd1b339a5bbcc3a0ae79dbda96e27f5aa7f11ca3e52d1cb131f29b73fa8757d5eacfcd8a7f637fbd1be55755c4ca7d202aa5a28e054ad5493e6b145e9192b545b949ee96f9f17c448339915992f51ddf6c4f6c333fda90d073000327f8382372991477d8c86ccaaee472aaaa42ef349452d6fe9b96f7e6a39dc372a918ab68d1b6df3f3e1c6b734ebb0eb7d33a3709977354ada945474a578ec060403b11e2ad3cc1f9366fe5492cd2b5e58e61dadb56a41ae79310cebe455f180ea4ea72b8d64d65a2df3ceafa56f2b80318dfc2cdb32efe2c550a912cf9541d380f825150961daa804854bc9c9ed872954f61254b7ea6d3e9bcfa541d406d3fb5ea0b81d743f8e4e211175242e7126cafdb62a58b74989333df36d516c41b7534d7aa6b5e8a578b0e068e855bf86d3ab7e09e21e92541479d817eba578249388b8c74cf16053ee483b40fd8179a4a22be248cba18da1b852563bf8c3494571a63f45d28078975444ca6ac73fbce36b23cfc82f6941ae4bdf9a1a726c8e34df96b21fec23f6b2fbe1e17e60bf753f3ca81fd88b509ce9c8bd08451ef63b7a2f423edf8bd0025a006f82b8fdd64b898067fa47f74bf17c232cc513495d6e7f9776523c74a39b53ee6146a3972513c7d10b2a63be81557af5369f19a4a2bee1cbb7a828085c37013b72dce68c8cb987cfd9336864a838ade70299e2893c306ff38933fd9de2914f8bc84fc530290a3cd3df6248b9fddc603c0d46fdce0fd70fff1fb81faa8bd99bdd6ca6051774fc2ac6ff9e48cf34a7a771fa19a7875acec97b3f72499004e1ec9631ba6b41b8ebae01815260176faae3ba1f9eeb07ea551d0ff703b5ed10d3c1482d087747dbc893b22f8d1925ae237d21852d1d4c97ea503f49236ff366072985309dfb113aa324155d579ddf2a5b23f3cbff4d7aadb293ead6ff64206ddf56a328331d1e8661f398e44df926c5c3ab2b523cb737bfd97c78d5cfdc7ff5b2ad8ffdb7d201801ea4ff980a15335ca631605d04c0e3f21458c3ac1721588305d3f47f2e5cbe5a973dd60508ac0b290c5ef593fa4f70f591cab8fd42a66021d4dffd5fb77c5291bc13963ca7f4a422e9f23f52c96dc48ee431c3f0fdade1363420500a290aa42f98a67feb4852609ade42e2724b3ab7df96787a6eff0d0d0894323b786db7633f7b9b795156a689ff6feb8d16b81886f8afe5ccd85f3bd2969ee97f2dc8f51a90eb928a98a67ffe70f03f52d1dcc1deeafcb02b30ec6dfec89258a6e93405f40fcc56e07618c320bfd372e6f38cfc4e0b72796cd997a7d272e8db8b56cc6697765dd7768d3852c9749d5eae0be6ba62aeebbaa6f42b5e57c3eb621eb6c9de37dc2346354497541f7c0995900950b0b6fb1b36eec7dccc5d434563460a1503f372329548dd1dbd7bb46999c5ea45a7f4d8dccccdccccdccced757fc3460d158d192994b7f90097c43669b1ed3142afbbbb3f7a97bbdeddb1bb3beb8eddb1bbb99b59fe60ed54c29995f8bcddbd7b157bac6d8b43532038cc6677e9d7cea9d9c02c6f9491d20b5e5b33eeb86a36407983c844ed3e3dd831462ece7ca8d15462d39c333984c329715c07c71ee7a91833f3551901f507c7199f17bd2e8e99cebf286a4ec95847af4cd31e25325f340ec599beae3417a1c0c1f7a740973ff6f460a6698862e63625f88dc71b7ae597fbf42bce1863e4abfb988acbd3677b8c31d6f0e3b8dca75f3ddbb768e8cd924690bef0b692cb4c4304e9f142ae9069f8b3d0e171d52bf69ed365b7b05a310d7737bd6301dadb63cf1ca641a1aecb7d3af4588028441c976d6bcab942ff0decba9886bbeb0d6e7483b7c77638b94675febe325a82f0ba1cd3f09c537aecd8dc08d68b622a8e3d7d87538f1be1e8e895e446ed3e2337ea2c36f48c394a63d5ccaccd88337011b2b3d6bd41ae3898e66fd42847ce4c93f2d8d1194218bb3dbbe089cb62669417edc9ff75f4a9a35dce538cceb5e3c499186de28ccf197b26d136104208f982e16c4e8fcdcc6e6a668e5c936063e995f7f795d6e2f2b7955e35133156feaba3a072a296cb3838ab1bfb6d4f2660132d3a2e979aeb2665acb93373cfb7ccf1eabe99c3dd6cb20dbb0beee1096baed3997bfa4198c62ff7e9179d33468f73baf4f6d13c9847f4b7710af1bfe17fcd39f99bb9dca75f3de7847d310ff9908b6f8373e7e4befc6f3caf3a76bc7a05638c31ae66fb9cf232aa21c7cd99a6e7c718a3fc661c7521778cb05eeeee1b1567f8a70a38b85d7efe8c69207740e08d5ecb7ed5dc2ea6e18f30da9828a112acc0c1691c2dc812a8477d34ede091ba64c699ba6d09cef4db5b1c6e6ef357bdea24f152ead9503849a92b39eee1aa1bb7377d6c93caa3cc3d350f55cfc453dfa87ad57d557d73ea016f2c79df925bfaadfb64ee36e3a987784d2a3bbd6ffb18d35b6bd24cdda96a369048f4b25a4ee9a106647b98f7114b1dea37990b13f3f119e6bfabc2c0a860bc9f97a72f274fa6571cf7788243e2b77ffbd9994c26ef9b9f3ded3eae83b7d4bd46ea155d6dddb7e46e6f3f568aa0e2b23bb4880cf1e05345114a60428686b47498a2881e5a77681119e28188294490b1828b16710322967039123520a20a326844c113444881d204114d6cbae81e647737bc492490f81318401279a34703871bbdd8d16b2996652cece872d22bcbf15febe0f8af772e3fa402b3a0930f8ac13732cf0fc160167c026bfaf9e117ec05b3201458d30f250a2cfc07b960411f58f384cbd750d09417e2560bea5c81433e512e3f3c82593e90b8b9f1fcb00866d5006bfaf9e1100c450047000464a2a3e2df00b36c6caa70f92fc03d306bc70e242c011c2e6820a2e109a9ff7808c5df0066fd1fe1f233806f629e5f01cc928135fd08e01c98b55a65c13ad0a1634a0098c57d03b8fc33f0cde9f96ff81403df989ebf86592858d38f7241a57a99eed7bec437d9675f2371f9fb0866c128b0a6bf7da25c7e5204b3a01423f8e67a11300b32016b86e09bfaf6bf06e2f2c3289005b9ccfc2a8a14c8825d565220ab75a0c704ffc0e4329c5959aceb7a51080423a534464a237d6bbd22f1ad13c8825c3027100a64b50e14c8ea9d1fa00f970be35281600187cc0a3a3fec007145ecaa58bddebe151279c02678a61f0a2a2d2e0d21900fc8825dfad6d03b34d6cbebfe868d483710bf29fd96dc6a43030db5c6ece0133ca352ccd6cb5af816f3aea75d7d1fd147bf0e1d34e5a81812b511bb2a362b863df58b7545aea77cb9134aa58229bd9c4cf17a08d4f27a9d10e8bfeb3f08246fb51790abe415893f9fd47d400c59b08bfdd6c17aa77998300dec022dd4c9c1ed2a5c9700864ff03715b73feb1d6883cb847b401a340f644127a01521d5fbe015b7af1d08d43731567b5d6f63c61af610c87a9fbc17c6343ee747d78077cfe51596ac608e23f0dbac578d8af1ca7098664af111a77c77d92e9b9081e5bee9bcbf61a3c6e557d1989142c5c0bc9c4c2592c75de619e7f74dcb2c562f3aa5c7e6ef3ccf732e2c730fbe248a61ea7fa451e932765d198cd185befd2ec32c5ed9c08113bd2f753faec6ede7383a631096f635e1bcd09317d3f87bbb96131b5ea3788465994f3574fb2df48cb9c78c72f3265c9343d592a1536a976aa2e56c6fb92f7daaa76f485e8fae7cca3cb29737ae940fb947e418e6817ad26f3fea2ca94bf5748a87098e6403e9a73ecac6631df3cc8dfab3d68a65d7b3e9bf784fcf7cfaac2bedf48cf658c73df332533cbd4a35819a531ec15be26ba3fb6edc6ff319dd6ff3f9b6a0afd4c4d47da520be0d8a1cee7df496ea216d9bf492c82b3d1a38702f5f7a3d48ce3bf5aa3f5e59c3a069d0525caed2426da55b7da5b15cce542e9da2062a42378a1b6a508096c1e5195c7e11a241aa9637698dde76d6d7af1975ac56eeb106c85261b901b2285001208b06c19afe202b299edaed54cf05236df41656ea32ffaa16ac51f9408505b2bc09ac1961b9fd1488066155e055fc7e950f542dc8226db13a418cbcf8d90e4429a5dba8e110efe9547a7e1fcda3f78a8c9e7b38fa92c7161bf9e81abdd4828c3c15273554ffdc6ff3a90259581758138495c15571fbb729552dac0cac8bca9b4cbad16d6e7089861ce7956dde61e0dada61d7bb1e2eedfc8e9823a45d37ed60a41ddfe93286c78e0be8e83f2e05846f3a6c70788a90855cabbca47f97b623b9745ef760b020d7fd3070a95764fe9c93d239a9f7cdfbcd592a916c671b126c8b33463a2a5d1a81eba328a76397f6709dc254ccbd22f4a5f41fd58fb6ee27f5514e6bb3ae7fa06228fc1103735d15b8d8062ef5acaaa6527352eaa8dfba9fec890d0675d4fd6c3fd9cbec6756b36ce3b64bcb196ddc68f3bf26ad7c53e2b68f0fbbed6e1d926b4b5dec89ddadebe19678e533babb97eed645807bf9bcb9f41ee66ccc4e1cd9492573195a283b786de4ee0dde8e71ab16cb7c8e46db68e3462e7b930f3bf91cb7558b653e479352d8cebed1496d268437c94630333a1b978b2cac0bd708c13d5eb0f02690f52294e3857198648a09bdfc768b026bb6ae2f9ddb0aba67c9bbbd238511259224dc0de2a698a478680edce79525e691e2b129f1144873b039777ad1c18b9056371fcef33e1436afbc5b94be399560be9f3b75285e71fdcd11b9db8957dcc3708fe2fc64a4a947392bb6f5d6f9b66ddb16e9d6c5bb4969eade77931279641ccf6ca88c14e5a4f0ce996d1ddf0d09a9c3b039a56b5b86ca5cd892701ae544a9ac77f5e250dd8e0bb8cf3a9eff81f276b2ffe17f649e0bdcbfe45c57f2b8579c96c3719b8f6c9ae0361ae584c1e44e2571f9e1fab1f3c3ffd8f981fb410a8361e8274d810120433fd50e70fda830d0c934f2a796437f3ad582f8bdb4209dd7c630cc79a6f459572a19b9fe933d97bd2d956894b36241dc7256b791531d363b38d4d380fdb78a61211886efa80ec533a452c775df90cb7d4c77f10ce9531d0945e4720f4b242597735e91464fe256241aa5cd2ac6f195a5ee9b1f066efc1ec570744628739248249d11f6442451c619bbab6173920461cf1644cae4f6349dfe9bf4c2c1428e958e1d4cc58b9518d47f5c25c5c326badae6a50f1d032bc93edce815a10fa1ec08bb7f60605e7648e40fcac2c4e87466d5529445594a3718e946e3f5cda306847ee94bd2d4fda01ecbaa3d91505f42a12ccaba4f0d8873d4e94b2d67e41ca523a7dbcb392dcd66072d70af87935793eb7ea4162403f7f28ac81fcd97f9928e9e024bae9c9069a6447d4be90fdecd37a7733442e257fea47ed4fda85ea67e4bbda79eaa54311b0c50d12b225ffbcd070513938a8141510ae18af3f8442a6516ab41fc6a52e84f5a32f5982fefec936f3e75fbe1eafd71ef676eb737eff49231f788ffc949af138ecb1f0b97ffcbb1ba5c05ef807bc03f60ddf88fb5e020f00b16b7ff8b2f425cd34f83fd4f46c70e1a60fee32a3c4d84a61289abe242ce03b7e255a2e742989c58cb5a2770e142b88c70e1d7255cf89a960b3ff35612b6088216598ad09a167b6fd91616eb470d48ff75916e7ceeca33f15bb28ccc9b0f70098c0f7009c5d980aeabf6f4aa3b7275dabaee30c6de02877ad5363cef0887e357584135678caa8f9d91ecc2671658d086a8c48f31e0be083bbe7164d99db8ae85b673a05e4da25e4d2dbd9a818b5a8e96bdb544de073fbe119b3bb3cc86563ea1543628c746d12b28a29613b5ce9d20bde97d6a5d20cd7f3a5ef86f55f35f77e7ebd8b0f96fc69d7327e64ed39d4c4a773e43d6c6036be605809fefde173d07ea95070171d609cf83ba40d6d64407b2b61e58b3ed40d6e604d640d6f604d630e11e9b0998a63f86dfb42e2dbca6733bdb995a7aa6dfd2e82691ea513f8bfa662b82c24be0f11f37e1c61e1c37d6f88fe6461902d0c51a377637ffa97c66acf01fcc8d6292e1bf971b4737be946cc77fdb8d1b13f1ffa319d1dd9e46513761c06d5ade476f50200bfa300f289005811aa8b7282d4394dbbf49e91dded7776302b2e010ace967a286f75da59fe17ddc0def4395bef3be2f3de77dabd25befb3b95fed29fdac3d5403f2540ba27dd6f9d52e2d2703822cef81355320cb7d600d64cd2bb0a6214b1b8235fd3d405a12b22e5e0b332dfaf4d237cbb2d9790f6469453e3dafcc2bd08b24684590957d77c134fd9a56a445e6bfbe3664dec6679dcd8257577660ab801607bc9237f5dc373ebca6e5e4e052be84d3ec6b59438ebe65efa36dd641a6895f31c8bdd925364ed49d5afa26024c44e3fb67110d1a104a95cacb2e00749057f6a757243ef75b938ea189c5814d67ab80abfe9a17683613c0f46f4efab72730efc2e95be8b9ded7f7e5579b93db316639dadba098c5d73220f139cee4239abe148c9de2b60dfa6adccf067d5eea90c0eb4ef48de645c0e6ceefa03979b20dc9e6faccb08ec6683473cc1efa3acb9daae7c1c27f2d05e8ce76e2cef95f47d1fd9cd3ab1e1cea20d10b38edb3788ffb8c3607ea2b35be7a9308a86d90d5342dc70853b9d96b5a4ef6acd9a08c8a4ccbc9f156cb32a31603a7c85a329dbe55615e48dc68d3b28f9fe29b4ac5c64e23d2865cc06959b4a238d3b527cef4c7c06cd6094b4002145250a1e28aacb33bb0591461b67b8040ee2dd3324dcba931274bdf645e0498caad7d93e3fbb51c1e0e5773d458bd1ff951ceacf610dd7e167074b64a6757e8ac955ef57b9d6db5d5a2ed8dce62693b7425f5fda9afe15d51553143b341343abe336cd067b3dc7e8b65e91b2c7e13d52a51325b75d2ab589fd4279843973efde42f0e3363dce4252739e723dfdceb93ae3db5e7b613e88379319e75825dc2a9b348b050582978d54fea2c155ef5739da5c25e617760b380ad78719c7c6b832ce67967a3e899fe9196333d1b440507ffb341b7df02c142e1767442bfbf3ee949274fe616b7561bd0e51596907c804b3e062f5235bac62267570cb71ff2cdf59a8e6b1ae7f6ed15ee4bc19d502a1b35605e0d36540508c0edefae32001edc38438c270c5555b106204cd37f62c5b00385430e195eb8fd2ae80210eec1420d902583c30cb7bf6954fedfd765fdf707e24f296c1aa7c4a08d22a574a8a3a3a3332365d4c13dc83248e93ea7943f986190d2e79452baf4f9d42515cb321f4bd80e4f30acf85fe954f3bddc0ff5a1be97eb0f8b9c98c6ffabb96d7ae164c454a23141a044d2518a0089738124016ed4027764b4cd8c26b069ab0d8996e5d028905916b22416c3612b805519ac877aad502d705d4a28bdc094dfdf89017903d5377e6506dc86f7edaf71a15ec53de4f7e5b69482893776d0b07051300040e9408d7030eab2a80b855d744a1eb1e35ff1fd8a31425a3f142ac528295fd238ea68613b9591d78c9625b599445a30222523f606243a707e6c6450838f5ef5944bce08a18f96137ea92348a6d671cf7c71e7f64788ea422a5d9956ed557ba38f55cc73ac09221ef0028cdbef54883b708cdb5240c23dba0ba681acee72a7709bc8072da77e1351ac892afd34205176f3635f593c715c4bdf8aa24faf89b61129ce6c46e571837cb66e6f883c8e602cc42cd47f7942d0093cd31f0531a04ee4c025badcafa2db504bafba89aa953f74dac261c74b7a9d4315632a30cef437c7313a6d14e449af8ad94c632ae3420c33d8c09aee11c30a97dfbbee01af3a4b116e3fec20dcfe18b847f3c006b2da8ad08d1270b010e1f67f359781f0f50f6eb710897e0b4508e175691c69aeae54a254ec6adc408dffa505a193a464728d3f37fd39cd00f1cee75a725ace7c5bca4ca7785df4f4d244a921d2152172d2212286dde52931a90c422e704b0b45af858a9043bcf3ddafbbb750bf257125937c8f1ca7dc28c2b63a63c6a289289510e50f38fe8f0e5de8bcc4a36d6921815aa7f983557030e0964122c8e2600d7c864fa0cf0fbf80900bbef167c87365dca96fba79ae8f76c8825a2ec882451964c12d1c64412e25ee01c7c83cfb91f7f5ddbcaf5ba78ba016c88aad22c88a5a6c81ac7805d68cc13da2119806b2221658035fd392155d18b75cd8f19d819bd1bde77be75586e01417ea95950bbd0a141cf3cc7c2ed243b85bb4dc0a5ec197ce830b9f02c1b1dc21f7c185ae830b1f7e3402f7f02a98064296578135f0b5f01d5c28d987ebcff4f329173e338df4d8474b598fb02c93c4ebc3ce487669ed38e7385adfe5fba42729b1ebe157ac4aafee9e7bceeddfcff5cdfce90eb31fd7c325313a07780561069c1b3eb1830d91211e4c10cbb8317271a34f29e416428686b4748042460f684089400417236a3005238cd8a1456488872fb8702b08191ad2d221055e3c114215fcc60e2d22433c9c40cb93289e206b08191ad2d28188263cf94182ca882c4f8418c245e30912c068d5194610c2145a2a092c4e0079cc0e2d22433c2031841210e18208236468484b07228250021d69daa1456488871264518413c4e0a204a2d6a8246c5b696a0ad5cc000040033316000020100807c582d13ccd72140a960f14000e669058646a3a13479324c6411405518c31c418030020001963901933ce005d6b600113b6948a5d53b125765f3fbd8acfa910d7f928f7fa2d721190af926b4c43a1a0d85a5c8b25f3ab38c3551499be0550b99a357029281f80d2871b68ce785294e2e03379c8636bb4ad5144cf0c166d9b288b55e45504d9a25178fbd5d3bda75714cd1e291df9c1298a26c78052f74f096414b765e9d5ef0bb17a190aa3739624f5dc5a992f952c67ff52d01fc46511a0192c3b7843f1e0668c02bf50446b2816ecc55539ed877e444dca5d269623a7c698cfe807b59e890d062fa5f114e2905a48655aad88d897bfb9c1f76a2e0ba566e9ea1880d94d9b7f27783dcc207651a5c0c7ca0d136f127e6a0b3f2d2a128922b13737dd6b0451b204065c7dd5a768f2074ccb04149941f54feb1282d9e09bfec8923b566bc133924c84f2b34e2342e2003cbd762c4f8d60412a075d40b0b0b18044a072f10c19bef7598a0429ed0a0a64f197a04b76a93bef1b301a81353804a4e845a9471ba6d8a16316da889c8730c4689fe4fa15d250520b663059775ce06896bfbb52a067a4a7af526ed2b6d9afcfaa5f53643d1695b03d187dc70b223d2d51ef032a3922b514a7f490922a1a40a5c6d2c8d400846e69f3f1b55ce94a069586c59c417d466a4523b6ebaba9edd408b148807325d5c1921e8d5580e4bf4bb39a3bab00f1cd06f4c088a78fe301260657c8b6a822a6692006cbf6757a15d55f13fd78663d4e3bc8509167c210c5238d2439e765eeb8aa72d1b94834bd3ed6ea1be0fbc498e7dc43b27d2c00f5f8c85aad9087869fcafad08a4908a94d07e83ddc2b45ba2019e2359e15b983bd4f235852424901f88b8ec7518ad16810a0ed638d50ade2f0263e17e4b4d8780fce753cb63c856f5445b00e30c7b31b9925db3644191c6147f7e9e43735616828323f0a208c0cc51dbc80f33b45098bc51bca542973b3649b1f96f77cbf1923a4b905c502c0d9c403a363840d29a6dcbc964035a4ff08a05f398239188374dd123b68c5d54b714998eaa3e583f7a65ea14afc7b140ff886c053de9dd868142167f18fe68a72941269fd0446c31de68e1d903b2ace6d711310ba50b4c929c6f8947d649fc8bf9e42036375b93c5e39b3059da56ca52161ef1c88ea1cbb596954c84e317e52a56d12816961eec7e587c21ec2d684932e6f8b722793d10b54725e32acec528be112de63cb9a003a7ccc280ecddfa544d48b57aff3d4b58f14c1ec7d273b0927f6ce4c160288052f56f0e5419b29b2d0642bdc5d65f1eb49d65a5ac233d127e12d0b058892dd8a25d42c4e61297cec87e8dc1b3334f4c3a23b880aa2adbcd8053541bd93450585547af26d69016855c4a47f1902c6a044ba41789ee092a00952022cc17929a3aa148e99baa6e5b1f38789e872e53bb254ec19cf6bcc541fe20570abbaad4a9e5270415f633886722dca6a4ba0e582beb6ce3736816ceba25c48deeb9360816f14cc1ab77f4f627f7f7bb23903427da86084a5db9507a095dc859a82540e2f5c94400e58a4d09ffd1e31819179ebc86a0102447c00f61f08c2e16b0045a17ad49eb1dba02797596b43dd5a134ee3788becfceb03862d99ca4dfd7d025df18e5f9f7a738ba872fa34ad896acb015a30ba198a888ebafed7e3ced59e812a33e7a7a675bbfeb7676e040bd1729a1a2451c68f0e80d1fff4d9bfd163f13ccfc1fdbbaea6106213b23613b92960bf3fabc0a66ae4f8a1aa5061f702960b570c83366592b9e74228e8e970c2764270c335b5d54e54b1c2e9b1f2aa40aeca7bc4420a82a97546f860b1672aca6fa4504fc590ac4c486997307664d3dcb607cb0a1bd00694670183297f92631afb766e801219020bb1b74d5dea440404ea61203d1d532ac9f4d3aca72b9440a7910d2e14d134bd5eda95cac8e36ef4934d35f6792e94b4a514b38e3fd11de3a804947439fd1029def84d7caeeb99025ece5c7dc57f61ed299fe6b57a999e583a7670d441c5db9aa987eaaeba1675f475691f318b27e05f3e62e408b78118f0cf11852aa1df9096b2cf3a6384ff6028762d8375ec565f3b8840c3f432ff35fc45318a0d9521a92b6cb52dddc54e10a47b9ce222ede165e702b16425f0dc328ba48d1e5e76f4262538a7e2320015a946c80dc73a68d09d1c049379911f10f73f76b8b9eade49a538a3b2572133bb98b6aa1532c643f219e6860b60730787c9265422d3211184e0b0a52ee2c096d8e66b86b005e9dc28103d0545805fcf5d72458378fb424c5815b15695ccf807d1b2a0c825f8781b010f35ab93a7f58b1da353c6fa86e9328bfefbd4633d8222eb92e9e034e5f9a868825a767457e2a85731961301f937147159e0335f07260e2245d3245d13980d9924bd2fa323e63c60ae3d55d9bdbb380df9514915751ea6e1d455478eb9fcc8aa1b6390a13f5e13e94ce102655f7907207e9a201cb7c12ea8e6b309f3dc82ad0ee3a04291bf62393bc57b83017058e1dc39608295b8fa50fd38f00594d63f363b50f476c4456c2d1a65285bfa5829fadfcc8156f8a4baa17771f0b5dc673f362e8d33d04bf3679e6fe70ee58cc545f1ddb75dcaeddc899691b16667c52b7bb6612085c14088e41b4623e1337f4d8f56fa3e6c7aeadf9757ce665e2654783e772e5318798be9013a3b1b633833cbf04ad63d30cf9d8ba5b14894e66a6e5282dfbab79a6628b94b3c320e358162ab141609bdc3143a7853cb5c4b39c2e14fdd6fdf2065f0c18a1f5609ff550bb81e1c6125dd5ba89b5e703656bfe02523dddff52c8d7c3414a803820eb338de9565dc55181d2567182879081c0a028e8485fcbec69d37715f46f84d8e0cffb95d151ce43a4c3698dca509a684c33b6317128bb3fc0283b45785cde32051fe0865b983180af6f11d71b852bc97c73f346e106d839efcf57d50437face4121595e261f25ca9ead0fc69a0e7cdc69d1b969832da9f841102f773ba693b14ad4c2ca5c17bf6b3f8c14a83dfa69c9a71b869a3301ac451d8013c01278297510c70cbf93c16e7ebc2199a4dedc9e26fc586cebec5f24dc35c94007e42a2cbb0e4f7d79bf3be3f9c59f9d49a41ee8bc1755fb1e01092e61754e0c6297b8275b6d10f06aaeed0a4c09513fc905225ad1ec49266bdf94c9a607b4d1aeedf010937690a0081be251dd3541c09d815c912fc6f065758712d9a05c39108b7bb1a92865e07b5628538bc7cb631fa92e083bd88808d2bc3062a8a28fd77160564879d85b6744b4147c1089d24c073a567b2540424acb3e639cd6bdeb43febe4e087e2802a62c05c67a1678d18cea40dee191ed6a37e1492e51de8fefd93bf51d72b27419d47bcd432cebafaa966b82361e4671ee5466f24ab5d3e43303f050ce6cab936eae4c07cae37eed0c2e1d58b9644559b4d1482df03f32b490cb86476332cc13c1b1284a22d2e4b220dd42b2f56d0f04c3aa969779c8ebe2af60acad714cc33c05e230a721a77e96f6cee84746ab460be9d82a520c2e4c7244af398fc210dd70b7a64761060f27b64694494c801c991e97cfde265b9209aee69be1565db74b2488a0c30063517c1a622dd16e6e08765f3004378f6b5f186a930d3a7ea95478357e7be31e5b8840d50da637505be1c0853cad6d000a53a7657c897813045610dcda0b467750a5d1118a496d6a0094afaac3e15edb7a4a5370b8e6e2c91f199c60a9af842f023276a92b9b2c183403f87402690b07ad6f2c31c1b473fbf1b35ea99c9c74802a174700f3455b5bb807eba35e2f92b55e74b490139f69709799e807bb4b89d23f6f4cc3d35e21333f329660c5c1c8a1c8aefde349b65643445e9caab14598cd6ad8b8405167e627959c1faa9971adfa9d32e87140f610ec5d4580d053c57e7263149a0e8b41331c9678290e79bfe7cae4f29e56530d65bfef74e0d47028862907b345a3ce9b91931d822bad6e0fc65404f42373b89609d73d1fdfd93319a4497cdef98741b9731dc38a4b1c694329a29664f38f3a4a2af4f948d0ab9b1a2e1d17a9caff0538ff0fa6125b9f5f683ca0d4f019981253338871d98f6041a7c871a275c4cfea449cfc8989b6361aada97a9333aa3cb172e0c9690815794173ae431102d9d291ecad91df99153707b12da1ae4bcfca4fb40d20673d7a70bf04a89e2b9d72631292007870bc40415903e36af49c6dc0df23480a058cfa3e766bfc8f0b6a56bfd0f7a13b5b2ce8d6d5474f0e82744a3c8bee24988ed3a12b22c6626e34b21c9fa70d9055a6fd209ee8667c772edf9e7e7840183090d9e272049ae9f92bd51ba5d6d88190d9889c3aee63c9b39b551c4793e5d4982f54897822c44a100a377a1bbb8f7a47d13603988781a29a694da5a973435204776482ab0d1e8c37ce37e168af03b6d283f30ea67ed29bc9b40f883975b216ca5dcf4c89f5f781c66e54535838441054d1f1e0dad2a9df2c42a404178e14d6f1b322694e8e7833a78c676f9bfb6fc94a516b206c61001fd20e9ac02f97c44847b55a73211222909e141fed7a5f974eafea84826eb39ca1a6cdc1efaac0936b5b62158c6eb32c9ffd6d89fb48b9070f323578059fdbcc22c0a5c2de7fb4f418bcd12d54378fbfbc8e8ab01beddbe4d0200613908033e98848e9b0dc5c1f7c2097a4ec917e1dadc0358ff4b2190c246977db31338d41c6ce00dd9b38844194e6e0eeabe0f382e924752bf6391b2d3d185d1099a7c6eb527825c47a10a3ffd8bc58420712c3ced83ce0245c11b05e816554855911ffc8b66e9412176a040b1b15ee3392c10b85d7d2f268928dfa1665700f236168a38945e7912a67c8da459901ff1a66b7e625b9e2b8467febe43a1a09f4d213edc36128834b15a3d3ea556d24b53741f2d48bcdfd6aceda4d57ea49b137b3d0a24bd9d2ce1e3e88d011f3fbeca0b6f16876b876b51fc327e0f280805152c483c7f5c1875d1dc584cf979e1260d22bdd742ec85a26a7c241f9a984774f98e88b0b79002729e9ed58640f28280c2ac813c5f66add18e41e4c21477c0b44631ce2360662955ba6c0ec6c4e517c8f32783b0c5b60b164d422c290bae00a10859bd63a53a099313fbfe6bb143e72e20906b608fc9aa98c445a404114b4edaeb448d37df8e427adf90323334ae21082ca34b7f8fadf031fadf966a9a38bab25f1a1aafc8546370fbae7b2e08d10962ad1ddbd860817ed6045ee41b4b47e638a377c541cd56ff83dbf0cb35dfd9ab8b1c9b41ad4174d1bbbe5b186c1fa66cdccaadb5fd0908fb2b59016c9d9bd671f9674b62a521bdd4f026f431bc7b2053ac768bb56ed64e31036c50995ada9592760bb1bd9e978300260b96d962be706cc33321141c8dbc98ae82da2088b4f88cbac00b00272ac1f12259e042cf51c54afa61c182b76b2b26552a51378fa8359a28cb3043a9061d84e9b57c75507ccfa93a93b730c7015e42b2a77cbe7bde5d677a7fd283bce7ffb57e28849c12ab5b408c21e37e2b0c76f34e7bf27902367c9e156ca2e214723265cfafd67b7e9c6f9283871bfc62835933187f0a59f70249196fd2501fc2f0c030b3ae0dc9ee4da02e8d0ddbf9aaec6f26533343dae25cf8d599d2a39b7460bf232019f079fa8a6930022e6300585d07b15bfb2e97efeb649568db74c4d82abf7ad4616fc763cf3121f2c6256712b26409280980f2a75d1a05f07102377d9b876b713c0d435c336f0c3b69503eb6689d58df9c260a4456710476c95118c328bca2011385e24dcb03cda6151e7ea832d1fdfc0cce2eb151acd51ffe5b0fda282a18f801fc133190ca832d7c029f0ac81108b0e18010f5f6d9699730ac190169c907403e841b395aba282cc8b07db8912cc02ccd41db0168f814cca2704593095c08d6071f13dcfe644460db1a651bacdd81ea57dafa43835c12e615e70db06ced37bb6da2435f094a12a3bc44e294760163cb0fea73e57dc56a6a05312b2639f2752fcdbef6c2d876247d286d3c51d32003e8eb171062c28b16205bca5c05b029ed33adc313615cb87e726c8176f550110bcf686891b17d9b353f706e1fc6f0964f7cc7c06efc8823c26f2cb61878b1c3e46b7ea9e48c84b7f7e86aeff47c6dc808c19477fe9bf7b4e6894fb85497e30b4eaf74c9cafab893dfef86b41be30ba8858176e22b7a5dfa71ddf44bf81ed0df0db60b08f45ae0cd13fadc02d32470e4b133b78d67f74230637a32d9c384b45d5eac1e6f49225b4b11eac543e66dd83a2fd333a09409f38bd350d5e48f18b3dbb1d38b4c28303d297cd31de427e1e7296dc65301aed62cfb70d0856b3d53c6477447383e0560b652f22ea47da10b3512176b80061d91abf63884a9acf57aeb26e6c34abce502216ff55539b7c2e78f75600f3560cf1ed54340c867ab9b32f3e6c4a4e617b02be23cfa4f9e18e9cc60cd68f65c99d66f979a239cab1f14b3956d0f588818ecd6228d4c06a0ebf46a5690c64e20346bf4c2ae1ea2b00b24bb37cb42cab80a012f074287217c0c0e59b187a7562eb8248d838d1a11285c6dfb3152b866126838b0c73a768567bad34f05870685638144e5ba1d62cc3fb894a46fdfd72c626a6dda98ff8ee97cb3bec2bd93913d2c51ea6343d039835b67c65cec55d278788acd3b8ef05fb37f6108ec6e64bd3b875747f03500ffca984f8cc2a8d49dbda978ca33187f69cc57b49081a6252d079167ee40e1621cbe307cd0987f7455c70f79a157a1b181497c3bb52f73f087c4e7e4362a7e88035f24cd0d4f4edfa1bd368299483eaeb74ae3067cfccad1687842010fcd8b8364f411a1ae41b3df797a79700a07f118bb83067de7e13d6736532f4d856af60ed66fce6c522d85a37f75f10e97322c3d03817b073e2e23e096149da272ef3c7a33d8299b12ac61f780af2b2c3827b18b28cd3b0fef0c36e563c46a435ceaef6c6d1c8c13a64beb3608a9040fcf2408b21510c7ae44bfe2f19ec608aa13fe065529fe980b5f3b1a0d4f28e7a17a3d82e9137ed1455dc2c04949abe1c9ab79a0b9871f85c2afffba70b49e996eadbb41385c1eb4ad4d658b4a690c1d4ba27948c5a5a31a859f7b41255a055a8a9eca0b042764501e9a997e88e2078c02a107e59514c43bd34ff373a9ee89c7ea1171bbf94afa2dafb58868faa75d0f101b040252446012d2bef693c44563cc098a4061c324f07233cc34ac0f345391082dc58fd57f545022e9316ee92dbf2446ea93dac5741c1f2949a2dab6dfc081f0c22a1a4c1611cca7c3360c7dcff27e8ca3fd389770a6b4f743f38c38e2d64446a19bb2db63a8889c5d90e5750421f519076e41faab18ee66901309fb7df704edc8b52d2a291ac46f221b333bc8fb21a9816c17b6d8629b1f6cadb2c9e71b19fc61cd69ef216467a8f6514bc839f0091c7ae739c3f689b2f383a8f5fe2c80edb6ae73f53d8f3b8ae26afe6996e484a99a5fefb953cb92a231fe81d32247b669c94690db602efe7197229e040241288fcd5279641bcd994e6c303d151050e436038530502ed83d776cb34eb2f6d4f21fecca2a62f33a1744a5a5aeb8012d11b3d9f05f538ded0cad8574b12d633b3b1571bfe3e9890807a12f9037cc05d25d61339e73ad40f106814b86632f5a681526b903de90799c9eddd2385851de1beb7e7965a9be85d4e972d1526a1eb51b7d8a961a2d8afc522e750403720412600bf48e4556ca09ed9c1027c4246e13b0fc903e3bb3068e6073bf53940f2990e2c50eb2e710e65df9d1e63c622325f7a5a30e83d44bf803030bcc2f1e2921c3c4bc142e0c8a2441ae25fd0af8af2d198c96650a6c185dc8ba4ecc0d47b7a9c621f245c685cb3c5867051e45dde0d067d468aa8e50a753e47883fc59a95b3d9a093e09721419796868668cd05e6832bb435af03701e59a147342fe4d1e0bdfdd46e535e2bc0930b96e044ab3dbc0df350f325af89a0acdcf9e93629135c56b87cc65292ae2aa6f20ca9573f5bf73f302b33e19addbd63cc5979fa4c7459801e890902e36780c87267bea33de13bb9fdc36f73a297a910a4fb35936b4ff49026b53afd63d6ddc98d391ce248dac6f1016b1e4fc68f6c96c23923e1b8ca9d5a10719c60bcced9336c58da36153ed09c9bda0af8de8fc25b3fa57bbaf9dfdd53e136ac4221f34bd724fbbed320362c7927ca89ae962914bbd43b7c7288b8d8f7649bdf214125ee56d5dbbabcd070e77b5cf4cab974e5e306d19e35ca45edac70003f6655bb4f277174134c69b9ceceafd7c2705d021f7e033596931c23bb45e478e327bbf65fbf2732fad614c763e49262aec16d64a10de1ff81396410327eccbe3b3e9948966af3b8f3d96c96e18cde6263cde5fbef35b6c7b1ea3bef07f0ac0bdfe92d0cc481ec714de1e70d922d0f8e85c9cf528ec28b7295842c17a3c29392fb8f19c403a584c89b235e03b22682a62b972b66efb04974186950defe2eab463b5d1ece1c159222b862148246fb79dbe858b662655a554042361201896506b3e32bd02a6912ab1daa490559b35cb3a4fbe4745a52600c5a9647e333714f2170c3260fa17c34d86e4accfbea7823a26707e17064ef2927913cb97230bb98140ed5166da9bb3a6ab51c9eafd82073b2bff2eeac66c46aec55ef8571aeb5310aafa688baac8a76a15a548fe31631fe7c34a93cc721c6547297bd088688879d3d905755f5977c2c139f699c14910c6e847485ba4df58ba3296ddd6dc3a5f2afbf5ea23318bbff1984817b4b3beb6f71c3c0a365af95f5ed3a004fa81f6cdbabfa9ea462b86cae576260ba2fc8eaa3bb191042369a39301b7aeabba81b0e81890525e24b03929069f72d20593b9f5dd43d65ee6957be5deb566e0b9f514686bd78cfee47f25eb54303d97f2df4c0ec5a9ef4ff9ec15656317f05da967ffe2ab8c7cf8ae6c849caf2794240d68b82f2f025d1b5ca94a6fc71efde363c546f75eb8ce1340428eef3678dfe8fdf9035437cc34173b1737cb3ced0bfacdbc6b13b002ebb965ded3207ed652ec1d9c2f22d0ef157e5d595c311e80deecd2467e9b98ccef94aa35f6e2d1f1129e0fa1b085a49701b527c76882757c22e385d17c07b99db0a60001e1d793442fd192761a74d5380df4b79e06a7a82f4bcf3c64e23785c50c3c6f2051b4fb75984b68336d707e2d845458eeedfd6870e3f8873de7e437cdaff10f0d176328b25699f8a16afcf77b9a813844382bdfe211653c076614ed2b236e894fb7bc3e0a5d9cc89df3d9cb29b6403ca4fe60f9939449ab71cea5be05ee6a2497d2175973e072b04de5f3aa2d840bed7e4d9f7db12297facd437fcdc6275caca3d65aa02c11f47b1977b71e1bf2429b5e1bd27f9483bb55e2cfbacb824d723e461b7a13581ef8b913ca65f18c34ec947fc2873546e2a252b1d4fe260ff805f1b36381de30d8c22d696f6fecf8fdb7124218b5f0a3e30ced90d81cc6cd752e6ceb7a87824f89ee164bd3ea27266e80913a97e2d990d18f740a622cf6dbea3279c6d6366b54d45fa3fff74c0e89764b3fbf0a5a04be9735c4c896c1bfb11ec60d9735ee4fda2a686710c89d88523e9fb36b407e35941b888c3fa8a84fa47103af21ddb822607bb23f9872892b19b19d6ed718ae8e8a63870f7c9b4e60ebfaca83161e80454d47461f3e3226fa1c0c3c55ceb53ec4227af9a271cdd69e568b8b652a70f6ea1cd7e5dc8ce491cb0720bb874ff9d152dcca70648933b3579fb622637a113ba8ccd3289c2a1055de8589eb3c274361ba96900c13c90ed9a9661f2b12660cef848cfdb84b65ce8afe24fb636239c1dae5971f31275ca8e0e32342d98e640d8f60aee00f94143377bb3424a943bb1222883b5b954e1c445303b61fb9a9f8af1a3003dc5f44e03ff60e544e13d6a4bf540b57e1971c552662712be15df797508ad72f4b2fccb1b331a20714118ae103054aed9aa24dadbf709d6aad1b0e98bac9ba41ded2249d25b2ff943043bcbeefca49692e45bf668751c4e38a7420831a722831a4bb837d602c6ea4b6579a17aeec8a450f535ad63556f3d46983a8a8a99a64824205daffbfd3405c28a5e2da6810d4d96a15cd9dbbcfe740d1c7431a68c19a05d110a0f9c61f5a32093915a72852870b9b16a623f55756b7f15a8000c56289d8cc4a8985a8a22bc26e54dcf761614786af692c5f805d30ace3aa42854ede4db4674c0e3f90bf0b8979c150ae2e15ff75980a8581e1afdc410fdc9e119e49ae8cb0a872daa752074d751485f45e3b05260a97473777677c327ef4e85f8f4916176993e144d0d9cc7b8675c6092a58035326cd77fff9f400d1a1d1306e823b253182e314a0f2d480aac387390b3492a7c628e60d234e8e2ccb0ab8b99cf94acc9d70da9f84a29feef99202dab5eb790982e8e8b67ae114047e75e9f40caa66dc8b6b94580306093056824106eba93045eef53bd55d2f2e00d8927cd55466a158ce1bf004890036eef37c8969fb050bc78e375b266a850f24ca98a508194ebe41b4b055c66917c622124f59476147b982628d8eff41450685e592414bf706d02e4f553383e98b3a73d5d14663a5034f5efc3c6fe0209659a5e41dc720c5d7e526cf2438f349bada9ee6c14053ec80c4e71c11b74129648c198a4955e3cad017914beeae371be2f5c71d373c4d892f08191377afc2022b6705a90290703194cb71f8216e8c2806fffd3f7458516bb5128c2950252a1996024d0d1c23cfb01ffd96935fc0780d2fe5142e9df63c58ff8ec25fba4c4f8b0ef100819ee147ce0159b2170eaf67c687cbe6dcb90dc866c8a64bded579ca6fd20e53121105d15ec63bfa2910a833adf0984da2d02d6c376cebdcd9ec28c167b7598f30ca5ac106801b43e2d8f8024d91295431c0721f500e6242c8ffe7a9dc8f8e50317dbf10888a9190df6383dfc9965e0a006116c09980d8e61b323672a24722d63f8268ed0005d2bbe01eab6df3c7caca5e7567251e6ef98eaf0a81f03ae01be2eab27ca6ba3e0a4523d3f5893efe5464fcd36a80d1d019a8a5a1bee371b39e9c9f74878ec19efdc2aff739cb82ea507e1c6eb66e21ca94134864c392ddba81d01561965106157aa98a4de6d52b91bb360ad3d7d6372c41e61d6ad9fe03cd815a19f4a249323612480f3ebefaf85f43e71b34b1c64021e0a33d2b073698e9e1aba5c50e50c82c1195407b12738de193da7acd4aa1e66a73d1a8e7ad80a6e1ab95fd0f02e2dd754139f0e16805567fb5141d23b35f0ad71618424ad97f187d270584ed117e3ad3e51f7661b0d45dc33e44151fefe2d787830671f031248e31d871d3167b5ef0dd52c07e966580b95b9cb6278e8c730d3da252a1f15ed17809cb84da9c4584fd1bcc648b216f01b785c37875b65f929c652d0e139890537e85a147718544fca5bc3a805e43708e9584f9ccb8da67002753aa53fb9ab8e149f8cb11a041b3243f13c0e0881242765220f4e48342d1b33c79cdd54d9e72223c371af36dd8778eb1370dda960fef25a30d33508cb9e7c6d8824b0fa4910bb90cbeed0bcbeff1636eadcea546c3013e4de42c3dc830c5c81bf9426e9ab911d449c7070339c2fa3aaa6d4ee10eef1858b4ab3dbb39a05945945deab89d0fcf8328e679c95ea2c58440e6203e2326a8becec73ec39720d0371460287e26650d3b1543635097316cf79f9e27fbc09bb6e1fa1697f9d4ba5cabcd1ad80f90c1038ac0de4029c13f47c04f451e26afa2f17f453753aafe9a146d70c4a934ed9827baf10be5db0dc2ca4fef8f4d387ac96342a6f9224adfca1e7ccf2ebf7505ee8e0418588f692ef0396035424f735354b72213a3bbaea6fd14220e4fc26e5bc3dff79c85399272accec378624c1ffe12607e86dcc228dfebd5d08e4f3e985364173f6c6986bed6f1250fb643222d42c3129ee7d55861314ecc3f75f9a9c30a0a2f85227af63ff1bd629ff9ddebd5d0e0e1db0978fd0971e0bf0958a5b59bfa175ca9bc4d73ec00f49c22d2b0b2b83ace03c06df54266abd9bf119182814089997b67e58d65ae5bc9a9f9a5fac475e374cb044173f70fdada78796c00e66a8e3c66d28c05c4c93f87d821b4477c0800cda1b6257bcd21160b3c66e0e2b095c1d420c3af654aff4f0aaaeaf80e8b86ec40ce4ceec11dfa5206fa19e00f5608604cb3f1e1fa30dc8cffb2da773a1f8b1a0c174be9689b81aabf074ad913a12fca988973f87409bf977687dc9b2005a75235880750148ab5aa4e655a1408fa2191f15646975be9635e25f3fffd7f6f3d7e1c8f6a89b17df687420eeb12c19ee0bcd312e80f8a4da6b94fa8e617920d90e103135d7a7af99c7057049d490f53eec9f4137b0037c23c136d73d2081a11a696fc229d42f45cd0ca1c3b725165b2e0483ac3f8c07ee956c5f96b06edb19b850aca688e6c87aa39eaa5f991e21b075f07727ad56239306eac142b6f18d31e1205860a8cc7d971bc23d469180f1d78b27a14cfb611b84468e47473fe6b44cea99861a8fdd16f35d86897d5d0f17561a67d7854a12d42adcbaf9743b1bed6b958f16670e0fd0f642817cd1206386fd3bb445036e8ccf7b60fdd22e71f452dbbf0102cf26745db800c354af7a93a466699d11a7596903acaa736f3256438b6425854ee918ad94046dffdd9332a1d1b0f8082c29b48523a225567b892f89715a2a09a8b4b0e83a4ed2906f29d15d0288d0272351d2314b14bf5916e4e541ac82188ff654fddffb43c980dbd8003e5f4d3ffccde3c03b760031602b8f7c9fb17b0ba044afc08bb49b6336b622a5dbd0cedf5eeb41f8814f498283868fda1c4c233047d3415bed48724302b762677918364e7c5a8d45f67b93268300844f9386e1b02c3ebdca4f0a8dd3b5520872583bb52cd469afd654e71e9617e04ecd7ecda0f726c6eb5bd963ea30b5cd34dfbe32514f3b8395dfc42e3543fc7eab15a100e81e1d04bb47b22acec0f40f183b2ec9f8f162c1ce838f0899f09c46ef8808df877c0523ed18d02ab330f6a5b8dcfbb19faa8f849e0d805a62f89b6c385540e3bb777dc7322c7c54477485d097891228a76404821338f038c6bda9d78c4a741b232dd2d7b874d015bd5032ce0dc15f63fb5061c3ee21bf753adeac6ccf3513a0fea9f5c9636d0be30be0fa00711a8f106865b77f8260e2b65876f383247668c296727ec04ae1d0e14810003792ff32120c1740c9bfaea1e76a2006a5cc3efa6914683472ccd84c034fafea198dbf783006f87698cd9f04a9f8b2aff58da01ceb4d9a058dc1a281782d28ab4db5c5c7f452706826d604cd4bfe621c940ccd36cfbfed197535f15d8e45da1a1c137eec79a027063e9b035f8e1b73f075a8aed37e6b99d862ea722195f892ca6d4d8aabd6023fa4bb1ba56dc1b9d8c73dcbb2c446e7b78b5911a3a66832fff207eb61eb180a4c22624f60e99470aa0f9374b37be82a138f3ab0da69bb815e19a5afcdb2bbf05d5720bce807f820e90eb90f03bde29204c5839fef03b3d26b0f2bf5ad5af85abfeeaabff732d5af02541fd210802f4deb5f1244e1f927612ba25e296f384cb3e152b409710e4cd820ba42e523171a34d2d1ec2758151a325edce8770a989345db8c146a7f0d3981f259c87c1e698e3b0d3b9d0ea7b397f7ae05afc954bfe45d55b79984f3f8fb40005edb2bff1ce2db1ddb90118cdc1fb70dc159e7cbc90cd89edf1468af3422547796d2f7b59b125944c565a88270081a37a9e74231910f1db22cf0aed89bd32cc3688c988a93874fefbc5b3a887282e4d9a0abce20d0558f6250242b21bc9c1a23ac3d05349009c659c28528e5e958dded8016a8a383708c6d6a4b6906451324c23a5607a2ad763573672b2efa815351b5d3a6826183c757ca31e2c2d30145909f0d890529af118c5880367927fd932d70298e14fdaadecaab7705a184f9f612d3a314875818969dc4ceb4ea290dde241e6259e8a13ef9e7f6fff5a058995b74e7cb887d89b31c9b0da9114b7a613506fa0ee192e38cb0556ddc30cfd1bb5f756e6650ba2e3e73b42b4c80a130088d49fa1b4a816b83128ba9d38b4920b99ed44f8472902a56d94f79c806a7885a49ea7c85a3d73d84f6848e4417515a5f48996e5b67eb7870946c184041c6e2bde92fd4e9bb2ae84b52b930238351f92c3c2e9af2f45d01bf831c246a765bc98e5459f92cb9143ddc68c697947f5b2a6a66b3ca013c51090bc62e311ba8c16c467150c936bfae7e24c23227d33317fe4399881d8294d2014b7c039544eacebb3042e0b2a6e412c1dcf122de25804338c0ccb92a3953d8886157219bf44c21293dda7ed1f34a05e4dfe8d7f609db2220ecfe391afe87d7f5761656b3367909d74b09a083eaebbf069dd09e4d1d3107b51fe32cc56efff6ffe3eb85d0989dae8de2188437c62d376f060dabdc15a0f61c40f33b5ef0875b62e3e9f3bf0323975dbcf31ab05a90bc2e77d20b447d3048b09035d887258577f0a1396611a70640fc7f8d28585ea3b3211e585f4b194d6e67a4bc1a20d28cacb6d9ca9ddf25a4155ed01850fdf5226866dbc5fb5ba15fa697c555b6465e3d182792ac9ae9328fd01a3ad716c6bc657064181e262693d0cd02d320eb5b78e55f6b439c90d61a3b25a661e687fc2625fc7909b366458717c2a017fa3042c9b92d7eff95bdff8056caf86a21c21de992093543cdaf272c264702e508f8d32a97aa4471c69cd94b9534ca6232edec9571343513a26c498bae0aa598e0b956f099b6ff9b0124fa37da8c968a0fd96091463c222333d79fdc764cbca38e619b3ce2b272c28bb9a6099360889633630da42050de01e5eb1f525b2657278fbcede1625fc7c42d224acaca3563f059240551646ebf244d49538665b09f6a0f865f7ce57289a7790a45c7740593750119a9a8dab97ba2e7d5cd89ffbf397f0853786e28f0c11abdc0bd3d5cd04b5976460d289158cafd7d7d7c17ead7ad2128067949b6246b91b42aff8d80b8437d2c77fec238ab474fa04b3d8c54dcee05c52d20200cbb18e7d2ee5a1aef146dc5c10afce2117d8ec13365d108b074f84f58231671a6ccaa5bf72de619e38d7e9df12b7cd4cef6415bae09c1e0a0730228282b2359554347f616ce52af375b8f57e2440f7cb9b43d81cdbde1d1bdc845245d24e9a96f7462107a3248963e5bb83d257f5d4f228897db00f01a92ad56d3a9ec1fdfe827559d02296bbd2518e02d80ed0883d76114eeddd10b1dba463dc70602632137d42f930399b76785083d74e20d6de5c210538805e4248aaaf4b8f1aa79c7e0d52d8aba19b41f4d624f54e57fae44115a3ca1da353c41d72d565748391e11c5047a88ef6238fa028a621640054fa2b84aefe1d0159842c552c7c37af9df78d524e887a721c156955fcc723ab282999e5c677f6242a348008a2935c95c600762a838fd935b2b67a4e1c691d34f62e347f0de6365e00aa066a4f16ad6308dad8b256df02a4d0263e7433dab39cdc9a4c70808bbea330ecf093d3a0a04e95f4cad22278686ceedb9d28462147bf6cd88671059a06bdd2f719767b1914d2f520e5c55a1373b3edcdabf6ea6df2dfb611718069ce6dbae845632616f652e600f2fdfb558dc85401927c825f6251028a7a46f06959ca1f45851aad1ddc6096c044204c972a4c9acc48c10525680694d50036f92edacd738b47be6e1bada6c45cbd73e27df1ff50a87e48c61387ea9277335760bc77f74682406ec37cee853a644080899467edd458fe484a9f26c1a3e02c8ab34c454098af55ad7544a1aed05ae41789d00f12cf907e87cbafc6ea7a440ae2f880ed8e43f0b6a34c25e8e3be754d28fcbaa84312cb1a8b9ae0f447e258ad430bda172d9980443573a892b0e6c9167f9b20a167f94d20e6a389a74e090b8e338e9b7393b56467a230cc62f5d936534430d587945e814196fee9635114e2f76c91801a2576b4557661c789b2114eba505cfb62b2ec0977b1ca5399248d7dd7001795bac7cef590f01d027ad41e25e85ed997984e3919ae88b0427ce5f875680160271ab4efc9f0318abdee42b7c297b93de61212e6e2b9ba7ffc0dee040b5bd27fccec49c97e0b5d2a4263c112420542e7b46d3c2b967ab027d32833f75177f6ac440ea44e45681d37d727ea3a68bf966c20e348ff314a7b93b9207f80055085fad009e66cb1e5857fa8052357c1f88c1a20c70a20bf974968da8ed2ab30eb671887eee1aaea47a5710102fdd87955779f63dcd4451da141000b679101e6960121e1b818c31014ff8d2c2104a830402a8728eaea6a2adf06a891cbe5fcca6bf81c9f90beea21b42215880be247d3c8b60311a1570339c8db754d7c235443f4743960cb7757262e6c722040c4232eacb235263bf8f5c6a21e8cec385612cf91b89402bc8b16322cf89d47ee30e2fab6b4684c75f752726f42309386e31f2c60905ee03add0229bd8150d5171ab20f2eaae7d12cadc08d8683dd849fa79c6a275e501af110aea17c7056289bb54219cf52d97721185090df30252850006b2298fc92776ca1b4400255d829068d3d08ac2b20ca49db939b881038df31a7d8c7e655306e9542abdddbdb89379d1c079a00d8d7d0d20cf9c5f8ebfa3c82eb84b4e83a05061f9d4cc2299faa4a2744beff783ab134392d4d04d3c904173a5920462d7542855174122dc58bbccf309d985d0aa14f7230828aef20f8bb00b0c9121db2b6d855db51a49329eeb2e66849bd216ef8249c5895f973857613c908b50c198354f68fd232bb9c1f62e1c4571ccc64ce02e442b2c959ecb4624cbe214a8f0357b6f6bf45dc9657bacd130f9c045d53a5bb0313632269c044b831f4eba0590073284469dba183663fcf3494a2f0ad3899e71f656678bf06268dff61d4a008038f2c678232fcfe07d72db570cbc2f0b6946b86d422ce53e670fddf10a873e7429a3175feba09f6c5f94d5f4201e53f1cc4d804af329c0df0710b475cdc5f085114066197843834c0edb952f19946e16e1b378b4bc0ac5fe7026ce9fc8985746b1cd4dee7ae81b3b748c49ecf83f655f28d67795037f91b9ef5a07ee2353ceb1b34d5cf79ad40e790d1027055dc1aa0d23cda1ce795b79786a8283ab3526a9fd26bfcd687fa93df70d60ffa26bee1591f8126033777fa9347d0d292a91cdde84fe57b6d0eb3aace19a58f81e817f7bf4abe9e4df04f2a84aaa6c5358361654d3afdd7afc1067aabbc4748245904758d5bccc62d0369768bd223c932d9547932952b75785dc208714f972ce1c635fae8304c2878cc8a0409be53020bda40014634a5312c473510c84c7f4658ef589ee13894946c5670924b6715dd8487ff07740896a4f41335599da72fd1494d496bce383c418a0960845ebda99c75a226c822acd20b353c26ad29d0632a2ea26f35613951be9aa19ccaf6b14a18c8e25b10b6d3e53238a162eb3ed7b19fcfd0782bb9cddd5f4d2d12dd874f5abc04e80d0031ad8d9d6f086d5970b9675a0626f6f13d5237f2af8ff87d8ab70ec417fe205d99b2a5e9868d2eb5f5156ef4a4e03a2a28b5bda66ee8d3e29f6a2fdbe635d668a11e4753958450c844fae3bdfb931f71220b373509c474684439217c8136683c95c85da60088619055a3f4985e25f5dff43e45781523cc579a335340333da6a62b4800e4affec6e4e982932a525329253ee2356d12a25860adb20189882e2f3edb3ae659f43cf20455db0f9c84e4599ea4afbc6d2bd9172bbab7be90d8238dfbb8f238e2e1dd66b59402223c8e6a8cbe9aec97bc652aed164aa339b75a8eb526c3e015ffd27082641b4cae66b52ab498313b7400d25075b7e2ae24b4fb37cbf697d1c9810b72d3862648a31389959674610ae37efa6b7cee177a4e539ca3df0a57b5d123a34b9adba23b354159768615b7fe40102ff9c44bbc9781bfe1d756e3c1bf705657d643896c2d0ef425d5f7ae5a5784bfcad40c07d12cc3a1b0e60a7c2e449b285c55613700737425f4ba883d111ce88e5551424d95009ed85231f9209beaf00b241f4f8cdff30a1b6869bfd436c736e2c9d197544ee15b8e9896a4fa2b2262a9ffd3304e0180d212781ef73cafb1ae41020f643c6fd6e0f7357d42444ae882512243b9b22a07fd33035612911e989495f59a0a452f9c94fad41ba237d5039fd3ae2a2cb70a82374ee3d5cb24547b435ede87b459f212f27af9334b90531b692870b2899dffb52dad64f13556503f6cdcb011f4fff0d6b8b37f90ec7e43310c1dac783df856f1494071d8cf8a9677181cd3bcb2f7e20c3b8168b8609a5bec59ae98693bd024936a830f888fe2f4a8a65cf3e6da87ba4244e784adffef9f071386d785e1e64e3a2fb0deabe6246aaf373d830b0eb3d3da004245bd67a34efc6d7fd76fdcc9831de67ba0f279d926c47d2a1c1a736b4984ebdce74144bfa258d8a114b24905a2bc3be9eb0484f7beb6964799c789d54862b347f30e2224fdd716adbed2c10cf8ebaaf49bef072f0f21e04184746a836d1e15c2710bc7d0fabb675f4f2e037701b050db02e69b6e879aec7f842104c0f2cdc552b1990442c224a4f9bb5e0c37a520de432ba51596094d255b5eccda51ba040f8fe62126c2637981abb15290cf4ee9007b149c1c844e2c7706f04158b7a0f496071bf716b9b38ed25806415b00795616f27ae09a6bf9fdda67973674e04c412b701311e68a52b8e265ee4f8ce9d02119c8f2e01b564ddd405f0f2668d73e5998f4802f2194dc2d282ac4737976f8436a603d87109b2d747a5c8561a1062d7944047f833c5e946661fb03118b6efa891e1c83f2a94c5273d61b9d858821b007eed1ab88f9c2c2998fb1c31a88c40aee01ac1c0c50670c992e4964a54977bda8483fc4a438a0f62c4706e301859d1002ed6705366a04ef369d88f38731b3fa25141862260f6156b959c40e048c4a1e28e4751a91486bc14aa4653d964a7c90b825774d0c88afbb9ab07ea58c2dd3f42c29441ca147321674473abffa574fefa8d9e3558886e09d73acbba9b7cd4d13dfb7a30395db19e31ad60708215bbd9263636d1a43165b66e0d05361ed5ed52d42b7b4bd6dff179a30d27dbd3b1929bbdf4f7c2fd3b74c4611c51d1dcd2ea473dee7f9e287fbafaeb5f2b8e37489e57eca9e50df924fecf10c5c4958c439f2d3548ec286208f36df31fb0573bf7208a3e89eff3e4409c9b7fefba9d246e7ca03c7d23383916d02eeb65526d034f0bf13c15e2922b26e2bfc1976f5b1d71911c11f5482b9f2efa0e7bcc7c636dc2ff9c5cc30bda64b9d629656635670e57b0af8c7fe211a20dbb779096f99eae74970cb1b81e99ddfda50689b2d7daa5bb6cee7b2a2e30e881e4eef1363a34a58d27917d84359b6cb6dc4123079dea94e037ada9821c5cabfeea6583f59679d5c0a341013a98823e359c2f1832dc18163ef8de8a63a785d554ce0dd873535b15e9a3d560e56746579a16fda777ac0d2db48667e5135c578f596b89c1bda69a5c27ba11b09d9042eb297f475244d1dbd873d741bab7e0e820f8800615f8ec22808d763172427c246b110debe1735d1e7efbe41f2ad8e1617841bd21bd5c1b80023b99de97fddc10a7bace153d54d3e251ed255b6eb42df3adf12d791e6b573e03be3fd3381f41ddb1af9493a0eeb0e25a795a8bcdf098c898f8280338b1df40f038e69ac178349321414c2a775c7395c565c4a3451d0f3c68b109342c1cb2f46ce076df09256f5a017fcdfa5c3ab62e016abf0344b35ddd7f657a670bdc479e6b4d5ee0d4a79d854289ec4a813755f346e804234059b63bcbd458dd33d546608e90806c6e25d42565ace3ca234d48728a1142c32a7e25ad3d5e468a3b4e349815fbccd80926cc28534b825edd5e619899bdadb662d50e01486521e76604fc8adc370b8213489e9b1ed8b2e19d58735e1b66f588a3a31de63d4127081529f894098c07086a3072771832bb1da6da57b05961e6ad02226d0192db6aeffef845ef3d059917b6c15923e1195908a50cdd9f04fe8411b4b24ee9358f23848794ae2815c9c58c3c907fcc3f7084ffa8edc1cd830ea8cdb5e484a1317ad855adb037ab4738e607e0ba0c75730702aba1d3caabb69260faf9114a2a3d08e9a4b7d44b099db4511ee37ef7f6773ea9d3ce28c10722610675e71b0ad23f304feb1ff134b06014228d9d7bdcdb76d2cf81fe5f9926bf094cbd70f15a46fdb13d8143dfff8edbe8c8d651448ee3a36932e138c1060f4abd766fbc364bf66dc07ae4b6fe2f3d211e0036ce98f5401863b985a0b75d3b8b77cd205bbc1d821d80d5a4b9ac79489a8977a8705de73c3826b33adb136f672addecd19edea920f0e77198cc34d8d7f2b93dad4a932bfdea6cf75843fda3894d35a67912849419598cc1ce3c8dcc8c1c39349bacd77c9ad001f90625af4b98648ee4a661116ce35a229a49d16d285ecc403a8cb1928fbdb24e11414c09227f2e4230715170a468853f27447f665dae3483f88b2965abc2037589791f073a751b6261ef46726a213d208c6046b2422448533c237c13ca5fd4842f4ba417fec9700b61012070879e617361dab20d3e6d490d352aa2a793a86190c5c1f28966e5ce44a7c0218d1bd1e8c833a07dcc2ae86866723f65d95a3c51ae182a7ccee4ccbbd15c4bff2e397c68bb2a0be6d59885b86cb92e2115aee65e4d731f3db306f34c9f589ab349121c125cff220e3deb64458974cf5235cee993199c0485435f9f0ad5c51baa18c087685bbd6a780d925ed1805382dfc3ed6ccfb5a952426de56de376b2f4ab396fa8696568ff62308334b489437e9c9131c260239de3c80af15457e8debd4b4bf35792eeb3ae7fcf1d68db97797e49f055e186d5cbfc85b79db156880c127113460f2ac1ad8c670321a4211f4333d9cf725af86ddb30579e2823d5c4a198863e6f157cd12ae523b630408e09e4e205300250925923e0eea07d35e86bb1086080741411864c43027a9543e4fd729b5143ab5caf88414abe7bad008509fd734d391ee0a68422b7cb3b3ea5831071fea148eaee1519245ccea61489d8e2c1948aad89546c4ad38ca5d418775e42f67a9e8ebfed7b159a2cdba0daedee291593ca441206551a64330d0061b71cc2988fc8332eb588e30047e70382de13ca946a7b9743bbfbe81644588294b80c5fb8f044d2bfd46bca327b4d006898f281503d90d3162828103280f421b13541d5d0317e3370d0762de20da84496cde1e8ca28e3fa268fd6132b7acc4020b076df605ac9bb70d3a19bd173dc6f27d127a7147a4d4e13382d221d740931db1cb697040537bdad486de02dfa413ae0372a3edc7a5892f5577d11f0bd953294ecfdb1a6ce526437e7e3814229ba658aad29971e30b49a615bc1f27a61e55270f9b02c935d3a2c645a10fd7fc53acd904123b3b450c2d7fede6b07a0b0dbb13e40d0d69ee0ec164e402ea5d6aeb7225ab9bc0adb2833eebb43fc9b00d3797086f9c3784335b9937549e42bf92bc893ac244c4d0a3d7b40661e320d93632aa849ed4c9e64be1ea658ec41c11deabfc9a60b2ff02f8d5b0ed1aabb07f2f5923cb12b1ed592da3ead5a0aa761251f3a43602e08e6f2efd4e4bb481e52670a1baf4de27463429540788f81a54e468e496816859a74e5d7a1c89b9c9e4b6b2cd8389141e098a5a2640c8c5ce12ce1a71190365cbcef5fc5f8e26d0c0b51a0d0e8796d084db53548037026dc1234ab11daeddd88fe1bb4c120d57c44bea0b4010f1f7024292da80698cf2a70261e47bcbd9edb43a0881f8889a21097fcf794073d93e2a811430e1c956399e3ce95cc2c36114715132279041b4bfa12a0780bb3607a2b9354b168fd06c47b5484ae828ed82488eb5d8109b050a3ebb568729c026dc3f5a0f47891b45340ab5740127062ab101fc5cbd35cd02d22141e6f1acd2feb562be1a67b3f6b3b007d374daee529f32e723484e8d00c2e91832c8aff1694f4cf03f42c9dea5bef80b00b186698fb7629333318ff9c27eb0d56bb174119072217ab0573b8e24de732a15a78327d10aa543b149540bb0d6fc2268a05360bfa5fe703ada4ed019c9cb100b6e0ea3bf5d4323d363487b3e960e43a9e2c61ccea3312e5885a5248d1a72d5a23f2a51d0d0a11733704dd481f45f69a100391e6ed658b26be3bbefbe391de3ada7664ca658d0ec27dddb69281546e81239fdf536155910d894341f9d0946de6f31a9424b34a201a54bf6605063963cd0a7a762a494baf1bd7c9ba536cc9609d253b745c823e3e11a5892f474fb5a111bf8f40191d615d6216539242d66a0d8c2bbdbb92c31e184d60258774c0ba16b66455a6ffb3370046f96ec089b8b86d596a74420dd62bb957396fb101fa0523eb0930e067fd62cd9ef505d9f63d2b2f840f336d87bae2901095159eaf61417436b90639482907067e452df03376f2d73b727b7a1f421195c0a10e9cf3bf159fc8119c6ee8852a992b99bbeccdd538e3a713f993b5e8cb78fb983390c949f622a9ead5d35d8967264e2b5c8db85a9e8ccb8a56a1fbae09f3f43b568618ab2389f739e3ec3fa0b3bac7b106c1e125126088f24af26b6c89ba9bb87643ec15bbdb25d162247eeebf87dbddefb663d0f7f5e2fddc7ebf9750faf57a582fa1779d7d75fef6c0a25be68573bc2e3fb81b989fd98704e018e612c952dcb287b87eab4118b0543168149b0c615690c16f39af77ac936f29e43ecde483d8456deb5e127aaedf4cf59ec52aa5c3610449b86045157e85b1dabb3626f8d1b04b7012867b6eb457b3c24cf31d82fbc8ff4909622485a49b11d54d2bb58ee7a7c5e49ed1f41146a4a57ab7d609a23d8c8f99ba840e16859eea6eb62c8592e455e3984b4dab1693c43dd5daf76056d1b173303bcdb8b0c8d85b6c5d120e810e18edaf572196972c40ea526b96f9866d049963281602b49c43468559aca74733bd021747eb34f78727796a6ece86555b39d0121cc9e87a747fc4af3eb47dc4de95088accdd3ca02e4eb035ee1d4df6c7aaa045b596460d90456ac55369e03084ab2b2794053a95a59d8a5ed422d05b2e8aa65b64901152a074e8f4be90eb5232dc51e79a98fa85a3f1dec2e20ec47eba675087955984f63fab8544eb380107c2cf35a418c327098e53773f293e5239189870d6492d44432b95cb4c59d82033a87e983312a20b40bc26171050a727c581303846c45d30b770e48390166bed5ba7c9d3d52684e11618e543921d77998715dba05b4d3d1a9d6112f9eba82a75eaa9e1f3a1739980ed982da53592a5269258c32bf27cdc53e17cca7c9b729e95bc7b4744dc930ac7b36a3ae41ee9435d8688674bc8f724a921dfbc00e3549b2afa8604a660ab2df72b3166b1698ebc73cd2a6298977d483706ada35ad3a1f238e04d9bf74bbd0c2a9d2edd36b64526884d31df696f544962e78812aa66a0907ce7e9be55696b4261bc372cfcd890a9ea87ff8104632bd91bb0a67d950603665b061ca16042932a41804e825b24e7cdd2e4e9d25a417091f3c37769bceb3fa24b4eebb95164d8ba43054dca3e5ebc5dbfe5b801e53392a008c06e0da756e41f82b0704dd3fb8b7c1ec2517901492ed7575e75881ab9481e301be4fc3acf0523b2c12738b42fb28d4b4af43fee0094ee926d19dddd80c64d11f3712aaffc4625a936cd8f46486e9abb26b5d46a6502957d17912749b3ec649f9ac4dc6c94172f029df3283ff419cf419930f21e5e49ea7a66e49256bd28ea24cb2541dfb55d89430310cebd1416d9f1334c179bdc03b2dc7b8b03771224b837890e37e9a5654bb2066549994bfa32e86b4279c1aa4a3fc787871a8c1725ba8d280f08ea39371583413a895eaffca31703731c6a51a06ad478144f545e194f2c3af654d6bdcfe8ae7779fc067841b8e95664d536a0803d25c2817312638483a16f525d6aab89997a38ba89829014ca0708b71ccfd11d0812b4c2d045a1d37d8ad1eaa3c2a5c511332ae7cc0bd7cd0624f58e839713f8f52073d326280e8973b3fdcbe1c1f90edb4cd9445b6d7f0c4a51283dd143ad6ab9cc979b5b37c401908137c8c3d2545db7412728feb1c1fd5760fbda4267c27614c82efb8d9bb69591d448e84f1e1696c18c8cf8eb5c88bb09c2109e3e654c1ee29218e80241c19b19f88b132a88e87af45baf10049a379cc00caf57df2c69b94ef620cd18d310e5562acce9bb1b391ced2752889a7b61e2c965f66b84496d227edcc65116ff2a745f278816620ad36a3e26d92a6d02bd07f2d930e5abf37f97383eaa93d4e17e42cf22741e816038e61232b4bda62983e9b02127f572d7fa19b16d3fa652a41df3887d889d2c26dc1349c43a34137f9c91c92816bd5a5dfa06772d88750a663e47db860646f2bf325ae3615d15402966c3c3e460feea185da9d168f43b50e35982ef32d84b7cc467b5ac4e59c15c94efee86132edba27c6b15f03d11a07ce4ee2bb36563db9106683f06ac1fd77135cfdefa5994db918fd00a637b64b1627ec4675d88f2832f402945d8e90180b120528b7608a48befe272493ef7cd038fb08b8720f26fa79664d2fb3e90937c62f17bd8c2a01bc732dd48be7a98c7eca72478a1315bce841f155239c20f1ec91f2e73b2cfb3f76a2ac721f3105b3e0770f987c1f22524dbfff5928fde1c17110277e7bc2d1ad53a26707dd1d34ce6fb5cb1794f9cb3ddd70c1c5b061acd509f682db46fa1a18e106f6d23b0f672c13585510ef6c1fc45c397d5afc6358a55d2315aa5871f7c8dba8f0d4a3a5e6709ea5b3885851d9595e23526c407f1ce9225306b00da6001911d2d2c7509e024bf3f3f1de57aa11f56e4e52be2e84f503ae753b45169d0b47da9e202076ddd1b4b28ef3be3f82ff084f0b8748b7b36120b10924d574e510a7e2a1fbe2ef22cf250023829a9c9226ca2803c3231f77eae5431d251cdd6a0cd1f42756875187d9537d42c1c15ae33d97fc6be82ca92d136aa55c4fe43b28e597f82acce14c612f0a980a637213dbe5c19dc72ff21bd2ded52a344280f97e526f700b6b5f3cbd4febd125f05f09d24c033c6f783ef17bb92baf897b25c9123816c57f7dadca2142dcf585888a13e5285cc7eebe9664ab80ae089cf9d221917352ec6169707438f35410e75ec6f68e6728a01ea6e0529cc4994b392679eb9be4188ed7e81f2b6c3c8c7efde5a71411bf9871fde5a8f7c8d75fa6973348b2fe039dd34347f766c5b1905d60bc40e18926ad24673f7395764f7e9b3860a2e567b16ebe9169367ebc4e5b4715c0dc97c030676a80f0acfa1940774fae4e87f24cd55fd8ad20e033cea665c1854000206158dd653c2bf4f718bcb8ebd06d02d7bcd44755f8766c04ded14e41213ef5e0147ba271355005c6b069baaf1526a2542857b884868d1ba8ea58c85622086865cc7136886c95dd269797c72943acef72761d1ac9a9e03a96cba9d0bb5b5d6d452e2e1f67d7d1d5169b8eb9a2077092f9d7a8470fe29166382b190e0368a48378c5a2ac2742a3d62041218f3b53cc97f8d843e87b72144eb8a1c837d31a1218a3c0bc8488acc37dddd2cc721cf855345843bbc7a254e0f1784601371c35285097cc24e9c29dea8d6769b8b53c45a927ddcac93d4073b0230f9f83362ab8395489ca43d62da76500454553b9eae03bdffa0b21cd53e97fe0c0148f3b9a1f2758bcf484b89a7de650c8607e3492294eb7ab8df2159deb93e76ab3dc184123df26bfc894439bd8d4e27b757a92bcd25bc9311078d74dfad308b3a6338ad55839407b92d04a32e4006dcee911925d66f8eae6549fdb372e1f9781e2d51926a8f536e79b6c6715819109b0b1e95ccada1d8fb5579dd7d8e3d0ff10bcfef9218fb092d02d3878dcb5f96a6ee15e4fa8b83b806dae975feb17c36a619b276ebacf0bc6d9118af0ac7c106b025b85f0417f535a159c4ac85781b667b13bd7bb1c8c758eaa0e11795ae7dc2e34594551b9c6134cd5c2e9e041698a2608eb9658e16eec9466185d1b7801370bd987ca2b365dd6a559d80129571328884ae4044c8a5f4f9fbd2e909a7a2a3204b608c0decf761af67d8f57b4b92a7a485a7d3beebe075ed9c3dd626770ac71d1118f02b43efde8ac2c4201694987ecfe7dec3489c35f9cca3f6fc952daa4b1871cfc93707ef7a7e7018e5600b232915f6384ad4ef8b4008593a48873943af71188ab9112ea4f79b4999306c8045469ab2150eadcaf96d1e498751cb03bbbbe3d9c2e3954b36d5007dab04d64e06c20c6e021f0fca2b23f2253a46582fbb81cb8fd81c1ebb8a7e8b5c235c18caae3414e695783ce10f5a0af8b4212984a1637266c169651d705a5ba8d87c0ff69cc7280e0cf282b388bdc6b27dc64590442625520b5de19693a0ebac310bf8ee703f5832f862bcedd48106c50c1f12a8663a4acfb1461c4e1b09d25361f73dd79db2f92b3618d994eb2ed8c47ebc7917ab72d72444581f0b519799b4711250e9bed92569b70f62ecf002012077b4f84c49788c73d0bf94647c8457b31b7417f94dc8be635447bc92fb95413c2b7ef2c34908abd0b9098203a52c16651894730489dd3f60a390ba8de7d57e0bb2d3720f6f8589ac2de0d2f4840f25771d1cd4f6deb10e7e2e964bda1870b8827be561d07c6f2f564232ae018707f93baeb809d255e58a26dbb91ea8694479be611a9681ae4d204ca3734342f236ba10d101186f269572e202953d48e1c2219bc2f290db4b12e08561f2dd56f225ec77a9cb1768f18a96f112511f8602916923ef46d41706155911695c5a2c5530e6b93a8a9da3e26524b5061aa170425da026336c2cf6f840437afe5580e585b0d7e39501666b7d249762dd57244d56f12a3bd54667971546ddebe93038181fe74f06c54f0c2c9b47424a3f55b25ab402ddca6aeb4c1b8c08c33a25ceb0d28204371ba96e54d5cc8d80cd5f0d707e122926d5fa546d3fe1c7706473239303570b1c1fe5c570304c5078e87a832240d174f2e52982b50e86d73d885392d709b71dfd59ef1ae0ab073e9de7e029bbe5923b49d7afa612131ccfc44d5f9d14d4e1805b702316f1f8062e596c0adc23198e32441391d3f89a2bde3812ed9e027b75d10e2330c5f8d61d62ac55dd234d3b3110f85f4355568d69277875dc356d528a1767681e3b9e29ac1cf46e1c4283a62786d24731ae9258743ae8c398a3db32174b615ae5d471c015b2e0b8757b7b508e7df686e058c8d4e8954bc1e0562169df7c513ab1cd5bb67b9cad9cace20f945e7374b1fe78e894717df4d36e5918c6eb25ad03adf02f914305a19d544546fb32b8729bd45ee42616454993449cc0ef42893f6f8b2e3841f8a8c50b16733c782cc83c40712ead86b3c72c0766522b99f734cdc192a14a8b6f154977b438e4745d069cc59126d2412b2a926dfaf5b002302ea40ac9bd00a46df233f1afd9813e33914a6339d351891af24e14d55b2107e2e121fbfbe29f457ca4efb95f13aadf9dff4a97177aa3fbd9c5e110a28f34a8544be186901a6a943e47f64a34cdc4d51bd8f42ca799f501b3615dabb63428e61fc056ae86c266bc429b5cff38324dc4a4546c542db3b664b360319570c23104f3919da73213ad1910611b9144cfe260d1a0d08f71fe058f0bc9c98c188dcbf379b2a6c87cc4e8a18010b56559909535cd6caa919495a1cecccb21a5bc64aac12a4c2ed96cbeead413a08360bb024cd0bba6152f818e3a72416f0554ddb2ca733d8e6998d5b08d426c5bc603742483b2edece48543a3da57a9e32b0a7a5415baf7abc4bb1ca20848a4c1a4f4c0f8f8ca08c2f3e29fbf75050d3ed8272a5043550578f1a690b5d86e0d43323a24b58e62b0ebaed7442f26409b74d0015c0c06d90814f30f83f45599c3949abe0b6ac49fc3ef9e863ac9d3c87350c408caebb9cd7cabdc90b1ad34aa4fb9ec9aa3c4f73655e268b7dd4843193f5c8c5b050739783bc38a3a745153f1af312475ef76bdb0a559aa2d69fb2ce2315619cbc380d946e9029b320251812d4d8528b08464c25959ac7c764498c1164e1eef77f190b4cf79622ef5c19d20e1ca64a781cbd8654323d90310e0e8e32a17651e14c6ff86a1829376839d5b74b81cf55165539558ee873c34411cc55168422cca900c492b0ce3f612df3d0cc58cb44524ec533c88a942067ebd9243a67d027c8517b2e596d091ea3523c81aea40973f69e4d054e18bc4a2769b96e67e28c5156e4421ac9a6cdd4f591f763614c07b3192e2c343167d7ccd2f6e3e22149f85d345c500e95d9cb1224a0361ad0021eedca352434488fdde0fce9e943d89d59c8d0255a48622fecd6279a3cf94f2d060f1c76019534a7558c1cb066e4a8e1b4b4fe0f5b2dd435e37383922f36682aa9dfe7e4aa93ace41defb0590599153cb82445d25d7e36db128ae98ec6633485b6ae1417b5c8c8773f31f4dd2057af14ceb7d7854fdbc235ebf7edb0e4497796a88b8d6e4efcb7718a901b6a9e7bfcff5cdf8e33204ebd9da126bc816ee8cefd4d8d512f96297a8458bf376f271788d8402ced01147dddc791eae0f1d076873c22f2a83a0725570b7a08945f64c17a73988bf30a220f7124216b5d368e7b6c4142992c88cb9654b8732040c41eecdcc21681bdbb517a6591aadb834566fd85651e7c142249032813810fb9d80e47bdc0a4076c1302dab7dd5b5c300ec2a20efb0352bedecfc60d072e806f672c384ab77915bd84d72da43907767b34faffcd2c317f5434a277e3806c3696541be9d00f43308c74703de7d1100b524b9b091830b19139cef8f6fa8f04853775174fb6b6a594524a99526c0538069605389e5fa1676a79ac95f3d6bb13bbf55fa1cc31fb37f5613011e7573838a21058716a156138876724569465c01792155f431cfb375f43021de42870923d28e0c1a7748f7c7792b1203bce8c29eb55dfe3e4c009453adf90334a5fb157b58670fe06cd3171a42f8e8e23fec044554b01f45daea73821ec5f61cd39610870c681fd0b8603fbd70dec3bdfbc0a760383bdaa25024c64ad56beea8f067c9b5bce6c88c01a1a93a6a9c872e747dc860ef0000975f37480275311ca668a62ff2b8ea0953ebc484a296d1d02bcc97d7889c530ae36e98267145570c777fffe8a9ff4893183a77bb09c7ddfd7df5700707ef613b1e8ed4f45fab426a796d538ff9dbe9ce28abec47246a5a54e29fdda02af672b0e62269d525a49250e4f6429e78b524a5ba9ecc609583e2c26ffe54cccf2653da01c43cee894c97ce4537943ce9a0a0e5fb2ff0972662d15580d457a19101206a55721a764810661a2283185122370bd9a2ca2cc977b47e6cc951eb09c8180e6fe59bdae83f270a22a3da9a5984fb1b55f0c6b2d08d386d75e2af6b44f417018f2a795d34e298962d8b9ea967d1ada18b9bd641ad2c690323a6918c3ce6c5d5835cf48dd4c1ea98e2fdb9f95524a29f629c23f2fb63e2b388c707e0d6f9d3e3e2a167d6c524667f559c161ccb7755a2cd5fa9c33f4a9b4d63a9f7e0da94f51f679ca34240d7d6c3e6b686be85334e99c73569b5502876b52b23abb83e50117b13b589de541ac41930f3e34cd9e5bef4933bd48f16aa5d662caa2f762baf31f83c5603b206e0d398eda7864b2dff91d9e182cc67207ed0ea03faba9e9f57aada0710183a82e372a8aca92defc7247d162f48d2b84668fbb0b4d219fd2fd9f602ad981c83e45a1fe19030249bd408b130e4f7480a2571b671e3ffbf37c172046309167d30ab4d7d53f957aa0ebcc0ec51d948265a069346c3f062ed0b404f45b80023dc495205e43fdf90032829a262454801066008130f3c91ff64cc5c1f7b29ca6c91c867c1ff0060fbc010458c38a53ac408e58c5e6e1dcc028aecd9bb5d6396b9d5544613e05725a0d6c234605ea0c8befcbc605d6d88aedc5d7d29034efb41ad786ad800917e81ff9356a992cff3614596ea06552154596ff3591e557a0c15ca06568c004a79dd06498c8f267d40d2a677d033b8e834a6e3ec6cd7814a34b91fbfd89f626bc975d89d1bfe47eefd2331a1e97dcefb71914c379ee83d1773ca347f58ca96737474d3341fcd189e47e07d233d5f77b0a9a76c361f887ee42b3d0b413bc85dcef3d7a8663731a074613e4d5774fe56e2c6dc5c50cd93f80a6399310727f8c16ea59cdf7fff4ccf5ed231d4afff88f1ce4fe0034cd9f3ce8990dcd9db8e859733083eef7c7e40c6693b2b3021544fff8fbbcc0018832c16992c961384dde1c86cb2687e134891b5b866c41fff8e31e71c4a04c1cc1d807e2187b0fc4f101208eb23cc678621dc4c42da1c8fb1498384df61c869c72182ec748330ea565c8332e7ab95cf77ab27b2bba17eb9e3379caee2ea5dfa826cc5513acaf1a978d9415c961f8cfa822661724a7c9c96522659733892f9f941c845d93b919844730f6320794eb396deaec94d3a61439e5b4b97318fea394669c36ad388c332d63fed03fd386c11d7104633ae218fb97c98062d396336d5627c569b4494ad9398de270d38ad3a8d3fca1655025fd23c569130a4acace69130b16b7d2796e094232398de6724c4db20512e7341ae551a347458d1ec562456c5585380ccf7916a26e05ddc5ea9210a7cdcac444f677a5fef1cf1147e95f91e46cbe1346b23fce8dca087a731acde56e4d4ea34c98e09c4695b40cba43ff388d3a99bc194481e81eff21a490e87d79223b25535482ec5f5b803a03f6d39cd3a88e89d3a89427a7d19dc3d8a165d01ffac789d3a815a74cb23f65f95d61a1b7ccbe48751eb3c771eb448f9a3df2f1774d25f604bb86bf90a88643a21aeb55a1ea6f1802cff759e108335fdb8e14668ffc1ba22d8b60f6c85721025dcb1181aea96cddfbeecd8d5a48aadbe846ad50e68b43d5b3c22b86c033eb5b610e9959efa1eba60a36fc55e28e1daa57899e1323d0351ffe3e5c74ec3fba0eace1f75d6bc8b3d7ba35249565185c83725e4d5aa2c963da4b452704548df931e48c3e951b973c7353b91d11bb65b1557c36a6fdf0cd877b667e78ce7b9342c5ad89999b0d656e344c71bb91b91119734b8114b713dce08899288e88993ab284982348407124ea892334e81de9c189233a347184091347928439a202304792963862f4e5080b5246ce2861248a248c84b181912e5e8c10d1c508105c8cec9030c203cfc80d4718a9c108234d451859da6224062d465a20c2886d882252441569a206456c90a5c816216c14b952b1e45a6bad15df5b6badb5de596406578a3c09a2c81310455c00558405342852e48722427c28f282952226a8c24466064c3d2a4c4aec988c98c224440f4c5664c014450a530e51985e008509f784e9888e69080f4c28d881c9870e4b659c2c41d164e94b0e4bbc182cd5e069e9071c6c2cc920537a43a694524aef9c94524ae9ac4b4e60b0b484c9520b962cc960c312d20b9660c82dade002252a94284dd5a004c649894b12a5215aa0044583d2149cd20e489460c00225a71528cdd0a4a434831210152815c99054c52de9064792983092e4a5489216a6a4209692a82825e93c290907474a52e2449256e0439298fc2829880b4972c1832495c063401ae340909c7023a4241c06a4223c0548581c054855fc0712147f012906ee0252ce5b4042e24548469c05a4235f01e9879f00a987fb203285f720f2849b8088949780c8116e2392a50a223e9c2122e5a3824893cf0c111bbe324468f8a62072fbc81021f28d2192824f0a2227f86e30c4cc57a3c8b5d65a2bbeb7d65a6bbd7388986f6ac8129f9821487c500c89fa9e184283af37a487cf89213a7c4d0c61f2313124c91766880a3e304392be2586187d5f86b0f0491d9df994388ae24be228cc6783a32e9f97232d5d8eae7039aa82c45114de5193238e96187194a488a319b6c82aa59452d63e5ac294524a29bd73524a29a5b30621e2e885218e7a4495a981982c6084e88245cb952b415401220a54131a2cf921890f335859aa126406425ea022a4c7aecc14313d80914117295aa25c8152e5499028b8754d10b0e400490c30c38c255a1019415e2840901e426582c4ccc010a04b0c2d215c01a1ca00a2003581b14400497e66f0597a11240031bcd013430f59990fc4780006005d78b4747045ac1246f9262e967090a4c50c3b4b3a415800796105901eb132396270c0dc748169795db1a9e28a0236a9594293a435036b691504ab8c7e7c4627c067ae14b657bf502e33a645c63eb633696c06d5c0f2df323cd76a2b0065c3d65a6bbd135381e16132b1a1763e665658750c70dcc119267bfc47586e4ca994527acb4b635dfe6af64f972bb6f33cf7f2c4408c41ea329f11c8fbbf197aa6a14ba08b6da51f11f54bc3ea05d874e501d8742500b0e9aa7946952dcb265be6d31c22f74f5e544e051d38abfcdb69df8f12b3ea8f20edd6089e276fb59af9864858b98cad6e06d931b3473ede8150b1a8e7c9666eccec917f73d6e8e62cd2cdd9dbcd59dccdd99c7d9a41574aaa465da9cabb5255ea4af5aed41889f10dc4c572ff24d349f99437837014c56129b017a363de262b8aaa4638073ec574bfa351597ebbd923816e32a4378a51db1525066331899fb880381ced183c6f9ebb52525e292b73f356c7e8a2b2a4388aeaaad1f4a2f1dbe51a0ec7e6028eb17cbd86c3d5f77d342d65aa9afda70e2df2936c31bb1455610870c6ffed66d0dc659957cea2773ec99f34de3ffe2a1b0f279af54583945493124924c164032f5e8474a9357dc9254b24329705ac746c883bbabab4fcc83a641e92af33017ffa5424c1fc9f4f549b6157978e14732091e5935043090620a6a644a1030b8ec82308839c47537c61618809763002880dd2089d944c75725329ba211759cd8bbfbfe2bf8f459c85c6b4757a0e0e05e33181273b0d47ecb3bb1bf635c4c1935bb0a018b2a735044469845c3462af98cd0ce7e9b33ac8f2e4562b140272016c2da0e5a306984da8820e9c739ec60caae15ae5849d5f27480e4899cc37a212d84fcd57b7ada1336a9c58663a492df31f2710994ea84c739ec2725480f4478cc34e5756a50de0fdd91aaa7fc3f1553395936b1953bade7f55bd467154846e4ebf4b14720138d6f4be9e4a1c89be9a9e9479cd54cb68aac3945b979de4ac03939729cead6e6b08565d5f5d228fc9b393976ba658634d2ffbf76aa67e88b8e805f5c22267ff840925f89d95a3ac49840b1748583cfe55d8d986393caf90b0f8cbe2259327299b52de6e9b2b74411f60116813026d42f7de076a5d280bd464ff9cdd0c72551bb2099c4143c88c90abf79a026da00db409ed288ef7e2b974b367976345ca1c17e1a2221017e1262b06bc4f635e04641cbebe34c66127fadfafbefb4c18d0f98ad80239df125dc9cc0dba17af65e0b40cfafeaf3039ba9adeecf19a1efed50e4db6656a7a38fc031be122d6ed8545caa6005f512f2832e0f8e24165bc2b9a412e1c8a93323b061c71d10f2b0588c119f4f4816610ced3ff5a43b455820e7dd713d56ad7f06e259b40ba6315454f576bfdca4bf86a1487036df647d0f6e2cd1fc011efa8d1a448b3e7b66b85aeb721ced9b984668fff0dc011e3ee548d02c4d9b93b4f73c50ece8a1d9c3be51481fbea491ff15db1833d5fd13193a719c4e29d8994f9531603ca3c621ccbf53d0d5982b440cebb441d1b2e9a0f36e86aae27aaad2c14604e0eb4bd5aef3bd096839b3d4ebf848fe2844af05a8bfe2894f3e42a41d65ae28b57b34f8023ebf6e261d7b3703368477cf1b04bc4b544db033b8f2f9f3d69f0d75c3655ad1576cd05eb4671d16b2afbe322d03623f451839dada7e1af56f85a4bac818ef4270a53c4bbaf35f47d1726622ba0a4f1feb98f7732632b7236f25080e3d033a534dd3ff7a913a538d68d95bbcd20bc73d613eb669d009d03b159a18e8dd6bbde25eed0b1e1fa9ccf7189b60990a8d67aa29a4a676dba22945c9d4e8b13c6df0765b4bb010650bb253f86c037b77a7bc264063c2390f86e8f07e5f6c5deaa20b1449d3647436fca992d42380146e5762f0043bf9e33d1d24d615285bd4eb81ed506a5b52322cb0ab5a59b36322d282280bc706dd4084a92edf2a02cf5100308cbe1ecc509a920fbcfa050d3e8c9121938a9eaadd57eb79754f613f074432cbdecbde1b28c8870dd13325056ba1848914798108aabd9df3201f66aef26c5dab28830b340f9c297d4ec79f1567ec3f9add0f5567cf1c0bc72784ea23a0c38be78f7613758130c077392b3ce39efff929a4138efffda797f98d10cd279162bbe6662a7bc9d131f3b273e3ca0b1ed72f012db3531b3c253b6867ca438fcb3f92d562d4405c8dce26d1e56e4d95fd9bb2604ece96440ea4d3372d6c26635f10c3b8f35b27d1c8e40f9e64821dbd58bc7bab990fcaeb1c29dee99bf13fa74cf7c9d7046f7cc671176f7ac08bb7b62614bc9f3734256f7ccc709316dd994cd04d83821af461d79656323e6d891572b2729c3d9bf6f45ceec2371ddd6672b8a2f2ff65d61eb67789fc60cc7d71858110c89dae48b0706fc7cdfde7b5f2f1e28be3e8342b515760d8bf40831f6e4da1f5f575400151c782f2f72d63b229cb23fcc08c624835eb7571839eb29524dd985cc64cf1766cb2e756384c823ac283b4cc8ab97fd67159233c7bbcefe33f0ce69f6e59725c0f1c553e1dd141d829020336893b399cdfe9fc7174f059a47a1974c3ae4f18ab97193b690f45f1500fc3ee07988460968f3f7dd5a80cd22f4141872cdf6d59b14479d680ec700391bb1fbcc59b7ec4e2c40dbe7798a3b3e62cf3382a00df441ad48bc933267dde46c7cf172939c7df67fe11dc58dc94a0c41c315903f4c06bd78b2c7ffe2fbde34fcf7fe7dd60592c97c689280f66f6b68e55fa6d376a63878b2d4b93ceeea7a0b5b56d509d8df1709cf287559ea5c0f75aea853c2bca2ce7d9b27aae1dfa17345156cf88335af420e50dcb1037cd7fb13d5a6b8a3061baf1123b16191c74b24aad1e4c0eea1019c618dd913ea80668f7cb02694cd1ef934a1502adbbc7d6919e9c82851b54ee750663003852905f7cb91c932a6c7d36dd1939a4eb06c53bec0b0730114a6504e6f53addb93190ce1c1a6e672e0218725800027165052eabd15362847520db5c2678332a4099d9249caba1b6a2765fd550838fa6e278b66d0cdf7cb9c74227572c67ab9abf97e0925251639737ddb7cbfdc22254f4a2f7286f3fd524aca3052f6e4941c23a519396dd3879c85df3f8be60f39ebc048ce78e40c00df3f91e4cc83ef9f4d72e6f3fdd349ce04f0fd33276730be81be07f0fdd3899c81f0fd532767217cc7f8feb993d38a94463368c5f7cbdb0c62f1f33671b925922c9a2bc9246732774f8c30d6b217ff853b2d7bf138fc96bd9040b28efb9ebb3502ce571c391042086bd98b0721045bf6e20710b25af6e28142dcb2170f23a42d7bf10208bb652feebdf7fa849e7f426f591d41fea05dd6f945387a967de03da1e700840ea465f28fc0e4fbc1afa851ffc8ef191dc8c8c3897cdf83d07fb4cc8bda7db4db5ab64304ada365f25d8429348e96c96f1172e084be5123a4d13d7227d432f938610c9fee910f0b653cbf1383812cdcb296499934caf747910fb7991933d50b23e585e72d05b42e7f628e14f29d211423e3771bf9ca787e2706035919bfe377ec2d1168bee20f974552d63fbd73cc2aaac8d3a5d3f9503b9f372b48784f82a0744a1c949c8d1d25679efb19e034f9ed5872fb16bb04288b76ddd3dfed3b5cb7284f2a27839dd2c40a96265634463de8b64c6121636f52b92737b0d09b5a816573e33d410110b727628a620879b72965785145f5b3e930850a268eacb00e062832e0d00218cf16832e5697c30b567035dce82a1423bbcb622647e9ce1ac5000a4a9525765256a4fa3dcc749d59247ff4cb271d5bbf14228d724b5c6ea81e6de4249747e924f74fe92e2567ef61da77fd6e45ce5ab9bf795a4461b2e0318964bd26f898f473ff6a1281f2b13bae56a4547a7611bb70b9803daf862145a812d0f1e7cf55572a3696dddddddd6ddbe774fa7dbfb6b6f65ba755f38c3ab7ecd587d27be9a536c4c193690fb073e76b02b025ead8607dcb064eeb719ea8c67aa21a51ed9600e4e05705f0fbe2bdbcbca46a0f60fbe8515385bfd0ea869def156d6b0847b7e8bdf7c29e5e1185fb9d5738adf7d602c44c7136707cf15e3c17a60f43017ccfde1a02bf8648721e276c7d553deda732e36f8af3ed8b6097e98f3aa432a561fd19b64a66d994aae8c5e0d0eaaf7889f22a1cc133f8351cef531e618f63f232f8371c8932d8e2df5b22d03085c9cbff3356cdfa421bfa37f457d67ed35fd1bf593db5e258f3f76d8b849ba7dff269de8ae3ab52d17e553d15476a2180eb278a807f3e7dfbaa709c0ffb06c8c70fb0224d9216f46da81a41f5d75b10a0a28e7dfaa1ce4f1d2b8af0611acaf1be4aa44902b6782ba2201f8b28f45b1c93375e11c7e4e1803d6d8d00be15bb46d431f3cdd3887445c2ea6f68ad965afc2a6f9160452a65e225a18a93da2b449f867c4a85a4cce98f4233beb7c16f439b57a96c7e35a3e4acdfd2bc156ffef5ab9bd0cad5df84214d92fa2aa4fcfaf6fc0a6992d8a709e71629b3f621d0a2b5795815dbe63f1b5588821d01c46f13daef967d16344e73fc0051563dfefe5ac511c7e4e11bdfdb5fad26ab5b0b50551634497e86344ee0e4d59f351c572fbeac550c81671c621105fb9ffdefad5d893a66c631237fdfc1f72bf91f20caf65b43aaaf21fe198e3b4211b0d8ddc1afc29147fe44a43cc27e8a38262f7f3fe2800d7d9e6dbe10fc0ec251044f19f662388a4097611f86e38e5b86e5192dbae500a2fc5d14d67272c2aec14211b29869c128ee05d579469dbc5a612f5b4338646b888a48727ec72ddfa7e138793280d69e012d85fd0d27cd79d91a827d4e889d6021a639290b920fa8c4ca97318bd63945030100080053160000201008054522912048a250ce940f14000a76a2445e4c2c8f06226114c53010c6300883a0444000008000400c30c621c2030020601e2a9ee1a4a7b823de2400c56b11d71071f58c42fc010e1315ccab8c25ea7c34de400f54ed528812b331020dea9671e63394e7e9a91172839dc23295c5ca966e8c46a152a51a2057b3eacb163557abc592afa09390c2f5170772394d301d3a738507756c522bc0179ff1523f8c3a7598eb9886e0e124b934e7b690ba6c3dc1f8feceac465e0594db5ac53ac19d906a0d4c57c22e689ff251f928ec580e699efcd0aa1e1fcb32052202999c7c59fb756d19c231dad5027b3cd842969a852964bad8e03b548eb21bf07421127c0eb79ffdde2ef6d6dfe2f73e9dd05ecbdf4f75c6cc49a6691c8e8cfa6dc7801a18d301f1e3d8ad7d5c1d62629e9511c34d1e3e8ea99f3d2e199f6505d800b158d479a85b3d353f32b3f136436a5967dbe8b81c12e6b83df8dba03ad6999ce7fa2e25b47129b6f8226073ac9b843f62ec3d37b9db25b04bfe52c0c0ed4f68a8739c5910c5040d9126aa65b8fca92c9cc44c7481bf40a125abcec45d8d18a3e32d518113ffe7d63158cfe115be32c2ceb5a079cc2620da39dad06c603535321a0482b341c5edd9405e3f351fb1ffaf5e404172aeab110f11fc2c6f5031de247913b11156c8d622211794608cd8b7c90575281748557ef0597ec01854da26453e2621caccaeaa0d749b0b1aca0815a334e5f02290f1d89eaf0bf775276a48e933c596f128a7b518b532ae4ad7a1c9765786cabba6d03bbad4b2814114d21ff4b893b6ee9e018085c5d98ba49433304783365f0ce5bb8ab7d47770aa9f07b562a5fea3fce97c50573ea6b6ac99d3d779082676431f83674b7583821a389a16d4824adb4c01db785133b770f30e4151814db9bcffea9f573e7e43d271d285e311c54950401e7775841255af305cef351f1d92600dfdb4112ba90583eb76a01ee5e7a085913e6a0c413dbd7ec19196eda868a2d4691449f313d323ad1a55f30f61822a17f561c4097abd4640ac07aa724a9911162fcb045140c21a2308431dfc83fa102a2d1a13ce5d09961932f3ac70599eaae5d291386945897ad3320ee904a695778a5ffd21d4441824755407ea9bfa8d54ee1d8eacd707dc196f1c538e0ef464fbe5096753823d9c2f4ab09fe210753e02979bd0bad201390514e640730e5a7a998dae14186198cc76086608be2990c26654a94281c8fc222c193b359302f9218ad7f173d297cf2978fdc8014cfe24a0818a082b3ad32557a6b2add13f82b68c764a5f639e82bf4dac8af095bd9f60162387fa6230d840b64729a501e2e2511ebc00610e55b699ce627eace0f8da492e0dd3b86f473fd1e97b4a89585a5065681845ad2ba9a277f9711096a03b6682e057c1d5c620b24a33c86a5402dfb7323402ed81ed74950a84607985ca43ddaee05a46bd57d4d92478e18e2e53edf34de01d74c1259046bc12a2e8a2f625b90cdc3dbe4f8682001b2c2164eecd0f0c02749c0a757a011c2cffca00c8fcd016ba1370e64d9bd9fc60c9b219f622e5fc70bf46d794785e2fff333a7b014a9df3343b386affe83c1ef0db22f2d990eee036ccd49a90ac4ce87b9a897db42f77ee24a3718e728f36380f40548c0b7930ee0f5bdc06f927a8388187801ad81a894fcbb348532a22929c92a43eb42e523d00e2d52fe64a34f6a0cdf303656248084bfb88cd838256c4b8e7b8160b4bb347c36ad0f8385630f547de1414445421c505b48d4ea82273e7881c6edde94f6a6d4e90c883e2fa5c8230cf6ed07b039d24886ccccb4ccdbe35300fb44056a276397d50da1d5d9f0803553a63d5bc27824418da46aaa03a30afdc2b561e3c32efaf434905453121d45208c31ab2fb4087361caf7c79b8ec71de81e43b2fa581cbe6ef046f312b57047dd3f2a26c9aff05a971c991d842d2770b2f8c39f91043127b30092ab779a06a2e446f01dc210c714fd72a6f85408f1900e5e224c3f93fdc603f1ede5ff02cf9b0f314e6d3520bf8cf90f7ffd9bc7bc52bbfdea6a2a05c7e0ec425292035ac37ec11fa7747286e56859cb6bf02c81d6bd027db6d2433f9c0050a855a02e3d15ee35b83c7be37e571ffc2dc5e0c7b5b10a8bf2dc146f8fbd03a58ebb46f4804b9d6875b3af32484fa83e9d2daea382de3a6cd0cab45dcf018bacae65df06b25741b3c4933458195c0d401762921e4da690680c54de81e1bacc5c8417dd042d0dab597cf0a4b9dbb2c96fbbf80fcd59a9e158c5c083a86fdc2fe98e9a3266ee210a2e4aec2d0dccd67671198e9dfa56c942af118bffab102414a4bf1e55b9c578034cf661a079c70f4e8ca9c8047dbba20f2848987efae3b16c581bba6f3e73b5933ead3aa5f3463b08cab316277a3ea9573539aa357c7fe01c78980b7740bf23b98ce3a8dc4599864e760b33afccadcbd5b6f2acac20eb7b32dddb789f988ff4df588b68f79b177f0e806d09f648cd5028d6d76132ca5a885dde2f0a0c2efe6a634aec4b719fc1f6a3ae87e7649f1bbb98953bd7a0d552449ce22453673407fa8150591242311be9b9b4eb760c9fc2b286c00745b8c7597663e256bb3ee8177dbdc74a730c11bef856100c4226f28b5b0fceca7dc54422a416714d110a33038e5260ebd419de472d6a5b67ed9c391b23f0eda8d0e0e13c7c2853f8ad7be74e60b42cad5341048b7ce81463825221a484799850219533bc51875ddf47b4ca40d1ad12c8178032e66d4e36d40a698fcd8c3fd77b989e1904d78ece82c698671aec10050af3b7c70b9a90401f88bdf88c4a0597e5bb3350e9bd1bfe710d471a578a0cc25b9690c753d2a6b4c82f27ba56bfd27903c0c6e166d6e59733a7cb28d88985b4bc5286e81aadeb868f5077a7570862b9e5ae97127c0072e1c0cebe74a8150ab20682c8be6891675b7794ebe246e529075b204e4831ac836492f87d77061b989554e26afa26625ff930aae0749661ffe6da9beea606804dea0c0d674661ad46817105e03b9159d7a6060060b8ccab806f4877f8b3b2e64a5ebae89d66619accaf17e75d316654bf5bb19cb4df16d1112deb430fa0a1273bf84780bd64d0545650acf062fc76398f8ae3bc7aa98885b6033e6c6e662e49fa635a44c6a3ba37a29b4680f809814bc0fcdd0411a991e2e8b6d7cfdd05e7ea7f61128615544ecca3b7070796906da74a88d08e2fe0fdf6dbf4903918d355a6f1b1de434826a57faf2a106dfb90c193cf29889b4d13e91165325a0323df97be225f24f8cba86e0a9a42b2c2241fd53bcc1b2ece396b63bcd173f9d65e1a006393d69b9bff59aef6988441d95e75da2e475db7aad37a3cc7358877d8d8e1a0c5277f0f9e9dce3420e6d845312a55868bfcb1a325fd8ddb2ad9bd84b193705a998052b2c5a15d87d9a4e44a9c896be2c411d54f8084e04bf54851dd9fb75b2b00d3354577c8ba6abd7bd7e0af30db8c53aa9a6e9dd57c5f4fc350da8c85779e807f74cf6d0da5f5e59c21871c950560e2140fdf0981352e9e90e7a583ab001e8c778d6a27fb72541e0ee09b1eed23a25955ee7babb012de53d520152d9e26035ba940bd8e6d49584c776410581ba25e974d99908fc7dbad144446e6802e4da6dc7e262f850e8b1fb8f2095c8a21b94662b030da423c0a71954357a4478ae0be217666983b71943cf88786ac8140eaff5c5aad4506c4ba2578dfd963d40f59bfb2559bfb67a3acf8df8a6b8107673590112b4363232d5c9f6d9e285c84c3403fd1626504d482f389e611d288499ca2b507ddd7e4b53e8d605af32240aafdc5596ef47a032bd0b0b81a44f43e3c55e5eb239435a4add80f69b2ba62c94052b5757db5871d0ec21afb25b8af069451896ff0bacaf190639592c922e7633b89d95baf5edf43a8dd8420d1a83b52e1cd7396a4d5911ceb46e2d6c9110228fa1c8ec5fa37b4800605ae46042b0d64ba1768f4bc575d42048e88388cd3a41d25db6d0138a1525125e2c2104ac184e408c4d6684d50bd76c0d94738e3431acd84dd4ee23b03b498c2868d0f48dbbeff41a465348aaeaee8d9fec8d15c5c4978ef4e0e9e844f5340f3e6e51d3611d6c06feb3c58bd23580596c05287dc55a97542ea49f399b4b46ce7901afc72b5a75238dbb76e4e3c949d22e57d9d1b9aecada9ca3cd45a2bc5ce0839217f75c9eb6e2cce0303998c1248f74a56da482f5f0c83b7c843e40d22525eff1f91e89dd83104fa7106eab29711ee9362bfe3016423b284073fe8240a48754685fc9f236d7e629d240c7dc2809cf1f93d6568c81bdff14737abe50c2c5520c4f1ae0fcfd551251b8c83fd174ea32fa6d3000055629bf282a50332adf493dbb5b9c27ec2f6c8b511098e104605dda13916f2fdd0052367b9552496c84e8c16e3e80c5040e50795e74cce212454ed77ae72f2b3f415fc986d9453b71088f37f3c5f5b5d8a8e09715b3c17690e2ff764007aae5c448745daba094fdb026bfd886f4201c377fb1f537e0e6eff0fc05dc3e90d88d54dc46b5776b3113ae155afa6ccad3e1ae70ec94acaed9d56ae754972d98c1d991650789b1eb53c738350a1fd703eee8598edeae163998e7f0a1a0ee7264e9cc211ffa84b7d432850f650107dc0f82a79add6c3bdae9ff15a0841cd1a3f0bc662c7098c02f600b28b0eab2d49dc8a0a62aa33f5c461ad20de60d6174435ad1f68129741f2089f8fda9e16e9c83db7891d01f7939392ee0bbb84cc79255bc35cd67321db060d491c173a484a3799e45e747cc574c8b77ef43c3b36daa331bb7e66e3361ca7515b5197041b51466a9fcca91da1772e9b0ef666ea4ca5db290c16aaf7f89224f1355f152be8dc74bd3b39e357280537e95d46c7898b03a5ac58a68ce250b8a11978e0e2af23b964840cb451ce465a2c5937532dc0849dc7fd3045bf5bebda72ae6adfd49192c3f4ffc226a8c07fc304f0d9f82723280cafb478dfef2e2c44398be84c7251dc93aafa5081fd8ab2737deca65192005fb82beb9135ea747124979644638f0fd9a5a5671331ffda8d6d5c91fa33d1e1b68d9c3d57a600fa69f892005adfeded699b598accf5c752d37129422a39557cb8e0fe9a0076927ae408893c3c1e9a86382ba0049f08af8342f1921488a1e23fcf45743acd705ca3d86ddc1057ba8309d2beeb9deb4dd92b6e52845a92fdde348f03ef8aec5dc402127c6046c339e464af788723eea6c9efbb033a95ceeff8a2ce52f52e762bd5858af35abeb2e81821c9d1fe12739d27f4b3d5b49bd095e8fb0d78ef1db44b32ac3fad7b1c1e7a21dc091ca5e459c406db7422ed5e0bfda96eaff7bf09a262ed55828d1380f6c0519933ba796a1d4aad02a2e347a8fa2e920238d10cb1a2990b4816b14d29c2386d58ac2680caeabe030380094fe12aee8f191f16197989b68141c08c5cc7c370fe531208bc94c2be6a00b2603f70935aa1600bad21b0c3fbd48c9b4c3305a0187a5afdeeb7d20ee721a89d7f484cf9c414f4543e36874d3930470ddc5e127e7623017a35970b0750e28f0292396c278e1d903b822382e6e0e002ea17941436b8d567f0b21dd2fc6954e15648f9eb15d2aab68e074aa6dc63056356c005fee4b0183bddb77b5e301ac513195238bde019f7bb8a3ff5125aa0440c13a4c9001b11a8d3b2498486430b186e89d776e35022c7480d954277670e105c7174e08803a8ea58ef0d4c92bfade65b777e31b639ce0c84ee0e9199b9fa9729929e9705195320da24a2ad920bec03425acdb43ff6c3e3f45c4a5158706b9769e2539289b5e2cd4e48d6a24ba53762ac5f81ee8a9144f36a0f02904312bc15276d87615a262adaa04b37a13cff2d596213e10766c94aa831a7dd4efe596d5e4798b252661894c14900affb55d1daa845b4c137e8a483f1f998fa895390cd6cca76ca2c74e813b2f2174ef3fab5a4e47d223119696e8e412ce39fb79a6228e855a6f1bbcc1421105856cc8daddbb67978bc314f1c242c5b918afc452f7a6c255171ab70717e1ea0a85bd8ff6b628d370fc8c30b8374211edab7cb66c50ed826af644cb63180ef6e25d466c3163092198d4ae6cda31ecca72b12bacf94824211e0aef0be2895696766242acb361c5954024f125617357a4be428f06cff169c52d997fd77dea139d335d674b840863675ef8a054c43a180ca450ffc0d9c70fce3c5274add7192a46543466762c435bfee34dbfa7165d5f1b5988ebb39fd0d50d5681ed52f3efbcc696d3190f52695cda900528a2b8984db09c348fe15a47ac4c246c059dfd60acbb451df947056de20cc849a61520f5e44121c26bf5c2cfbecdb584085b35c3d02741058c295ac5e5ca789345091408cf2cb932bf54bc70572f6dfcd25399ec9775c3c6056845a1564443927d0c3adf87d39b9e2cab291e916df7672d22253a4ae34f4af6225988da017809c98f0ded72c731996002c429bd747f4009567c31a6738814e0f7ac54ccc7b1053d97446e62e9fe6d70da4b28715448322f0198b70901d7a4501150eb6fde39c50117541c0ed44418069cb374a57f897c574ab2ccf8e25fd76f27ab03f336cef42409c9d09037062b5001a2ab90bc9c11004bb40f8892e2ab433099c5fd98bedaec6ba60ab2a46afa66e6521b64f3d60d9abe19ec6f4f23009b3da310e110c0d4ff3547338040c445ada1963182ca1c40d260bc9d267f0eef04c60ba462174f0cd76410f8deee79a6ec05565bcf6ee4f26db01944d6b4d8c7acd8bf8043a3f8b3a988b2d6ff4c58fb6049aa5dea872fa2194b50651707332d7a8becacdc34d658f2433117b3575ef0a5daf4ea672532595dad0f24bde8625b7cc541c1d24c7e405bf41f923d33cff94a079b744b4d3f7432a922e38d148d6ad2acba6dd83e13393c974b10051577335a208280fa91bb25b17c319bacbceac87f683244adf25745e3c019079dffee58c8757ab8b3c2baee55632357be3f35ce27c3217207d21cc87a3055e8b020a918c5fa022e273415cf1619085547a36505de091f75492417653afff8298881eb41d78952907e359a91429053dff9ec26e5e5e379d2b04c849c159594711f13a6d0aa3422c4f13dfa74ced44cfc5a29561d8820546188d62968947c16807f426f3b65030e077264ab8270017742edf30ecc2981864e933b12466ef1a5a5f0e81f3eabff4227b62a4dac76549b1e58859ee124ac4737721501af323c6c2beb7f47778c0e1ce18d5a205a8eae214c8f803c95a4c26e49c725cbbd334f6b289498f64f7207a7722e44ffef3d996286420666fded94b2be52e5fb66c28989689a519672fdef99c64b4a62d43d995f0f4b0b2454a381acaf0bd84be006c5c0c735d8ed115c19d8f52f37056656655b1cedd34569e43c83ea4eb916ccc402cf52e82fcf9402f6aebd900dec9d6fd50d0eabb9b008237d5c294838d69005bafac8b04285222d1cc99033accbcd4d2bd20604e4168682a7083be0b7395e58db8a4ac925e5ab2bd4031b01ae508e078bde5760db4ae40965fccc6cdedae0b0aef19d669e062bf324dc1cd765710026ae02a4e80a762255a2600d0594d43d028a5d41c42ebd51eeb3ccecd828a9a1cd5dee69da11e4505fb9767b5cdebf405bdad229f1f64dc5941ba8339eaa5393c3f8d3605d9266554bc29db51aceeea825f7eaae273c728d8c2481b051f80f2b1ea9216ccab3164e58540473978ae83b7af95e90da76b1ab4cd3b5fe8da89fb96bdf37485ee181735411d424720398aa6a1db14a984868585e150b440cfd7f9f7c69c2fdaf70b527b8d9eab9b76aae9221b75e3c77f494ebb9ce6d91cecdd670dd2bb9a546b8b518aef113eeb305b73d9d2b53cdbd51e5968f73d562b963cfb90feb5ced146e5625f7b686ab34c2ad8be18e3f703daf735b92b91955aefb7a6ec928b71ecf35f29cfbb4c26d277265d6706f6ab8e510b28e1bd0b2d77498c833abbc915fd2f52ec8dccbc6d920d4abd1208fe45ce0b250b9b3e95cbbf55cb238771d8a2bf639d7a1c6dd42e662ade7da68b8cb225cfa11aeb873ee87329765928b4dcf7da3e5928f7369e0b9c74eb8ce8b5c5614ee0c0dd7be864b2ee0ae87e78a3ee692c375f30ac2a3815afe9a0d13dc8fe82e6d4d1569bd2b24f7b1e33728f2566cca3bb9d7b86cc8dc190aae6d2d975ccc5d07cf157fce752a71b7a17331ebb8366aee32712e6d0c57ec84fb59c1659fcec55073df50b9e4c7b93458eeb173aec3752e1b853b4bc9b55dc3258970d761b8e21fb8ceb8723fe5c075bc03d70917ee678e5ca7bb721d70e17ec489ebb41bd72177eee75cb88e76e33a73e47ecc99eb7807ae134edc8f38b84e77e63ae6c2fd9c0bd7c96eae43aedc4f39709decc475c4c5fd8c23d7f92a978dce9da0c17157a468dc55a420f775cbc11d38b4e61e6702dcb73b2f77248e9fd38ebbf16e9709fe0e24d2d38b138323af37a3e6a250f20ad4c10d1db8e7ceb386b9e74d0737eee896bbcf1be3def7badcb8833bee7c66807bdeeae0868edcb9fb9971eef9a69f1b3a70c79de786b8e79b4e6edcd1057775ca955ce65e19e7d6e3b9c68fb84fd6b9ad34ae67bed3eaca900c285a7d32bb80f40766e40460d041a37062643f43c9e30eac55394fabc488ac2e075cbd0374f89fc44d96ae45948b6baf00335e7ddbaf7e0a91e88ed90af046e27ac6c681c0755d964b34862b76763fa85d96691783eabed1bba4c32e0dd23d76769d2f5d56a43b83eedad7bb2461770dd2157fca752a72b7a25dac75d746e92e8bbbf4b1ae181d66ff0e68e680accec6aa7da679c0d733a5eebeb2cf6b47feefae8777e946bbf591aebab85b4fd4ad17cf551fc3ad17e9d645baea63dd3a51b76edc553fead61377eb225df5f16ebd58b73eeaaa1377eb8bbbf5e2aeba086e7d71dcfab8ab7ed4ad2beed689baea63dd3ab16e7db4ab2eead61375eb475df5e26e9d58b72ede5517ebd68be6d6c771d58bba7522ddba78575da45b2fd6ad8bbaeac6ddfaa26ebdb8ab2ed2ad17efd6c7baea23b37a750ebaeaba779672edbf73b3b9bb59efae2c5737dbad9b75ebcace55d63f2bcd6eda02b03f9e70a7acff780a1700cae76acb8abb9b9883b86331f6f76556d9ed93fc3bba6446f7322a27250e7c4d555cde4dacfb96dcb63454249da7b8550e5a9e07e1968763bcd423eb70fded1ac9f51432e5799b988b936d48e7fee8cc022ab1d45dc0825c4a6931c7312ffb5327a2d1f779d8266d7b76898486274b65c671eee78f39d3e875fe741b97818a3f033c7b780c6b834027e702cac8775e14c7008e20c7243e4388b2434f0489762df0f239beb30d23241e41a731e16267a0122c8a55d327e912595f0dbe95d22b92eca805f2ac82086590fa604ed2343459ffa3a406a552a2c3bd6d7566401112ad583716b31d0bb980cc86c517f288eed25555ec23907f9bc5a126bf14fa1184a75191e52ebb065ad6c3bc683d45c73649dda35b34668eabeaaeef6122dd6ded87b95404e01f931d389a7501b607b8ddfaa0311dc9819aa210ea0361e95b7fd701c1e02d5f802854c72d004377f424e12b55bb2a376a737dec44a98329af9e9f37ffe48cd1223610fc85e6b06898c25018d1deb4db9889ecd2858d4efc1f853070482af85bd9302d4d14f67c766881ac1cf713de6f713c717b7db0da045ed98f8721124e73e72b5dc395683810e578e946c81f83f0f31aa28007c2c40e35b41c9b828719d6ebcfd42d0a266bfbb5123f799b6875e13c9c5808032874a00302b802e0a30dc3fe95c7229514f5fa60fcbb2760c1a44fbb803092635728db199815b5d6c5402a7c6393077134b628501e24462ddfe0402dd3882917568a5cfe64bbbb92556ebec3874d6ad2d8cfe2d3c3a4cfe06b900837d40ab480d6571dee47ede586ec9822c81a222cdb994541b38b1fcac51d67465ecb2e7d340c31ab9d67146b127d010161b8cafcf1fa59d75804d3b2d7afcf85d6f5f351ef277d61e8ba2dbfa8247af355cb1a8e0f81894438140755ab222c3d7a1bb8215a3e897c41d8add9c99249a1d8196725d944ee2282afc698d892f7e8f7423e61029a533e467295673a8c7c11db0d79eeb4070f04004fa32d590cb8d77dccd9c8b0cd233ab6f0ec08ef4213785533da3191cea2df1239a270fe6a8e5ada0f51a61f836492936facb589d7d0f75946f2d976ab8ae1018d8091f3ba9a0453ee74e7e0c5399be1709c401e26a13eb68f5ca6032e5a534978c3926a4455d2384626dc7f4465222d29a39e8a88b6fe74c7870dfed349e766bdcfe5f1b2b66549572d51db39557594694a26f5f40271a5391e049d816a3d8284aaf6e650c1a13aca4e1c4777c98cc28c958b300b10004adf2357faf1c895ea1ef260a7b4cc2cf8739e909a15fffed9ccc93a6bd6fcf9e7c273d60b71093d94a53611a5d5d705cacaf988ce3f3cfade31fa7478b8c7a9d0ba8462678666a8c03dbca3e48bcad860b6358ee1c6a7662fbfdef192bc1337916b858c26c0337a22353d4f9233ae40b32b61bf84e58c513097ceeb619bc36feb059adca577fa7dd9de1ed0f9b40e318eda88697667c423a2273f479d0bcc50d731323d6c1c5151209207df97c42940572eb946caded622385fe4c7846891ce109fd95a1fec2b4de8ac9669a0c0db7d0c6c6e70821a2919f59b0bfe7ff5ebc8a3c541140014eeb2ee547279252a1744d92e3209d88c82d1c8048c7344d4eada0f81c07bd3381ea08fb9c9f4133b2411562f040e898cf642a099f02a0d2f2f299eab67dc88af2a2d9977ac43038c09f20c1989ed5f0890519487ce0a7c1a886f7999b3cbeb130861bed858866e2c5f31ece0595323164f02e0676516005c501d0f263d8376d2d51fe25420da5450d1aada8d7046da027ad0e5fa06d5b112bd88e6896351a92b86fadba3c84142b5d5aa3bf294900403919f0884ec9618671deba8ed7f9b23c30d7006039463f34b6cc1a01d9e3ea812bd8585540888324110f2b4d00ca2215de44dbadf6d1e8e2d8066759b572301fcc0b28b9309404829b2de02478bf597726c9c546b4110c23e73c7fbca9f420c613f81a187025a7e44804cec10c90c0c674301e4aeda6f5278e049e2e491a0d630f86bd99e3d46f35d59769d88696b0b4a968e43c86dc2c74cf022b839111ca503235dde88ceeb80446a2ed691f14ae40361854eaec05ac05df03ac15aba62270c699b6c6166428c24c6b93c9ec1be6f5eb058377e9ed6f9a8cac6834575ddb347d29f86da4f7d8db63e2a00a0a4e4a030db65a4e6c8e10f46f8096b4e4d00595c7892c8e2f33420bafac46949eea2bee789248be7960c438196724474d0bbc10189e164014766c1ebdb94e314055d29b8add437dacec1313c543acd76563db81fa176c9073efb338eea9dce5b572d41666c235995d815e5185ba41d8a0c48403b449c202a3b60b241d8fff46937fe4b983cc2d8e8dff5b816d577a44e9bfd6168028d1041e1a4c5b952dd3cf35fe3295fbebe634542d9c7ef00fd81cf4c88cafdfc9060052e69330bebf42a049aba8be8baa31bdf7c7ecc8b503c31c787e1581c8d598da6c89c705ffc1c222ed6aa8d57dcb7a290effadf900ff31de2c0fbb676895afa90f70258d0a71ec73059ffb5600249f98780373248ec27fa641cb14354041087718e7078576b11caa67036db36e53f846127a93187621ba24d4d61df20c202b14ff7c466f7500e11e4beb126411ad184e3835b930fc3926341ab95e80ed81df1610aa3e7057d467fb0d52806e3fee0ef9425bb0943794e6cd03bdc6a5056e8145af734d3927bb82e095c01fe1a0c04f6716c95caf647c75e84d9d2430885900184c396e48fcd9e48fdc8e00caa1248ca2b74d6bc29308a17e186b0c5bfc7d4b66aea236d217cbeea07557a4c954af8740f958a917c7ff860500040e64b8c0b62e35ff88bdbce45eb4839f89d4da331d015de665882f0ac6f6ee08d19776e99292191dc81cc629522939f6f2b9287d50076bb5d9a0e98e7ae9b135a0b9c6ac563537917716ac193b93a59241736aa79d33311447a87d360615b828681acaedcda313b45190c70151336b72eb1cfc265fe1d2594292ac40a597fefa52375de516e192c62e2684c4b34b7b5dbe610083db3d0edb6f553274a54c6a961036bb544c0542963f91caf1270f90d952692293e50a74dba8a83b461ee71565ed9c88115c7ccac2bac77a3b0e2c433ff7782c368b7bd986fb227e486322527243f286a4f07fe59712178c11584bec2258a312de4b2664afa1f24acdc5802b9a818c0b52fd273b7ee23e48d7de339c26a333d63703b29c3259d39b903a1bc44613218fe0529a48d14df250de03bf5ca2d11c6004e73ce0bdd0f4c912a87b99261c0605223112dc0b25fdb8364bd2ed34a2d811171ab75049cb83735106b15f46d2a8721884fd3f325828e424fd4af106d0a06ea6b2fe6401f9d02cf4fd49c95454b5a3db6cfb124270c6204084a50a61ec573af88c59e729ecf22664d030463157826dd8c28cabf32faeda8dca59d91a51dfb2e079ba0052835af5455c44be79b089c8547b55477566e4f5b060bd08ada47e5115bfda219880255e71040af662613ad542c26089b555e506b5233b3c7715421a48f8be85131b16edae47f65332310eb610705d085656d474fb04d8c30adc650332f72831e1d7efead11db5af7da7f17a81ad842f8235b6d0d8e229238942a4d59e6353e48cbfb7b2bda8441e4a3dbed701462e5a23006d25e29f03f902f5637c39465a676151b3639d11543ad6fd4f4e777404771404691acfef1e7a86420f25151afb8f136aec79f603e61154d903557a73ea403db29cbf00ccad6910e7dce5d2940012604fd02c06fd8ca3818f3ff60de0b3931d0f63ffd6f64ec873bb9a2d397836092ec94659414530c16e45e59c639b81ee6d1bfd28719b71302eacab1612c01e0befb5dd82276251e757c78ba5335ba9a5c312fa59446f46102d29deb337bd8871b7d227153706ee8078d2aed29be6c3af59b2abaa5e69490366769caa94bd8949e0cad9e7e8e8372f8dc84d4ee8d0501e8d6d7f786f9c4f4d887e6ee126617b44c3da5221cdf06bd198662153c165623142c21da84b33be1ed56c8e5453fc1d4405443348ded5560ab81629b5a91d9f7942fa1394cab3c5aeb6daf7bf0629831643e089b2ae303028e00e6f99874ab9c0b15296c770e354ed06062a9edc6548924aef9f4e372353aa6cb452abb627ed7c0b9b38a5fc5249ab0d65279ca9093548b43e90e3582b0fa438affce7d0f9425e55f04e7459e357ce13b0c5a86231d575df13051474c77f2321ec968e0f13295fc3b1466680acc161428199faa9b686238a89b173695baa0c4903bdb95a0d4e75f8aa91ba9988ea28b35ffeb828cf62d0e540e838936799828be6d82c1ddaa667679324d2d023825d85c7a5970ab9d8f554588f07ed252216a50650923294f19e34073304185e80dd47e6b20a46f422cd5fe5db19f49267c80d61ae5d6408e19606dc0d2c074741359ef1c8a58aed5830213eb68f4cc74249e3176104347aa6a26e24f88df50c2fd6e3a9bed2e6d951e4595482117152e8d8d5baac5763e29fefe3854059158354944eb4cf69849dd9361fbd6ffb44961a9dba68b9b43d2ff5d83548e78f108fbc9490bf321c0f82428180ddd87a5677f52e7352f5106c63252c6752669b831fcc6aca9e09f206cf581d2ddfe919e3edf3f821f5ad8d2a95e5e61901e2426dfd0be66aea15cc66e664c40c2d5d2f1140d4e536977bf9b14da255be28f1fdfa271fd8c8a120d3f584b811b5e31dd288f143e99390df0e93586a6b8506f963cf80c65e6505cfc9f641c73978497965ade8cd4ae090adab87873d60820a2370ebee60258673a42e983973617206111c2fd160a5dd3c181efc6b1924cf0b80f6ec18ca7260ebdac5c1cc13814a7982bc7dcea17ff94f6361250ec1b34127d4a27288d402805864e1a81cb6a1f97d108d4f20ccb53a3b2401dbc68a4dd213a70b9cade1e7584e55cfebd014839af1ec8fd78016e2c369799b9e1ae5276e8d9a28fa6d4b85d48e496613202416d681111d6851f847089616584711b16ff0aee35ea05581c2211bc7e6a084057d31d85ed911abeeffe8b97496a3c339405a60ae0fac7c9e7377228c3de62a43874182330ac31829b2c95bd97807de1f9be9546f81cc30e39b670b9e081fe176e18c3b027b802f30acfe20386ca6b0027e3964340bdb521b5b2b39f65af6ca236293e60e95921815d572af25a7c5526e48cf1b2770bd6be714bd50446c16f421e5b02abe41b953baaa13156828ed74a035c99159abe6680f2d080c1b310dc55d97106267cec57f8c81c4e0309a221bef785af42836197827682710585b2c85e28be38ce8509fb597b4997049aa7a0064909fa1bb8f4b7c1024c40ad344badb1bfa6c2e42e840a618a442a0180dcbaaab63e49f001301590c921bb7df448200c90af1972e6d5cf8229340cc2d3ea22746ecc80684fa8116a6e0238b287467b23bcd0cf498a9e33aea60a90b381703cc12f0b9658a5c8dac84cb9c3063baf6dc61f56beebbf5879aedc629d75cc5e8f5d659e64919eab78607debf878293f59e7d70021a761d979b5080299a06e48340b562afebe27452ad6851082f3d8c3c1697581df982c2aa20ea71569701dfc6fdc07599c192be8e0503939081d75ac0e64159a9a3b203f676c4b43fa9ee685a434acccfd20d4d355745d98a50c17d86a683b5bcdcafdf40afcd2e8d408a67cb3906a28b395031b6d79509400f549fde54b52077066a0ce86198e8a906c11dfd624a994ec6d0f39853a1aceaad569b265a73a109a8659a53ad4bf82d5b173604e3d9c1595ad18f7f3873abec579c3a6ee0350ca616ae436ffc20d0273a5e38a1ca9352fd10a87ade88f4e7d54e47068c37ebd8da0b30c94e85146c394ed2dca0348e5563119cbf4782135079092b51c046d58a5a0aee3e2522c88a2a958d282c9abd84d2db814d3005098e35286679a0c104b4896367df22a4b131ad26fb93042838fa5323ca8e31bb86ade7f2e2289a9e679dc17714f4f91979d5f90826ffb1861d7990d1e1cc9e4de0b808f27ee1bc34c29c0a0f49d9d16297789977e735c4b94db513174f5945e65147f771f9b6d7135333e91dd8df866c0771b2cc3a75c2948b2f6389d7e7442f2a95574642910bb0f42cf435148be4c0440d2464a0f8130e880b4b1e1c2b93cd09b1daaab771c957d70a587f2b33d151cae2109e078d59e0a1025c355d1c1007ae70e1a25a19ad15356d31682de88015276515f3c934be7422653d653ec9c0e73e5068f3db1c87a1b30c05301601b8cc053fd90e9b4f7000e228259675d4857180b5244e59cd16e162c10b404b09da65a33f88fcd00b00763b1133e28dfe4ba6ef6697a18223cd3614f5d414889f26972d8751fa4d195b242f862a71288b312602bae01b14e1188ccee32009e0967fc1747e31fb590b015e0a940d3718785669a97469c367b0b2cc5c16993d792fd6956b61788f603d43b0245e862f0f6b790e0435eab92bfb0edb0fc9d4fe62f8c614e94f6245223d85dde49d2067ff7e3a48daa893c2fe4b29564a81069515a6cdcc1440fe2741504e11d73f331d68a6f601d4676cb040c5e057efd84ba0f5110706544e90886b960a35838168eed2559560489701c925f291fc6f938144e8161c662150b5c4b546da5ecad90bcc2a7a66dbf956d68ad43e9461674e851f9de5415fd6fff13f1d98c94df6e42c8de72ef7d0f900f051035a18b6ec212b72489647ae907ef0c78d26964b94433dd1edc2fbd06bc2b9e92dd69c983a791911ea474d2e549a483370aee93ee6a4607f74b2b28b8e3a78494ad6e262cca481d0940ee3a22e6601065b4f7edb7a37997b399b0c6dce56e5666d89445bf1accab1b7c4d3bfd6a1315fdeaaeeb3a39b2261cd36874eedec89a6aa61d5316a61dd34ec738536dc471262040d30e0ecea26319c4a62dde83bb5610a4753fa4a01f529087d3b12ce9f570b200e6128d7e40a2cceb74484111d65d0f29a8eb2105cd9f5a41b044c35deff4c93148d676b25839190198e7cebcab9b7e897c445d701cb7baf1e917d71cc7753a13d6e75638ab9b9593d5cdeaa6637476a54df4c3825ca2ad703a96ebcfca4989b6a202f74bb4faf3d331f97e579b30dd4f844d98aea7eba94e2842d733b39835ce1a21f500ec9ac807e7b923f28932fa2d0230af4436374e348124043f3c52701c87038a17614c39ee492fff3a8c577cc4d44afc383fa3cbd0a9006c70b682dc99fcc25126c12e05609e2167f0744f123c81093cf884e31398a033eda4f50b07a6a62b57a55fb2154434d30ad20f3d746742efd3c844774682c0860c3632295a4244db696411462e8dbc00a34ae67971442de5b07ca56236e900f64377b97dffac8105739a56f2d6d629b507ca54e10f07c5750b2bc0aabac9e22853591e3c35d5ad37ac374c01e9d65a5de22cb10b2b04238b75b108c3ccdb4d0faa851ef1f3cafc66ce61eee4d8d38170e522a7f44bfef61e6d554b4b476bd93a5aec6997d369f5ffabd6edbd1904cecf3380f32d1ef4f595de567dc474bed26392aa5a995959379df660ddd54dffabfd67fc70dc5aebf2d6e9fdf89daeec71b192a705fe3bf8b62dd0f3aacd33b87af42bffbdf8b1a875695acfb2a68dc5bae0888efac53a0bbb9cdaafaebab55f2c972b33bf72d6fbf3b1ba2f77f9cb690f89576eb24cf0edcbabbd92c62b2b2c971f0e1837d509cba2e653f35fb9c9f4d6fce753f3f39f95fb90487dd6d3bbd79b5ddbad383358c6747ad32b0ffbe9f29b7caccebae9d5e5f2589df5d565dd68bab599f5971b714ac274eb596eb22a559ec1a6cbcfc7bc2dd6e757afa7b6c5bacb29ebf260dddece607ad635b15e32519be95597d40390deb33c7e3e4e375d99d35757a6759355d2d8f46933bd4a1a9f2e6dfde5f4ebb172d3e7c7a3754d37c779b3eba7ff4cfdf3d364aab3ae26eba6d7cfd369aa67ad6ea6b3ce9b39716efaa4371567eaa8b7e2542793759494687ab5a8f9e140dd73b9e7624ff6f52ef677b9fc7ca8debaab5b9bdaacbde0888efa65734c6cba8b3ddde5bfb55fd63e7e3e5417f597ffc67eb9dc883a0b75330d9e279b5b2f7d65ef5336cf60d6634c2311aa8f5f75b9b5372b697bd3515fadec51a695b358aff6a7bbd85cf112bc5aa9543753ecf2ffbab83c66ba58d42d0f3fadbeba50486cba355d997ad6ca59f52c1a5c75486c33abde54ed4dd6e52b9b67f0ead6f270b9c9a32393655d556d5cd9dcfae82a9ba5c0acc78f87e9e697b7ae92c6acc77ebd641acc7a4c9bacc4281b71cc64d99553fb7d6625f8e53cd8bc04bffcda3cc22f2fd93c835f3e1830ae929ebf5048bcb272654f937ec9b6e959bf660daea65f58186186238e03689a8f3d92a75fb2070420fd14d9d32f39697000fbdc43ef0b09bd3b749988ee6bc288003ebf262d577af35ff87404b7def4ab49a667b93cb358679df5d9d1fac5baf92a168be5f2d53d97d55d56b706383b9b7ec97ad331fb97cb0f91ef5a1e551c6d07463269f4f28592f47433c8cdeeac5fb2c6bc5c4dc7d984e94b934dc3eaa58db53609ad02e69e51f96ed26bc0f2ed24da88b4e5561aa77c00b0d549c3e4415b6f7200bedecc21b3a3c51e2f663877345c8a403b5438118176707ca809e019d470c37a9c2b97d0f4ca7afc70c4f4d40298b919379b301b4dd2b200e67a63aa74d61944988e1661f2311a841694000b2c536082083369b16301960fad00ac308830dc65b501963bc040c0dc7f730d5d75edbd71c2441c14d557f5e6aaa0c200cbd9d96092207736587e76b4d05228dcaca37426790213aae0f80431cc56383e81093eb8de441b9c07a20c79d904a69f338f703db548547852d6b66d342b81b81957c345e1a4704d38271c8dc3e1a070567036126803da6813a63ae9969677730a38594827ce03d266d2fa358b32e42bad4e6cb09cd23001c0893513ccb0e482acc0f23a3c4e70ae3b5892804c00044c2717d4b1587f815b0d388f308e9e451bdd78366998daa4617284bf6bba0704584b77b8c31dea45a2c2d502aa16af14d3a9cf9be56c6646f4d0b9104859bd890690920be06643e38258979fb4060d6093a6351b40b05aeb52a1d45b6b7b56bb8a33617f06f16a757b7bd62eb66baacbed9ad2cdf53783aa9b55f4a20f07a5d1575abf6674f59876b19587e672e9729b566fcfbaa65fb26754661b6db3196501ec0301d2879a00beea4f256dc2240e5a5f37d39d40c509ecd994acb3ce7a0fe87aee197d79bd8936e863f5abcbd72a8368c35ebeda20de50d9f8b3770fcf1e7208cb7089f1cbd178a63ceef1538249074217418d987b01a22e4beb9eee844d18fd7078b7f64b85e777977db17994446eb43a25d72aea1bb07c67bf5f9ba94d46a2c2f3bbf4c6f4cc719d7c147900a436d4a6a98de8d5541ba6de4c9844a2c2f555e2d119c088e7ada6cbcc0f814522d14d364b6c6229e9b0e582b82aa13b80adb7e64f079f6bcbe5a74db4f14b57b4f1629f3d15c41bd6e5990506f186cbe85ecb7ea7d6dec5e5ad24a6532715a70f205f4d4a2aae3dc0f24922ee4f47e3bf65ef7a71a15ccbb6b4de9d22d1ba4f42a1191a9908426f59d7342dda505da6a20dd4ead92341bcb1ba643db3b40ae20dd64b1b2d73332ce557f3abb3e8596d5ba67a4c53c1a4b36cdd41ec417e65ab0d620ff22a5b716ca5c2562851863cb5d3c62863058f9e30b3920e7f48ccfb247c7dfc84f4c3cb847bdf19d14510ba394f0c814d974216d331cd62330bcef5c6c3b9de6009da19a9dee410e7491b02cfcf481977cf9b9ff64907424023eb53fb247437d07746ca6644c024f4216434b2cef124f4799f7480097726b2f8fd68bb81be332de3decd249e7750d2e179bb59a80e5c105785d5e1dcd1b0e42e93ed76a02f0229ebdb9a8fb2ee7000e6d8b3e3c784c9783361b8a00893974011268fcf00069cb9a089b3042af1845a7a10c8f1228c5cb2c1bdbda900e7b75d35614d87c805772f0a7793509cbd28360e60e80b491a672f8abc2171abb260bd28ede9e8d83017044e2f4a9745b34212a815242465a1db12d1c8a8c8d6a65e80ef78265084f56bb8d7e0039c3b1ea0ed9e159404a0a7e3453103a8e2e200be6423b330bbbb95cc1cf34fc83bcc2a746ea60d8e07f299339f1ea09fa06e89b5f8136b5c57b91a0af578a34dcad117a58c2452a90482a615a09f2029bbe7a474e3644f4abb5048d4d5504824f2bcd1f7c912f8914a251034adb0d096138aaa42341522d5183c983ed3678b21e7b394f231f3724a4eb66cd9b2a594f16500336d1c79723caf44f20018efa4624a993ab336b39850261513a77f26a5dbc6715da5b5ce96958e368eebba5a43dca8ab35141289bc9048e479a3d1e78d46df472295a2fd6ab03c69462a81b309e8455bb145ad678a4e5bd151aaf414368dd34e7a5625280b2e7a7ebaa865b1239b482a248e8c22ab9036b289a449db3f3da9c41e1d12f3c8ee3929dd64cf49e9c6d18de3baaed690888a44b3a5a8aba19048e4792391371a7d1f8954fa48a512089a565658c2f07442a56c6ec1d2661a589e65068b178e74482c5b4e95d427d186a1ddd272c6b991faca308237050cf104630cac11668643c0d868883611c7c510ad91bef6ab435d285e7433c5b77694de1aaf7eb5119e26bcd8eeb5d95144bf9a5e197776ec903166da1dd18767a7ff63a731c891c18b30320b0e9ef7e208e31f9d69045067eb76fa6504907652e6ec76a49452fa35bb2cf0943af30bf0ad1c1df14c03485fc299b784d3aff9d24dbf66e906a76311aca204d42f6f67c2946ebc281386c526c2e64b37f371b2d8b0d8e0f96e7e9ac18b72c5f5a24419530b3097bc2878bee4a46162e359baa13281a28cf9336151a28cf9c382c3c9c0e606074a149d9d1e9f1fa0a0190de76746b3b989a2b353e3e9f199d16c6e70a000fdf8f4f0d46acc785d05d68e36e6a94dcf4ea53d383b95e2fcec54fa1365a7d2283168a7d218b453e94eb552266daeb31665ecf4fcbce0a13327405066948613c50a29b4894d500d884a152020202ab486d2e88cce78ea84f142052ea8411a707c4bb411e78c34ab6e40b3a075ce19adc5edd29ddaa30f7ae94dbf3a8b7eb5cdf6eecd3d775dd73d7e56eb5a4170fa445853ba43b3a03b348b8ec5532e521c9b283bf1b10b20bd14caa538fd8a31531c4a45bffa51c695999e42b9140a0e8522590066ba9345c7e816b8a90740da8da74f0f4fe705af634b74da84de507182b2a13854c0c435d8c42bb46882fb7416ea7e3a96a9cef4a2a7cf8bc6fa193482b8420b2e701f0c75d3677631a9f404a291d3c26b89214c0c1a707c9d9206d81f0ef9188ee3babb65774b7941a01acc2ebcc604154c2e80de109a7ea169ddeaf6fa5a2fad15a4afb7eb1f4186745dd7e817fd0c4a8b881d47bf00ca5831c77588867e9cc1ae06f7edf42c520f66f4abc66c06a67748bfe865b6d3f8910570b3352c121898ab616734c77d068d1ab4eb90c0c0dc7ffc93d217a63370ed4000d2378e302827bd3078db238c3c79a2d4642dca154ee8c215bef8766a41d0a216e5046d0869e1094290830a07088b1d2a80b05842930fbc4459c21374c25082d28ecd0cc430b2a1839316166d4a27940de70958dc98b030c288078b2b349d5d937772a1ebb818035002f5eb15fba663d149943fd18b46d28265133a92b62d921813c99c375276ef462c2bbd199736349e2bfe41862a1f0c707933921649eb57b4f1a480f459d29a489b7ecdf20c0c3ac3668967dc87771f0e2431b001de7d380cf02031a20f6f8b2406a641e3870fc70ff7a4853169666c7eb8d7b66dac154089bb091060d3ba494d4402cf4e46c90fffe1d600fb07281acb2b6beee8e33e1c3edc3380954efa157fb8011ed3346060d912620965c2e2f3084b168dfb708f46bc0f56dec800a441e331cdb2dda461f112ca84913f1316afba19cc15771c0f5e930031261ffbf1e5838ccd37150d8ba737ab6cbb40bee2dbf60ce22b05f1153f001e1effe241469e3ec6e86100cf8d0b1080e7c63262bc8701bc0001b88c7bb1375923671dbb72d6aff82c0d60b3c406786763a6017eb801ee0562dc74cc071c1a3ef820658c1f62607a7fb821d8aff89839c346cc834d42036073b300c70fc0e68e018e8f6173db00c7cbb0493a5c009b631901a1cb261dbb400ba6b54dec3af984f5c8ba52b4c8cb7b81161cba2daa7ec599aca95649bfe275a25ff14d20e9d871fc901d3e65a83af8990de4850784c50c4040e9ec0305d5e48d08854a951a2f19775e59d6ae839a03789b68009ffb076f1dadab4d18ae1661db375557c3dbc6d5f0f60863bb329e0f0d29249542d28ca49034570a49c38d241a52502388981a33ba8819346a04d1db7629bb6f16490bee445b100dfb70c89037227d9d48da981a528288afefafefbe627cef93ec8f0d7f47f4cb3be2c787a3bb3b9a00e617ee2062ba3bc76d31faf58af116793ab92b50a1127d006b4968820980634d8a0ff6628763b38623783469432955b2e1beb4b192560538a78094bedfd500cc52a7bb81b68f47cf704bb1dc61f2ca260d13e36d8206609fd24b4aa3a451294fa7d49132ee4c29757486d446b7358ab52bded0f70b2a94463a49fdc4c4fd98963a46883079f92a602975a28c199ca10e38c79e2b7c8173ac4d2e807d2918c0185bdb43af13a6b5dd1690eedc8598a0b05282d369ea837022d167eab9d3c83c54a509727abd3339fd19969fde37486aa6f5d46964b902d1c838cbfd7421a2d7cba45ef4d3659213e474ee51e6d55315bdd5af8fb256df1690d3eb859c5a4f9d09cb4f17926ae50a847a7dab1f7a78ceb6fadd55f75a2c2c9646d6627df5d6599e2b50ab9fb2a7148bad41a15910d5bbb705a2baad7e8c3648785b7dfae5f0e9421554e080339bc95a57a95a3432d5e9a29f2e7aae40ab202ccfa291ad52e79e7aae409646964a71402d2152c69d494e10d5538f3226aadb8aaf473d755bf10a41bd1e756766725a3f505722ca8470412e48c30c66509bcd64b496a12ec5ac9e04059c30d58449292618c214a6d005ea7e807b5659201a994808d702226522eedc0970a62c57200c346141135681865027acf5234e98f4a191852c8d2cea20a06647166552f6b233586400e6f8b3528219fb768c724b0118b3d4f1e29c72243f1c9236a467cba2522c7f9f706feede8c534e52a69996e2e0c49e19dba39c9511e651521ce2450982fa55a55f3a32c4110b12c401f717607b01ce0a24e74cb261242f1cfb952b10952b8e608367e0788511c0803dd944cada7334a2b363dfbcb2a48d7ac884d941a5ce953ad18611628c72c1085438e1091ee120c2489ddb032cdfc500cc922669d20996ef60006eff74d85c83e663342854059b240dcbb7d715a852a9414052475aa123c50a208943e5854b8f3d1ae2c93857ee106c02ef03a4947ec92b75b20016d12ff91820c4d7f6211d7b40c7f2926fc3e998fc156bb0811a98301281141c2d7fdc84e7d5d08086d9c265908916ecdd03028c9e67e7db2269c19ed7dd80b902e10a34616405f2ee9db335b4619e777ab1d737d360cf9b524afc913add0b685ff17305166a8073ac7d00f4de6ee89870efb8d3c838cf0db8bb2d212226dc451fc2dd5610aee53dcaba73b7e55d2052c63dcaaae84aab2377409d0993f167c98ef8137f7a6aa1104d9562a3d92802c080c5e3bd5aad56ebee6457819bb33af2b895778d6e01d330607a064cab8069e5ee8517c0d44b07dfb5e6d19936a7b3ac48a6c73967b409b3ba5d53ddf006fda3d74b67c2e86b054195eaefdac94659d728a5949abacdd3a1a7f43ab474f042a9a25f40a587a7a5b33c8761f8f0e0a1001db39cd61a86b508a30f6f66b112a85f3f567ad12f4a29787a09c4622306492058ba1da514d4508274aae8944ab4444ba552e9f2c351d2a9150455aabff4fca236ca7abebb6fad459441695010ad51f0a427c0db3275dbbfd3cb9b09d3b509a33fad45e947d9b42df0f351e6add81f3535deb9d78c5ebb36616450058368775ba677db6d994c9ff1cedd16f8eedc4d37489d19bdde16785b40b8770fc2bdbb3339e067e6b98337c8d6df24f6e468ce7e4c4719cd922665d084119d8e2e3da594d6a83fef805e4d4c18fd8e09a3f4ca8866558a4a23b9b008a0a4f2c7915eb069adcfb74e989cd20d9e8e88655f41072b6055bf629c5044386ad18406582565dc69a2433d1cb568c2634d386ad1a40b58f545d738ee8c600d384619dcf784bcc3485a1a65c47b029b8e04f40435787ed4b1dc38ca80518b265436dc1f492bb13c87a3164dbcf0ba108e5a2041047584a31627c0a9b5d650488b135481f38846d3a85f518b1b7c00abfa25e38d2d6b1578e6a34c56230846988c3244ca4bf0134b30e551a3123a148cd630fa62a486288ab245ef038642e2ed00a061803a63c25e3d7f40b00570bb63c20c99b09617899c4d189211961749bffa4cf494f2b2464a7939a36189635ada1096b38e491869232f234c2443116290e3843624810b5ac8e4e5908e49d97762098dac73ac82696411ec5e93b389628cc9adc2d8a6cda17717eda8738755b2d91f47fc38a225cecd662423bc7dd28039d6f0b6dd1faf8eb5e66932f3c0e89e62fae980a1ba02d8aa43764c981958505185cf5b01f87ec987dae38137e78f1d47fcf41ed1af8eb7e3fdb10377c76db476dc46e9113ed80d21e8c20c5d70f1332905429278f908234b1b3cc3919be1685ba23680386220c0f87a031068d650b8a08fef8aa913f206f77e1209b3fd39ce01cf96cf9266630f7d0110e98d119609306f06251018f528a3e100e608043a5189002639a261e44fc3e27b40022cc4d0b32e82b89052344dcfb913e2c15cac609d308ea2012c79aa09e354f766d60a82dd639ae3388ee3381297333afda6398ee3388e3379b267c2a8ee355def7a2bf6bbc8920e5ad1a140810225c4711c672a55903bc7711cc7d16f37f74de44ee7c2e7d3e9f48d3b71dc893b7127ee278fbb67658de36adbb94b9eb979db4639ca71dca54fa41c47a34928340985d6cd973627fdc2695b038212089ce837c7711cc77d49e8132dd39fa0b765aa1f9de36e6eb6d0bfd7884edab8d7da63ba3f4ab7455faab7454b0ff2bd74d3c1e6a1dfbb0b21bdda16bd6dd17a96775ff9caab6569d1b79e909846dc3ab65776b87377029636e08fee4a44597767728288de7da63ed4dd99eea2c7d68fd29588b2d29dc931cd84fe8177467452676b7268200052ff5d48fdd79dc9245d26fdee600f277b3077499b30e01d3261dc4b3e95f403d2e22862d9c3c91fcc4920ccbd6b827be8d60ce144dc435ce5de71dc0cf1e0080029663db521bec684998fb23a61be8f449fad60fdf7faafd6cd66c983bb9bade346563561dd3debb5a59189acc876d3fad5754ec028fb8072b2700424d8f45bdba3acd57d462783ee4debde75262c6f06f1c402b88273e48999b0ee1c19c056907e6d9b09ebbaa6e1ae072d6021238ceecacc1d2a297d81978446c1f35efd78646d8b29afe491b53aaba4b2d63151ec7aa90c121fe7a784ec81021831e5b0fc86ccf886489e20a5efca9ddb0ae2fdfb776746d7bb733661d3939f10529cb05690ef1e8dacbf20dfbd3be3fdbb71c2268e8c2d65af09a3a3ab9a30ead5e488dedc3638cb9e5690d83369645edc99302d3a3f7146a447d9f7f94ab2b236613c13e6d938e7ac86656dab5a98618695346ef108e57e28a6ab8d78fed8cc26ccc489b0d95d1c354c81b3accd19a5b60784ee58dcf3f6be73f3d1dd39b7b975dd6bdce846b71ea29ba3b74e13781146fe44331c432800e78c5267389ea7b6132794099b51ec066516a5a14c98c9836baa9dd9a683552a108482fbf2c321abf79ec267134a0198e7bf1e75a75fdc8cbbe16c381a10a07cdd216d3b3b554abfb6a00d288358fed49d8e71d19b4ebf6edd91b2f5bc01cc55677a00cc55a7ea744c4ac35459f74c98f88414c8fa1b940943371edcdbf3160577de746e122520dec420b90fe03e4b54753829a328dc280a27bd1004ba61544b03ee516d0cb83f0fdc546141e44c80475e3408bee3d8eec7f345f9ac28919e4ba58fa744b25f949eae15046d4a8f118664bf9e8fe79bd2afe6e918b791e8f6e9f4abfff1742c7fb5afa763f9cbe29bf2d5b2f8b8c0fdaff67df78917412bba273f21a53bdce10e7690892e930fcc8b3ed35d74bb8b6e4e2b5299674bf4031265f354f6d9f0c4cf66c27c5122accfa3fa783e3b4a4394d1af767486d8437f549b30232f463f5ec03dfa01a9d03180112791388f7e3a4a5fa483fb7305328830a308b361419c2f88b1ed6d831b074e0485500066793371c47192629411b1c019c614f00d964d4c987ccb228cbe329fcf941daa09db8cdfa4a434cecbaf07a61df1b66d32cfb77860f90d531c3f1e7236c33b58dee901f00d607fbe00eccf10ccd9c4b491f5b4c15b17ce135bd56074b3713bb8bfaa41e66ab8dfdc1511d6e7a02801823905a4ab9b8ecddbaa35de47d5036281035c55f3b5137b88b4612a5ce226c7d14d6661b333879b3747e7dcf9698138ec571b70b301679117b87f7ebe1eb4523380e0eb3d6e44bd876c7d7f40a48cc3b1dc4d0b8894d5b784dc7a391b9c09c34d69587fd43dab38ca4d6918d2e8e651d8223a77330c7a730c9c395ac3906e2dbd62880e23a46af1c0b0a6626f07229fbca26590236a0630f4d2bd28bbe983885ecf857282d48bce2487bb4144af2fd10b44f47a21a25b2f2474ef4cbc87ce247455ef5600d67b5f6101cc229f19b5067eddd0c107091dbc10d1eb6b94c529e324b5e49548dce21ec47be9f412c7b43c937ad241db92b7c55d20de4b17524f3a939c20a4d73329dd3b931c7a83d41d13d63168c8910b7095573bc0bd0202eeaf8c801bc7062ad3276fc299309b0987bb3826d3ecc7ea314daae205f0fbc1bd7a5ed55acf2b9ed4f3aa67e3563ad8e5ae6e5aea76b9ebb16ceaab9f9fd5cfea075cb151b6ea9149d5e9f8e0d54fa7d3dd0e6e7a49b426fd9af5b6b52cd1fab56ddb569a918248554841a42052958ecd3a16bb0f07c7956c9caca830cd4cb390a9d61fafda28f3a81940efd574d58a45cf609a99662c5b53b372f035a97fabd5ce6a67b563da9930d1b473b3371bdd1fa6db9237a96e4b9a1e04bc69e5e0e54dfd3b8dcc64f26ebabc41c07f77a65e9056b3e1c13da5d70b21fdbb957426de4b3f6ca22c7ab41a6f76454013d6a2151bf4a3c624fac17df08a7c26cc34f35efa10ef7ec877bd830fe21df44c2bd3696424d9f6fdf8ee993ceb79b5de7b907aeff29e77f0ce785e921c32876c0191b27aef2d21dec183b5561034cd5400763a67991346ca443ea7c7098312925a79ea4619ad3fb9441bd13280a593ee7d3fbe4b0bce306dd1d5cdcac994867145595181835738b8a1e0bcdac14dc2a20653c079b505eed594229f2e3ad640b84bb48e65524df483ba2dfa286bd10b44ca56372b9c4e27bc2cb725c4fbca572e13f0dea38c7e43c07ba79f12522623d5a28c7ee40eda48aa4d981edc4290946819b86373e5a9352b65b30860ae3f98524a2f69a75f2d02c25d75ea0e0feeaa5305508792763a4643a49d0e897ca28d30441bf27d911824ccaaa2016c839cc3ea66c27441a39b9957d27610ced4a6d69bfe01691784bbea4c9828dba9e1e689322f34ea50d029908257386a91021cec994c1f8e79433e8e21cab0a230c41efaad1e33cccd709227645dc5e0ae3c8eeb4296d36844e9e9d4221961b9d2398dacc0fd500a66596581fb31ca380198e914f79a803d0514153fd1ddc10e332c6f670230531c273a1a7768ca5028140ac54aca3478ceb0d78deacf8401dfe02dd1543f2bb582a00e9691ec0a6775530230e2d68f54441b33832e17eae61aaa70f879fc8263ad0926e06a2dd4258ef17a9d7e184875009e0e83c578758a8e39113ef52d08964e9cee7a78fae138ddd0e6970c92183895ba32218b540588240696391d759930e4d1f296bfd84c835feec5d81927625227f24c31ebacf0aea7ac4c98fafc72a8fec7af872a75737828244e7df51379ca121985b6e59e17da765de276f5e9a2eeb239860b74852fec0aef1a005692bac4f3ebb1e1d4fde7d7638bd2afbbf24b8b0d1f3363fa642396f8a5dab4622c084a46c2265b15fddabeb2ad30c6b6c2eb85193c1a48e4abaeb6b29eca66d55b41ae44ebc791b47a1c79115b835aadb73ca681308bc5fafc9278cc5cd98883b4ae846d3d09aba3f596d659f68745a27a128f1f0e225726891749e2acd4edd45f6e574bd9290430751ddd16315d8358d65bd9bcbaea743aa16e5e82510f6dae3894b4eb1c51700b391cfe49badc825d4759255aab873fd9273aacfa2d12d559aa1a5481548f9808958e1101da5ac29696cfefc763260b2b619f588255ff6175a84ee43e315bac92c6495c278afcc863fac51a69dd0b14f99177b56e0b1a68241eb945de7a09835a0de05b6f2fc093cbe5924862e053abfe7827d5636c980ad431ed9d6ca6c13142d7db2746eca98922b9a0e5b60287ff239602a39ee8f06fce000d6e7911d4633a3cbd75af65ab4ffdf95000a2de72d495697991cbb4fca5c8eb4ffc7ab4bc4878730c1cdeab36443cab9660d7979c088b6d8c8ded529d754f6559b6d24232a035b9d5267e40e1538f333c2afc29fc63bfc2c7ccd0b69eb25965338873cd4862e096b78ad8d61fde75efc53e89798b8df9765c7d3ad6ba11d72e5a3dc2bbce9084d05ee0e766fddaee56ebd7b665d1af2d7c15a1ab49c3d0681d6335617d4186c98550f483985bbba83e51b828541886611805968c69af04b5bfb43430b10ceb297cd63797453db4dc4ebf56b9e254eaa99ffebbec5d96d3791273958d0d731d65738d9929cbbacbb2beb2d9759692d9723dca58b7e572910024f2d2aa11e271032f5fdd4cf1eaa60660a59deea20198bb1a2dc7b7d327604763e2c85d577e01764ea6e8cc00fee1bdd3e974dbb83f1eaeabeed1d16d635510989825bebdeb70a20dd7b7c6433cc61b9547f6b07d88cb1b1528f6b07d7bf4b05df225acea31968807b1a9d37f4fba96587c955de244d898a76c90bb6c632e8042355bacc28e7bb4fea82ee3baea7fa6f83eaa6fa3690650e2b01b713bcf9c0eb70302d0b549e1763a5ae5e16a461e76352337f2303442e3b6e8d74684c859448e22f293eb7f058a3236aeb6713c1d73dd8dab751c0fc7c3d5b82db81a577389baaef2b45c099ecaf39de06b02e60af49900cc34d8e5ba5f09c05c817efcf88fff785661da470230fc6860f86f0460f84f0460782e802e9bffd491e7542a75247504046f3e72d5bd23b60655a04aa502a97ec446fc7d385412bb443f47aa004f3ff24cbd9e71743afd72a01e1ef9c91ef9701cb9f5271201aaee3afd7cb8ae72fd3f5919d77fcf65bdd1689a016c1da887bf3d3d7e3d50d97528243e3d75abfac9aa4e7f8c38f7e1d0e1c9286a92ebc628c3f598ae3cae9b759c47a659626b96dc1c1d27c2d61071738a90d161848ef350e978c42ad5ad01ea50e9d071eee3a1e3d29831231771954c113b2ca907601157ddca73af88225245bc88771f8f226e10b74ef96af46b7b0301ac3c754ac7ba2d442317ea9e6aadd29afca9e7d3e9b4a76ca5d9a4be5526ee919b3aea5e0af5a38ec10f07ead6005ddf6b155af81769392b7a73b6f4bc5849e19d2b2bc495b03c783b119b44e2242c8e216cee6c80b7ffb04924ce61733705defe6285b811bb6d8f694e8793327fe24eab080cd6c2bad5a763e1379fda45c344d9f6f885776d1bb05126c4066ca5d2b0ed930b6078216e78d7ed681528873fd9d068349b5aadd6d56c684d68b42636362c00b75c8138aee604387036dc141d7bbd6703ead97eb81bce0987c351c141e1aad860b6ed9b141adb9605de08f0bcd5f0b66d81b78da787e76d0adeb68d0bbc6d5b173e78a33d3bb6956fa66f6048f4ede348df4e9d6c9b4e6d0aceb3a6b7cfedfdb305752cf5f3f313e527734df256056f9b5cb98cb8ee161ef54a25b4abbb6c0d52b261968bc572c990c5d2854c834f0f6d3e118f79aef88f11063f83f8bf39fcea44586c63eccde1535741b161d5fb9e1cad54aaab64c3acb3beba8c417d063fbc5b78d4ad405e18fe14335d76f5d0d620258d5d412ed781823a16c33074dd357c11636b170ddb0e74577711aaa261bc28b1b873062ef076ba738638e01cbac1db0e1a6e700e5181b7d00c6fa12678fb5da1c4395467ed60201ec4137c78301077ddeb518b07ad8b7e7973d4b2b5c91fda1a5ebe1586f2cb81baabda48cc7a4b18b6c290f5d4bd54f8b35856e2d0cab0250c5bb7aedfdb58331563c5a9546a7beadb872305b4b9debab99e6e065da74b1fd3e57a68f34ce8b2aba36c0eaf92c6aaaf6ef551d9010ce003b8ea321ed32a5b3d2f88dfb03334b21bae47d7b5f1ff41dcc6fb43c2759f00f1f9f900e2413c89b952c4fcc61170fa13a3a471487f3a6623a65084f8765a058d42ad28f2ed54a76379082aa563d9c8912059b645c732119e8ee597291dcb2d19c78be0a26359892fe1d3b1fce34c74914410386cd529c2867064b60b1ac2763a4258eec70f21ae845da288b7b4fce5e544883c088f1fb1c08d38f122481cd1e3f3c7082f58402d2ab2a0f03947d6416b3a9677642047b2915c84de24e01b13c7f1585ee2437c3ba522480c05d80a2564d3fd7450fab5dd08cb2d6163bf96f81036f66b88336163bf98380e1bfb85e3458adc88911f39f24492e7c880116f5996cc2794067cfbac02c8b7cf2842be7d5a31e45b76406e655666c003b6e8584ec053df1470d5948ee5057cd503816fd9c7777ccb3a2efbf6d9458ed79bd0ace786d36163bf745c6663bf64f76163bf7c7c878dfddaf105d8d8af055c0136f64b010938036cec9792b36cec17abf52136f60bc985d8d8af0b1c888dfdc200102143bebda9742c33e05b6ec0c36fef2a1dcb0eb8ebdbe7ac63f901ffb70c8149eb588ec051dfb2049efa962770d5b74c81afbee5274bdec4b7ac8157e0db274ec7f213220ec5b75ca7a872286cb5d180ad4d2a602b95266ca580ed26603b09d82e02b6ab750fb09d036cd700dbd11860b929432c27c4725b70b5295a08da6d5a88983b436531dff0b725374e588d1d37873389e36618362dc412218ab8994608a7855872226e8de72abb5935c405c21702686bb2d1b69a6dd6b40a0d0aed10df5e9b744c886fafc0b726bee1f856c437d977dcc7cd2105aee366d5049ee3e6161d67e2661812f81237020f526939ae44a531f11f95b6c493b839089cc48f2bf1eddd948e05f9e6e39b906fef823ad600204f4097802ba053c017d02de047ba2137d231e0453a079c48f780bf743508bce5e6207047ebd8916fef9a74ccc8b777361d2bf2eddd141d23f2eddd4dc75ebebd83727acb5b3787adb36e5629b9b9250337c3483dc9cdaf276e8ee1c4cd345cb7c0cd3578dc1c4406b6e898129e8e69604ac792f474ec896fe77e3a66816fe7823ac6e34e1c03378718f8056e565de0486e6e4172999b61c83cdffc32e2e61846bcc7cd347afc08ae76c491b839086c63ec66336148dc4c839178117b84c95bf6a5034fd9d506eeb2271b45878d5857cac89b78f9104532e052925a19b959891709c281215a1c983911264688bc5c08263f2ac024090ddc5ce44698242192041326a9223727d1fdb851d4216e1455881f49bcc84c919b8f9cc84c1122afc951e266252ec44c909b83fcc74c059a784d4e12376be0458edc9ce4446ee4e52d0e70a0758403463870c4c86b725e6e4ee22d0efce0c0104264e04794dcc85b962c69398e252fadd7e43cb1c48925ab97252d372be0ad2513c0b15ac281b33ad0c272e23b3a0084021df081819b5b6fe9c0053ac072e2e61df7d101b003a9d6cd3e3a20378a3a811b459d00101f6f71a075f3cb591c68b15e9393809b13f009704001372be0403870435093438109bc26c7c7cd1878ebe5e60b9cf5961d75f5148ed44bcb4bcb6b7276dcece338803cb504c78e27fee2c45baeb2ae14ae78f59a1c0b20c1aa54117875a300238044955a72d406543a36b000096c40e6e6d4551bc81b406d40c70624f09a9cd4cd0be86a5dc0534b5237af8e5a9242bd2667c8cd432e81250cb899018fc0921b829a1c0944e035390bb859e6a9d5cdf9a8ab90dc28aa8eba80224e5fb9ae5aa95e9323e466215f808e9b17f0228ad0f19a9cd3cd16f8ca753392ab7efb07dc1cc59780c0cd0f806209d9ffbba2b8190287e2015f6209285e9323bb5174f8e6d35df8a18da2c34f88a80eb8595673f420e2889088300711b29b739c092298784d8eebe61e5d8eeb353910b8d90167e246511f703313f508ec0ab12b7c4d8e036e7ec08fc04cdc0c812f819958e235393d6eee71d7110fff1b45879f1801c58da2e6a80e901971a318e12731a71bc5e8f4d7e434e0e606dc0131373be0b21b058843509323cbf19a1c1e37f3f8c9889b8df81f3335a02403499e70020317b00012995c01cbc49bb04b9c0296894fc02e71095826ee939847c02e71ef763361db8fd8d38dd8bf88759d880dff624f6fb17fcbbaceb2e157f67455f697a6aceb52940d2f85800df2075825ee00fbe30db0499c0136c8875825be00fbe3426c1257800d72b7045825ee06c4feb89b0f9bc4dd90b0227c84e5b6e0012850c13d6c17051a1782808db013061ea87d817958ce0457009101ef88b90e229e031f877d127367a42ce645d82744dc9996c55c669fe03b336531b7266788bbd9f46b13e26e53f46b7b88009b69b0120ab8ee7a10f6c98d1d7cc3e600711bb6faf4ab3110af3f1d03e2e679d4b77b5efc7e330dfe43ebb2993ebcb9ba6cbea45de72883d8855d61f8dc825daec7cc2796e0799775fdf6890ecf9f8ec5f99fea63852e3a165e281a87df5e7dea8febd60043571846a08ebdbedd08e0995209c0330dc21bad82b76dabc1db96b726356ede6cf076162907ec198e38ba7ce102ef0bd9d343e300319802fce0830166f420a3777aa7777a07c64a1cb3121fc04a4cc3461cc346fc8395d80703d8c6337ab01c2e800c1b71dd7a27060106b0d9f46b7ba54db1d52286c1e6b6e1c8206af3436715e8310db31386ce266c3b0d687bdcc2ffae3baba0010cffdbf1843f7d3b0bf57c3a853f7d3ec2cb9cee7a4ca36cc7738cfa763a9d681386faefa16cc7e30a1fd35dad63fff66e8b8e673beab706e872b96e3e0eb3fc01ea1815bc5dfe6cf1a7100b113ca6e71cc0631aaa6297c7e872c32bf2c2cb76b57e6d1780edb6e8d7f600d88ea75fdb79b0dd947e6d8761bb9e7e6d0780edb8e8d7f66b3b9f7e6db7b6eba25fdb5dffc3d3186b3d7c8d31d6c38f626cf5f0608ca91e3e8cb1d4c3ab620cf5f02d31767a78b3ebbfd573595ba9f4cb75d7ad2fb752e9d796eb0ddeeeb56cab21beb6b7d83e437c6d3fcd10e0eda8e901bc3db55d2507bc7df506bc9dc506bcfdb4d8885b366256c42a1b712a840630575abda9b4cd0b2a6caf54c26f8fd1c60e16f8441911671adbc1022ee22be2f0271b371cd3de8eeddb7670bbc94e2afddabe622750bfb6b3d8e945bfb6eda5eda4eddcf66ffb68bb68bb8cb2fd3f5166ffc41afe6cec028f2c873dbb63bbc8c628aba06a0bdd59a55fdb8c163dd8529441fa66c12883f40258539441ba0cbb1265908eb22c5106e9291b4619a497ec29ca20fd64515106e9d4a6a20cd255561565900eda559441fab4ac2883f4956d4519a4b36c4b94417a5b972883f415fb1265903eb2ae2883f4907d9441b20366b931ca20f1f01836b7cbe610142c4f8001b808e04ef44b1e66914c20258c200c38007f59243329b822a806988707e031ed09c02ea9c287928ef5bdc0c8892502b01107c0e6ef3cdcd6fcd63d11bdfba418c972e8b580c5df456261dcd6ec7a00fe84417400fc98b5f244598f8f1251d60200dba297b296175425340bbaa209526c663532482665b1500e0c7610635ebd818c91423632f8811c417c49120a5a80e5ab0ee40a62206fc89a4f71022c9fe30d1360791601704000d7006e308017980d602e2f9c578b006a20805600681000160f33e06105c3090c1500640080d48dc1455918d8d36f1eba5ee0627971c1cb8a4b0b5c4c2d53b4802d16b44aac15b0482b15ac3e958d6a944a41ca43a100253a9de0140a9b8495c5042cdd4a0956382c25094cf8dbb00447106d94684904d106699242106d7c8d25fe2e6ba28dd1638cb089bf2766f0f7ce8b7ec99679bb9f164d01f85c6b523a762c5f7b666dfa6089049c6b50164c3061927a11d3d0b3930511d49830ddcf84c96f413f91e3428e389f8edd2b0f0468ba474d35264c94451ca7506f9e18a2c611f286f440943812045186949f30a2ed59c9269fb42e5bf766c2e84c070fc0a0697a1e85661d335d5e5b71fac693db06c5bd9726b0d4ddddad018aa74cdf64b99ee6b8e8970bcf149e2f45988ed6f39b9db18bb130368a31d6ee57ee5dcbf934d773e57d4cd7daad81b81677709633f90179090239026982181b5d5ece54aa20fb18832c885f5e1e238c7d8c2ff7b6d1fcbe5f3b7af7b305c91bdc16746913a6d3e974ae5783a60cea6c6647abd5b6e099f2241bbf8a83586b106510a73c0745dea837b2077979791983ee7600569e8602e61ae485661f8d9967d9249dcda5929ccd66f6668903250ad7d31c177d79ce47822bb706b862251e420314cfbb6233c52b0fcd64aef4a693787ca7b7bb27603736859f1f0e16ef5b5b95cbaadfabf7e7fb43c2e56d4fef5da737bf7cde1a7443b3279cf0ecf7f6de9f0f7aef9bcde0fc3fdb9f5fc8fb7769bfe677bfd049367b076fc4fdf7980edd3c1fbaa41e84a6537abb72b17dcfaef4587102b777cffbde96748f15fa8815fae8a13bd3ff788c1eba67e9c809dc4e64ef277affd93cbf72493d00e7f5714fafccfd7765ece93dab84e27ba9ed61e2616ffc5532b14b8e97be5c2513afbebacb5d51ca7ddf4eef8aeb9be7ac633debd73b340baa4292323f1edbf59cc0dffbf3b19dd43d01e9f69d54a736d28fb4bdc56edfb72fd3af36d257d474cfbb8a74d6bf6f1b85def28536b0f5516805b672ef070bddacc2dbea241b5167d195eae0a78caa87e9de3dbb8d48244a49f73b8d5886debb473ab5596627f0f63d9444fc1e7ae86effee2807e9c653eb796fbc794fdd0b9d14ba241f80ad1ea4d39348a7fda23ebe1c1fe9820f51bc1dbc99869ade3f307894cd4630f893cd4e6070d690d23e81255b8374009a9e6b509dd4b6e6b7cd7b9b666a95935e1b4674d243a025c50f079d69d18bbed916ddfebdcb01f8cdd047f6c9bc4a5a246b1a261fbaadee2b690eaaf44084c993a0aa0094cfaa0ace6a47859c819c0dc1eea70685a4983427299a8693a2694029244d2824c16007cf2bbd21ca21b68165f41cbf88b10cb18b08861b232f848f197c89311aab8f8f1163a9c7e6650f7d02e0f8db72c1316290185b793c907803340289182b11116fa872c41849081c1f84bcd132448c993a964b83bbab1b8410232c553474c88c4492fb4423f9e118dd84475646f4d0636474cc4aa580fb9ce89fcd52e0ef31bde1c949118b3b2b98a323ee66d1592ebf1c18c0f943c598308045f9c32c23960c60d137cc723b8045578603e58dc378f54bb451802863c67769886e8dd10d42f65080684308efe6a661053c05d3c0323ae2ab7db0205f35a22044b49123ca0842de284226c6b888710bb8ff892ef790cd52c4b8d1cd5260d1657f38bec78c6ee6f0e8dbf0887b8e3bdc6b3d973180e78b729789402bd384c51b6edeb0835d38d6de30021c4d9e9c53ba68c15357d37b2005fb85731d6db3e994eef2db47e97c8cec6e8e31c6b8c918ef0c1a919b0310dd66d0a831c38b17921873563983f41a53ca9fe28d98149637c5d8cae54571c658787952bc5144176f20913dcc97ec615e8664648d195580211afd9a31d38710f99a5fb11088af799365c236d1aff901cc178164fee51dbca3f7f4b61110e00c1afd9a87f11278b39c9dece215b0c8cee858fd3c8d1ab3d6b861795b3d2e141beee6b939e70f63a32316d94581c619346af4ab3fa35f1d6bb10a51e6820fe3d5521f82e1bdecc49e6c9148640fdd72ecc3cb4a1ca33f86183ee2eb59c0fd1abdd0f10a3e441b491c11b98858d8791aee72a1c1f5f272861717971f97961633b4b45a6568b1586460ad565dac54aa31a8522931a450a830a04e279f531882216461f902cbca8a17564c262e4c20d805b054e2428944da02e9fb7abed1480b23cfcb8227126141140a4d09d57a85da7556e838ae0a1cdebe23ca98dfee23daa051c67c12734ebc1d898e3226de7e44b421e58d51c69461b4d1e00848243f13a0fe3dfa009e1e5738d6d4d004c74f0a88bacb95c18bee3589446a99efa8cf8fc77714e8a1e877f022d4cabd1ea1402b1275775929c5ca1d1212ba93629f0f10a06853d232a4531cd3a0a5d88b2a38d6d2b0450f38d6bc9002e6a261dd49f2c3813b1850744eead45a40e8fb43e8a54959e87dc12135221842163a4dcaeae384c99e7e7552c0d6ffef523ae67a87faea9f251d08f03b10a04be25b895babef9bb2a565a5e82419d1516e6882238ed88b0c0063cd0d4e30f80fcc349804b62efa4e22fd13a9c0975e1a91ac8be9b15f2ee73e24445746f4d65b5746f4ef9fc85e962450980e5ec9cac1eb856f5df421510269f0e772162bf33de215fb840bcbbc3ce24ff4840bbf9cf4e178b9173f7b0f08b07bc5b44da4a25f8dd3afaefb7c90feddfc9dfb7c8017dd9cbf9b011abc225a79890509d5cda29b6e2a950e96ecca41db5070f28c0ce9a62b716e3240e343b422fa9000e6b6c1dd5bc78a282a95aaa3340bcb5c415d84ba4874d257fa77af8e586c66a91c4b4761b1add35158466d4547691d161e78e0218aee86bae8c3f1643eb34e3f1fa88b6e46ddfb5ea7a469bae866d2cd000d66f9774f7e55b0e9a49b0e926ea6a179fdabdfcda5ee4302bc59f4ec83e5dfb78f07e92c377f240104c0c6152bb197f391409810adef261122df174299f4e565224fcf6446de9cd2fbf4e67c07bf7d48906eba578af1f8f900c0571ebf1e2caa950be0f1f371bfd263005fb932a213009762d89ef5ab7bdb282380ed717fafb23d0070969b6930000eda3c83330f7fdd74182907e4e1117f02e0e102088095548ea0c13cdcd7a7c374189718c66df500c0ef01709bf6eeb9676d45f7d83025b86c5e74017c3844503a2622bda9681ceff57dafd7a74374dfddbb97d4a4d24557e27c2b35375481638d0d51baab70acb1e106b7410a5ee1586b030f267dafb5c10b6e746dbe5f21dd4c83492fc99b874c19a041a274d2bffb0fe85a19043e769f22688eae8db83f1ee045e06dd1c7834ac74417a8635fd0b5117b3f7ca21f443facac9c7473e94a2bfad57de5463cbb7b9efcbe2380424a9267c23e1f5d6db2be2380b247878b9a0f942e3a96e514b87bd7656905ee3aa9236dec0350f0a29bb2323a22b6b79f1f9028eb1bfb005974659446e2bb32df45171dfc6eb6275d3985e8de54e99d84428a520589f4ef2391482412e9e3f11dbcfc4012e9df77914824b2a52ba128692ca3f4abfb2d148d5beeb2503466b927bb775dd7b14cbae81de9a28b4cdda5cf673d91cddf454a1a2bf9ba8356f694ace4a25fdd3b2b80df23e6a263a50b45e3528f8f082cddd2a7e3fbaec4e9979ca25f1d141e5628b7107da2c70f878862d2b72362d155d24080a2f7d46e449de81fc5a577a677248b04fcb772928502c9f7ef2bb6c7c4a4831609f8d61312933ec1977fb6f1cb1b83f6e552806425766979c4df776b802d2d5749e356f80f87c42c4bca0159482c24d52556dd2cb1e8728a8e85e14b9f1f0ed107fa34534cba68f4d842ccfaf4d6c43e00e922b88cfe3bf7f1101df59849b2a5d39c560f89592e31cb3f9b6556feddfb7088fe59520eb8f288c1935efa8ea0c12bb7f4e940a16237297c4c77b48e919ad8949a7c168ac6df498d45a4970ede1389449f0e91e8ca902ebafc78902e7acc341f2829fe2ebfd8afefb3a52b494a1a8b44a2eee0670430cb5a0fee3a2e3a708b773f9dc2932934854235c6729fd49567d1ca556232891ed326d08a3eb09bd283d80302148117bd74f0ca7ca7d8fb6cabf64bf489bb23ed00ac213f1cb46445a4ef8a4e5b88d145afde451fb510de454982c8cf3b33f39ab0eeaa09eb2eef8c09eb3e615d5f89281b3dd7f01e65fdacc23b26acfbc88eee7d8894856c947577d20e7ab857bb5d7e40a2ac8909eb4e82d23f3f6a964c58776a5ba2cf8b4ecfddd6f728e3beddd6775b3f3829db2e65db47b7257a9fdebb2dd16d01e9d30b919f979fdd7be752f4f6c3171c67638449b09f789e376394948bdc9c52d230ce386953d95f80f194dee6b63370e74a95da3ce475290ad94fd83665675ff885e933adb26e4fe6e3bc52bc6439b45fe0862ca838c140e078851b7cf0937b547850447408a7f07cf056d3af8da3e12da85fdb56859362246609769d4e01b260bb91bbac9269c486e1ed6a540520115f12de3c83436a03a61e3343222fa87b130e20115f324a0278ba1773fc1bf0f49f5a3fe540615b815caa1bb2514105a26243a35d55553fd19ad0684d6c54b4263641280073f559ddea837acb5b2cdbe28d00acb422aa47976d71b98274bc3cb4e169c75013876fdd0b6d155d014a1cdac84f072a7e394effedd443cb4259d5553d66aa6c91b7ac11227fb1d51629f215d0284bec24c2d2f0768f882df2f0291bdefb72b8eea85fdb556f617d3298393f91affea37e42adfeab7eba25f2db0a552fb78595230282280860cc2c6273aa75f30c6e3da5a27da5fa513095eb777df5fc9feefde4bacc1f56da57aa7ff5d3bdd529749dc230aca1eb561b140b0583a99a8086c90314b54a1a87446ce476749890a4c7eae151a7ff742b503e3d3ccafa583dfc553f591eab87f79efa5557a954aa542a95da015d2e477501dc1ef1a9ab755ba05067a150a7c734cb763556914be4b25827141e9d2ad0e9143aa16ec7e36abdb870add5c3dbca21f12f8c4f81cb129f6e2b4763d114783b876fb9510dccfd53253403a212deda840e60ae4034202a5542b48e351cf0f65013a06dcb628aeb7a4e444f22175cae5ba7e8d74dcb5ba854bc8313a0cb2aa1f8f4bb5c0fc33054dd65918caadcd6a0d02c5413a2855a36d4b27d65434e44720073a5b91e3e5603ac88a8d4ebf4c5b91c079942330308000000b314002028140e880583d170340ac444891f14800e91b25476501c67518e42c818640c010000000000000001300000db4fcaa176643505406f5c234260b4b485e14121e573b8e634bebadcf8f5ba215d2b7c9cd65e2991a4dee1621e5c4b4de72b4d651d678b1313faacf59e4e78c9f4adce78f78cd24bf49cbd551e3bff28d03ffadf717b2e260e126441a9b226436a4ce75695fbaa47c81d0a30b13161fc6071d3c841d48fdfbee9ddde1d7b566b1f73d206ef6a2f5ddd64e79ccf948f5d0379fce322460df62b8d464c7002f7f38fa77accb8e3ab96d5474abed40b4afc5e61d11f8737359690e1418fb3668ae2c83d8209d9168a0e24234a18adf707d0524f5519406a612d802efa68c2f62300b0f7444f4c55d72871ecb53be85c0482b236b0c7a6ebfad4c8659dcd332aadc541055b19967aaa80d28f2c5c90fef7f1269f10c22494d7a3ad8601384dc850895870adb8f021854951174be0290150113c88307508431b0b33321893920c8a04720580d201bc7204aa4532174b611030d015188467740c40703531393087284c850620328501d0ee9dd1fa4f70c59200c79d45fe7a34fc7eba2385c788aa15f51d591b3e8cd30db2901dd91e5d08a614d7cb2c78c290afdb5188a24551638d586da7d8fd21e5bb20104a40f7b9fb12228ba457d15241b2d3b7f721a08fe3bb5a653a210df7a117e0f82b5f91f1cbebe1b8cf82c9493df3b06c35f67ba749f4950864c36ebebe18e8bd30893261a77e5ebc0373d28b76dcefa74bbeedf4de3eb21cc88fc2b4c30a02bda7d1df6851139bc6aa1fedfc90bb6a1a4278698930571b7e7ce9732b67a54a76be920e5fd52e12e8bff8f9bf4def34626f23173f8d4a5be6af6937acf431b0864a8df0ee310bbd276128f17944fa19fda4aa7b606a7f54649343769c1a05892892f987c50f65b71e95f8ee7abb1fb355636dba0584d80f7c9c73c9ff90384766c1eadce6f287f9486d1da91349ebadcf761bad1a41909a8593420033972729ac3865238549f49c149560e4c90f767472d72c462d2c5d4fb1f0223c344c8296bb5999802e34a1e80067edd6da3275fe885e66f354f13751e96112722777ce0edc4e9a5a774b6a66f58ca4a3c07f9cb60169d3d7e8a9889787bb4f1f67a65f54760a059d10c509731364aee10ed756d6daa37c3eccc7ca2399663010e49349f81fce46cc3c04cd7e060d4582c7373043b84a1cfb2d26c99f1c3088a91a1b8ccd7f6672392ee789b8a650bf81965d8e01f83bac1f4904fa73948ada1a7ff8f7a6f1d2eeabbb23ad162ba4a02bcfad7e04c94ce47f7aa057d80e3ee2d65fda708793835ec0324506a2044045b36c9d8312f2f90ccdf6924f388e6b5de3729995ca759a48e04f53f5321e48989a0dfc57cc3558914dbda751aa5f8f987741b04c8717d613cbe75078407ad7e8ddab044bc04cc4fd1158eff45e949e4b551ffc2abd9ccb7887b2ea3929b511f9565dfd44af3159c6d66faadfd36333590d04e8ba26d21a48021dab635d41b9ef812b90fb97001e8e7994b90744c2c574b9a5047bf75ec5aecfe9df99264f74696ee8ff8854fce95e2235314a48bfbdf15f98b71c09e673021fd274059b93cad0e374e80b42849b27968c2831794907a398756a664c03264720a0109e41c3b286ca92665709f4dbf520da156ae85d8a3ee7540257ef7a22382051bff1ae2637790c17bfbbabf837effbd8bdfca00ceecdec5b1be1ba0ab4558dec2d2284b8b0f1fbe180989a3f863a921776121c80649a9058be2540b35b39349210e2e0c41fa8ec0c71b43a8536d18b23186b8225897e71d85012434c0b7f239dcf08e87e15717cae1b46809d1f9823fe9a22bdcce71250bb6c6db3081a880e1a4b6710a7a893a4ed18f01a69d695aba0439216c2ac60d22c43b9eff82d5f5f3c71b3a3e03f58acdfeb6013912ea7cafc8a5ff58f4a3d6c2616feeb894fc8ea2869cb1009284357bff8a305b941a4206d08556d3394e089ace6928b3d085873cc11f7406c05c53b2f77ff989819122f05b98facbe39a834f6c8b5a88398b9d2c11e4774b0b37b0eaa77fda288955f8fb16ad296f62f01463e07a4fcfcaeaab5f2818eff51e28733b02121c1401d3bc157e02cd456e8dbbc1c14f39b8de27e55bedfad2e3496ccd48198440634c9f9bce8e0869f9465aaf3c9b458aa3146b1cbedc9fe9d311313ea30563bee0bf0f60074db2b7894bbb1344dc454ff3528139ff2123d3ac868f848dd5420ca0a91f054d5d1bb277d2df8761f691316822467500712386e75c2c6d655055d504c47d1a7572ee36d0b1665c2164eb0481bdd8116d7dd4ce20f4527742c85432081b122b9093fa6970c9b14c5577986202bbbbb741c6a500812503782a5ef4b418383d1414a3ffcbd146d85b1cc020e001cb174d2438f0f608e85b3851e0946073db8fe0957ad974b882ccedb65e9379e0b4c2ee2b54bb23c7341ca2aaec699f7569688cfdf9be006a46a94129af139d88228d3778c3c5b1e3704ba61201e62e123af05029442341c1bb77367f53ae9b9bcdd308e38f84b1b94531e2807a2137614a4681939b9fe453080fcbc03cdf1f0b9c5d85c25cb6e1f48bfc39794298f486975cbaf5866cb901f3d5506eaf8b12adb9a3cef8dd6ad0084bbfb1e17e7bfae52fb7de896344df92f3a961cd591bb0807303c7a67663e463d9e100f9dcc355ae48d61932166c42cdda54fc43be78b740cd3757a0e8344c0259de1fecb6faba9519b806296d9fb23901d2ce167b175e887411006d69ded910b621288ead50083a442f210cf894782ac52b715b938d07eb8c1f82eaa57552a3a60342e18c5ebf4e3e449d273ac1dae55cd8556954ca21c5155cb01ae5328e3aefa4eccd520987bd4a94a2f58070a939ddc4dfb25245175ebcd3b4136091bf5298187c316bafb24dacae5a6a3f3519bdbc0e01565e9cecf96641bf8f7214be89d4894f1f84db941c4f56d0760da7e4e0f4660558586f58aeb16ecdbb03c4d54f6b03600623b311d62f43266a9fb2864f4bba52b035240b790bf171fa0e024257732ac1a529fe13f1ba9130b25e90c9475d950107c6adbecee42b95c38c8a964b9f0d53c6b38a25c45925581aac04ecbd8d020c8a397ec6610db5f494513bde7e5fa91d8f2a7f29a29415802099a016336f5c40d3c65d41ec734123e726e220b627f1dad781cd0c44782bc177aa58b226550a5b9ae695b4e2777ae2491e49f466ad68f4157f994875f505440272886884b44356d78468efc9394b40b05325aa8a54bebf72877966586e38e1bcf84a12148403c4c4bcae00465e22c1dfd6c8818641df0bc7b37f2b1dbed808bbb803eea8dd45a76313421139c140aed21a1ade20b30c9ef08803bcf0e58d24fa1d3c9e1127db2a974e5f1e668a9894040210f1354e599baac4b68be10c117b24b9c9bf4dd8eed117067629770611daa388300736b43d7e840eccfdac9553293c81dfe4fdbb5f608a8fef130d03190e4686deabf81956dcaa4fea1db0d3f759448e6933ee6b58f1c65605bb6dcd007f5919e989a89e51071520e4db8a846ef77a521561dce7c7812583f165497441956e788cf0ceaeaf7ebc436acc49260ee7eb0798dee32df28e639bfeded452340809ad0a24e2809359272f8d8dec7846a6ad8a738ff8eef2f8e084be60a8d3afad6870adf544b5ef9cb6c95de00563b7a25f2e72ce08f790109f5d53b8062cab5d8f0375b391d50713d74f59b06de0df5ab1702a3065acf33d515acb520aab213d951d663083fef116045efd427899caea2c839c6eeb9cb02c4a4d7115823487eab1f441a4a7efef4078c63116377fd66986e1bb28b526c37f03b24a1408f2001bf333ed566d9c1d9ffbeafcd83c007adebe2b16a7c2f8bcad68f090fff4e3e9e20d0af2b9b92fca207ed3092deb6f2c9e31ed26ce20f02b1c7994ce1361f28b9cdcc7dfbbce04ef8b86891caef1d7755fa73dd563ec0a22ace772271ba908312c42142204d4c7a3528a2cdbf8aa29d58433005786ef35800fd41eda58956ef81f16768a9580bc0c164ed701f3df29b43ae077ae1b49dc908ef82712e09d71d2de66a679d2754278aae4765b07e2626b8c2229965cbe331880aeb55dd418fb9ab670b447f5595a6ce323a7b7f1cb9204cc217c851a7805db97347df6411a51653401984ac4fcd83817e54d643a89e105d8b5db5662a7dbeb499954b8d53070c0f46b7d853a42d4a24005f4d69fbdee295819afd5c41c0508ff6682ab930af3ee05dfa41c5887dc1e16b034361a150b6b9cce89981b4a0204fd54f3d5ae42b20e0514544737d868cc0f54075437e601822c3d2763e64129b0b54096ac968a9ac1003d207ba9e8d03d7f435102251365469fc165af9fa538506a10720ce1a5b4412999907d2f86411b33d59a7e9ea661df1699e1333d50e5ddadaf111c8d4a6f75500708f3dc2385585cfce06f1f6dfd8b898f066314e35ebf3e5a0226f1615a2b6037552e2826d901bd818b945ab0bdeeeeba95438c0be7c0e3202f5a2538e53713323baba220de3e81fde8c3a1c9b640c476141dd7e9c4ad623798a9c1499f964b5bd321d5573729478ac9a250750f9adbd1115017010003a939e381e53e8e32e3f600f732c2296d72ded70f6ae0f70fce929e2a1a9c5f96ef317915345d38db2e98d9e99b1726d63ea4b9c70b22282566827c1ee7540085dbadc3f365690daa03c300f056772cd7e4f8b22f69b81b57d8f4e91b2614f05088fa3ba5de3090a19f793df3590cee01c62e890743394c3cafc64d04df00fc371d921827f489fffa8be7499b0e96a3efdc296955c9dde7e8c98dcdc9a1962098a605342c9b210d4fabeb02f1b4f0fcdeb6cf32e2f71e8401784438d0214417d36ecf5d15b472044ad736f01a8327dd3bbbdee957236096ec2d13bdbba4b3b9b108076b953af515256d56f6355c1e2bb30db6e36fb265bbb7124b647f4712a93ea90655ce9438c91e4c036472bc1aceb6a678fb3a760811aa939f9a7035526eb521dd44fdda897d0186ad73330bc5b47029084a600001ef6c396caf114ea289589b04c91108083116c428d52390e22a99e23124e212d89e12891029c002132ea35c2e05041f33885b6166101184b891a64804812304ed3262b111acb1994a53113c03444e27dafc06bf3ad736bff3c626398ce4733037aa94d15bfb76cffa3ab5141759a2d20a11123fb318f58ac0bcaefc71f986fa81be547f1f3c5d90bb6889f3a0472c09c99ce901cbc949c72850c14397afe025e3026599f546d7687953775ecb69808857d6040949b0208375cc2dad913728ecce35b058691a16687925265eba07ba869f59d2d0810573a247794a1cda6ff073a5de18dc6ba887d901e06aef2eb98fca00b50736e12d5cf005a3a3ff9507f87e9f4538e8f66a23c0dea371091cef0e26d48830813ff5e48044ec5a3d6d182dff98d01971e0a5a4a22c46fbe241fd337df6a824c14a80ae67ef57a2e300181ea77dfb949adfa84936a16521a377c18285d829053799d039a2edbf09e741d71dda5f0f40b915b9b49d361c3f8e52ded90c9b173fb1f73bf5822b93168e297e9f6ea45f8d0e5d59f93345dfbdfa1730b3ea7167045f8ece057abcd09af90c9b96c0379d4997d9938a4b9448c7c933ed68a9d561a60c6d960a6f8f7f192c5d36a3089c7ef318024293ceb3b75f6b5d8d5efc245227c5a88c12d6df084d87798ba7a2340f384f17afcf595bc9d67bbcec87e1f4188817eefdcf54adfc334f5ed0a5c6cd85666e959cdee11aaeddb253e3d36a2fcbbc5c49b1cd43c39774fabfcdd76c27cc8383f51238bf28eabfbc2f10b216dad5a60fcc4fab1d6b04b31c50366dbb4fa082f7fb7554e12e2de02f9f2d73cc7f471c9eac997e6cf1786ea62da2700a7a460b915d2e1320e1b3e607c3736922d3a8887defbe35de5812ae7bf9b6dc0c341da9287b55c1d9dd956dc63bc334ef25abd2aae0fc8e74cfc08aebb880ae7cda115440849ea40820d00baffe117bef6909a82c15ad4f97cf0e0830c0330b478dc885a5d4961799c90c9646b679dc0c42232b1d982ab19ad47b4335c6b958ee4510ba4ef912040d1efdff63e8958e9cd84c08a6a724d190e5e0745de82129980983ba1120afa59deddff8af313e1c73ddedb62abf7304ec14e752f1fcdc7aba5117f7ab0362e0a7d9f167b747b25065f35eb1a8596c1396f74c5139bea553cc1bbaf335bb002dd0a1c53f5c20a73b5e61020e355e147715765f61d3ed372c131377dc075f3d8e80eced1e85762955a307a7ccb12dbcab2b551bb838985b0a845ea243a1739c65c8277baad1be802960239394f6b45ac77f9d0c38b11969d2328375133a2a32c2af4ccc637e0dd9e3ba6c3a975daa717f1d003e43cfb9c4b0c052590b8350ecc5ec78a946fdbb0a3d94b461560eb504917fd8d48a844fcbf88ed2526677e20ee6c631207622a2e2e5cb8ab515e2cd1424452df84fc2cb3e9457c4a7e2185cd1093b4145f92c88982a2a5df93abfee70b97d2f7623301cfb1ca942ebed822b0eba87b0d3c318c31e21be9a4a6de8bd75cbd462fb8b81495c31d9302622782e2a98bf7c8ae0a9d567d40ba0e240dccd90adc065a1c618304cedf2b4581db2d04c0fc9ca81d3c4df093ebc82eb865bc3f5e5c189158cfb6ab847e821fe44fc5ca51fb2942e527b314178ac8ca555bb89144a408c80392503d1f9a86448cf08386be1aa8628241f5c47e7c9d0dec0c23c7817b3b471b5bb631de38395cad0df22a0426fa4d66c35bcb368e1495f1656b67fdd5f7893e3877d3a2c68cbd7a6102e3f6eeb7ede3b68fa55f8723c9f4c1e623f19e0470992ea1f58580d278e0b23edcef93d37cd20ce84a2a6647760a31527b36137508418d4b1b7fcf013091d255a459d3b9954a6340a93b96b8fbafc4cec488ac4433ed24b7a58f0ad04e17172e7e9e378d5b27f25fb1ed1453400715c4a075ab1ad48329376d3d0fc6b5f2ac5586a53a9df153e990a20bcf0dadf3a70927805f0d634a5b00047ac9a3a755dcb3249949a87a924955fb4da4560b88187110002ae6a8e632b4d52a51ae8dc80c8af81302fe232efeaff4f8376053543e13ebd620f3c382bf33ffa231513f8b76b31c8cc4a1785f663a1b4087d498034853a3e70126742713bf653a1f25d15c644ad83159e443697e22ef403990d6fdf147ae110ebfd790e8297689469f75eaa890b83aee10e259ad05f6e18547cdc5130071470b0098b773a4e10cb6bab947c0559fd15cb46be94c72301c81f22ab64b039c7ce9c5d481de54488e05d3a811ad2f159387b937a5d05382a973ee675e3952a1b10490e840c5deacd1756fd0ec21f55014555092f7304fdda10af094bee0409ed8bf1c6280bd6a44ca523e7657c1d5bc4285a77747407e57030ffdb536122b8c3a180b7475eebd416e4426cb11c8bc0fe59cd02d1a1a14a94343500e0d64e87195a0095bbb4a8f34ecfb8c8b3a7d152f81bb3913ed21e83ba5c6fb4a2b644daf78f8386421a644d35ef868c15439b5ff826d9eecd13cd3d41939b6cbc355b7565e666dc952bd03cf218a86bb176adb3c4f1f6e68f6f5c46ef8f4f4e8a6136f36855fb7e6a7f68124a727dadaf00324c3e98299bfeee0f653f89cd7de525d772a1ef76fae59758b4b7398b8deadc4f6c36719477ea3911057678c6ccb10d6ad9fe7105fb1a3a5b4f831854651d3fed6b7d96383fee862535e2e8e58a9f8a7f520c4b9a5642a24088b99748bbe81605d449b11380857e985f1e6b21cc4cff47a262ec3e9478235548f02739954147575d4c759cd99dcafc3d9ce7da53d9f816eec4c20f2b660bca0d4f04d2df019c89b342011214cbbeb0f1129842a3b84cf877ce48240ec81d2d785909bd7347b3b93881d9670e5ce6516245a0b9afadcaa0a394dba7e513769e75c4e253c1a50af9304287051d15b2d64512a99c5a52f41d86a0306d0d0d98a8c0e6912c00227401f70bf22e566659e82b28c6ed56072227a913ff172a530bbd1e0ae8812b84f876506a854112300a5f597140b57ac01719439417b392f683e6ca18522fbfcb3214ec7360a095857650c42e29e8908ab89d068891947f63b60ba5e2cb36b9a15e5c98b9c1b53433d6f570081d294df4573deb4cce0d129c2f14c0924ee27170477a18f8c4a4121317ba0b69d449270b82b99dc4c525667d75613d8ee4affde3b1e295d948c87700d2e90058535f91b868f59c09043f79ed2d08b8f3d06f2d5abd6b65a50012ecf6d5cc8768cc9f7a172cc7545cb648fb6aecff112c92d3448291587e6abef683cf4c9d49c06ebe99e2124ab3dc7b3417f924fbc35c67acb0fcde4bdb24f3fb836b9a62a98ae57b1dd5579962480813d10320abe8c709d7df5d5375a922301ebab30f5c005e4b4ac585a0b6e1e85bf09be30c3610889e44956d652def206621601f44738692018255564a5d078529a193c7b2051c430e9a8b0020843bb58eafeabaf1ef2de0a1ec320adee67385ff19a9b1c1d4d5442a70ca22cce3e3f1828bdc2e0a6dfbd4746bdd7de26caa52d22a1b6508dda54133503682480c8a9038df764668323ffb1221890237af2f0eb984bb4da78d391a03d459e095e34e3e01a40244083046746c88b44f9bfaa9a84d08c018c7fae533d491045df288ff3c0c0fd5f1b8673410623c99acc1d145628636696e168ee9213492329fa2ae05d57ab86cb7a8f61f31d7138935fda5c2cb8ebe40378998e5065be19c64778d70777e172851c337693dd814c181415244137f817cf2dc9f456c42497c4816838b224312137630adefae87bb6ca9821004d6972c5548651a0d645212a65eb3e0d11b5413c9620dc047902fed5a557f7cb5b25913a5015c8f1bd52dc0ad076526570add1de05f77b9e65dcfe07f1f7e0c27d18fac1c57e1464094f414af76a6ea64fe8cea54c37b875bdf5c8f1599fb7c35bf5eb2934bd7810265f684e74c1218b4fb6c95da33296db6ca6df096c6f4dead10ba6f9b80cbac5f40923594580bd0266d6bcbd2666cf635f53aa09da0633b005a98ef271c8f0f27924254671388f518274858055268a2d961c3991920f7cfea12fe9db02945e8b968a66aa8897502cbd7b17a7086e118ccfbca67b7b0d0e78774625f3a0e7d18f714b508570b256ac8375944b2b71e7cc514d6c5afc240613d838a1f812a151e5a7bf335954d01e337def6637ac7a88faedffba781896713ea200faa242718a57d259a47fc19f4f6b2924ba635454fd1cf68e332e81ce55daaf3c60a8795311165d13d051172fddda6b6efbf7911de8b07a35fdf5735c1d710c4aeec6d9c7389db6676820ffaa6259f02ad48345ab5a7724707fe275389b3654ae0c16bdb413e853ae67e3aca6630449ada9aad37c1d89a92c91b1740a93c401bbff6c52e5c59766aeb8889950c4a864ce4b0a2edcef82e948b793d86528ced5b2d3d52f35564de6b67e7fd08eeb11daff27368e3b9af78be8592858207689456b748662f271969586504afa6ea2272585dde7000ebcbcb0ce4204064f5dc370cc755ff2a71c0d192b407420498bd2511308d38ce828a374e2bd782d046681b3d9153d5b5d221c14346bd33cbd7f5a3f9f4c2a3e9f38459824c99b559317da34c3e74caad4afd787511302143599ea4c9295b7ce7cac557461f36498923db3a5c5804525ddb1bbaa4b5b83319004fd8437d8332ebb96459a2d2ad7da72aa95a8860db73c96e0d71ae45ab3578e00de090701a01999c1763422ae9f5a1f8a91070f44e82310bb282ad945e8a4c9133332f1508096e8fbb1d556f2e0dd0c504ff4588ef623be06e84a161168b9d67bbe6d0c20a46dda9e39fec71af3e7a833a2d7e0c49ee431d5b4097b4187c2b179c728c78a1f15ec137ec163b465272e2d3dfc6984ee51c99970bcaf852afc253970314765274acf05ceff43eae4ad3feb5a2aecdb39376521b83f89164c520cd0094dd8e85b10abb4905346ee83c855b183e55abc467aa2004e4ab3e4eff88db89aee2682162e102cf3a7feb897608521f94bcd63f09b0a6f95436064db90c6d788f711102e520ef5076dd3405e3ac378217af1f7a7920c3788a4e61327c1fce5afa40e999cf15da6f1a409a4a1aebbe33cfc81f345e591bcc013f1c39da5247caf6ef2b47792346f8959142ea9dbfbf30f564448b59748a49bc8df3170fddf0ad9c28f33498de03fc7d81c1861e09b3d0e6066e904b92c833c778887e873f356d5f4f11d57ea255f400cb7866dc54bd1bd28e0a6c83b8599618306f592f80791601f6025fec625755ddc9a660cc435176b7d762c54ac4aa1cd843111f5433f7030d0cece069221e0e5156530c34583eaccc9f3618918cc6027171878209fa581913d85c17e50bee20279e127319505227792b4a8aa8c22141d5a62323c08577b07f8c4d569e8f148d7553669f7eb50916578478e49c806c577a154dde93506e63181e16d7f2418d4da2b74bfd49ecca8419736ce016f7e8691ac60af958373a7629301480848ab4dc81c1cf6a28d1445858174a528dacb10707862e6c12128f2904d8d03cfaed8a63c0e79e0500b250dcb1e82f61e3278566171d6c0a6400e574c45d303dc4ecea1ab5b72a472cadfce18296438539d286b1e5d73387d1c92806153df7ae0cf34803e41d188ec0fd55a580f2e9098a06d436192c5429a18b2abc0fa46997ddc0565a6b63d94512bf55cb010566c0f24f8833c1fa5f0ae49251914a338172efe48eb3861ce33a6e742b3033f1712bf40ff3684f2163aa2c085c6355a00b76b4ef0c11d765c3f6858667e0da0329c0a08408ea33318b4370ec60096776c6a451e88710d6320b1007464a57cd3fb2f44a26c664f0092f76180c7868264c60f3bd6021cb71a170e97e3f9c630db013356816d5f575fd54651c3453307d182b97e97744a00f8c0b321d25c159010b8f75a27f92c27d3e846c3c1d999da82c750fec03a550209f4db5620d02620350a07f63f0c1874403c73d600f9c827cb788c67e33c4b67529d50b1382d1104ae222c556a68ec017b7c3d98b93e7141efc5926f1dcd27270e1d13000395c012aa0a034fc2d6e25f9ad619150b06f6299dffbc5ad8ca75a677d2bb148295c51b257b84487b521c04bd3e1e94bdd983a810952449684a1a44a9dcdf82e59fa31e29b0b360ba70a346c5e7a266fb91a20908097c3dad0e658c4f6dd16c0d4b52b645f03790db827bf1ea3717c243ce7e5fc198e348d2115487b661ef7b750bdcbeb4145e8242f253f4abec381992b33256e90ff7812c8de4792b610d4cbd014ccb02b80d32a0720d7da33dc045a1503fcd22479904294943e0e6361437639026719e2fa8cdc29f958d50cd72fad32894e224e415202a02ddd9536b39d5f757911b7e86b450dba320e14274d5b2dc8a7698716e7bf787f9a7a9176b935d2bea6f00a30ad00bc99db4719d168b31b6cbe498e2c5d776203e703ebf2341fafc697cdafe434427a71dfc79bd6f79ab2ae212a6fe385360ec470b42ef9e0215535454578429c5faef5aed81f3925d19164a26b19fe56f050bcff7c5b0a0180b966a79fa3877a0427cae6aec07a8ed2011fe0c0804eab736197a5eae61820c4ac67c3cf7e1fd91457fae0a9836ad98615fb1c47db5245863e8d2a2dacf9d3be5ad43eeae810a5e922141c2f5de2656b9d04da0284186a38ea864bb39aea17aa3a7608b636174ba9e71e75e39ffc0b22fbd0cb676cfd23444b8ed8fb663193627eedfd097a819ae3c69a3b7a6a9c2d3d90859983ccab60318475a6b808bcb1280d61b57d96b1ef3efdb3c598fcb250edcab7e0eefb99c17b690bd2544a3a2d9c4f594f58398a673fef101d24027c08ecf7d429ae2eeb64ed2ef11c421451ba1b6e36637d93a3faab04ddca486becd90cddd990788984c93ef0b8bf31bbaf9b3ed1d1e9465dec30572c7cc1a6a2efca39b3edec36602453d71f43ad5151e6a33a09fe6ce28c6f6e6e9ada5cc89909d6e802ba76951dbda5bfd19b62cc71d791f0af741b0732f1d4c1296ca1fbe2ac3794a6f1627c9d010316fb083efc40eaccaf8a09934751122160672bd21625b1d2824659c63951398e57ea6bba2c3528429df8828b75f88976b91c7d5be51bdb0522751b4631881e9a0c211843c5a5fd1b6f90fc2a9029bc535ce83742454531d1e1c84938817fb4037252502a36e13ee80d817e867aca5d2454df530f312656c38ab1e854046469034708497e0b18b3be10451218d69051b23c0ecf74bf7d15900902f5c7caa77337595ca1c173bb809efc63fe044b2f2a7f0be3998beff1de184b719a835d52be122f7b76987d387be8a6503e7f7eb6de3aced92adb094924934d43e64a779f5138c50eabbb9da93538408c561516290eee1eb2c76105a83550483c63afd60364a3ef4249c1f844ed3ef8889d7121639efebc916737007775e0070fbbe599f596b97ec7acaa754cf37ef9420cd7e9014cae600b4a622ec4baf96da3063f4d9d07325aab7996887408207f9fdba03d92e7a1f6788f2ceaf8b63d6c75c9e49f096d8dde1a0c6bcd02b852040366a709a646bb5822031ea16b62ab30557fae310bc348c793e6e01f8c7e015f5581ad0523622d88d37a64710d2fb5feca244f4ec92149d71e610829bd50d9de6e36c21a6fbe9e071685d9ee3768e0a0ff5e4a0af7edb7716b1f6c615b137532d248b38e4c982586bcf9b2cced4dcd05f1618072b5c8dfdf60f0b98a1e0cdc22ee683475e8e8b86dc9f3b39e4b41ddb76e79211779e7cf081169210f35d204115a43924dd355b328bd2e4bfb9f6f35919e02402095f55bc6516d99325d30e5c0ee51c196dd8156418096ca94526b0d5b3f7308a9aeb2207cd5bad62529c40e1a1b643497f39c7d73ad70ce1de305f95b4e23e201c2c846314589cb3caa65d35a1517b7559f0915d292960da087588bd073919920d6bdb13a55b9074561cb0761bbd75d67c3ec9420f7829b99e4a305ea16dc3ad1ee65fe891543ca7787773b5c9d2a8adeb4ced68e61c3dd698565a6a4eb2ad4a1e6b2d12b375cb4372e29a419ef68914466691269ee2c1c85440378668cca20faa15fd10248bc55774e3d64c256d4bf32ca5ac3746fb969300e72016132b66742cb15da352331d0aa16b1f4bb4a78eaec520b607c4e3aed44b436754e3b0f8e2286d985d7c376ff76f01c48a0326a2c59e6f0129e908a6380c0955170e70260ff5d3500e96de725195c28f4e3c5c249925a0339375c721d4dd9bcf0b163376e78d1272dde8007babacf9a8178cb7eacf29a2830ed0d2f221a78277bef6b3ed3e712f09745e013af0413d2b8d907eaab6e7e8495ac5b97d63a95b1db3aef75c48ff80028846305ca44420e1434eec9df0cf57ffc385827df00d9f3a293155697aa658fd349dffbc7be0c42fb89d50d9d9bc6cc9f4b96d69060ec746b5f1803fee53677870c14de3d01fa52625990be162670cf3943bd198b34fd32fa3c5a61b38136e93344aa74b5a82c284d76532c9c28957c8299d557449f21363fe1f45470928b130359d5b433bd7fbcb9b995962abbfc6c54040893ebee177b63c9a0aceaf371222f0cd9cc813ea63377d18a1c4b55d541cefd55ed727c33d0ec4ca1e5d08de92f080ef8c80b52ebc95fc0208742cf77fb3cd85adb3be0863892e687578caf8d3da48d611ab77580bd2d442b631f7f7a002254204071515c550845eec905412783759e8faf5b1a19d965d14f72179051353189ca531139a5237fff69d0c05010832c90431fc250e61f9646870eaa02ba15a9f5cd2925aad22469b1c2ccb9ac0775b76041cc8645f737fce99c378c2e0540a78b5640f1ad92aa3d8a576bc368adc08bc7e992dda35a071ce487f88788075cc963309650749b81532a1299cc02fb3650ee8ff0b1e820085d7b0aba3719467d9c22b99233a64af58b959f9e785aed4e92702146fab847ca1699af14123564ed428cd9ea037f50615b12287b0ae365a9e1623c9e1e4022281c27323c8c12b29e9ec5936c80981053c45f6817bbad07a7df33e7c9ab25c42a0e735fb521b386b59471eaf61a38400c7d37ca5b08044a3b5328c2ba7f029b22a6d61b25507f995898d406ee187c5d4666a8e296aba53b612ad9db2cc14a21e39faa272751db20400a331953c00f180906c2320825b9fe5677788386e1e6ae3f297143f75927a8975ab524e3ef54afa6b4bb6e7af4c083a968636c95f1bd613d9ee9253b1a59a0609bcd83931832e41090a6c2aa72dd0e45e28af12b0b8d26a18114df8b1e4e3fb122ca2ef9f8c3bb7ddb57952f0dfaba44cfcc2ad947923344614473034bcae8cf0d2f8ceb240c9b26fc7cc9ae51476a4025e126eac5edd7ede955d38655318eac7d82ad1430d3b88121044c486c2ce38780367124e4cbc72b01f74ccdc1cd42c84eeee14e48f8f4d504392e27874b9437e58c3f843334b24369033598da7a50851618816c9c0cf2c88ed0f12acb090cfbff273c27c9f7095e015d4398d03887e0f79fc3d386443c08b0f6726115d4bcd06455a0da0987e596c6ad40721a5788900c95a8d9e80a52ea97fc9e4dc71d72ecc36b21aa888352a4054b6971ca0285d5328a498190d8b986a32015b8b7d6ab0ebb55c58e6e0c8153148cacb7a4d239fbd701387dd0a566551294cd2ec733d80a742dccd526dc43cf25043c2e7b18e2e22655c20cd11233a92d5a17a722704545e4bed2f2b1f1a59a97557fc2941edf56e4b88ddbaf332633f3613b062924bd4753edf0ffb7c9524536da137091b360d56684804a5c0a0b9154dc372562371cdc4be1140e0cb10d50c08d5cdb39e6299fe111ecdac26f035a1d305c3c1c76249e250fbf9592e83c2b7ac8c9540a94b307bf0d7230b8b57c5d7115801a5aa51000138989223be9a0e9f61952872b6b9948273ce0d33136285c78e90aa2571b9b08daa8458b932b2a545e57e86f8fc43b27d846304a19f642ea70c67838fc592c4a1f6f3b35c06856f59995857cbb996b3f4cc647b17708afdbbad39a121e01bda337153af29499cc4798f5b858fb63a7a31243e5299d3bdf79e5f3f53f2012eda7ed8cc11c1d314110c3167b9054066b85a5ec55266ab56a1c9b20a94b159d0c840abfa95acb3c14df87d21a6946ce85cdd07fb68b45035a5a9f8706d0480c0ca04da70feb5dc251466ac9d8cd741e821e2e379834a667d3d4e2bd4c2616819843eff445b47376bb10a4e7263e7a08d088773a8a9267122958abcd933b6e754a06bfeffeff9438f69692232bc580406c7c041365fe736aceda304ebb568696fcd1a7faefd445311c48454c801668926504020782d225e7d513c32e643786c92c8334c62a5d597a84a8b0f9984317c77ba25a046c346cbed94983563bdea7663af7fc5e5ee428397308f886ff8a7cbdc1d97ac4cfe4ae2c271e0d385ec71bb991b2c92837517b77cdffccf56b2d307fa866fb08cf48a396abecd0c0818babdac981565d9b7cd9c338f1d1e345097478d7e23d4daaf292ab7d6fe434783611b6babebc175abaf5fef043bcca6ebf5e342d3e090c666a83a3fc5305c5b9d457fe8a50a452cfe93b37634facc000dc5092572ecf60f9cf48d9bdc2be259f1c86ae2ba99a810fa10391b241e48f110b172c0b4e8d2805295b8f5fa9f1e2ba4fe58fcfa1e99a9cf19f9e397447b7a2a6ec053b78bdd14dd203294366b4b578c8ea310b481e99751939669004c69254ce0e16426cae728e1e4bd6337e336e2a75e91eb2622749461af96f95b90aa42aa99272519c661ecb826b987478be5c0098545e5d242b25a17bd31175c3f77bf9614aa9e608ef9612a34e1358b58d9c76efefedf6113b021b332c27a511bb26107981318fd253039e09831308ca838877260eb3cce3b1c8bd02ad5f1afafd8a42c16c2f88a11b066413489854551cd6808ef4c0ae86d6a76309c7b514af2d2bdbfcf2bfb8e6ab14461e4d7dccf70359b869263c237c99df1d1f6b4ebb5719983be2648e3e3b7a3dec314bab0568b21ea1809376f24f8c0f4c0e05860735d968a6cd26fa2cdc675d4c3c998cd7b2d72ca1a02a1be058f269a8b9d72c4945fa1e7fb5b77fd054791b9e865d966ffc93473576db83784c5c73717bf0d1dc84eb0346448bd87d57c6788c1b46847b0a3af991bff7331aa308e2220217e5624a07751c9abc1004d54d818d5079cdcf55cf7a955e51d9cd1dd1e17027d691712e2b0883619d1328e9cc8b6ec01c4c05a2a2cd0cc669eb6a48b96b9c234bfb283a42b7909be9075608c5ea4dff7a4afe15a3a68dcec4cd95adde15d091e272abef015528d5ebd53d245518ae1dc21b9bd1430ab5c153e848d4b2d7c6dc24d23382afd9ae3c7fd27987e3250ebed59a00b7b939c23ef656063cd44939e8ad21ee0d483796d149ae6053c45e9f2c0363f30e111afea72449f19f543da3f17b5969815f328b4f2082ec0123d342a3e9574770209d3d60ae5c7f30144b032768445a31f897a680d1ed92466f502e61117f124e363a0aada4321112ad368f5be241d186114b1743c5b2a8e616e6d7771ea0e0ee0ed7c6613605a6f0efe2cd4ff4f9413df1149dc163353c939d3fbcf7aa7ab5fbfd99790a2f0c4015451fcc344611acb16e37eb52dffb3e4f3552bf5bb369b69f6c6ef577c49b09c5388b436f6970983a0289b20c582f2d0e19cc6a03e64a8cfd6bc732ee3663c33ea54d197a1580ba82017510a5fb70d108bd3b90bd49032567a05fb2d9107f2e3d9d61e3107faa6a1e9bc4b54cfd8c109fa7dfff862c5dc5b59e11431b0396cfbc946d4d0a7eec1302812a104719af075502c3ce8c02e99cd25688683b2cbd783cdfd05dc8a0b67f933da70300b8c1025c94c37cceefdcee1390c8a25f697a1b478800c8223ddaef336668fae20c6694ade8d770f7cadabf2f1eefe6236ca5a4f049c2bfe2bc0c234b109fa16c0724089bfab15d4d9a210b8be6cd74859f707aadc8b44bc9edf7c41660eb9c874ac16759ea57970c32ab112a65d0cca6a02773be8a50722e92c685e421a8f1d83b264784d8cb9ee9d38569b56097ee4e65f3d3d6755e8d67c47d1c6f92f3eed68c8289af1d32fc5c55a858022600167a8a0982533f702825208e875fc383e1a3f290b6fc9b8a283bff48f07d47581e831db28a40b3eb1faa15bcf14c37df4802002fcbacbc005083fe9b061cd024400830213172e5487d6f351420d8a4f859b32c766af0db2fa46d3d23344311a2fa191ddd23c106091fcfff496dc5792133995a4494678748f6fa29f1ec8bdfd555aa15cb834f9274c24d117bb71a8ceb871e31a28318f62760f94e0d530f374da6ca8cfb9f8a16cab70f04dd505e696455559cb7461f3876b3b8324336204aab660be7be5e059f53e51289f90b93848161eb4a7feed4c8e4f9e9fee94488e3390d491aa5f3b3aff41d9132863552758ecc84958c57a69e5dd9aa1bcab414c83cfe4a1b794f013178c3c17f394bebdbe99f73c0b5d1d118afe3b513d3a4e9700843ede4cc74a8a010c0a326662f53abf6a0ebc3edc244934e0146c1713da735945e3dc2f0582b4088787b74b8579725d3b78cf1b76963782d1e41555d4204428a82a8c4ed6597220e408a9b9fdcf797d7bbbd8671c01cfcefe504af8fe0b8b9f1d14bd72c321ff913f95be3f51cab3d0e66f32b3822edc2247acebc7e4156f79b8ecb0244526af1a9e3b65d0e84c52303ac6f89fb812a2daaaa1a665fb7e82fea1f15c34e7c005dca8a6fbd7269e12dc88ef71ab2be0c4582022ed9af7c50b681d8e5b57e92155945470ff15a13ab566f217f6c44531cacf1452b846807421d1a78feb7a2c49742020a61724e2a9da2a0e67943650f300992be5decb11283578664cfa2f1671ab052b386ee16a2ff042c19f23ace3e2c592e912f4c34e2c69739d64ff8889260b7b58c8233d3c648b783b5f4eec584e6d830ca45a679d776627bebebbf8c28ac71ad03c64c0bf961929d26c28b4fdf6cd1e214b31f1524d0d6bd974a596fadda7ce3b0e01af508ae921c2f825ef7e8eb61676d4a862e53d6e46861b9328e290e685247513899578db486b7ca6beae7d02c8925b7030d4c6125066a19d0195f6882797b40daf04be4f2017ec8433eac4ad286532ba4f276ed9d32fafd7b79cc1f5f6a2720da917f01d1b287aaafa429065c1b583b1018ba1ee19090a7c1f1185247142f3019f427564742bfb53fc682395e5f8d95b0878e3efd239ab66f48e5483448c6c5c51ac75a9978c202556c47bff1e6625958bede753318abaa51f565e7a6898f63337ea6f5fd97f985ad771b3f96bb0c3cec6e3a9a87388e57022ad6aadae8b6d71b6b1af0833272df93773f96b4b2357471a76a8d623064577ea80d6d9fae34359fdda30961447b987a466f0ba01997844c3c678f404beed1810c9c6284bdc65a10d792eecaaef766f353a8a911369b3ce0f546678ada722eef730759e4318bbca4d810b849442924750d85a0cd2479bdfcb57cd0baf04952d8f93d8dc1b940d9fc8a627b96ceefde18fa7bd756ceff7e180e7860f6d5e397ccebbc982a09cc82c7b5a05d8088279e625896608c5c84bd30e7ecbc74204d63df1b794a72a00295b0d2654cf5dc20e97a9759fad8f74dcfe28c18d1144f7446318ec92192eb626dab4697a4573abb3552e4b15be75ae6cf4512a39ff39b3a94fb8a0e0778adad4657002a3b819d3990c3b22e5a922fb43f26d3144abab8d6a360848a7d5aaef6d74e984c9f02f425d7159984992a70543d56c7bbb9b42f415ee59147f66aabd50017ee0b3fbeed3a2b8fb234e845c77e275c9bd86152a7b64984efca4d3d6dea8a7ec291ef753849d2229fb92f5dea916d788d4f4b30774593db4193ba2af0a50fa5e456a9b6462f76e7d72846d3b8b6dc7ac3b7dfd18dd055bbe8ba106a2be04043909ef58c20d0f4518d23ffc240f5c05429b2f96825fdc1232c9ab136760e58092e340e1233e0501fd54dfb8aaad9447539a689a460c2896f871d7469919cc88c64291def1bf28e7becd538f1e4e2fdad1a313adf5aa9b7035fbf351c9523defa021517aa5e00f75c69323676dd73c7930bcd83663c7530fe7d47b8ae648cc2dbade91a1dbf08a649ba05130e278c0da65716f55b7bbf12dcd53b26d56b3f3b2b87dfb50d0b3d8311eaaad7c751c6cd7d9487d50d5413ea113f7d3847dd29054b35f468717a8d8acd8f03e32c66c3607201b4af2e89fa638560c5a4304509d1f79348037c23a929a84e28f911aa63281d4f2479dbfe6408ec6bc244c4059576a4c38b8dca819001a1f7d06805fdba9a6db8f1632342d8f7a5167454a65a65211af6278b3af411a4a739c26324250a03a0c3240411934b4b0f4a4c92acde6c7936f8c505c56b03ec6f960e411cfd61484e056512587bec0155307c47904342e89752c67f3d5cebe96f7a6380bc750e6abc7e0522a0a34ffbca6482b89c4cbb97cf524eacb519084f027d58a619bd4d320234c7adeccb1352c50beedc871d21800c370e3ddee0662289c0bcf24bc8723684677673f489e2821cb72a17b37d670d23888bb5afd5d57fde342aa010af39b888d8f9e0b4f63548cd911c686e923585f4feadfcbf2f374e8424e58b68090fe52207d9c82378e2187d854af2480dddec1f33b0db5bb91d30356450b00c48ca0346a1e2d9d8e60d79d11a7089e675b9eccb8a3c0a229cfeaa1ae79fe0f030e8e4c9016fdc4c6c3984a5b44c1ae2e080ab6e67baa53aebbc82bbb28f9e95459b0adf2c17c899bcfcb52ad48986cd866b045cefdde91c286580587827f3ae4d344eb6e0e189a59e0e62c7f5fc3b5aac2d298c833b7b838ca7796f64a5b61b7dc22e5dfe05d7a2311d7c257621d3e8b1684dd0ab7491d0b5b1cf363f9842d8e4ddebe1b981dd27491dce61e4fb9a74f496eed9d2451432993bc3a61297588280ca0d31765f204a503a02a791b5c03c42328555f1bd24ebe77fa2a88ccd63863d09e200a1b42a4a7d53ba55b9ff05c0e7583812f4f80e85670c5056dfed88aa7de6e2de7b7e4bc575e8a925180c5a9c1d8a3e51b836ac87b1ef15fbe08a4ca6bc520c69a31dedbdf3ad244720d957f959ce607521dfc0a8583c9d5f541eacda6630cdb42d6d9ea8584f1c411eff932bb963cd585dbbbb1ca779a63eff76c77bc5dc193cc3252ede948474925645965c18c6d6f763ccd1dcac17d47da49fbf5e272661a9ed51f4d8f649c271965475b351840fa1a0948284dde8677607e217833422153cb2533bfa143a37f6bbe8740752bed9d34d09b12f4c52b4ea25a138ebce0e8f7e7c415ead673c92bb093a44f921bfb2eab1666725a3b3895b7196be22632f51b172c00d544610a4bee255d92257765c2037d2428a62d492a4d3c04223c98a6a69d38379d2ea4f06a7a31402d159e6c6a386a152abc9a20ba6bf4e2f82b76f92250f358539d879ca21e2cd80a49bb6e3bbe1bdc65c30f02adbf1b9071b14054fedcd2e2351d5ae5f4188ff88cd3ade811b84d34f39876a2b76f0ce7adbf63f42eb57c65139817dacfe55bdda391e56d9810706676ebbb8bb1a93bfffe7e953c277f016acd3dd56dbc985d26d0b0c03d5403d739a13df97712af65751ba92a834002e9c01f46196d2e7bf0c283b39d61e453cb5eac1823dddbc039941118a48552f3876e65fc9ada2332ba820629704a169fcc793d3128cf89f008d273060521c42a0420b07f40709ed6c1686f130f6a8240a7f977a81977742918f37a9b6ed6e64e20f3785241139a30d79308c54a7e307fc9f513167ed190d7dde6099e3f64d8b3f44e3942430984c549cc6576e259488ad13547cc0318fd4b8aa718fa7781265f957554f844a8f93a16a58d2344d67c153974f5d9702f1a061e1c06ea0012b92a2531b2fb929a9b5cc882a732a6fa0274730a7a5a79fd79fb57b5c0869f2ded315817b5811c598faad0967af80fa142fa05e04e77d2e3544c4d1577438f0cdc9e6af51aeef47da3d04fdebf293b17e8366f0d022651e873e1dae1acd57148b96f58a6f224bcb57408c43e577588cb4138853ebae4a52e36f065ae98adad92024e694adf864557e4a9ac6dcab59f8a42332bbd3b7dcc6da1f1221fe9713b1e0af5937333cdaafad260a5eaf522872043bed4cc592b1b66238f245195a4138ce7c51b3b7cca391559f43524c49a0a25c82f34fbe7dd720016723bcace64b64be44ea314a6296b23010ddd00bf6ca8e3d8d8bf79722262f068a277102a5d6e1e5b0afb876b4954d49911e9f1e977766f2eafa3bf9f336245900e029dccc888e08ad9a1065ab8130ff07326d1ec9d41a032a79b6b4779fe7ef609cacc9c77e1f4b30df76e5cf8e7820870e7673012ce890ba9fd9f8d15db938589fed3eb3f721fc6c092e7841ab064a4e0b1795ab491f0affee8fc85069b836b919f7408c8cb4fa53a6ce812409bbb9d2d72b86b888a63c34571ee2a8ad30a1382f126974f934ddf4a46672906c7943bcb1c5a68435090087d1de8bf7f5fd036ed644e3d7eae76996c625711c1ddc459d8873869bd15a66b284ba6bdfd905b7536d9550c5e8c50762c7611caa44095cee670a0d00e59402d26ddd9dcf4c6abe92ec564197fe8be4ef1263c44855d083b3c7c9ef57ee96b5dff2ac4f538c887e103229bbede3b5d8576c4ae6fa4060e3e711bcded92708895644ce6542132f5bbb3a8c2df009559aff934307a72193f510c68ccc9d8480df26b3b32ef02587f8add8533f4d8c94e40638ed18b3523d50aa5b9e5ce203ea4470a8410e0859b01d63bbe8a29d29fb96008c0c45fa5517901b37f590485f87c35d7b6b84cb5630d0ce1601b0c2162361fc0ecee9c5720fd53be7ef53c66c8ad8682002092c9ea14e7b66da8dbff4571c3c7c86995c75f71066b5918ae9b8ed44c11a7cc80d384688fe9b385ffccb40e72ca8aeaee124dc05425258d8ae933131fa4d4125ad12ce08f7e31e92d69fccbc64ccf12ca75b64ad62e2ea7bf23e9bfe23ee243be9c6286884d360f2db3d6d2f6dd4218a6711b89256c716ba0cf3515612582c10e5f1e49746b983c7befc6c97f4b6e7bfdaef35f39b65d8010e70590cfbc926fc0323b544caa799088d89b31ed547c2aac4ed50bd8a812bbef0bf0fd50ce1971e9c222e248ae9416fc80816b2a4500b6b0fe2c496173d3ec2fbe20c878c3afe9c50893480689ab4d22a08a412b0741fb41bd515f6cdbea8a52329969d07294db78f5104fb19f86b18e84d02e90d001a2131ae474d781e32b1128162e77a95af80a6c5f33e290a2e628daa28eb2309e03a8ff564a8ac56da96f2860c1a87039962dd3c08bc3f7c8218e96fe821e45d99e50237d6e510f586ae88c63dc9238797257e3dc8efd5c8849f6b698c2b1cf179522bd486072dcf08b31ac45a9c800d904204b2fa8741b405642050a4638329469993f2bcf6b6f3ef36d9bc7ea3d4e3104e386a0aa83b7e6d72e6489c6e2568e8a4a5ace4d0c6579f76181c2e5180eba5b803d0bcafe4864133d7923ea1d6bd61c362c30afd796aba1a7240b8740542697a82a5cce3f11b49eaef42ffcc2b4677ce1e77e52ad38e5c118217b0d51831e0d9af55a76608633005711481b29dacdd313d455d6305cdc5caca52107ab2eb5c14e454de90c73bed0815d89ebe8a9d4938f3043b71b80627cda375f7dddc5062680acd532d14a5b6eceaf1492df3cb13ca8875a7fa03b88c3f819f49dd243430aac004d996638b5574d990dddd42830399f5d967767b69cdf3dc9551af9c1539dd548c42927d4118172e4718073a2a89244bde208499258d625eb59f961760087b049d120fe1250c91b284e9a1e60b6ccd4469cfe61d029a635b94d88d1c225edae1d283efba1673bcbb5a1fb8c862fe2be332748461839a857408dd508aaf8031fbb1136b3e8646d59928f875d9db03da5d8d51d07b6d8805d12d27f2606a912763134255424a39064b0db1825c52aa2118d4f9f8e56543f14b2b98d44de6cef25631b1ba7f6314fb423417c75424b560318216c24cbfba804a70b2d5c8c490265b2945e685957109bc7a8b1d2d962b9deb419a815cdbab0a1a5b24afba64a2044ee927ab21b1e72973543d3fa2c4f3bd138758b20ea4856695b68741435e95c842fe387df49618c202bf6ba7a393962b773c76e5e5d0d0284e87c5f2e27ebf8a854d07624881ec64b2a36277b66ac11900bbcd9d36c4f5d582006ce36dd8f1f353880c2bc64927825bee1086e45aea56c3b29c74c017828081c23b02276b95250fd71f62d1ddb55e4a728c3668e5f68db8fbe6046ae337c489643ac677c14e10b3cf74b06244936a4a28ba41ef9163062f0184be45b5ccc413a50a264ce64fda5e7374191e69f61b5318748885d00139ee64dc64ab8b514f86285278dcb30d7dae2c5f5af25e0d194029e001ee8f07d1b736065479d18b98b5a965c6c4c884e5cb86eac808d1772022399ee9cbb8208aea523c54f660735f34a00cf96280add0e7832fe9efd20826dffb217ae67961b78f7a9299cafcad3d848b382b6ff2531030b654c8d53ef27a054f68921113976edb34ad43e61d7a26742d3e73351ca1ce782e3c4e7fa6703890b169ec12df44112909120909a073c6311bc750d9a01f2c59c0e6c72d5c55e641e27a39450a424a70e7717c7cc718244b2023d48d024eaee388bc3986f963a20e1c09ace1fd43de426a8e9b9a1434914f5710d726c04a1a9c80135c8bac5f2d1f1f6fdc2a8709ec7481c021314924d5044ef272b13934caac2e63c580bd8b6e68b78f2622e92905a724dfcf1077d31487be192a36f0f3e6fb64a4c50db4d892c1bc69b4d0f107d9401cc95232d51e41db245b1244b1219508d5b0353c0cc2deafffa0dcd80c578dbee7bc4553b58cb6ec9537232094f3b9e7ee46b735c3ec0f4c4161c0186a3e7685e075e87944751242a6fc41738f873db8bfcb7d276f7bb3c32f3bb5bbf160fcf163bd0c17dbf6be0b90b014de6a80b0a6758c7ae71f2fca6c882fd736d3419d979b59b8fc70ed7551e3bb98c679877bd98b6eb3860f2fd4585e4fb75ee547ac6886620f88a7b0ada7ef79876c48370b5f605c266bf1f35182cdeb9942c5310b14813a6dcfbe34a2ba844a9116a1590cfc14b1026240d87257eb8fb98e2b1745802eea251d9610e55b5f8adc9a125578178a35e15f2c712ed3f2039a2dca0c33eb2e60da222860970b03b1c670dc047932b780b8e1fc7138ea2031dc9d1e512dcfc0cced812da6e65d1f266f3e2911129630c509bb1b9d748660d324e2f35f0e406b81939fa0933093bd939a7f916908b95ec614fed874389c6e85cc3a5621d66e7dfa015782c8f8be1e3b9410f5a15177dcff744082dd76525f0f6d9412dfa90ee079bdff087721fe40840f2b1198f76d79f3f64a72a72c81739a05b9573e663681fd7e74c819332a194968bf30a25f1c83c75b0fcafdcaeaef6d4f771c0f0aca75e632e730686b21c28949959ae49107ebd718e3433b70447de119c3ce33a7208f86bd39601d6388f07009efd28ea094b80558d518f3806d83e905caceb67cdb30c8e40fb828d8d2510a5387bed2917fd0bab58165d0ad845f643e092cb47c17b572d4716985609c97740dbbe5ee5f37108c4033ffe7a2469320df0acae6e9d02d4eed1509bceb818e64f14615e7d8fc6fd3ec5600fde166a967a8a33df4f07acfc5e7e14ee785946d66a4ee848fcbc4c70b1a419fc83c8e36891f54eac65641cdf1352adce4f4e83dd455914c3939e1258b05a38f44bd87bf96f5972a3adc9d7cfe59f11e4c69ee3f56156bd4e44c689b7d79d945f125ccb49a74392d0981e2a89a10bbf9ae9aaf7695a90a5f93ed96e99b2f33c847a7042eabdcc834aff35e6fb0eb3ecfa29a00a7ed10be520ae45914346dcd09de9378cbd64ccac8b3508119dfdddfb74241385c41bb31738a4920f3d98534a881671988d2351019608e958b913720c9043326020b98f3eebc2215242c7884c1e4fefe2e98698dc43f89e2cf402db2e71b682f047fe2fdcbc093628561a4813b828211ff7c78c36890006a35124601bcae7dc80e003d95fcfecbb6a776d3843f978008bc2e19d76aebcdfa52c051e31dbf0283dfecd60f274063d7d6a59251a663318d551ae674498a37199c91dbf4d6e14b5d4b14cefd31ee61fcfe3871329f6fd7457f31234aac21698b1a5ad70b8770e1728e9a04f7aa4366d7f64610929d4f6efe71c186556cd424a4946a537c2aa7507747baba11826c3757260ad5bd0a5e886a402a95623e4224162d17df443b0e2c061b98d1769cfee06e92b7ea6fb1c2031a126a4af7d100d1ed0ea8b892ffa3d4c8c8e86e26ad39397169bb0a1a4a3a8586dccff7b44c4e04e3aa9d8845bedda14ac80b0eabdb6798b647de246e0895e00b41e96ed479a80001904fa9b38893c530f7216333fe7f135746ea3193f7e1e7f78e1df9624fdbfae3e975e6e445b0e216c2492fe78f021d65ceb379a3a7cc81dd49d383602eaf32216112a45c8535a4a0ae39a9f9cf4a4935d403cfffe877aef7d9cf0f35db5f486ffe0344044bf3ccc66c3df22cb6982208a2602cfb371e316d0e8b33937cd6fed0129448c70b6b39a237d9f3ca8417ea835c9dbf0fe7a3f21b87f62d556fbd34763053b74d997091949dfb533eaa7a0bf4eee4ba94cba5ea64f51f2b751cff0373d4b2cc093a5836273c90c514e575666f4a76938555694063574404d4a32370a8d44958b990d9427563a432083dd0861348f0f18a126f3359a579f159e26248b12b39c0d5366cfbb8e3b5297399cc65761b65c4c699a1afb01e027be091dc15b39d2358be286e632e16da5e8d13a923d4d5d3d21c27928bcef39a6898043bc5b0361450834eaa5db21615f728dd2204269ff4edcdbe23802ef2f3c4e80699c0a12891e2203518113808070d88ac04118c4b58f856bd7d45a6296100f224e0634d1ca7ff5fd7f3c7987b0377fd5e4a7e9522a5a22e0797a9ec35b9178a0d3d31c282f04e27b41f53f494afd603c8164a7137fc8a31ce1a112afc2c74e58f32d770c5a9f9da02933e98de129f1b7e6897be34c4229b94b3e1d9ea392731c15f62d58e82de08043dfe1c1f18a858aca1a2555044a93fe227a917c6a61daa7c71095bb7089a333ad1c8b4d35dcaaee00dd54c78f87391c002387e32a559a75949860decf2c5ef129e0947fab33536b5b9331da6d1cf34e03b5e95f3938880c0b632649816309b69410365708e0860e0badf388b29227a056a00a4b9082f15f8e3193f1a9c8751875ec6d63a52d2549107d87f48d40369747aac38684fe168ff91945615515513bedc5beb8b77b537d2ca150edd150d1122ad96cd492d1a4c8e6cc789c72736096fb7c6d6562f370f540c2531eae4a3752ccd15b6920e895843a648f5e63dfb496fbcb0c8760919a1f622ed0bedc30f6848aa49606f2c6258feab6f8b5deb2fd7efa474a03965699e1572a169e7847a94cf6656e919a7963e82196a70ca5c06c594a83d9194b5d446e48d5b381a59ec0a8b61370529bb4a9629d978d89b333314fd321ad77bb10fccd0266d1de877d7f3d00d9c4cfcf979667b26e5cd0a34916160ce94e636194103f752912579c16a8241828a7c8bed6363dec6de76fc138591acf78b37dfcf4d03f8bd732f46dac79abdb40e14b6ff0ab9b83eb0a40785188f106a3bae9e51b64b0f4de08043a92a1236cb63ec620f67741e8675106a0842afe13f0f6f4892c6d79fd5715175910dd5406f0b88f7d32b8855cafe537909d482f4162883365216d57e4fc8819657ca7562c0f19668fc51ab40b00a06c41d08c499db54c4a6c498a8396da1f2e7f9fa53aec9087e38dd919cb8696c1b5f0f356cef6a60ca7b1ff239759a219b870efcd637f9eb858b59f3a08bc7bd9d60014e29cb4ba2447116a6808722a44f7c710defe8820998fe7221843a3b28341333e0b53471032416ced1f2101ccfab711dac2ff85eb3dff1293b0090acc9182a6ddf56b167438fb6ee58bb0059e21cbd7d7aab260d9540ad38efe68472d2e9408b364d20d308f0ad7a66e4fb3ab648984e104fca9509a9dd2b1d4725a1c0add30c9e85bff2326bb6b1f66891add34005f9f346a154c962262f6930fbe0553ed718cde12166fbebf858e89a9f0e21b533ca46ad32dd4f7564670e7727ac7236cb932c09074fa628461bd44c4aa2e0f40cc080227ed12eed308f239fdf488b74e6b82eb003e6d34bb6725275d45688ceb1f0d429d8db5ff6d4458fb303b9f1c55f0d8306c09d5abe65a2c705622357c29155db0844997e589596a9252c62663f5c414a43996d04d049ae1f2a0870f723d3f0e94c6ec4cdb235d77993f3d338a56f2bca24500482cf58b0ca480451cfa37c9b8d68ae328b4de47443ca15c2b3f405b58c278086c9c3742f2f6f8c17ed9e19147e2122069416a6bc51d3e2e2bdf1bb69633249608b7c1611d91466338ae58b1f0ccfecfabddf6cc68bec3a51f1cabd9db46113cfc05c2afa1ea703b482ca8c86af3605f5d21e648665afb38b00e229062acee960f9aae7f8d44d339d13ae1c0f6efbda41161c5f9140bc8a6fa161566f0fcd62d830ffcb7d7d3209d24d67a8a150c508233837aadd182f85950a592164d1efb9910465db4ec8935f066c00e14774366c242e42f42975aa7883f5430a35caa39d28683f877d28e9ddb220c59c2747d2e74dfcb067d764ab7725d4380b0a6e90f589e2258460804a2290b72212fb9f4a46f6ec44fb6736762b20ebf952232bac44888eae93bee7b26f60f6bd75955a19579653d253439a8c3e8db0f590a30578a32cfe11c5b4701b9d5cb15a31596f04814d2302612461d112841e39866c26adedd76ca0ad4fead06bab1ba1e269bdb5b3a4d0db663fb5d5778d4eeb2e1fe41419cd60a42f4fa81a591a4e10532ebe33a4e0f77d130b158370a1bd6122b547cb71ac42d64924ed975ca46f574130d75a864e544d6226ad638b9d584f1c75b54b968e210b3a981b734ff0a348ba8b3a65ceddf83571e96a1ce2a6c0f534f786bf3a57b4e88af2dc2c48045a9f502ba063b1bcfbaba421ad4b24f7e711f980faabeb15fb18b9bc7e1d3e9b8106441f72dcff752f9bc718a04fe9a9ef95a6999c3f171c279da19b04c2eb86721d5cb89e15ce206fb540a7d24a13a07b96a320b041e6d36d64545446034c0cdd5e68796e72f77f5ed20a1465e50bd837e95ca36cf714ab4842e81810aa19a87316e357503dd2dbbee4073782d3ac7b05b1da4bbac43fe5270e6e92afdca98ca62644e8f8d060a14d57823b5d57ab9105526c8b20ac5238b9d8967fa27600c5ef37b4accaf58ed06de242d2587381ee00472397a300314a9d9a098a38dae7544f4546a2facedc2252683fc9ec7053ac741d805a4bfa718d8dfb3bec7ab742162e1f46f15848b274144837c091139b66f69c95b6ce7c7544e250b89d574d05fb0abe45fc4ce8aea7af462668c0b5fefd06028e46a6fd031544abb88992afdbb538485c221ece3ff68fd1d7b2d1b893b188f2065fa9cc1f956020fb141f34315253aad789936781b4f015eedda81fc1d07f47b26a0ff4b85caee6e0e01e9f9836a87e7cb83539d15a2d86900bd40be6349106fe62c7289aa07b432da422c36edef195d8084a3194367a1c1b6a15e1edf0026fd1ca163f38c4611993ac9f663ba98dea544d74eeb4e2b48e6103b0724f4c4964b66bbb71c805b0e190338e0a4fe00e4f0e9b997254203a203e5790b5015d5ab385e6449d31ba0c42e98b04d76269235d1c4979715117598ba37d46b169ce61a770b17be26881820aff4f5b692796a57f14b3e8e5b201fa1708c300309cb6f9e9a89d3390d3a94b7df62d60575d8c044dc67b2b25d861af795ce15be826d1490c9010347d2a403ea492a15bb6a71423ab958cd43fcbab75dc42fabd3183f219a8937b251e952a4bfd0e55d01429587e4281609cc55295efcd67b2dd176e2341538fb7d13dbcc0bfb1f9bff0b8fa0ab876cf96b6849d3948581047d698a6862c9bdff8f1ce2081f2b80a648a1d3bb0f6bf831a9d7981e5eac24f8c9133183de98208ec136a52910723fa2bae34e75502be344371c76f154afdea2970428042fa7a6d398e73221cc437c4c88de607eaab84f67ca1f96eeecefbbad9684c01001031102fad1162ef374499962d9185ba61b821c76ffe5899e60097991639e2a551a1df986e2dc659af309d854118bed9ff748fd7276afc05c91d2bb3348fba98378688c2be00e9df314f01243a55585685f2ca1f0febcaee6ddd7cb47b94ce576ccc295a2234dc95b3bd0083b07eecae3206c277bc7c565f2716041f2747b4c81ca99469acaf51a330aa77993e2621b1d76ecd55bcc6720f973385389d0232bd45e3f23684d37dc63ccbeed0cfeb1a25702457fd907f74b159cac873c280a5fbee3c6fe5796071c88690a711c59fc032750ce351b1777424fd4345c8894a5927909705732b0ef1aa1a6739cb248a8e2a78c9432ad2b203ae83ff21c50b88d951c183b9b271dbf8b78bfdd76e1199de45a7fae426d10af9fb6455de5fa242e79f87046e812380996cc077505416774eed9710c005f7c0072e1e32165f90102956f7075a440c116f1918d21f523c52de14242c574b0f26ea6cb2062b024e051cdaf111f0b732da960bcb774b19562c5f76c2a78e485820026af99c70e6ace9171d45d97fe78af9e7916a4814d946f83a20763d6437ddc09f84e8c2791235d49cb030fe96315f563bd520670dbc2f64ce22758ac35d77e5fa1687357caf868e4839d8184602d73924a39548b6dc73f2f349f213b410df2363797708f526231c10420bb36582078fe6327f66f17d5356b1626b59b8f1dc5e7302ee462d028651cf1eefe2577e1dd85f7c798552189b2717f330bc8b56612362f27b40192c9947618d281abf2efa11980e1190ee78a5fcf85d3ec07e73bdb0e35fd641957e5131cd6f68c26052d7a47ab7fa28cafe174800dd0f96187bf5ffe974575c653ebac8b0929d06226b66797dd9ae4be51d1fb314550620041a9cd2d611e5e283e959e1d80c51d0d5ef1cc2d2fad7976a693e480b615dc6dd22127ec80e4b3271af5c840925a6120a7f4e2ecca86f188295726f7cdac8cd202f9f19a1d033dcaa6887f53b36bce41e931cc600eea9d572b2271d7643d4473b2caacd0568be6fd805a5aa43a1ff9cb92f291119318fa3fb2bbd519201fd6273578763193445e313a7c5a0b76a1d14d41e0d0a3080ccd3f894f157f21d00e157ef13b48f2a44dc1018e49bbc5599387e4ef37b650bac238a6f0acc523d27901c428e14f19ca18040a13160ddc4cdb8e55c6cae8ebe2295e9a13431972db7183dcc2f3ae4622a773d4d0a08713f37cf67f496dfd7658da93151a3a05af497b5d8fd504378149a23fc5967b8f82cb592266fb80aefe70d5a577230f374a4613482fdf6ec7227898712c5685c1db7559e4e1dd7dd9d07933f3ad6184f5389166d9c98f2706376e27caa5c5b15d8b47f48eeaf55965b51a3e1173d8bfb6101d80e8ded0414d811a48984011e8f76704506201823ea123ae1bb1408c0a5ce2fa1683881bbd4e244d4c297b73a0bb2c1a8cabdb894ae88851d9fee238316c10e6eda222580c740eaf0694e8c9d6aae1e55d6099373b1d130080569006afdd248863c4a92829dd843a6d6995997a93773d9d6f026e1f55686b09f3ea8c501f148faa7ef08175d77e16a7c5e108c3c79f2daa927510c367333b67f8bbfee258096bc55b7d32242849b6a030692d14dbfbc68ecdef25fac753f77d60f9ec916521bd6097f0264f8389e8ecf5c87bf74bcf12ddf8841726b463c5dccc1e8b42a6b5e90273eeacaed4cdf977c784d86338cfbbda2b9a7e9ac94a82c12f149d13d618c07009d8255a0ae1a8f570a62a13edb36113f66122f7568f29377ce0352a2c8a80f1c4e26737498dddedf404171f1c34ee8df54e23d77cf08d40184037fa26c73353b3be324822bbf111ac5e5abbe74941328146fb3c1c0a1d4bc20ed034c589037515ad974db2c54fb497a8326d3379c9f6246980c192ce19310452a638ede56b2610b052010147f472e2ac8d45881a411aa222007a7f4e71b7a3c2a30bf0d7de0110b13c7f3b5b071221461d603058042d4edc7fde8d3f952456b6dc15558bcfede06a20d806e6f19c98906c633f4cf8c226a82cb24c6fabcd8eb3428dfc415935416c0b63410c3231429e0bf2ee24809862878a701953289a39c92ccd107f07da85db714e767cbda7bb2156cbd6bc0a69763da824bd6841bf792a61d2d83acd0aa06b1193b840c02463614bcccede387eefb17bff2b95878fc0e1fc3f97f4e5ee81688c174abbbf7b6732126c3c02796a8855f2c981aec8c37880dceff6906809314c4b729b3d6f6210e474be3230684277994e3125a2e71277031c147923debbda03fed1f380807a8dba9c6dbc278750477bc1ad061fd8cc4499a639e19fac2f97c15ea91ace2aa722f464dca57183bddd212d2dea1f79b7d764056b84620328a0f42f5bc624d7a8ae824e7241e538f8562ef8219f0d59aa7960c9df5acd3413962ad133fb9f0e240e407baf72da7ba35fef7c6c6f886d6df94e6e54d2d0a5e7844368026e7b88bf9a547f5f39e0a2c82aa72182d47e7c89afed299e7cb4d233b9e8a2bf75d58a15ee4f62295b96e9491de4f8dacb391a33002d4ee87b5c18940e85621029dc71ff58530e71d43c0755a9de6279e9ab27d85bfcc42af14c207661d8bc6e6cf0061fc91c238b3a43c38d9c06a5e53e6c7b55441d725f0f28bdfa11840e3d541d55c1c599ab25592605bf91abd2022d8a4e6b30b079f57e728008f55b19c30f2355bde8a156dba1be80d9b783450c54b59161bfc6e5d8756e20a66989a6e4beabdefcbdbef9ae9d36efe16d0867e98ff70daabd9bf7c33e4469ffda898987c2269090141e57bf8c357887d144b51eec4ca3cc7a97599119dc63066a8227efc14461249c04484d1fd56be8ab896503a3b9eb56dbbf1a20ba36c57d8cf74b1cb994a8d958e6492871f051ccff4ab1dfa0032bc94cb6618b958055e5f55b8b4c72040fd5bd919b0c7b1e65335509cd9840609b8e56c694b24f4f8061872f788c58d8b49f9f23d04a164aa8c741ae3db3ff0202e6e4dd7ff25ac18ee5c3a68afcd88cf420f3c900f751c547cb730aa2b6217517c66a8baa657af540aa413b445f4273dc089c906b50c3a5b0f6bd7ab0ae6b91f9fd9d9e5cdebf21935e241e11c1856e86282e84b56822b910640154382b14b8d28e141f8b3749cc63e5b64663feb72c2cc99ee628fcd871670dafdb6d5f3358099ce90cfaa88bb3f44be90688a7988e6f91c743f2505792435de6160b979fca7df53d032d23e2d08cf98b31e39a086934b98448ba577baf801c84de2349d3086928f78973d7a59deee2de7d0c9d1020bc735d018e4dfe66cfe85ead10087614c643975eaacdb0b781efca5d0cc7707664b0af9e6213d8823adc916a3511bb45d8b6e71c315bfe51b14d7085bada2c07d12cc8ec43d2d41364f11f0e32405af98bd78da01d0daa0e549087a7c98d823eaa590bc4b5dc3e8b248efff002b836773f15773db4259e64a4f946efe7bda3fbd5a51011791e5d5f09fd66e49c1b4ec7094a03c49d0783654baf3ee980a7de75d83605f521c1d3c4764a0f9d05488f02d22b470f20a0eb0e60d74d20a1c2fc5d30c9b58a4cea0a2ca4c076af868067360996fa8e1d88bc6bc23470abd82e7b0e2a6a7fb535b30fd7d512fb3cbc1321eff16d75620610ddd22094f15ce6c0714647fd95e4abfad02dff66c47570ebb2684d969a3e32bafc7f3a9d43187d41d53808bc124c9a1402fbb8a714920aafb966962d458840de3cb96be7d75bfa74a9597148ab3eec17cd3cd8ed9ef1c452b2d7a21af3f14c9444f5a5896621e4e1c922e02eb0a1fc0b799a3d001e72e3cef939ad25ce51d0b741eb4ca86e506db7acb0631d46213036a3b67579ff2edc44594131a9e409214a1ce3f9b7f5e5a0d8663ca3ef696e13a93120e1071c6a209b41ba4cf9cd340aff12c7f5b109d0dfa81cd958c5b95dc365dc20f05a2dbb6ff26c2a025a6a463e35c192ee2aa93752a5b0866f368fae1e4cdc255e2500d3bb41b63416e181b2d957526f4ea7bd2228cdc83004f2597e8555a730b2587edb29917489ae094fee01ea1b3f996b1ab637fcdc0d6f5a47fffaef4aa487d11f8308e9935d752570395c356768d6f5d5cdd18a8fa52c13054b0e23e7350a16bf3c11fa885597b0250e0b1577a01cfe5ff44ffbdcb2bfc3a734ed65a2fbf3d6ef524930d7fc9542b7ef3d63e47183acac8082a059880e2ea2416509f4df0d58a45c9b538c03dc76eae3e3332d8f75eb148924135be88925cc06b0b1a6ccf09a3cee04ca5bfb60628f16306a9d08294ca637894258737fbd2d8486e4c5d6a98e6fb9264426f1d81ed14449e73f989b917efb03681dbfc39f022758929cc3f933079a80e0fc208366fad0888561e16c748840cef92a152aa4ae01e2166288d18d12ddcbd12c8ca5cdce933a424a3913da2e1971fc563a19dd1713d7c8d7035c13ef523195d0fe5f2a90db3287504b7794e1597385386bba9163f2e5514d04b8f9b8c8ed47944266a575918256816e9f14605af53513039081a3255d376105df853f38f49daced754559b6f40856e3c7c32976568e1304219189a6c25009f1385bbb5b07bb23dd2dfb4cc8ceac8f11f5d794e168266cf336a8a8d8485b7589a1ddafc51c7b0537b264e087bf74ebf45159b91e9793f69234f9c155db5d4235c07418eb644163168284e2668e2255f471a8fd222fc310f208569a2fea5d4043cdeb955462076a35d58dab934ccbdd493ea502453fffda79dc841e2155e13d4b592ff44c7ff23040c2f7f224034fc23fee87b4f096c3635f22835438ef8c7872cd3194dd24f1e5276647e056999b3e9176ed874c62f786ffa4e9accfa489b05d12846919129d655ed2326a98a6f925df02a3c74798aeb6d54ca193d7c1b9205a6a970e1e0a4d7473a1618a647e69178e4cecf003954cc8259fce78b9245b247b246abf4a74ed889d82ea00c2a46a0ac9ca2dbb94228ec4eeea0d99c2cc958c9005b04a73dbe4eaba8bb3728ce110b96a2d9371d1fc8fbd4ecdd190b20340860c7f788b0a9fe3a5b7771bcbfe1b5ece8048a4b7866f68127445cb892afc671591effb6032d2b2b7cb7d2b23cdf9434fe93bcc7d701969d9dbe5fe3d249aee8be90369bd9c300eba3b0ded522cd4b76073b0c0c2504b24261023210a4bfb2d8d979611d24f932ec918ea0427f72dc41b9bb32512b563237632906964b78373f2f188880a046c2720522217addb4f3462d74f2b1e6a37a29e689d81395997fd03ae0a28b29f2bae42404141b347945cd9d75530c23c972be3ddf9ccd70fe8d3f00a5c8c26530e2b9ba89f18b13b3c6bf50d04a89241355d09029fe9aa4d7bca724ea84da25fa73347e1368970cc06be1eff924a35f4885faed3e9acef9f0e8c33b013cd7e25b337dfe26e07464166e01a1e675dc5c37e250af79970001ab10ed2fb2c0044cd22eb54f33ce287d0476c32f0c8cc7edd7e25b259eb77bac104466e286dd776839a6067432521973eaac0d1d1337f202d2693368c49dadb9310a1e7b0fe61701859106e1fdb881f382bf39b8d991ea2c3b70db78686d02f3f848424d6bf435300c1a705b4104798a45aad066f7028e565ce2fec6fab06cd2ccea7ebb9573397b06e48e5509d213ac35271620998f888841da65404181700ae7e720bc46d63e3f2a9b3e6039a820cd60dc0415ffd48478261aaf1bb1a9dfeef01400ea737643344639861fe9197975f192400981dd58504160ded0c571ca21942da217cfddc0fba68bae6e6d239f4e109bc8276b83da25c9e5a273b053dbc1bcd7b054c9743601155c9463aaaa205a05c7a13cb5d53cad820dca95944fd5a19510c2fd60f890b2cdc409008c5e336635b862433c2b8abb0a6211f3c716d6184659635564b0d10e52960669bfa7b265c9b44448539712d8f78579bc27f73054d0b0a25ab01336346c5dfec3115ef85d3d34f30719a8e56c49f7427a2b022ea08b45d109850141db2daa85e2ce092b5b0adb45e8e2f971b531871e18c74217a9b33c065205073c97c5857127ce3fdb85d395a68f4df3e832d4e5e343f0eae0c6d1a3070bf41ab332fad8f9b03135972d1463a106f1d30c464a0100227a5f76ea4d325225efb52597c1caefbc34934a22cda1af28276a3a620bfc71f204cf64f1d47763053a1c6b25d0a1ce92e74c054f0a11feda3eb6fcd0742ea9b2ffd7bf1654aacaeccf9680436ebb2e4ece4c0939156adb71a529135643d8b6fdafe0fd20ca6f1a94445c93725ec6df5893666ec7d2ca724e47c53738238b21d9268ff95cd035011f51747567acd5fad5415158caf2b75eced42c0a7e76b11b87050ec48784feac7699f082b91791ccad48a91af0fed35f0b7af56fcf19a4b58158c1576840e31a385fbf59daeb17fdeb0e41caeb002457cd11373f048e90c25a3ae47921b7ebd708862d0615cc7db47151254880e6bda5685360e2da6694f3ea181503493998d468511e08f1df16a911ec3f34bdae59e171a8283a0997ff623312542af766e917d4f27e535628ed7dd3036337be1ef6829b334fc8393552d2a087df2083df132aa898469baf0b257bded7b9251aabc2a1c11284537d772c55ce8425294fb02011ee43851731732ff454402f7a1a2875e91ab949a76a9007275803a29bd9659fded874b21d8afa9c62130cdbdad321368cad0579173945ae9cbf73090461d05e586657e05dd3d2a2d62ba78085379f3033114b870faf4f8c61979b26fecf6d8be362eaac71a4fd746729201b3cf9b04e4881ebb115e21c08c785e979c23f668bfe3c72f4991e1149322f18247b4d2e33f20330864432c8ec8e212072cac73fce8e31be8981185cf12b7b08f2fef41c4ffd5df72547494f7c637d1cc78be138ea00afbd98763c6ecf40620fdb75fd82e40c7dd10ab9a86f29f0eace1f8d2637cb70e1aa8ba7c4a1f1cebf9fcc5a441d87f841066677518c632faef31ba365e368a040b4f794671916aa73d9a4784214106ca27c404860f8228c38a56600b4239225278e6b3d6509c9888bcf1d8e2797158e10b0a3943a33b22889fd83fe09a784d70472c1fe0426c2f1d0f8da5e74e8c1fe14a2c3f70412c3ee042acf4a37c44681556b5929558818cf988a08485709a471f284c73b7c7e7a9c33bdf9b1cd9db5d39d4f820280348f377e720af7290a915f7e3512aa13844194a8f46a98c47216c14a1b418eb00aef3a0fc88a00e2365ce44f9a540fc282771ff32672ba1b7607cdb5654f7e87bdffb7abbe189ec17f5ca687d5ca58281bf2688b0769c19813af455f954e17f601fc7225f25e94f2bb85981aba80bb9f61ce4da4dd1e083f204bf0ff0adb88bdc42b3fd896fd4584f05df9f296ae186b99168d2c2fbaebf29a759d5c253a6d4678696e245c3798c9109be7e744a9c14eb3eab96294a5abc09d3b719f0017cd67fe0fd03f6037ab6999ed8ec4795263ba560e7bd3d94423a4262570f16a13882455a06f5325e78502d0d0f9dfbc3eabc8201cf2c349fcf63eaa34f8c1e098fc3e545af202b21e2450f602ab125368f23883e0682a7da115046304dd03b7b5a68a610aabcc13701356591589bfebc018b25ad3884fe55298b847e807f968925c7a6aa44ddeccef40d6ecfe310100af39ca7fa1f69974298510e197947202536ad56a00465a8490d18c834d85c2b39be97de5c9482077d01324c62fab959993165820fcfa4aeaffb7b39d441b849c95e71364e185c903cb5a42f5c6dd00517fdce1834e3df7e67b2d316ad6f057656530ea0fc7ad7c0c809bbee8e776a73a8f7b11b1049ae93ae48937986701f5718eb924ca57f5defdf332c5db233761e24ccd96bb3858494b6586a331056827697e4b5571b03b657073aea54496de788cfb070bff64ad6572ec3a5657b43a5cb2425b269dfaa68971af83b7f935a80ede8a2dd8ebf5cb49a02125c7b8101e2731728febfdaa8ffb6e16b8b426baff81095ffb6b7c6bdd2e5a82ac2d1f21fd8737adcabaa6df68a7c00b997a121f72a83767bab59e21abaa4eafc8e2645c11ff77289e6e650b48d2fc983cbc471afdcbe06653f7a01b731ee355c5dfeb696189fd6fd0e7ce0ed6269140f6ccf48bb3e2a1f32298f21e16fc144641428b6ad87d341907deeea508af98373f91a1cf790a88d6569344420b257b00249cce58ea4e34f6844032715436c3580c8d03024a3495e2d7c139e49d23f15009c0997c5811536e190742af6ce777c8108ace0611984110a17923f8f972968835518257f1fd5df66ed24296b539162531a2d6ad3df29ff02ddb87e29adb66a8573c2be971f52b454248b07464baada29c1450ef6550c6ce619a3e192372460d2088067135e42a5f14e5cf8de9a81026830fa7d854f99bedd68e99dee9fd0cbe4cd734a4e6f500d1c37eac010f41d09842fce2d9c9d558b89b0683cf78e49f1206d62590a7b605c297a5207df2132d711d2fd1160fc4bf2f78ece18185a7c487c331d340350c9fa7f54406a680bc284282af057ec92a390ca295afb8cf17e02f88e3042959846f62bea0060191160965aec2b071da4c06b4c8b3ad74c64089c8313a9f0850f0fbdc09d43cb6fcc40d3ac16754e7fc0883a5b4ccb4286d2b90dd166761bc3d1d71422fa3c3e7046c27333f606f607aa667330ee28c3e63ba6dcf1a530b52aa0a6a3ad2d83e596b224bfe714853926f851ace0f1c12c2e19e5e801aa9f4841c51f3538953ef5b5fe4e4d644bb929870274e3e3a67708cf6f277202031c884ece4c65dcd28b4800a16f3e6ce63af791a154d58cc763d11469d9ac142c1e02562f8f1e052ccfbea9926cc60fb599b8eeac8054dd0be3f3f27e55d17f51a3b09d0fe7f7e83c9080df09f7d03ff2af829dc6ade99537e7f68222e6718844bbb67aa774a93b989b03dd6904e1c25e73e23d022fa58e0879be3db1097d71661924c445e6246a5686d440ff910284f98d3a24777c9252b4f8b58334324c1c4f2abd6c1f00332e0cd07df478199db8e0f9a51be719f30545408bc806130274786c3eddc98eaaaa1c713150251d43db6bac0fbca38eb35831a6d69a1637b501c06f0a453c096dcf20ca8706920e4ffc6cfb8a4cfc693d12b817e4fe34c12b1ae7038080b34dd41c7344cfa524e455b305b6356c0b6e1b3c37487e88f86b030f0282c9aecbb32ee7446291578453ddb5df31bcc03c550a4e2f0f56391b1819f44181a1f2cd111c88b64c83e1e24ce695da856592f14f58656734355ccbd4b795e8f9f1c10c9f10b5d0180db8fdfc710968b3ec7d6888076fc3c20715f5db5f44a531e06c217fbc478884eec9bc96d42cbc9e0162e803e94599f64a64deade03b7be8d7e0649cac6650eec8c2185cca5ec13fbcf5ce239d205bf922aa0659475270b67d4ec4f98d60889f443e8649807b2d44051163d4798007feee67db4c49d3d1eb75a2433b07b4bd56c126a4f25903534ccf80203255e2476017b2433dd6cfee3fcef40349c6787de9b001f8c6535bad7e282ebc6384fe34b9d6a6bb058d5f8bb44fbc316acf19e75696663aed7bd066c67fe255897e6950e9669872deec02bd34d4173f8d3633942cb77576cbd260e2aa989d2e559021501e72e928ea6164e3fc1c14e33cde840361cd70aac6a9bafcc057a001b5fca5aeb65b5e7f34d1948d566f92d603534b1974d2d860a08eb0e919bb9d622b5945f72391db71fe27c52e0ae99478e61ff43438a414cbc6d543449a55d8a43f8d45def0d239e7dc1eb9313a85c0d407ec7826609b1d8c1e1e084f2dea04f3e1d93474f1c595cfe89eff259450f47b64ff36a450bb611799204e02e21a0c925b8fc81e4c90daaf4b1a75776ee3817bbd6083c4c47822d0220b5e25b1c51ea1cb03297696744a687fb49cf12f553142e68392de1c504c69d0cad2250ddf250cc7011c04076270f40d1c7aad866216d25d1e65affaf1c9d322d68d644de8c5e2b21a447a4e92bdfc8f584d6bb0d0aa3d6cb37bdd818b25f872844622993f4387a884eba649282cab108fb4c3697f4e6ee4b8ebb7743e6f39949cd1468d6a9798390c9c25893653ee8b9983ee96fdf8a30475a04d07723ecf00030207e895bf47d1aaf5cada4dcc3c6643e85b307448f2ab6e2eb51b7a6403b77824166f42646404bad247c255209a59493a95e340da968a18feaceaa425c34315026ccb2434f9bea89292083e5f2a46624c24ce5b67993d1e0681685bf06cc37e88a5dff83e6ac0e31f1b61fbdff652aff2dddcd8184b622364374208d97bcbbd03070cd30bbc0b556529b65aad561373913b9dced93c047315366c94ebc6fc68ddf51eadbbaeeb43b0ca65b3eaa7ac7e6587601550e3ecde88364eda4f165551bf11772046a56e5a30df2c0c91ea359eb5d50be6ad9b8186549612e1c053bd0856c4ca55352c6c983bfb53fdc5660fabeecb79644c8ca32ccc316e4cab755a6475cc1533571303cd1e2a950e37a675b32078aa9f4ea7d3e9345bab5e755900611a7551fa05a1ce86314a848d608c528131150e3cd8a96e921a3f22716a5cee48ce60af1c52bfb0fa96eadd5bcf13b754e75e39cb1d85c06bb56e921aef5e69e743f5eeb57597f579cbba0ebb1f2ed739d9b2dd5db6bbaae39a344e8d1ad851bfb8268d037bb0962b038227646257f698ee1073c71ed35d1e117787f8f456e4ecc96a6ef054775d8ee3388ee350ad56100ebb5418ed7e1ae2653af4716fb9ceb95c6fa95aadecba59bbaae36e673924e83aea390887556fbdaa6c57d41d51e26957bd021c76f9a8eeb2496a5c653b248d53a38685b83bd2afd6ed90340e6c5d3a942df154579db4e793eb74d24edae9743addacddf5aab95aae96e6ba395ecbd5922d3a54a7054eae9fac11aabb6e8eabfbb80e31ec76b8f2102458f5205c4b65335cc2aaaf6c5e2919c2448823926002b7ac4f136e5d6533ec02a35e25d7b2a8af2cc4b033023e71d99f0cb76e8ed8021cce6e06c2aa1b84c3dc0abed5ca7ee0653a949d16699c1ac74e875c5fad6e56bd759e7659d8ed70bd86751d1102b85aad2cd0c4aa1ae7e9dab2a82abc0c3457df6ceb9a0d9a58f51aa71aab89a5ebb2ebe1725d9fd35daf91ab61ad08c2ba1ddbcdd9ecc453d3b49ba4c6617772dd1ab448cf603fd1211f78f5d9e590fa555dc7eab3cbe5baebabee487f2e4cd33ccf75085d37d7b75eabe55a963bea0ffbca724dfac3b8a37eb58e9d6bd2afd5b1556b05572aecdd116e0a8c9d3b52a930ecd3065ea6437488a948bf327744d42f8c63ea8e7448fa953af6aea85fdeb1abec947ea9240e7644361d3952546464c484c910760905bb8cd2924abf88609f45b0cf29a6119b5eca34d5c5a8c8940ec119ecd85b57b9be9a458d845302fbfb6c0e35e5d19821d34a8d338ba834ce449233d85dcf5d648aa6224689537066e118cf914abca2a9689cf944e3704cb18bf8243a894de21571495412a98853ac9e6391ccc2700a95241a873bcad138dd912539831d3b06bb804fa0931c373430545ccc2c8c7d16499c2e82e35d376bf766cf1661ec1349e24428718a17632261ec74285ec992f89826d4083fa143188b77b993297e355fa86e6661e79824ce12903b923842c414c714bf72b37784b177323db32471660ed60d0d0683e565578a8c1c6206249ad5efaf6d56d040309884510d83534e203c394d605293219a781309f208ee28d8a8bf29bc787925517f54fa33d2af8849a26e32624412b59ca2bf26ead7945212e16ed99228cb2149441291474e50e509ab58b6410821cce66c4aa16dd854363984114d812515b1833df0fadbf326847d13da68d6058ea74f1aa785ba18824214c5c8144aa53122385ec371c9513cb5b3afe82638deee26230f3ee381079f35229a45dc89b0a32ada88d72484359e263f2f472f59acec6a174e0fb787278481c158945de0384e4e1e2186e06172a2fb864788c6813d32a7b5da6dcf0f62b1f62c0b2f62adfb7433ebf19409586304a60899a8c5f15a8cd1da8c3ea142991cbff27a3a5d0f76fdaa9747f6e9d5aeb03a1ed9dd0ed4f1f364b13a290467e4bb9b5ff4b5932b99695b8bea2f56179b51d995b7d895c7af206d494a3c72469e6477969b592978e4ddacada02e8fd3bbcad93cb1959a76b397ddcc9252d2235e675c541c5e84f1b610517178748807dfa79acdb49b3588a53c168d502ba4ef9b81666d0b7b09dc360fc1da699e66cb6fdb056adc36d3b45763170038dfef496f8d1ce58c90ef0bafd71fec215bec2a73c2a9c2c90e27c623c4103cb7b9cc13192601094199909f94d21b84898920fd6a09a4bf968f2fe9e1f080f49704ab5ff236867940fedfebaf3d4fc5ca94e8ef88474a4bf19ab0c17dda5815555e7eefc226897ee5dbdcbc5f5de3ec285f5619469d80e55b09180858232f7ff96399b3e2045e21c70a3955c851caa142ce1472a490f324878b9c28e46c91939403859c27e43821c7494e13729890b3841ca41c2d72949093849c263948c8c92247369687714e2caf03ea48891bcb0301751ad6e4fc10b17c0e29633c3d59c2f005803b44441bf13ec3a5144dbfe4bc311964c978303415cb49cec1b90e8f8492fe5c360ac999a6b209fd0c5e474b25c7221a6ed773df4d28f64068c4f5f838148bc49d6c286a4a75d2c3ed4787863414b312e0f8192337b312cc53da5469b743ca39bb8e5a0e49e2644cb2a1b8439b3c240ecb9001c4611984c3b4021ceeeb23df9d9eb3985237499c23605252b7834ecb724f56186e63b97c997009d5b5bbe75f5ee7cb9ca8ca6d2c4c1d3d0eaff6bb439d76f4f71595e474d833f572acae9ea7939c58368e898969a2b221f9d64bd77a895886056a2287673a6658991c1e5f73b039cf3c877f348ebad96254abf5d938a7b75ea5ad7178a44408c71f3959d8138b240e91165222058e8f46fd5a8273328a45fa058faa6892dd4742424253f4e0f05a87670d4b0febf0ece1cb73dd0e1ba755d7e2b9b8bc8061b53cd70e35586a389b0d07ea0801c270f71f1d3848a5037584fcace0a0d50f5047c88fc441acb6f1fea435ef67aba0d30675822ad7f23e6ac5e5fd14cbcafbaa172fde5fbd7810f70275822666bd1f03c37b3f868c97f7eddde17d991930efe7007582583ea813749a813a7d1d68b8f777b0c1c38dfafe0dd40962f101ea049d5e502788c301758276a04e102a07d409c2f00cf274409d200dead4bcdf027556deefd3803a30eff7c00375e4fbe678100b6cc36e357633b2b5d88d682bb20d6d2cbb09598dca0e7673b2216d4dec76b45db131e92fbeb3db92fe8c362536e2c04355e1412898e630ff61f90ff79ffe8f9c302f2cdc7db421186ebb8f468465abf7d184b8ea9351d93a7a9faca9d2be4f36a5bb90ae4205fb6452e88574161204835907c2b0f71e18c892705fd6cdde0d5ae1979b7db4223f413018e6e624a707c160969b93e83c084649bd39098c9b836030bd3949cc7c06c2b0bc4ff623e3e60ccb1bb4c27db52bfa8b4fb2b3735fb8b01e9378b1c893716d0aa813e3eb56d42f9f972d5ca144091c8c8c962c61c2e48a2b8e8e9a3441ea97cf8654c549bf7c362755aa50c1f15b52bf1a431e12b7fc27e297bb15e1c093812365e038ec9cc3c639ecd761e3f8f0bab23c301043484808f7fce7e53f37ffe9e13f37fec3c37f6cfe63e33f18c89270cd31008ff00e87dd0e213d37fff43c0806bffc47c8cbcdb334b2ddf4f02ca7d088f470e35912713778789645a8f060f32c87586c6c3c4b22532ec4c60ecf52e8e506d121a4e63bdc1c04836b6e0e926d816b9ebb89494a16f0cb3310866b6ed00af7dceca31591928af609a2a34a1ce2805f2e4fcb227cf3c773f375dccc02e2fe50843523469a18715979c1f29898989898989898989832a68c49c62463127136940d6543d95036940d2961454a4a4a4a1853525252522a7a8161e1b6a60abba21718166ec38a683056f48215c160452c581187156d585153535353535353535353535353535353535353535353535353535313121212121212121212121235428d5023d40835428d303131313131313131313131313131994c26138993e33b87b959d339cbcd1e9398336192e36a483b17ca994ee7de2b95e6d092393487e6d01c9a43302cdc56bb492a699ad61d4a28bd49442a4925a92495a452861ba9bfa6d238ed8448e3f493eea267a6689cee28974790401d25a803717c4c6204698ae6212121e136d2dd799190ea5b4332e27257585e2cf27264ea2630376b2c377bdccdacede61bd99e409d887f89e366cdc3b9998565bc7cb83d05d4b9f98bdd0f1955aa54c9413038675b60ae878c2a55aae01f1cffd9fe53ff43ffb3facf7c57a54a952ed2afbe383907c2f0ebf1a561e4e364496f3e762e2bf3401da9f48b5e21428050d8e642821aff442a981e08c3360eb4c23f2bb87bac578810200edfb890a0897fa214dc1d68621e0ea4c23f3a707ddcae102016ecc385009df0cd850461f8271ee11e98fac5b170df563bd47c45fb85e30a8135a80bc1344c610dea402cfc2371ce95b006f5781c1b610dea2fdbb006751f6c066b50bfb11aac41bd07bbc11ad4ab3dc11ad46fd80a6b50e7c172b006f5ce76b006751b8b8235a807ab77b7637bb5a8bfb032dbfdeefbb3800cae1b8c35caf4ccafac0524ae77b14d485c2f50c4ac17183052a9548a476e29abbda65e6d6aa93fa64dbaacbed55a5fefa674b727324a09bca48da73f29e5eae6edd8f6d53386dd075b490cc396e4103c42f427b759851862935bd22be6f25b17fda271799ed78acc67c8a2537392a95fd9e56514bb7ab5476750c2700a181e9d41081f49918259eef2da94f588573709ebb013007dad599d658958b1ba59f5d5a3b8978120f993e12156eefd64d8833dd4c22321d8fd58b95b8f7816ccb33906e5ad6c0c6ae5dd5b55794159a88de2ebb1e227e2a0d52bc41c6663b6cb23c3ab9f6bf9eab0ab3706ab6fb131d8b79b57f727c3f1cefeea4dbd3cc6d2b079c2d8976b360779b9cc8c178b1d614d30a46dfbcaa5aeb62965b69b3d50a4a7d4262e5f35135cdf46417aca87ca698261af7555ab77cc06814918527f3009b7eacd9ecbe10a2a61ece67a2d084cc25b056012aed7677518af1d53c5c20643d8e5154ad3178808f578500b2f4cc196b0250c05633ac2126a0185a97b64dea06051b0fc17a6c03030d4a20b4e70c5322dbcb95a6d760686d42f999b2396b93c4ce6b42b739857198b21f5270f63b1a32a3c9967ec08634dced3592ec978964b4a1bf6047a1988e219bf2762c556ff7bd8abc5927ceab127fd4959d452c9193c8b5d6954d49f9445b21ebbcb73fd76b1a4fea412f6fa8c2561997b401c24f176f34fe6532fa6f42462c1cb58928bdd9e24499cd8d361d87915f5cde54112bb1cc604498cbd5841d94c099e901747bd5eb57281245eb9ea3f1976b939b5e2f263971b24b1ea2c56c88f13d8e7c565f94f86b19b51d7e5c6f838c67e8c5dcfc7bdcd76afb631a03a0b6eb192a93f1a2ed6fb6651c75e372b6405db565e63f713f1b66db6718d3f1107fd64d8e510d6c4640f9218751b935d1f19f6fe9361d4513747ecdd9f580573ff8955b0cb51b6e59ee50ebb1e2d4fd99f950b14718c0f0dd7a6f16a7f32ccf21736486296b7d81cb33d08d3386763b6eb43bbd9e55e962ba1e440c326214b82976d24869d0fd76708f9b17dc6c5a270d5461c24b1ea625026d61ee358f795cd3009c7bcda886558fdc95f6bad90792bc3662e8615325736e6ad980b9bd4cb6347fd82b93c86d42f9889b7ba6d97a70ad138db167046be0a4eb6f0a49d241ddbdce4bc586dbbd5660dd7bbbcae5c562eafb17b0114b18bcd313ee091cbb15717bb2579db937e792e39b83e08c349425c0e24f10e97173648ae5c09e5caa5fe64773e5c5ebd7bfff172b9909f7ab855c9b9401d21f6070343f0ea3576d526a15f59a09f0c3fcefeb6ad0b9ed54d32f4f5d09b35f1f29684b35cdaa40081b022c7ac1e24993620acc00e73c01c56c4acae0f0d6ff72756a9cf5b15f09355ce2edf8e6d10af5c8e5d17eb7223b6ebe3f2ed3e2edf9e6c49b1fbe17237a5fee4b7c3ad3e48e29ab43d691cd8d3af2a97e2bb3869b0f7cde69e82b76329386f495b528604cfe51c96e30bec26613da38edd18ec2b46b8dc2443ef61dd987903ef389587e09bbdbf581911831df66c4f7a46bebeb031d8578edd2d095b4ac2a7d49575e21554909e823b0bf1c76d5878f1f9984c4fc1d8e5ffc993cd98946de3340cf6949e79ad88e7696c099322716411c496240e960467e4b1252c651296cf8ebcec712b50c4212c02e0c223924312b060cac1880b2e64c1451b92b42c43d249dd5509528c8c502814f1062138210c294803172360431604d6085ab21eb5ecf302f5d7f1f402f5a7c9998677a25ff107ec44c71c3937364e34110fd45f3b41af134d489cd813a760a25f18135609b8444fa5d026e04c4f29a794114ad17a086d4d0a372c18675141082885204c7002b750820e0c81c83972e8330e86f701ee0c116dc8c343eddbe9856a75083d38c3fd855559ee41e2ce0d6b8878c372e5eb65f54f13f5373939e2ce176df0c41d967ccd3efcc034e5adc8af83f2c1b0e40dac89f246f6006ba2ec41467943f2006ba2e441dac09a286da40d5813a50d19e50eb206d644592369604d9434324a1d64943564943332ca4fe6006ba2cc41464943ce803551ce9051cac8285d32ca2ba3b452ca0d4b29a37c6149964b1150672589901f42056b627e81b30fa6f0a3f7e709ea713750a7b599ea1525efa8cb20d425216930f0985062e94889253099fe3ac61823867556467e38f06480600d04c3b079ba497410484f996fc649b19b845212d91d824708ba8494314a39958871cac88a505e26a2908686a59c1c3c394d6c84b8c972c42873e4d0bc22cfd65a3c9623e523113da3dd0f7eddfffa7e34dd3939fa15a3d69786d3be8fe630589e6a096bba45c5e1492c0f5f53fac0032fff321e118678325329e5d5a0c46ca653be61d29c1c3c394a4c00914f4246c9399945444e0e2d89f6f2049ab8352c89de81c92b21b5a94403e991447cd5ae4ffce9f29cadd7e655bb8c5af4112f776fa60dfce294126b07928412589cd9c4dabdf16c6e3e9978168c7ef54f8d85806bd22f8855aad355aaaf56190a7c72b9aeeaa460ac5ba569fd4988c48397f98cd37886b1d322397ba29475912d612c8382311611aa0a4fe634ae7a9d2a1b6566be96eb156a505b59497dd35c5636db2d09991d53bf529bcbf3b66dcfddd2e66267517f9bcbb66d2e4fbdbad88ea9bfa50e4ab794ba4beae678abd56ad52dc5c06c97d129f54b755756566ed694baa42ee9c9797ae21a396ef6b77a5db15c7fab7708bc95e71eb0bf95cbc1fe56373781b37625cd764945f0b6db4dd1df6a2aa1c28ae43ec4ebe155656751921a46daca53cf9ab672ed5acae838754cbb5aeadb6bca4ea359a4a43f6c7bca429c753bb65934954ca3b9f296572274443b1d15d106768f87df385dd22f1b1b71879a4348d371f7503e86cb3128704c383b3af2b02778dc11d67324351b36f760e33349e2d4383691a6938e0aefd8cd8dbdf34005c66e63e9121b9632e96aae76b347735772b8f63262c07049b91ebb1eaeb7aeb22d9ea657c09a139cb0af5a367b78e69dcdd408996201638fe9a260ec2f13896533551203fbc30e710e3377e5f0994ba6960bef69aeae7a875d95557751224a448768113ad45a19c13a60b8042a10999d0fd75756f5963da9562d9b6863f5538d5772a7d5ea5c1327fd61cdb53824272e0b71759d5bea576b758a12c357b675956aa56aed583981552bd5909bfe86b4ee4fe652a9542dae49e3ca2dc120bceeaabaca34aed531b5a6932a9f785fbde5724d26232e1dde5d833835dedd19c5c3aa1f2bd84775eeea606bd8aab253ca193c5494d22fd5c5b84f268e7b9e4c9ceadc398ee338ce08b39329fb8cd21f7625d8b73ba5f4875dbb93a93f6c32d1a2fe265dd22feefac464e70eb13dd65d1fd5bb437c8f9d5e017554c7ba2332fe18318790ab2d2eef2a4baf8035d8afa54cfac36e2d5dd29f84bf5906465dc6cd325087e161d4cb65b9dcacb1fee16c08deeaad3b916652bf56d944ca6652966576264da4e964224d24d4449a4e6652ad771a65b06bb532efdae9507fabecd5e6d6b3d34ad5753b569a153271eb024d7cc26e5ebd75ac3eb75aadab86fa6b69ad56ab7573adb62bea8e58d757ba1dae4e053915259242bb5a28c17650facb9868aad57d5455656bbdea26a9f1ce668ec9e5729d3a26db2df587754b1883d2cadeea6add93acba76bb2428fdc2b263ef98ba1dd9acab57d82909c1cb1d5112c6de1175537050323582aa3fec1b760c091e07258aea980aa51d3bb7d4af18d4218ef911f704632d974b753a5d3af4d67b0c5e47f154f5d4eda84254b448cfac5c970eb556317450ad7c5eeacb0b8cec5e635cad56abe5d3ca5cae5af3e99c2b6be5c6adaf7e23eeb87ebacfd955cfda0d3e9df36eebaaaca5be755d3647dcfacaaa5cae566edd7c835551b35af7e384571aea362ad56ffa85baea2ddd0e5585b566d5cd7365b387873c01c5aade26ee640f60d5eb5d9d47ae5ae754364bbc6279e56e137756e76ecec199f5566569b91177b8b75caebac12dd6e5ea55cfaac3ee47ebab9ba3aa55c4eaaa9b7dacaebaeab133627555eb367147f5d695f906bb3cdf60d75396eb7a6457dd6e756f441b2b978bea7aac5656ab17104aadb5d6eaa3e2d655bd5a9b68e3f416eb9dc5bace235337e2ce297bf6554a756fc41d555d9d7bcd7e70f746b4a17a7673c43786fbe9aa9feae9409dea7ad4fb78373bcb8db8535577dde5faaadbe10aaf72dbb6d3cdd293f5d16e901b1ed84fb711cb578ceb6c17f591234986a2903d52a87d98af49c8628b234aa620410fd65c570fe7b9423b1e3c77f96679cef518e23cdd45116f15473b2267e6b5c39b83a8f0f6d4ed23fdcda22dbc6d22e9228e082c441646981819d5a1a6249ceea945a628c130181e4d21c2b5426eb3dd359b3a6769f7885337e338cd6b67531948e1b05daa7beae699771f02e29922baef5c0af56be7f36d64048f6f291883e327c3a9a7b01db61ad7bccb1ea799e7be6383e44f865357439283648d4971356cd67638b703d75d113c0e14318ecbae078e572ddb7800bf79a8530f4f7950858aea899e36fa9f9a4e54e692c6c9b154d3c08427ad53e089733582e761ae47f03ccc55099e9b466951bf725381e767bf5274099e6dc0995e81e72b4480078fa608d50ed5755d8705eed170d81c318e73dd0e8f082d6a1fe6a3780f356a1fe673c43db4881a753a5e55adaa91d3617367d43dd3a2ee1a0e2f756aa423b37e78f680b859c769910eabe33a342052f866164ea5fea2db91a246fda2787e429d88bb8967d7bd66e0f917333084353d4814e03487728717c022613dcbea6e0ef74570e7f1aa7138acce7bb86a6352a9eb23c3a907499cba5ee56c3dd59d01c0a310e858f2b8f7388fc46121f6ba43581383e310a7aa8dc1717964b8fbcda1f39eefd89ccdbc8ba90f923cdd63bb8bfeb6eb58d81f009eda8e23a6de9facbb5892c79284270b019eb5013c7b3826b3700c8cc38671c4b387616416869163e3d9e6c7f347c4f38b786605e0d9c346e0d02239335938468c9618878dd322e3858e0e7ffd347bb8f1e1b06ff06073d896750f7bfe3e92c10be2aeb348c9f11c27c0cd5a8e0fe0662fc77c0b910e1d17c0d5f1235a88741c470b118ee3b811376b381e809b3d1c2fe266168e1371f371fcc7cd1f8edbb8d906c76b6ece89737bcb76bcbde766564b12eef9c4d7e16616bececd1efe8b9eb3f41c889efff0190b753e2f85e4d4f9cecd2c9da7aecebb6b74eebede6bf7d4fd00c0cd0d056f3f753d783c4862d89f8f9b3b4a8f241e57b5eeb507a7bdfb1036a871e5dee3f545b7a3478fda5279bca5ebc183c7d58270b8be8bd10e7b62b4cb5cbba72628783ed871f313588857aee39cf43793283dea2893263c0b34afe86f52255ae55e6d108e163d413baadb51855870a7a4bfb9a42bea6feed06e7704095e0af624f1386ee7b99ebb561299313f39d4df77ed5248e2c41e5a4495348ef779ba8432e9d7ce8de1d13366cc9871cf9ea8f4cc7cc968f7d47403ce7245e6a9ce7301b0104860216ed69ee26cc49acd37587ba55d0f0dd77b6ab255a3ddcd1a0fed3baf96eed82037187b10db7b6cc636432878fbc7d3bda0582bb4fb21a590c46923ad8da49113bc6662a4a404c993be026f4fbd43edc0d371738482b716293b0071696e8dc732789d84b737527fdb638e9b9b08dece6204754e6d8035f393f5ec8269b068b09e354c83c661d743497f537b9d38bc27b9beabdf79eebaface887a9feeda797ac7b624f5b7d32245cecc7737ef7cf5ba63e5ca4a2149a4bf59bfface4a0a4922f5b628f5375b8c30917eb57c5e0eb5187557eb25fdcdee3693d94be6db483b77d5599a2c69823a10cf57ca842ea929c9c58e9b8d736a9233f3b00ae1790e63dc9481977a3e35753f50a74cfa9b4bfa9bda0f9436af51a3fe9c78a9674df0529f6f4fe76619bcfde5386e8e48f0b65dc6b7e7c8d88e73b3b7fd558d9c9a248ef725e0ccf6ed3edcac6dbfb9d9dbdec3cd2cfc43b86de7e16eb7b959c342c099ed766606cec099d7383541c1f0d484da81f7999b27668297c37cca3615fdfa3e21fe2cc4f6fdcdd36031c2f3336c56e14c8bf0bc8ccbe64672ad90696d96b9cdb0890c9b618cf996cd11090c9b2394189b9b0886b142e68b25e21db1ac90c6f9d41464bb70859bfd3a71b5a3315a7ff31073fdcd6b2f542d2c4b1a47e354386b464ef07c4f0ba8fa48bf52a97bafde8542d563057d13f514fd5af9d4ce11c999f978746a426a623e3a894f1a4a8c321fa74cf8648839275764e58ae1a7ce7a56c59469b77e12e7d4063833ff018d045e4d019eff240eecd1bc79d8046ba69721f19e4f4d785e2524715a92608b1489d3620467e693582d52f09c93852776a98a48078a384483220ee1b228c4829a2920312c4e68f3949d2910cf23a9f53182661662180fad4601fa4aed94432830e7b1e6a4d5e0b388bde3a1ad648821861dc582e4902c4a2a35ee3c0498c5c4056935862d486eda17639882dbb2b0aa086efb02b744a1014b142c326eda549427e0b630b86adcb45e14a68d9b76254a1b705b14468da072d376648001c74dcb5581dbbae0da71d3d62c70db187c52c26d57705de1a6ddc0a06169db7ab8a6b869332c54166e5a4c0a6edbe1dac24d4bc90007dcf6b8aab869a70c705b15ae2fb869650f56dcb48da5855a4c4109b77dc1d00bb86d0a57c8822fa83ce4a80c4b1822e33c4295171284fd07c29a79208c528cd2c7f8381046afc52a58d678f313389e474a2b6488fc91187bb4193b6c2e7f34369eca0ba287f140345e1ffac949fb13c343c35956a1c56c86023ec26358c668951d0f8d5a88212624c678997b404cfb256f9054c24d49a06957b3dccff6d38de1a14df9aa41a803b7e70e6269f266bc0db1dcb5204de67a0d0b24494c64e844897e65c884914a00028c850d94f0ece9a60c99ba737676e7e358bb3fb10a3e1da87efb0f0686e0d34f16a8423c04c72a384a0bf110ed9bfd396d0792dbf591e780e4b773975688fc0f144250e0fa2e7752e3a171f6f4ce72c744f4ab76b78d74811bf737eef2dd65fac55d2089b96fffc92e77637ed473e76ebd34fd6daafebc275e66c1e857f6bfde9369700bf9d1be3dde1f0c0cc1da8de1a161d4313004030dc143f08a6673cc116f9b8552caee1cf156cf5dda9f27f0f623f116f3435bb1b9be0a399dee4fa6695fd11e24b17673c67a68187598d1c083591841c2492e30c27d181fcd66218edd8612a269f727fbc9b0d43eafdd208933a8d91cd33d48e2d36663baeb233be9fc68000a0c618d76edb53b1edca66d1672f62756c1315a6bd7073c82183bbde6bc5dd32ec4276d3bf6cd67bb769fed30fa6b567f3fb67bf9200c4becd6423c6d901c828a2b66a844a2f87afa44b06787504788fdc1c0909a5bd10362787fa47c3c66890cb97a4200a5341056e418fa2089e7b14bef4f86e7e74dd217421e88405803e1070f450f91337ee188cd4d8e4d1315387f4e3c916d341a9b1b1a997e79c7186dcc7a2b19fce11865e0f882230b8e5588555c813a018035fd7c4aa982d0d44deba4f022dee20e12d1463f8900401d06c09a7ecbd193264a7167092071878924e24e9068c302b0a69fc4a49483b0f7c79baf44dc6922da5822ee0031116b7cdd4c9ecd1cc01e07b0779be81729436214f1ebbbd87802f8f557f64503f52315dddda9db94938967f9fbe5bdbdf895548baac5660ee40d60ec59e76362ef558bb05111d6ac6428223ecde0ca537fcd2c27d844a36d5976a1a0a1c1d8958943a8e4907a8aec29783e66f6941a543a8938628878279808b20411544b426cd66ce9820a653207736ce48c3cea45057a0a562f2cd29f3c27d4a9cb09d5a6fe5a96fa3bb6d462640a8e88e38814f13246a50906060626e61853ea3227c7c6e6fb7ed8656d83473a5e60bc45e3344e63a3f1adcfe0e520b7634bfd49a6edc926b33783e5e6d4b1258c29f5548c9b5932377b33eef694c5981a83d29fdc30a654ea624c588b55c2d42fed4a4d6a9a46a70ccb16c37279346679ea18957e3586476910ca846436249f116553d41c91c7a2f40b1ea1a18925b5c59c7e491878536d9f8d832d6d37dba46c4e2a757358965c320eb5673df038ece85892f48e1d4979b86439a2fe6491e6e1156b05933dcb25b9a4c5f03cd6ffa56efe32236fc62594eda92b976451ea2c874155e1a52ef3ccc2923acbb35c4a5d8645e6f242c822f39657192b995a2e41914ba9b75cc642bcc96da35bea4a23298b3c2c69c6b5f80cc9ab545c6cb08bcbb10bcbc5250a15611e79d7cd5a8c9bbd7a999b59f5dacda7c1f52d377ff52cb03e75734e17e1ec01250f3cc1f575729572d562587d95dd9687782009d7dc46b99160cf6e491fce5b120c9b4f4cb0fc8bcd27257c6aca9549ae4a5d84f396942b152c9f11c1920a97076c784119a298020a310083ada20b557c21338112aae842ca3a042738910202224e985a09e8a42729a5944d4ce0062cbb264554c00a035e619885932a1a0db029a40994a8e10d2b56a0609e9454210a256600412d62c50cbad093485ec592383fdca00b4a4f588212d10a7a241196ff686c907c00068c6188e4832d6c66f8d6a0862d88d0852500010d28485aca64087630e944a2b196f4eb2298ca5ce18614f4e0090886c0454f4b41837a82364af50fb0d411193a09c3304c08656408275c38fac20ea07c400945b248a2a28a2c7c210b1ba8400a2c30912690011638c8820b2e3035a8921085123314010a4618410950f0634a1429b088c317a2808404522421c21796a2a862065a0c11691c0e16465a20f4821158a1821e39022950a0699aa605090292096e50c59432a0200a39a59684c3944862626909265ce0d1239680242101642e518c6a2e5389242696966042d3b22914d3b034745436b1e48414202730cc0432886284318401063d102a8208aa64e1449bda520bed23a400494202482605048a7c800c57408219e0004512a1dad4304dd328a651259298585a82094dab5b7c485f8802d3300cc3308c08043290b205138af4a0880c01129094d06289084b5a2c29a1d106588530a480093f8872a4081204534af9032c3fa53c02487f518a2154f080085d00c2164a60032e7c2009485168e6a5f9ba2b6474327d13c39a90524a29e5c4e69c53489640b664708525537a8083a319f4482984a511964920c2524e79c41692705892a685a008509a64a16dc1051e3d62094812124034ed882d08b9cca46c4a1a3a9979a10a9d5e78036d62a9456b299914448e8440840a462888f2852a23d0e20433a01fceb4372171324cc334fa84d39a5872420a9013f3040dd00209b2c0832d443174a467c66149a314cbee8782215544a10940d0810baa28810470f802b6c1eea705912969472270c908484b4a58c2029332565833b8a04a1c92b082303ca162ad08585e5aa7d4ca8e4b8c2589d12dbc297f0426650b41d27904124947203174032cca1534c1e445a3540a9d5bb6841a80807e4c2c2db1591a8a65588a664d683453e8a2c91996a4e0a2066f58c2d00d9a5832332a8589a52598a8629b472c01494202080d466970ca1aa319869d4e2998734e2da420c247359aecc2f33b5a830a56687713fd499933078cca4b690268ca3e6178b486219cbfad59e27004bef6500e0c613fcfa8c1f046072e0c0f8d60c02e3289528036a20075221594fa9b382ed1957e46857e9402dc8954e21051910ee4108e97e872a6df9876941542a95f309624ce8e4825ee606863b66aa5c3191e2de120604dc7a107149e76fbc2997ef7b3aec216c2d067b0c19d73300face9381c7517b3283c81509b1c2bc6ee3e95721ae900d334c2641af1ee032f7b73a8c9a889323d6104d3265e4b26da41f0e43482e534328dd0b8dda03e524a29eda64d698cdd54524a29a5b169532a9b36a59452da9436165e379594524a296d4a29a594524c4a8949da9452ed09a256e27590a692524a29a594d248af7cac804fbc43b0c872861d3044aa6204bf67fade13bcac4988b57ec5777cbb008737cfd57bb0c7536128a594120b298ab07c902560865d6029b7eda7d3cda930282bbc6d6edbe17673e468d64238934365fca2851f17bc9e2762c5fbd5f1ce63f92c0b5ecf393de8119942f25916bcf89652c616d49347c48a494fc48abe3670c209e1612c83372f350dc2579c1b9e380b1cc01a887116338033f06e18e23eec22542883c3a3979916bc0c8fe935ec5e7f53051fdfb7de8b963525abe76b4ad83b0d618c5105d43f74b07ad31e2fcb9bf1aa4f8833158677f69765c18394527a784ac586853f56d20790bce4079ae0b6812232e1cc714d56881d2392c470094248437707ed4fac828fd4a0b404219c413ea9314e29658cb309cb7b534a2dc2f8592a160c6dca39b198534e29f37d87711832524a29a5a473ce793aa5e47078f209222905c720524e299b302905334929b30c9584e5853948963423cb15590e3cadbf960287b74d3bcd39e54c67746b7a8363b3b249e79c9a4e4402d64c19a881493e524311ee6b1207366e25dcd0668726e59c2b546b245ebfaed89c4e373936dd8e20b276b70d0d3c82e73a016c3d50cec00ba3eb777777eceed81d61b44cb7d2ed08b202b946e23512cfdbb40ca3de949ee7791de10a2a0fc9b20ccb329a4dd959ccb26c85d24a50bfe3c5b3427004f739182cdb6ec0fd20b2a594b2fb408dfb2a51a9542da79457e802e90a508831ce79052a1d8648578822a5a4940a1486485d14c12c4a2986217581f4a2a40b251586485d80215a0fb33a834394dd9dd3ddddad2175b78c1c11566084ebe1291eca8ec7e9e6489d20d25f9d4fe43824ed7c57c4bc51e86efd2e168135152229f5bc7cdc228e3868e2d3399bc53b04e53ad81c67e3caa7275f338ecb1ae25a330e763146acdbb172cf5aa1713edce52b0eef07721cc7752ba79776d23b7150c4f3dd57cead5c25b222681d0fed2b9f9d0fed2bafb23342bbe43ee19cb47ba694d28e7694527a73d7751342c8dd0c99bee8a4bf38cf5999832b42de1c1f7ad4a7cdf33273983bed7eac5cf248daada00ebb4ce364c05988e515a2bfc8598961e378af9c8dd8b344aca0f492c670d5eef0faabf5dd03af26214fb1acaff5e374eae510fd1dc1bdeb66d7ad742b5dd77dbeaeccb93227ac5df7c3a6bf89ea7c10d15f7ccc8feef2126254e743bebbd109576305d25f3d7795e8137119268f7b77f371ad1cb7c27de53e2bfffaab3fa2562072a676af287b447ff59d1da2bf7a6989e8af72dd6bfd11f52829cf5d9bfeeae30abc21fa9583887e65adbed6fa5a5fab145c6badf33ee46f64eaf589462ba5382dabbf8e305e55d78218638c37f0081e71200042fc9473b6164bbec08282334b3bc27d561f46d3acd4787b22fc7c8e71fe641048e2e8435e2089bb1ef2e61e10471bb9458532594584db0345a40fbced9a0dd25368aa0b7283e98431fb48101576710982b7d3137dd5361b4485b50aa830bd3e2df701003b84384f7ba008a6d7b4675c78da46af8ff69c2b30f6936673727e6a5b888c6844fa9bda90cd8e23787e783c3a9c4ea794d26cdc0fa739842f239ee9b7d726a1009ca8cc2a748bb8cdab000ec46315ead7a989da2ab40121d41f958e72a7a62a746abaf54485e73cad7714af75b70ff1a80edf6c3e5d87c36ec7779e3ed9201cfede51bceff9d454858c929e30e9d70f379f4e293d9dde879efef0c3bbd71f6c0b9316a32546a7b718f5ab5bc2e487ce680993d36d393555a17e613f8011d191ee6e3f3c9132a5e63f1c5dd131315252a44372a4871b3cdcf7702f0f17c85b9abacf9c1c1b9befcbc7dbcececed6750848c015b06d5b06ded234b796a6edb945ca36e544a5bfd9d2d47ddea0e181068786e6e6ee2d523adbd2d43db748e94ed3c38df370b3c7c3716ededed9161adb32a5a5a9bb2d4dfd7db345caa9494a4b8b51cb9216a57ed5dcdc9de6dd6b9e6968bad33cb724f9d0d4d816a3fe686a28a4a1a1b9b9e63fbcd6d816a51f6ccb665b9ef4377f78cd0f37c7db5ab6dbc264055ebf720b9152bf5a9ef48bc6e75bbae857129f6f216291c222a55fae9f7ed362a4a45f3e8c248ec7a45f2b57f4ab3bba71b327c3628483438b4e4db68db05a006c568425c26653fa9bb71180cda2d80c88f9d6fc0f9b7561b36fde86cd74982a954a8531c644ac8a58056065c46a5b05b192596946ab1c72c82187989898981f3060c0801123468c18356ad4a8b180dfbc87df380fb7b98d6b4616b8cccdda83d08cbe69463742337a006efe5e8466742234a3d75c87f31c88ff709ab7fee3dfbb9fcebd9e9e9a4e330824273d3e87f87c062caa0aaf9bbc1e844555e16d97791041dc1c6f0b22939235f56774f3ace1173dbcb8d13cb4877760e11d8278cec1281bd4318a85511e46bd5033685c336ae9d0e8603a463a5f8e2e478e1c9c0e1d3a743c92c1833903ce623473a07b73b386811e6ef684dc4892383f3cdcac35716d6ef62e60e3669605eeab02b7889bbd2097889b593ef7c7cdcf970237dbe066e2e61cdc0fe2e61cfc4fe0d6dcac4940879bbd08f0581c5f02889b5910b83f103de0d270c055e2d234e0b68c684b120fd60970330bf3f877338b87006ed6308f9f8eb8dccd2c236e8501b859c32c26782e039c5e7b0c61bdfee83d9b71e1e553d39d5985a90f875d0f1f706cbdb98bf0f61defa8e8d7e973a38da43f009cdad45956c8e461b30c0e9b611308251289482294199b9b08036c6e1d36e7b05946c766d824a276d08c9ac8026c6e2432b009ccc1e6b8c2446ab0d8dc35c1f3346c1236cf975580cdf508cf27c0e6ba84e71160332794b923781e88cddc52ee840e60f3dc617317e54662005a44b7d4350b0021ec04c0f5a18b4ed76e8e47b4580446134b3bd44ef3c4345504a35e6b3d678d38a9b0766af3c4f410a70e3b0d5b4085513707c14154b86b24dd4593d2467222f029a5bda8944bd74a633dcc50d10800010002d314003030140c088482b168345144b5b60f14800e90aa5466509da74112a39031c6100208000000000002002263040c0094ab11b0499d5e1eda6a110b1e51b2f445089371a65e3effa3981a11cad072fdd2ab7113d24cef18fe0fa5f0e205d6abc0b17b5853db0ec5ed357c2ebf3d45811cf92d6848466c0c0c07e8b3328a9abac96ff88e81d23eb3f6dc125601ebd6087a28d92fede6dd99f483b2c1133e87b605e699bb5ebd792113b7cbcf8bfbcb13bbf4ffe9be4db79be9f9d06251ab97325932dfaa946d2dd5c6ff993264c1d5b0656e71905914f1256a49bf5f9109b1e82b76fd6af5fa4fb4b40b0b9f58681eafe494bc6bdfc8f4537f0c77cb251d5fa5922e43b4f67d7af47848d88dc3dd51cc0409c446427978fffc5c3dead1c12415bcc8044cc707956cbb65456a2071c83e34a7ff455c29e5d366b03c17161bd711fa59d2c2221d0a95380d3e066ff75af84e0f184589d39d92c7697b2f525c1b615cfb8d18f3c06a3be11745cbe8947e58f001e63507d6121de4f1b017828cac68ff3cebeeb163489bb6c08e3d200552e9b4a775b5518f100ea7204de34113b6559fa93297499b2ddebb776dead501a6bc85ce892789d2a59c5f2b04dbd71d22d0367e8d2f787deed20594fa856cf27687fe741e50ceffb73634fa59833010e2a9a14d2995272af2f9d3ed5a136184809065fa35755794532642ab0191c6799eca374cb12d66a9ce1de1fb154956b878af459a4db548fb4b350df31e43af28d0b786e91a72db4d1d8724f4f3819017f688d72bd7a50a4d8120636dfd08ede4aafbce1ee233264f3fd025bb37324090f9205ce564f7bd8f45f552e915ba57998e040d41d919b0afed208433dbac7fcee4dd4de7d7beae943d161abd5af221ff812032ebd85f6772e4b6e7d5a8d25bc76d37a203d1b430fbf3bbfd672b8fa0b15a83d6c5b60325086c9b34f0d8c474f78ba2c81d62474bd3f51d970151d342d8fbd63fb95f9c7f14a1ec1114299958e55ef47d632a96450c779e5dc6cb1b850033413e1322d2026313d4af46fc8d55cbe162c330c22ad9c9c027bbc2ef232f50feb37184968234261fd12407a3c7298c000f936bdca5fb60f15ca65dfbc58ecb740e3467cb9fe98e70037ef56ff71faafcb5a3b9896c40609173a4d49ea30d894b81eb10d73311372e33a61391d40fe7cf9d123be18eb71cfc3f3ba841f887a9de875d225b4e9d444c727ad708fda1a540bf0b7a9f7e787961120d8b8df9d8bd53a32dc50d3f8d3c34e508e8d574b4db83ca82ec6dd86761a18824443e96ab40199bb04cd9e52c36354c9317e809842e747ada0ad06ddb96a798d9ab905cbadedcc763d38cc94c5b2e92894d3a6d239810ce9361b98a540d07508b8a2ba09803ce0ae106303ee7a57d20a00e47b1a92598103838b6d90df92ac894a2831f8c2e3076730cd1b48410459a425a4080d28ca2120e22f14c18ba9e8dc3169a882d9d39ca0e22f0d3bf0d91d6417610a3ddd15137ea253aad6a2e9df68a12c8d76fe26bc63c7aff2fd3d1c61fccfbb14fda6e3a1e35c01095c34743329268a3c1d8513fb682d8830e9cfe4cf584524740fd6c5fb321121541b5438f6f0ddb178706af5eb030f1698b525de765f1df36fa466911dfa2ea5fcdd0c0f367c90d8375e3f4a25cfa3e0242dcc999e939b577b1c036276602a8bf1f27721b8db103322276afee75fe2c8de32e15ab8efbef2632ae075ef2f2304aba3c7d30eb9659267ba2c944f211e0468536313fe9ae3c4c56a959b5fe5c96b9e541ae9883b5a7e68a042b6a3ed989d2973eeaff0ed051dfe7e6ff473a5c9561a0da8e26990ace118fb4660c497d02e0d5fb4442c36161806caae601b92bcfccf80e2612bd416d57f6646994e6ba5e8ddb0c9cef2be1507545a61a31ec91efca9e5c634ce0c291bb99f86e8c4e85efd485d0226820eba65bd4f96aab47fcded1238b3b5c5530790725dfe8054d48e6fdc3b8e36ca91c4836dc31d1dc103e2ff69cc1769ea8ba5c8240a9791e2aba98dac2ca1599942ed6608e216db7fbd41058b9551ff07451425e08a70a780ea200eb9e422e63e1fbdc433605c70c38ce35b0ad897ba01691290c28165d3aba2a70e0dce4ed97b61538d3e9b302405b4a314c66749670748179a4d47db90f2658db81d4376f9a8e1fea7d88ce59e4a19e01a8f27a7283cf28d471931697bbb31852c85a05ecb72d587ca818c19d244d4aa1e197576aba308b032f5e52822b5b183bc15414b4b88f1ae42c10642fee8294bde3e0ef210a7f891d5721ca4b6bda319f4150e176c499dbdcfeddbabf9eb08a343b1dbc71674e96f92e10445b60f05dda677e36fad99f9cbd63b8d1d0ee8aade41c6fc3ba664e4922ce038aeb84cba9718617191b271e6eb770253b2b5ec54a162c7cb5f920be703e50d9a588f9577e2a92575a7fd3dce453bbf94da97382e6894494f0af31e0beb8be334eac075e67cb43e527b27b8dc1544a85149d865174a167c9c62a8edf3ccb963e3f9b37ce50aaa9a82dec910eabc73b0c12ec7c5928d329043dbf2c06fe0b6794605fc8c75509eccee328263387d083f95765fb0d2453cbb48062d70060219a4a762ae5adedf9069d42f7fa88511785d57c13a5738da13496d60dbb5b4225c5f19391b1e97869afac9b0c30b2ea416c9925b90e338197bca2b9027d5bf71f075f7d35372a34d843c658721bf97d814de7f9211372820d576dffe4212ccc69ced04a6e643d346e9b585280deca2a343229fa34abc07e2a2d4c729838547c69b72516806981e523e938e26b12da305c08fda09e418b2077ab0bdb08cec1181f60c313ae37323123e0bdcaf00123820ed6ee59c73f08dc162856741607d3a52ac706df776f323124b31852b315c9e257a6b24613b55412eb3f9d7f1ed40ff29c1bd526e92918551563d786e096ac29257654dd6a11bc5a01f95a03609bd2a0bc8f909b7d4b6f6d3cfde3379fc47aca82b579b28e0dcfa93236b3e5bb264148c5f52a6404b50c5caf21126f77660dd524f96c345e1083e5665ac96614572ff0b683c9dcb91491e22860bfd49d7ce73f103fd1daa5a2d66b80fb90ab6220515568d07665190b41e707008b4fd81c2895f6adbbb112db3a537bcc8a43b90683c4a79b5dda3ea704b05a2d6a9959f0986cf8f0df75fee790842cad8a7ff1bcbcf47c630697db024ea879ceb9a8a62acac2e11b79903f4a3172829284658ef5e847d8e9e73c42e1e967a57a2eb98d70874825817ea97e53754c4ed17f0862db5a715ac9615cf7c05a9a22b86be27619d825fdea8a1a402f5bb77b379416058bfb6972a922065a50863834fe9fe8b46ad18859616802e66eddecb7073f522c50229c10f4b73dfe65c80701eefc8af23da36aa77d7c291bf79512b8c1d8afaa9769898e4e9038cc3561861bbdeef96365d5ea48d4196ffdbe50cb1f871c2e0681a7b5712dffeddccf9f1940915412c104e2556f6254a0525729a654ab701379321f18f6afd80002761483f180edc06b107e38d673b92b0db8a3cc59f3591faa750c979f116f8650c1e54463e1da1c418f671b9e904dfdc2c5f284bbae51015d79552d2ea655abd127fa502d3147fb9ae27f075f5784241903507075103fe045a0b080a8bc84c6aae1d07d308b0ceb1d52c2c04b0eda09c4d3d438ac3140fac86f69d07725582272548ed2d0cd3e4a2f20facf85beb33aac7595126ec45c1fc6e5bcd8c3d5337ebcc00fb2d32a754fc254ea7ef472582869c704f7c1b728f5fb086cc5aec93c1367e1af5b8c5869f4cb1b61992aa7f9a2d6a396a5e9e0cb972d4b3259d1faa8327eab763f60129f6788dcde0431bd53aa434614a17acb32e7e80aa82c8016a39399ffb642f1606659be533fdd9f7d9efaf94fcf2416545ca2ca43677c378f90b2d684c922d42da84067a8bf393da9cd662c499d8e3689fb70b48bbb1e75b49ebebc8ec687571b937dfef24e1f1056d209ea45bf20c603eab081ad6250d9cbf84e444284eb8c6e21c6dfbdc9135c7702cd8b9622d8165f5b1bdba8250198975a52f2c46c9023fccc3861c541ab3a0b1dba992f296a3c23bfc26d50aa383c6f723e805e2ccfa756ca141eb7948a1d40120434032697d1c0017f56292d8f598e1736cbe5721890eb4ded9f2ee9d750d185ea763963a9ef758e24e81fa5be69ce355676f5722d4c526569169b8a5371cb8e75ff07aa6db6bdb410d62931513a5f62c5dbf6ec300be65f98f46a21e6c829fc65f09a2b0656bbb68bebea64fb78091a171a46f8d670a642856026cb1c69d9578c94431451422b64248fba4dc69a16c9be048c633aacbb0c0362a57abd8ce07a9ed5b6daf3c7986ccec559de7ad9ce69b1f32285ed300364aef4bbeffd038b3773799d387f8b3654344bbff081a720eaaa4fe828c21ccd0599bcde90f350a3217dbd64b5b88fb586c47d852530d05ad532271e0f03309152013a2570473be7c144afc0b03f7195d3b1d0511ed110460a5bb843a29d0e0d8ac47dfb48f569137735df7b70070749a16a2a2f11adc65dff7268e3a75e298ccc7ee8667996c9f6eb0920b2ba1595a0449b1279393d14917976ad56f873dead3cabfca889ccf349827d43c0ffc9428fb398790407813ed1854d09b9cb91ab3cedf59b25a5a48d65917ed5c29f7b547c4fb91834c2efdfeb44fe1ba45c11fe473a5049295668c5a1e540eeb66f0cc029a80a484576473468e786b34dac2d3b7f4a4ce753ebdeac3ef27c00a46963b2bbb1afa370f14ca24773b069f495300005ad916e15b7b0fca03f415cd225a94a05ae6412c2dddf4829af57233e849948e9887ac015082f970806b13e1af96c02a6f710440b735b56d1059fa048297617dd269370ab87f0f54778add9759613092f236fe296de2a49bbf0a8f446e3e6ab3abec04e4b4ae13a8cb440af718f29b423004a8f606db083576f20aee6be22e5df3a8dd3ef69ef088e4ddab848f8ecffb58b881b1d752118449aea06c51b1e68741ce447fafe81799655c57d78da14bb137f8b1a3c4e5ed40d26a33f4c98b16993c922e7a58cab97953ed07907927253681f3d1c70faeff9f4c1f1f1c5c0d680a13f572a588e0a16427581a258c2a096be6660006b99bb7e7dcbfc70604d475b49f76a44b50d75e288f972b53587e9755c058c95d85ad57dd3d9316c568d457400358bd5a74cd55a9d2849746bf6500d6aa937d0e299e3d52b5259de09e4ee580f6db93cc7c7b53f80df59cb99af6e02eff458217d6d789afa1b633c24a5fe68b1f63405562df22fec8e5d76fc213ac20de7afb21abb8878b08f6417c79a73178d00942c5af9740623444e21f51c9eee7163882436aed3b6c8c298098f27dd418de3cfe156be1207cbb42c8140e93258621eaf6bd0ae1b590ef77c2e78074a76576389af29a01cb049affc044e3b363e8c59a52e91d8ac040b1dc867711e5d3fbed2d374c001e24e3385da09be08c31676b68b00c9e679569acc5008edf14236ec260f1584d60f779a57048ab165e299b8066d50256b3a9a98d1375985e23fc18b0f879b21fca81d88218795c9631a38bb9b2d85660c4b15b546a1144a007d20998bcf9dc4aff028685b90c0c78ce4911701418c70a1c29f9fa66acb1153bcf35f781e70aaa23b16738bd7107d99ff7de6727ff19ca8bb712064fa20fb31b13321f08f792f4a25f10fd7c1ffbfc64c1870c920adb8ffd156509603be6e0bee0e71c2f71b6e41694ba93730df2dfe7839d66fbeec06ef6fd46a4a2d1fcb64781dc9c3f4ffab22c6f916c6aa54870e68f698ef6d61180af32ffb5576793d814042d19149df90eac2736f309d184920d9e342f0b2d86c9466e6dbd245d87a2b690890e8aacc12a66e52aa5c286779ae7ddb72ebc7b7f053b41d9bb5884fadd45474acb1879fa13ba5556c7b9103a66d00d74ce9930a22dde3ddf112481752676508e56bcca756dd8ad0e113abd724c392793e56aa93507c1d8cb3400bdfb054cc4339917447eb5c35811aaf760fb98353209029680749b701e2d71e2aeef50abcb0ee8f66970d53b62144d7bc0fcb45af39b52f90add08d0c1082685d4da3306077ecd82845053083bef80368595a76674aa9bfeb8f5f0f8dad1ac0f65142032a87d5f7fa94418a22e0e46a9b55d8d04b4edbc8849bcfdb65d378d3d9b573054258da25025dddfee217a76304a7b718a387df32027bc8ffff519032b541208a5355ae43c7b5eb41fbbd7cc4b6b4bb37b6425ee6ffa2c162e4f7c26f70f0187a4f39136804b31bb7b7b0d44c3372690bf97cc061af00c24bf48082f96536bcdaf433a80bbb5f3118761efd6013f4fdb04512c66543d708abc15cc957c89e34b112081a10ade19627f00d0d8b163d762a2dd1d0176d2889a38c44adb201a77658e6c3c9d4fc290db5378e2b1da3e729ee92b5f33aa08c6548e75d933dcb412a92506d53208eecf77a5d733b715dda46cb8826744b4b5e0d655e0df309e291b086eb411f514ca4d634d040dbcc8d3634e111f7feb6c0893941887aeb6b02ab3c4a2c702ae66852ed0a630cf3af8c7f65885d52c6571fd5274863476879fbf1214a6037c0b81361000cfce0d1d532cc46a97c371376964af86a58501c588111d61034c6ad7fdcd9aadd9228772bc53e077d08001a679d160be213fe306c5b8f060648c0a60ed2715952b5416dce3315608462094f6cff0978a4cfd723d57bb047ba7a77ca509d13566e4f68ad368e254b8ee02d0b29991a001a992f17167dd5052050f7f6146ecb1f76244cef9528347353e0d3bed92ff37a60e961ba4ad238a819ec3caf26646f047ec92e419b395d03a074b922f94773683f6e49a301af82a27f3034e18706014a3643c0c83aaebec078201b8f9c2383f522c4ec9841d0d524fb42093e523724bac320a1a9d3c3fa028932a0f27dfed8f4e49ef63718825eb69bbbf0dd033901d9cfa8f7212677cc62134602b7ba0417c0d7316a6fc7c760e29ff59407a03654a739d382696ddad2adcf288379adb612710570c0a2e0f4648ed420fc5dbe7a27b75e25c33a51242ee52172ef58a7e35e176c0e57f1aee63dcdab77eec0a1d540c29652be609d0d4910284836f6071d101365b9fcdf98887293fdbb0e33cb9b412f2d59e5ee952f883b8edbced0f860942acad57631c03e75688115f5af33045dcbee07e968c2035df3d5702c6c4e085b31c6e46b61932fa84ae2d19b9b44a07ba0d16a384314c0039155edf5fb385bfb5b8bc4e0af8f8735ed4baf6011c8d193a7e2f71e595373e1eb9e6e38a455ad8a57a1c301ea10e7b7a33abba99f9774a13799f03c2462f152e7e994af41c1f0b2d4c11f6f85b251393b87c943f14b7a585a60f36664f4185636dbb0eba3c8bcb77b3f104ed90d3581f776be689fc0c913edaca2304bde0228d4993c2ba524ae5f8bbbe7f1a32a6dcea04f9fdca0a70011d19f29f95c2c7deeef686cdf3f05371c73958c95c21cd041be4f5016a62c041733bee64bf561b0d6f447613f16975facc57fe8bfe8a8b0e2b830c96a8b132d2787042e05bef76f655d1cc2b493c476df0e70d20b2038283e09101168f47c0100c7a38d271b051f40311a16827f1587669cbd772aa79e4dfdc4e905991e55c45f291e11e023f1e802fb8b92d39ba5ffaa0cc5da0b118e2628b4489d87d82ad93fbf870026c44e5d48102cad19d7792f1618292e1aa1361d648006f221c0352566dadb56e2ae93ce403d3f5354191acf5e7be64fffb380fcaec68743cbda0ab75e8be16188b29fed28581a96fe7822f411e5a1d9fb37bb81129c1781669700f1e24a526cec9a88ec58906b73ae352bbc987296e98dfd333128606e879366d3c61009f867417e92fc0879cd79f64b9abb0a3b2450f9649aad5f1230705c4cda9592b03a0780e8559f355c956f3f53ffc4db1dfab5dbc45d5bf7c1f04f62674be87e9acec8d53845b90ce6697a44562aac0e482f161f3d58f58e054ea890c3e29ea08f741c6ab4b110c82b2555a33aaa483624f48b55109ac6783c04c72a3455bdaf75981aa32c6fa8f7bb86b8209ae1e74c895ac92ab692fba7bfbc7faa53dc19addea720ae296b1604e72f921b2e241f4f91f49caae18002356993e76421a4a37fbace2b208878abd4dab0974055b5cff4477ce8e67c62c169c2b2faf44fd4d7c02a528597f8339c5d53a3ea4620f477935dd2fe4b4ed30e34468c9a5ea12336a0c0db722332a0d0a08f551064234fa69856883bcb0d6b12c75774adefcc6332ca51b7e82fa86b03175b1fff930f2545336ac00a0c967f712185631eb15aa1455c47dc35134735f11dc6c59992efa9367140622c74c2ca7954c38f89ac4e4cd033c6c3b954685376beb37f2c3ee4cd20cfe8278b8035404f15412d9efe4d8b00efde0227c1d8c03fc47d4c6c20fbab1105f3bfda30b3a3685522fc8e235a36c91dc88553afdc9788891c68d413a0c128bfac31b982cb6f371160f8fff813675032e2176ed3235474410e0d0551a46b24d798c071fb12087c2ba2bb4ec59a12203dfcf6c19dedc45cccbf0de34734f2af04346ef070c9689c5ea81e4e80b8d294973c60dd5d9a4cc873b327c80266f2cfee27e502a2177eaba873c0568e13fc2984057ee1bf410f3b2df1c167b1e78c9f527b62770ca457444317acdb68baf172a43a2f846e44697d8e4383070f4e302424945023250ad2c0b2de973f87d9a2c87c226bb65293f3e7f2ec03a0ef7168071cfd8c4a5bed0cd2ba9e2776de7f96120960676ebb2375c4232e17aa538e1e929866d7554c7b9cd0681e818848a926d279d5e81620d4fc050ae40ac4800f27d31a32516b4cac4723afa31ed20193c5581dea53d84411dd27c5453623d90a064be70d8d5db9039d84c0145d37f696ea55fbcba7159dce1991da7a2595019631bc0386f31fcb57ffdb1b5bcfdaabc67f91211198d375a93c062800cd89f5e8a464447b750f8ac916b56ba08e5149d39a0698297d57358f4865e73167041e11eeaca8124cf39ab0b4ab1824a3d05cb84bb5d6d8661a8e688cbbad30b918385bdda5a0b2a58a7cd65cb7a725b16d24d3f8fa6da1665d5d55ac88ef9e9ed95aa14dda431de6a1f94533f90b9ab4d7beab4cf2ba0aed27ca452b4e7ce489ad469077a6c0bff72db96bc15e42fb75dbf04927e0e5d422ba38942909ea4ae3122e8302e352cb8fd62f885c79b07ea74147459af4fa46528af1e2d82990e9807d18e77ce77a35aebb4a4280bee6ad859df365c7fddf1485613d25463afd59af382a82067cb4e5f6482b8ecea5a07c38ff9cc76fc849be69eab1d4e5e1355cdd6c91445facdd02a09b231baf7f08a0c72a8460a4999ff26c3b48d4792133574d3da8b9e75d9b981c6b4da7618dbc46a595b73e8c02656645e1876698a735b0728226c309561a4b9838535308d8dcd592197e29b89dd36df8a7f20ede46febf18ac0f18be0512ad0c0cca8b460b7edd06098caa5a4cfdb80db8745b187a453840201643c6149356917de09df4fcc76e440a04fa115ff780bcff1fd39c60b5d31800c2c42ffe67b657ae690280e63b8070f6215d5c52bc2c90a7cc6c8eb00ee420c30c10f18b8bcb52892ef4dc22fe43b7da12653d080036ee988504ebfe321ebd8cae6a4addb4a6f598060760f078590cb575a42dcd740a741548c1e730e2d50ae9a9a4faf450d84f58aecddcb7e297e1a8ea00fcfc7d2f3ee4e7deefc833063bad660ec1af32a293100b8553fb56f6b277ed155ee0edd4ebe7cc829164cddca0f298e103bf4cfeada492d7834ec3a2cb565ab07980720a30deaf9a452c6dd8912f13b544a7a63571a97a59f9e3a99fd8fadd339f58657bde9b5930edb936ac23a7ad86c17f73e2f05c1e8e698dea625a071f1281ebd8d5bb4b4cd26693d2cd6cc269f7b1fe616b99945b748f6fb08c386550c1cdc18695a4a900ba477dea07473bd7e47253d7e94337731ca1d7e0eb59257529a666813d052e28c95ccb04a2aba9c36bd4aa32240290edbdd59f7d4281839bc6a88b02316a417fac95fc0d58f79f36fd5093e92c448d63d5cc51084b6bb4408d63fd4f4040c888b8fe18202e536d91344a127924314e43c97ab360f0400565d14218be9a2699e362c8ac7ca7da633d62f0f115a05408cb31973c4ef8333a35f88d62bd8126fa16be1353f791384aab6731b2d3e5fcc8ff7693d593b36f6e1e82d31c8d158a2a0f00ee33ace79813688a8f50e8b62e93e43eca8ee0097cc0777cff23b9cc5b627c1a3da7080cab0a0010b8813a1d739a0ad43bddb177c888bd8f8f17904c006cfb80022eaafef2678d82fe5a4bb7a4c7b4b42e9875c786c13c3154401fac989bda8e0172bd7a78f5e952a19b40fbd1e55182d97dff7f5c42cc30359e680e0f78d63af1daf4070567f623b1633c3a60c6dda6cc32930369b68ed507df9555473e8a8ab9e8eb1db765218e36f3954fd81d58785956a773200feb22ae23a0d4cf5dd0fd020d629a265eae72e61e39428f17952752771a2e6b8222b9324a2d49c31c673a733c416c4be73a4034f64fd5a05698184e0560fd320ef731f4716d05bd6e0ad0c3d35603266ec992ca6f0694d4de6adfbac3870cda8d1f7afc6e0f22dcd455aeedd8933895955f45602cdc55416882c729e67e2fc6c34517b51d4334434293fc802e6b1074b486efd079230959905c6f0ce7ecc2ce080a9180f49de71599dd895a3662be0bc6c66d2f51278b742f771ed0ab7eb2deb48c570b99c0bcb1d13a55997e032d821c039908095ea90245402cb36c2928e671093174ed7742b66a4e3b7c3dd061496f7b6127d0c60e96ef23cc1e39f75e9f1b04f979c85acf176598816adb9a40886cbd9deb0dc5841aaeba6f5f37e9d39f7e8f4232b91a4089f9a3bee2a9cbdd554668dafd16f7818069a49697783455e15d7dae38e9556f86d2e4619985fa863ccfdfdc615ebddbae0214dfec3f30dfefa322405d02a4b442f38fd0dbaad2b063e597434bbee29d2e2935831c855df54381e0665d278850707b5229f70cd4dc8a4cb87aae490e72dc8a4cac121eb722d3c69f99eceb614d51e402376f769556a57a203897c9e3221f508d620114a296636907371f6cccc13085d14c871822712802e5e66887048b8bffb651f0de6515794e087ceb5fc28ffd6e4fc4cbabc13245caa3380a502666ed56d4f1cdac9ae0a3d2594ad98387dc66994f4ad693f5c5ebf65f58d062197dd9fcb71fa104256163a041e625935270ef2a757957bdc8e826338d523e8a884c862ee7d6b0e950900a02a8cf8b532a861f65b82585fb69b763354ec8928b1d77a906a16df014a97d1bf5e64e85aadbe9fa01559901c35533232a66ea2d261cabac284c7158b8f463051ddceb058113a1ab583430bf36a272e500ee348e6a1abc6082845b7198c1d02330a41a0c772e249e04bec4e337ec5ec61ca8e32437ea3609e5d8804988728bb3e71376c5aeba62e62d429129e6c8b1698d7cd6a8257f6ef7b7119055c67100c56374d5ddeaab386f162b14220ec353cd8bfb92e62c13547331983fe53885ebc9ced91d616064a18ce6f8543d515c20ca0edb983afa53745b141d3b189f992f9bc809a4d5ae61c92f2382365195385605cc89f409373d8ffa1932aecaf654112711d6c47f7eed6377d2776a02a3296a0d96408eec1de6f07f165f088683c1cb87dbb73e8a2a60d27102d397008cb4cab7551b5f61dc4256837d00e86b0b5d86db79c952a2454e3b3b5c0c9c99767cdf8643511d75e924badd1541cab48e667b0fc907428328e8b6ba12fa24f5e4aba74e6673a34c587da244c09aa3821f284099ebc9bf1857d7b440d23e6d65c5ee171056fd14186cd1ae1a896e90eeaf268d231c74d7496dea7bc3cdf6793d0aa19ef7b24fba802b89ca912432f34c63ffd3fa06b5ddfb7dba0e3c64eb36f23bc43f4083c8b179545d3b4e89fc52e3de32904f060e74a7a620fd0edd0ca2ef68dd19f85283ce1b154bba5d5b0ec37f950e346d4c8984ebedbd1b7cf03a75d04c1ac540471b08749e6cb17833140c3cd92aecce7395ff74630d49d976be682cfbf6914bcbbab066e584a96fec0514c7a30a184b13f297f812dc7760fca6b26e052ae8289d868cc183d07d4ce00ce6e9d52e1a529605c4ad7db74ff9cededa70069c515e877328a0fdb26117fb020cb72851afd461baefeabb8b8ace35dbaebceaa100151746c8b32f2764afd384f2a7ac0f426d078b50ac3c7ae2049ae68e96babdfaebd64c6f17ece3327da9639fd10500866b4d122175402a65624b18bff92de59adb8c62abf38272cb6ec186078a4f8a62d10654c4c15cc00bbf0023a83d2a5dbd554345a8d5f2368f3059e5acd1ef2c68d6c4b5faa5792274c9ac8276228d3089e5d0bbe45766f7dfab919e0c55da455296517530195bb867ffa2f003d54d92a3b4f55ac87b8203f677d24253a1727952ad59b41ae8c36dbb9e74b8224ff2b9671d07dd60cf8e3715e9fe93626f55333ed54f4c2193c87a6f988adc20191ce85f5e2867d229fa3c9dfb337c263cef4740c73d07296a8b7c2ca4eee086a23484549772fc541ce15210bb9906da300223e26f0dd27b8287c4bf91abb73eed60be6b29715ac3108a6e52b545ad8d3c70ff8d1bc9847058932c21e962b7ca4b9076c02925b62b8a80becc52d08d1965090f07e71d33f55c502b33dd1a66c8caaa558d1d85602bd1fed0db5fe7cc9064383ffe65147b27558a209c0599a19c77a201e036615189dd0d060b53014faaee85e051e61c7f055b0c174358fd44eeb2bc731b994110abc25ba0585998a5f630860d488a1ffff534afe3473136c9294660c8dd87286eef39fdf24622b6fa00488f0fab7ebd1c85304c6ff715aadfe7bb4f4c9a2342250364347b79b01b492e5b72f390bb36a0cfd1439b8e230683a2d70fd97842e7ba6b6ef22e1593f73873ff7c0a80a87ebbaa41d9d78fa1932e23f2ba6fe0ce4665278644b3c2e9b4b9d238e10648cde3bbef8b610549706e629986c21fc5cf37dc396a672bbed6298a4287b493a922f08cc58ae61b84996602d87bae8ba7bd7658a1eb1adcd058d7cb265104f51dada1216ab68a64eb98389bb992316908c9259bc5381ad92ca2ffe7d7026ec186093ea27d5617d621d9f68d690890a02b64f2ada2160dedd857c06867c5fcbe5233faf9c688ade3785b6f80920942fbfa6a058d451a51e58c03069abc3341262240a10fc7ed46db42ed8e12e6c29b388a1e3f861508db1bf6c51a644e155c23e9ea44d57cdf0668651937b947df20964afdbf7a58f2aeb5ff345f9ff092e4960ef89b7e168cd6b41071b7140a60318f2d804fc1d697ba747bd1d5acd5b8c3dbc37b62330701251d1965329870bfdef9ff05e349952952bca82df6a60fac7a764bf8e06bc60784ccdf9fa94353079332ce28e27b60943dffb155785392fe01963ac01ca087de63dd0994939d5d5096844a15fdecfc45169d84c7d5ff5934db291dd9884aeb8671a9272c4cf59d9572aaf8ec0900da669767e7553f5f58d31c1dadc48d9d39721718b710e6e064af23555e2ad096d0a3a3867a81ec492666d82e2732b9c7675ad8f8525266dc97c81f1e57d5acf25a15fa454042d3cb087d852b104ac1344f15eb00787337adbdb0a2227f46d48652904b8d90aaba775108705162672d645d23c21d216d219e1edcf99ff584c01adb2cfbe493d33aed139e862bc93e61b2449cf32e9eaa168fc8df9b338b0ee519fb5614816c5e3dfd714d3761b6b06c78acf63d1142767d2d74ba567c70dae9dab8c24d151fae1e7da33e8fce5b43f2d233697faa7b39b237b0c6468c571f3fb766363938d9403e7f824f1068d8cd086d6c875c180df131140c58fe0bce6d9dfe9dc1679bfd6aa9a029d218592b69c839712a7a48e4b15c2ca1a49c6e24266b4642db86978d3f942bc9531c27c10107b1983711d894a65811f9092eef884554083ba45b171333ab4148f120fcae882176e123f06971476eca7e71728991b13dd4765f57fbd444281de87bc856340dd6628b3fb2ef6ad2dedeef1962ddc2819a51256e2468b90bcdc930251beed55d61fe95daf10c23bdf702121949e1454870b308506f412d6652844f2c5cbf69384e6a49068bee92c63df1baa7b2a5df4fd272e471d6736ac59e5186bcfb50df0267e2b99cefcfd1b89352cc36f1c9ad9904b347281131ae8c22a0c00759a3a464039a49a0e692c88b41bfcfe434647ae03ed76c983040b8202c59c774dd018ff75947bff9439c3dff5af1f1b8c20c1839dc66821e2ffcba29e1cf22609631b71627a12444265712b8aac4d476829bde7a2b4770a551d361c97266a44ebdefa025f90a6411b44070c33cd40976f3989ae82d2d75534c7d8e544b22f94c2cff0b4a3b13bddfc753d68ba9681b92105dabd3383084198eb230a5370aaaa605d7f85b0655c0b20f7eded8ef756a45483f5dd69bb68baca18e0b355935be78593d9c2b320d819a005c54685c520d19e9e43c0857fe3c7e764dccb95f437aec0cb0f997b3022bed8d3b801d048d6ea28544c800dc97c2264ed94570355c1c54a27f4b22a10d1be183fccb1ee18b18605a04ab375b9f1dc2ad544cfb914723838e98461549c8f86f3e4fcafbbc24d41f1ed55112fa1a255a057074aa284a605c7fa8bf339fa43a5cb52544889d51b34fac4f41ccfa354415c996702b184c166079b090d9785fa26b8395b7284da2234d6eb75e0f390a2231e6182ca001f934c567385788cf7c9a114e75d65931b13bc7bf481da242a02302fc908082778079ef6913ef66cdc7bb8246e704aa21a97e82583e625cc525a14f92eb5fe61338cc4fecb14606cf444e00d207cf593930cecca77061a85a8721ef38eb5646eeb70a6f7c78b273b5a0388a247fe3c9205be7b49f774f7e324f0b088e9b65eb12c4d64ac3d41f5e750c49415f38d8c7fe81a74116d8634e4fd31aa83572ffa81cda8bec604a860275a7cd6a0aef6988683e40c02b8928d1d2b1bb9f4588aea0be29ece2ad20b4c9a7b6645df654bd5755363a56958bce765da3acfdb19774b824169ec0fdb2738a80a4dff71bc113a01448fe4d99d98e522281cd6109706c13a97bf3202d281d20b7309014c554b5c21f893f28224a9a26f9cc06a611bf1ec7af9d557a5fd9a2c9335ae437e3f9dd012030b0bc3f393a2e2a45ead82ddb0297b92501e2cd9a06e531c1ce6e96daa4434e4490f6806727cbd52648a5c53952f815442796aefb7fd07b69d34b4db6008caada9fdfe835b0f1f9992427a0a0cbf417b7f81219d1fcbcd58baa881b09551905bf9796c5ef08b07114aa72927e59b1d2d2c94255eed44b09489b58f4b5283a387dc368c25fc592cd796aa2e196acf55e0c1b07b555b168442019243646d01a9741fa1babd27e4a7e9c43d5db71385c354d1eb76691f711949400f9dccde0602d0d15564f2a0318d797922bcfeb006a5f72151ec7e876b7fe36dcd143931f6c2842b6e9b5702ad863317b252c6b6e60e078eec2f4218601cabebaeac742d4b26a7c52bdd1b30e477f76ad74d696625a428996ec67e23dc60f4b1b16a1120f03c8b943210a1890ab25027c8ee7bbcc83d8d902995ccb0372f023eae087ba2c228296dbaa95d8f4b423f24036aee51c8926ef28e135ff2e3953beaea0b2eea32d12c11c2f112aaee7754e56099806c7b54aafe739fdf1989eb7266f22242a9fbcac77526146875d6c1155066c229c9b28cc699fb4a9752a5283119216250050801ffc5f617695467138605c5770eaaa9f7c270a3a4e0a6ed772752505aee083f0c0e3e9b0f655538ed4ea063e1c10bcc4d947f37fba3be3e80fd313122c7227f2f4e687f841c6c1ac3ca6e7674b4875643b468d06565977d898fd39dbf40b25e4410b6f25de4c61b15902114caad0d978dfc58c1ea7eb41e79c063eef8c6cf276682cdbf89641a49d32035c7e245b8a8aa6a79a16f191884bce1a6e0d5b732323e44481b0118352749b9c41f9299444ed7b411c897f9ae26140e6340942e76378787355d9afcd5ab385406a6f66de49512c578d20ceb20b1465a65d0fa4c45ee94ef212a87aca5cac5cc3e14ba005f33486080f59991c8ef29de2e1375651da2600025eb40736debe667f7290b97c22f6d54f6ab29c5a1d7538036cf3a220f2f6fc9d688cca6ac48ba8906eadbc3507d5b16b7c22aef69304fdc002837d4aa89a956045c4e7ee5d24b8fbd581327f4b62b260f8a4713bcafad7c8fadf727986168dde500a14f9f7088013719eb931468663b1e3030e4044009301da80ef182c7ecf3f0c29cfea04c9eb444c22a4a4b0797a9a733d11bbf1ac1e5fd758167415ff4772398516dcb92d9c8782c6a3388e142fba6570556ad250c5907155807cae10aa52a43ed3702de0fa6bb4fcc51dd6f1a8f102fe1f2a4437b6dbf3f66b8c09dc9a7a74d0bc37dd09896543c2bdad83e359b5d941ad062f9d062170df89018cf9623e2df7db228186f48c02f208ca98c33c56359229b8d173bac0d3b35fa9447ab8fab327db969c17580865cc7eaec64ee76707b0db58bc1ea5db6fbada20f7d691823879e0c3a21c9155622c0e64341fa0c52063d11498f44783804ae6610f2d59c17ade5630b8db388ea4ca8fdc08ae80858b7074461a69fc0af23805c2e005d70b35740709cd80f85de03c374b466a3d37fbdf2317b0a1a2280d051d154b9e1c62a0a052d2f4c2fe09d8a24741a3a166e94156e91c22a855e47bb1f4add25cd1454df00ba657d2b5b181e57a96615c6da855090e9d9d4a7db2a1bb26714294edab971b23e7744f640916b5c43791df30f72f2ebd59bc778db3371cb5d033b9e5d98027d5acb6f3a75ecf82355ac47a66d1b489637a7cefc74fc0ec443b5760ae0d7ddb65aed13b60b6327872f982779cf7e23f159b884e78241e9c047a4c9488af5c3fcd0d8bb14282846e3d797e2521861f4e4fb1a7d8b215a5dc03bbae6be228015c189ff37afefd86ce646d52e2aabca807a688f400c40286853c0611eb3822778c87642c86752dbccc604f47f3a0a76684d12805aa6f7bd5d2514121384b28e89aefe40d39f7269de6de5590af0173710650cbb442eb4f2d0115eb039b884345638d30219132541b51c85034cc3e0141f7d8c18821a98852686652d3e3282d5c7a4e6f28cee3f5cabb0f6b69bd1baa898e3d30777ee558ee47445ec555967bc2fb49c201346a0c6c85db00a6fab91b3139a841685515a2c0cf156090d08a216b7c81808229ae2dc377ca241592f2753e23a83d01891f612f45ff90ac0d7c8b8ff24468a898fb96c00d4f41c9d79517835c58698e3186f82f96e2607d4e07625445da40f7079be42616e9798f2e35cbe43d86e58046217957cdac25a2d4477da72bb36bcae588839053c7f864d8665dd7a4b6fe8b1c473f39b2c0bb9e6e734cd1cbf42a6f7ea4fdcb4009cb0fa05f5a8b0480369379a10dff25392de64af41c29015b63ebd698b3fb254476e22a5716b99e6dd793d7778beec7a9c5d1e4aa8112b73a686420f5db0e4d32668f9eb8cb92b21ff0aeda45bb32f90c4e717e09f43940b0743aefa45b572ca9516b3d3f2ba482beb2dae3011390d96494e4a03b97644e19fa3af7dd965c8fd6e1293dfd4974809dcfbaa2d5fc34d7b7c2aeaf749f216bc4b586912960683ff1011705a936430116488b5173b070813ace372530c4422288b23e19209a03d4520052f69de91e114cc6f11d11f3028040afc041eb5a6981ce28290c337a54b806647b89199b2b76f97e6a0cda94ca773501c9aab85613b655cd739bbbd0dac3f1bcf0a3328800237926746ce3cb5f59757931fd11553ae10c91a3399bfcc758da9291931e0a4e49cf6b9bfaf4d1be3e310ad1c433e2aa632906d9aee771f1a67668fb09018fc79190bb90620f0a1a35da5ef67a89ab95f62a1bb844a1a6895d5290203daa3f6cf1a055769de5c63cb7fc404461634a4aa8938625b8a1981efd92300864ff85e620fd60935e57328af965930678c9a29c4af4331fe7a85264d74065f737cd3c63984bdfd0d4985bacf4d82cb6754b5d85ba00e6806e3d66034150395f963902ca6f994aba964d323c7a6dd9fe0f8216332af923ac62afda2aa7deb9c49c7b58fbdda4c401a910dce9682bab7d53f14433a131a635cc64d6b88274e931ec597a748e0b097dc358f4b188e1b3eebb91c60f57e1f76205e320dd024fd23865997c4612ad04a6324d8de10c8aa66b54e146f34dbd6702c6db92f05abe9198bd7c52d497913e6e687c397b2f2404381c1462de85aacb78560fbfee5d120e4cb5455cf2078be4bb8da3b41a1356f1c90786a7f31bfaccf5bd6fc337cda190af6d57ea61aef18f008f1ed76a91f6fa4673dbfcb90b0cedae6d92c182ac10e490bbe9e3610aed536ec7e1e7ff627e89e7012e7efb31dddd206de8937e471f4bd40366087d85fd35418bc8283fe2767389791e64916cdebc68f8b3ff7abecb173db6d8db785e8a8d48419cd4274e22430c79d4d6ab7473564a6429fcb4c0a2bb99c879d24c8838f1e8110d2c2338fb54cc599f4accb7be576411e9f0f5b64678fe9c3c790df6373bee14c8f31737882c1c304dde04432796037382a7d0faaff1bf843b609e68ef34dd63c80bf1c2ece784ed6088e28418aab2b1029a67d26297104424ccb31ffad59ec7f448b0cca32e637a7e781834ab8fa327c1cae30012a911247b81649db67604e9e390ac057ab25c71b28ed12f176b33dd2a63efba12eec2ac95ad3007eacd32a96be94cced5b04ff5ca268b26496a00592e06363890ab0443da367694a9ad1bfcf1e0d67075009fae20603dc8fb77a6affb113bee1e891aea6714cf1595802c85ba02b68cf3780d878196c6f768a9144dcba239b08de123109804fee490527840a3c90356e838d3e87caae9d86036d712da4eb390416bbe40b39301049799b8c18aeb9e98031fcea7874fda5d7968d70c750d3416d7c5886822b38742117124211875a21fee301f44039a843eab628dab08b633324d56c7c8364557d898d40c8421701cbb84d3b05b7214492a59949dbee1e44259d19cd9ef3fa18a55663424f6308aa6cc6031594ede26146049ab3b5a188980c86c574e9023e43ca4395ab0c791c4a2b135dad1e785c3f2f403f84e009f9a88aa6f806df920e7363cbaa7925916030d04062fdc2a16948619c77e670fe0af1b49030ac4384246baeacd2a98085acec02b1a1bf442bf027ec2373372181c0463e9f3b48751300ddba254cee88112a5d4ac3ad3854e47838ec8e898e588f147a0e601956124d0a5a590081a298980b001bc8902ab5c06ef04d0065e0f0fd32dfd5aa3236d923995b0a75e07d9821290ce5495cc72c8f1522284e40641dde687822bb944a9db154b0c815f5980a0eb9059338df6b10f14253cdccaf4287a77a04ec8b72b4ae1011f2964645e4aa08f509a34c53c7db8b68f3b077fd73cc391d10b97c247d0c3c45438874b6d39b96b8c5dcbb5408fb2aa651fd6ec5f59766d21a7438dbb958aac102f1c4507029fe3f6aacd31a7f0fd227bb38ac8d72140d03e9e99d4dd55cee14fefa88350c4692ba387249d05cb4a203af1a57c55c31e55b1d855fbc4599e16847324debb03ef3ec8021770c8fb57be3d7cea195a2ce639933b492fce12cfbb1587ddfe987a2e4c1ac31d5199342952c3f303f162fdcd02e71ed2a6c3f60d1343a9560b7a0fa52de47b5e3c1bd95f509264d6e15d502a881af17ff99fa394cedf54c9dae29cc6fe4cf99c72418b0d04ac18021cb787b9a64871a666b18b1ce1a320717c70ed1c6ecc924a1493fd7c4048292dbe3758a95e1a6248d0b6622a0cfd15213e391bf524ccb2200613d6c15bd1cfa53794dc4f9cc848692cc59f3189c00224ca83821b866093bcd423755ea5d81325b769aecca45b55627c8595400b7eb02d9174c7179a99cd2e2b06b282c4d8ccf8f785684336861a3572645d3c187739c5413116e3581789c3b098ea723c70740900dc6af5758ab597be5d61c3921db59b88c260e96a223525fbb4749fb7afc8f50549b6cfeffd132dd4085fc4ba6cdfbcfb67317bcd70e100e09eec024fa6c0fe1d4db153462485026c0f2c658159779731aac6d8e5fc35031d540b1211d91f5246e08dacc2d22562c10fbfa8087365b4bb05e1d0130b7831ca6fa32644ccbe9e52dc876a1dbb5a4dbcd6d98bcba1648448d92beb7269ac856c2e9aab57a917183abdfa7d4aaa58b9528da0956d662c12923a58ff86e9beb980d3bfed95c72c3bec23ea3b20ec182299eddcbdf26297a146c324af1bc4863eb6ae5fd9d343ffa4511c4f628d4d76e1e2745b477488c6bc74bcf5f42fa6f5d38876fded895fc1680c0bd2bcc4e13519096067297d4efc187c8b7dcc154747d291d52a0198ed038718fab19c5295a5ef6bb9e9c6e82ab657ee3d80f0a28492e222cb816d82f5266eff4cfa9eb5584396f94c0e9b68a11a8df1b0f44e1ac2fd242923c5ed10f2b124f33d2224ae56b131b9b6ade3f0b34af5bc24fb30bfec9ecc38face8b75d774a30c6df1334a9fe16eead81e83c5292c8568b58d61b715abd8ac52538cf3a48caab61f0f8279b82c6880f26dc5ce98bf6b2f0f516ebe05ff629c67213ce6786cf348e3b0bdc57be0718c5a8ccb7f7c83d233108fca33f975855a8cff5709e70ce7627cb095109cf4588c07b81226f98dc578219610241b8063a9f616e330b58491fb75d72c7f588c1f700967a9c6625c60973096fc5c8c1f383f21098cc538e02f61926f5e8ca7b9db68d2b7187ff0b6519b72311e54456c40b7d10872313e06da469f7ff01fd9ab6d347d5c8c7386db68e1adf76d53e5fb4c28e1e18b718f9d8a2fc63f2d64a48acd636fada28ac0185771f6d6417fb162a48af758d39e1a1a9673d361330f50dd60e5a8922aa15142da3ad12c8354a3b754b9d8a93ab83065b3f74153515bbf3241c101d5aa5d27fe5b73f433165487eb70a3b984579c44c67f1656a777800df8c973ef80ac66857630c605db02c8118ab67c627e974209f885bcdcfa0152432ca2c88ff4fb8bb1241b3bbad9f58208d74067e1198a775a274d2f80ddfa2c4cae2e5760409b2f64db88d17dde0b7f97573b7b5474acc4a2f60eb523a0944f0cd3d6948c4ae40489a98f84af72c1002622608e2c86a3f4bdc938656a87848007138f835d2610840338ba8db119ae8e4d34c5547f3136877d34663afdea3d5326774d2f188ad96962b50582cce672e82ba31a9c687a4b4ecbd876170ef1825e2634ac7940290b53d32cebde0141ea7dd50b051b0431241b6e2ac8d902dfc1adbb92390b56f29aae50c44092f7b425c32a042982796f1b76c6a4fc57e06dd9f8ec02e1177c1e9985f52e4c1b75830f90ec8254dccb16fb692d50ff78d5104c1459fce901cd9bab83074a8acda67b94093e68773098ca41095315d5e83ffb5a2985e1156814f2b91e1fe6a3c594ff5ef7a1bf22fd13d67ef11510ce7768d3682f943710dc59bd88832e08efa4e24531fd49c88b7bbce9279c356b68a10869320bf126ad3e5cde555bfa9c815a16c14a8e4f77a841fac93bb1fba2c8f0d6a503ff7d7e884e060df63c7d3790de9e1c1b426d65a619ec9cb60fdc1aecf338dec63e249e0ce95696baabbc1dd8a451db338db1c00bc30e23120b72d229d2d37501ad79abe68ed7c123a0efbd5fdf41ab0278bb08286494219b191b3ae3d57ad6cc14a83d1903c9efdb26aa1e23bf3716bb16277511479166bcdf2d343f01b0505b64b89828fca886760061dc3205f52607672233e555318008c7ac4a28246241d17fba5f0cd4f83c58b6f62e0fc83c0784b21b6361b12e6cd1dc734e0cee5d99b19c0a3b3986af8eb9c5e995863de4f577ef10ba6b1a87d2bb7ab21682d1f162af5bce472d75748c821e88c572ae15bfdea284bc0665bb841e2cdc4dc9a99db470c514c750e8ea7a29014db90b036abc8e38cf9d90546e539888c1edc3a791d4c8854f70882ce6d6facce3d94f066fe446ea41565e24ded92ca4c835fa6c6f8c07cacc11882dbfb7bed63bc531bb83f49b5606517fb843688d643126498ba0c7dd5a5a66a5059f3cc6f99aa9203a3b9ae567471f3856f5cf662b5f92a695beb51a56fae1d11e4844c7b1452e2b7443f61121e68e6ec51895e8aa5db646812a48c0adcb38de7b9b0abdbef4d6161154330997913f3295790ba6e93e9be2c581060cd7e11b2bf019d5fa88e21629328372fba6ee5150181fa9d6b098249b1d7e2d5138a624d4d4640b294990f27ca665afc64e66edc93988df5b50ee32215f2f9956c3a78c106c469aaaf44bb9bcd8a74e69459f28f9229b682a53533c7015a85b361cd4e21cfb10a2944296c1400c162d421fcbeaeb98325bb0ac251c58e112d6acb2fae4186c6173b89cffa9781260b2d63d75e7af0122fdcef657dde41c225691945492d4d2b753afaba15015c7155212f55ac3ee8a0d884535429503145cd49a42e459192285480a536f10abbbbe4f9887c1622aff2e3a95fff846d0cb0a8d38aacd63aa1c459127ec4cbded1378256877f590774838bbc86ffb55c6e7058379946572325d7461e61af7f534fc72118ba76f6579d34e26f26fb523f310714b87c716eeb44de6edc874e6ca9f63f74a40f6c124bc21226dadd41655e26d4a075be6641b0cb754cf1eba3f4a00960c92654aa0f8af58ad4487427150ee628bf5f76f963ce21bd0028b5b79516613b52d2bbb5b5111dfb12a86041aad7e3e94b2d0d8d538f2e03c0e0b24fbd28f71a849c7f84f2b61028d93a2c4ec229ea1eea62a9f46162e80a0f6b38d3521ec3cff27338e843daa6ffd6422f76c51866c8bb5428df7a40b650dfb74e12890a2caddde4792fc61717d78d4a302a8d1d7eac90f0ae9839117ad2898ea8126cf95bf26f79465ef22ebfa9e04e25157493c8cae72b8e68e21db8831263d717728eb2ae8b7ddf80cf500a671fe8ae783a987090317d948cd60b35a2ddf06926d6aa3a6a04c05ef130cc975f299983846eadbb568ec6f2d0ade422899783f1f95003ad316803683968277ded00fe814733010c49edd9bef823a6d1f244027f60b5b90bf901cd3d74d7e893d5b3c4bd8fac103285026e6f0ee8baf29187a5382b4ade624a1547924385178297a637d0789ad2f78ce8df610d21d6d9282b3bf06b580b23e2c9a3e9ced256be1ab66ce3e30b53848dc58dc9259a6ab1402417f9711329e742d0e620e53ae2260525e0c84137818dc5c0fdf797b5f6916b547ec51931ad76b038663307de39bd68f94eedee9faf5171e4b8dcf6ac922e2972cf7b0158b69e4dccac2079d5645ea0f57981df50dd52d5952239205b135448f00e9cb786e74fa869974331e2d1c1f16029af77a6706d47c67c0f2226c51723ae391e063c300ac7f608075a5becc2825ea6265147bfb7cbad7cd3bace68ff1e10eb140630f313911c644eb1db3bbd7b16b3ed27dfbab70c61ba885382a55f7d8e894c604d3c849eaa9c5f064a9393a468974404517502f77a20e77742def7a4e8eace57105e6cab1ae09b172d393e44e4997786e103d88bb1a3c26e25e6eb2e0b1da04aad28e69a6a331a1118a64e0a10f6131e7b44adf08625d1c0d946ef9184a63ad230eda80da2a2a0d641ae212424dc9047c706217028db4c2e3805cb7e030b80003bcd409b814095d96e87460186e6074501c64f35fb6f26e1a3485380dfe9ddb2afc7713d9d2e94f740a8c78cf1cc66a8592aef358b7bec7e6b774bea81525f0532e40b53b74fb11c547db04a04403c7c2a7fec8b70266f71be7b438805e9cc27e3e26dd5d321ec89edc6118e499ef37313f5ca11d75e95de8db850b45d9ea4a680224bc6801be9f4b9e3d35b1c3de3f14ad5a524df2e6899d465fcd11f56d97231e8c30e2302387fed919cb7232807c10872c4854611a05ef03583fd49b3cf849f4c4edcd45b79c4ac3fc19de7a57dd24c88d19b9eb031a6d47f6b1459b58d719ed576d34dc25038a922222c02cd90b6832c94b9c930ed494f929067e363c81ef4ed0e6c1d716df2c5b64155bae76dc9d6c7af2866fb72ae473dc8bc0f8b40dbaabd974234f59acb56bdfd84004c5cf6c28ade0a57c36427441fef182b66a9e3459f11c167330eccac43e1a6b165f150fccaedb8d00697e62005c804736bbe4f8806bf1f161ef9554f20892c80783b1169fd4664b90b481b3d73b17e3074df02ee038913fcd74298a7e4c14b0291b8d0b6d30fd6f7a4e144d8dfdcd12d6f6dcd76a70ef35414d440373f3e485b507bca7f8323072c28ce51d63cc0ba02f9b30fa2a992bc596687c282935d82ac5b197e1953980ca8f3a9b952140d42f64d8d5f32114a5e65b8313520196d64ac62e6da8fa0a394d6c44620ee4e8b207a2c1196abb4af05c42b5b13f13a8487dbf3920ce3566de6f53cae40a697cae491ee9946ce485e6ecd9aca8aff46e26bef6f7c95d55f3aca17e189c5384fd37969614df480f7fdd78d0682786711b3d045414a372da6e01508843ac980551b30eab2bfe78aa3ba0c858770539f618319f216a2b465e3ef40deeeb4a536559532d90da689d9707a4be61f458a60e6e8667e9e310b35912307c42891cad077170cbe649137cf99a3dc31058a069109ee0c1c7b0be7c57d7ea1c147a3b48c07955cd76abfc57d880b310da8db642b42ed8a7cddf015c034a1a5bd1045ef9c777e807913d1704c4c01759702c00fba270640f53c071b4380415fdc308c38f2bb55e280887265ce44eb76c621c4708ef42a19d62ff490a3156d3d4304b6a90a9523f0bf7f64903f699e2045b4ab1a8eea824654ae0d30f82f99941547493697d80bd352fdd57877cc0a660a859ade66800817eec6419d7f6d74461b7caf8abf03a13d4b771fec42611f4275aac974f1472185908e03168b3e908679e941a518d869cc6e4383a5991d3fc109005f9a214d29ab75922f915aadbddcc8b63beea7b19b0dbd240eff9b88ee191e35b7652854df3c902343f0a9c3433b5fa53cef51258a796caf72ee72e42881e002a35cf2c51308c43d8c07cbf0696d264d8ebdae0da252c52a3ed56155ed60c434811c969644595dc2435c211b1f31a52e7e04d44ebc09009e32f25074fd007a7765451055ed39f91f89a737e04bc0e1dd516faca45edd3a270358b4c204a0e5885ee6921daee1e8cbee24feae3227447ac3221c11a700a143f710e81f88976c44534ce5476de6e059a8cb80826251a1ffdca2641e043a93ec4ecce5dd045ad952cf28ffd95dcabb3da70d1077e39a2acd4dc12551110ee8e5628d6dfe8b721a7746c9f113feaf582f8360f072061b11313f76604ca0879858a817a67f0cde0c92a20ff69403f1d8df23594524a10631d32447a13dffec490009c7b7059bd558f287b4c8047778c547bec73af1b5151f8f730214cf4651225ea5a44b062f35c9e21f285c424cfd16be831a8c1c97caa922c864ec2acf17b320c1abbfc17e4a1a2761d9a88e6591ceb6aead492c2ce33e221f826cc9346abaa9222029539afb54251c11593b5953ddf3735230644ee8634aef3f3e82cbc40ba10a9ae43af505a6eaf3719f3bf2b665e44a09a80dbe99351c926a7646c7ed2fd1a43b8042118a2d888dd4210a719050df46a6ca07a719dc375648ad8f8a561d0417010d30ba22f3aae13fd1a36b4ce68a1450e0ec8c4186ea2f0b5cb093205e1bee4121840a6d39c4873161a7e4a100bf689d9046f565b9b575a57609dd6f3e53bd439fed3f9aeee1ebbee25e5a6cbcebae28b5c0b067e3a032170b8f83ca09e1b10379a21e8c8e14f8c9ec727562294e8b12fb973d1ed98be3ca9cdd2ad14fda50281b284890c23b7e3c66fb5e8e30d5f6401c4c02ed27f34d9a56ba22d155653f87bbd205479d291e72fbca94732dd512565f9d64761207ccc0fe17b86719e1e8a95a9ead9a5e3e3655034b393c8370817bb607c78cf6c1421d976337f28439881b66c9be833e4fe7ae5719c2d9087e0feb2ccb749a4f22af7b011c07f7fd26445565275fd98de07db4417390197e694d27b7e7350a1d1a475b00350ad0e73234e35e2efffd65c09ce714c09d55b6e9644292cab75a08ac7a68a0ef8de66977f12555e9db748a436089057e44f73d52e3468f518bd6357f7a63002b78a5a6257efb99f3f62fa9da1667ed3489acdd2711b0a7b11591fc1df49261238389f9c46d19c77d1e00ec50ddb3858b42e8c45fecd8236fffa425a35ba28273af42e67747fd1ec91752eca57a044ec4ae804585194c6e123296c0d03f0d263eee08a354ac4c008b9097d37549ef36add0a6797ac84bcb33466a8e0b9cc88ee67fb7a1e1ad6521110956961eac404acd8f39d37c4b04bcb149cfc4f4d686b6afe8ff651bba61ed7c525f5b479c0b93993a9e513f13c45b2473d928e20206e7eaa6680a3d70ec60c37eaacbda263228d3a6696d96fd431c8112cb84dbfd3a4f0ab67fd4d48ff979022fd04686c0ca70742396472d1c37cfb01a8004feb0bee89342d07941a85028581d4785b556d3cecf9643c8a04343580ceb24b4b6bc231555731640b962a6c17da0a34f3a850cccb2d22aa839193cb85619dd2aa90dd67bbbc8fdf634bcbd7ad56ac04cbadc4db91b33526ab28a6e9fc549ecbd7c4be6cc77205a49d4ab4ee11b120da26bcfc8a9b53a4adb4490073c9e398de6bbb562aa1f554885098134f28993d763bd2d69f3554a46db72e2eca6c186da46eded9d17fa86e58db938612bdeba63ea6baa5c9ca232071e9b445359d6f962bd357e822688e93727149f7a0bb5498da18446037bd80018c3673ddc595eff3662c1ab4ae6e5d336eacd644a51749875acdcebed19d2ea6b7b62f6a56ada7e535d377798add57aba6986a2b2ec258316a298b2074500f2756234178d557159f3ba08eb2aac7816e7b43a4ac931c0460619bb15506e95bce3007a3fa96f75a6baac8c9fdab1218b839faf95dc121833f7c7e7d0987fdc81a303483415679292f48ea6671e080b6c2993c6d16b5818dcd02ddc83133274a5a90662698f600743b4a13c0861b8b96e0875362f299365353c1914c638f801acebcc4433764860d42dd512cb22be12de3c23a64064f3dee53af26af2d653cbf7e4d520a7ba073314d6699572322e93c62ffb088c35a1186ad58e2bb361f4470b6042d3a40e1768c88b606714c5115d65a3052c450172552b43a46c4d3e974e7cfa804aa8cfd196cc64f0495884d43e97bedb2e23f6330c71f1311d559c41ec09a430ad0708ce787884e365ea7411ee2d975c2f1b7328e87d59b36b1c84b32890cc0628f0f1d1cb96c9d8ab0f7b72d9a41c4c863725e448c3235c1974e13cb02908e1384721ffc01c235bc228cda9f1311cbdb25c2ad676d5cd84701f7c6bde4025f701a61aed6cbc998d327e1abf754ccb18b259511ec0dc75cca34d38c88642cd413a97c06f187b7702665574c207d057e4d7b51ce8fc4a84505c35fc618c369b3ea394285b6379663dfde08410af7062fc3b9376475184eb74b9fe47a76ffa0c519e1d8a61dd8384e7d44a17b871ccbbda8007d01c56ab4b25393dc5ea7f776dcdbe41f1425c0ef6d42d90aab9cdff48e103081658d4c3fae2f142533014d5f8c8c7ad2d796bbb3153e1e8e868868e01402b7d00f4ee7c8a32a7a3972900206da123478ef81968516276612f621eee491c0f9fb259251270dda622b9216d4e808e564212414c7194eb24e6fd259174a603d9ed4ffeff5611a802aae861b8e8c75147d8dc2b89cce622d769302c44cecb97bb5a33521aa52729b6074a0dae04d04d886864d08758211dbd17aa6e4877894ce99a719f05d73717dd7adc56db848adad8debc6387841a97cb9f739e08d8c6502cfc7b441a030cca20d709b233d33161e66e3356373fb7386b2e064d90db36192dad4ac11aa92c0b1ad326d462836c5a1001b7130231c74a55b4b5c3d0faf81f0a0af4a86ea0549244f109089a0296f989c5e19452dd7fc4611359bcdfd5c197a1949e2a2a06bc1e9bd306930da3aa1d569b5a767576b6868fe8127976e884f86aaf1697c3abdcc86efb2e5fbf598ee72f2c8f631b55004a3ea691cb15252d33f1d5211dbb46737f1736507fa529c834ab760e5120467f300baa2139e466518f4abdbd0bd8e24be0bab527a290f3d0aa4f98445e72ba1d4f792078cbcf2ba52f7c90b3e2acc9e8f5b0a226ed84579e37735909bbc89268dc411712494687b9983305ed1861a9e2f2e5230516422ec764b833582f7c29d48577452ea71cddf4926ecd4b0efc01d425a6f57df321cdb2415ada0f36d811a2617685c611bb6c2fdf799937e72e11d1ed13958242c401e98e72764bce4bf3f458027868931890e4f01d98c0bd1535efca13a6d01f5f13ebc64eeac2389578eaec992e97bcc6abb27142c14564e60527c8b23f12a142e3aaa023a8e5cb7c0b4e4e1ef6b4cfca0f7b7ae93a1ef2b97cf1ade05c2e17adc3c425f70d23c77f218e275b84207305819f5be6d6b2ff89c448c67dfbdbac6c56806c857c2132cbad9fc5d18211f7161333efa20fb1612222cabe272488545c4116beb041717732a1176bf87b82e4ff5a04b1d9392a99a0742aae7d284b4299fb3e8e5cb9f325cda92aed80f4c8104d188589349a31bd73d093da8c608a5a83fd39a52aa582b8f1c108d421bb5bdcce8e752341aa98a1bb2920389e6f9ad4d6f5d2623542c4e815a9422265c01cee1daa97311aad7762e2d499655cd604b46f11d19b6845d9331e6a8c4d44832bc0478537822da9cb26682d52ec4d8fa6fdf6c6c4165a59a9cfd5d19d94b4c7bf1ffea312b1529a48f7b2359c79f99712a83013060eb3a10faca4ebd8b1f10c4e6833feea60cd46348d57b46d3bca842c3761aa32a18e5bccc55c94e93608c1050e439d47a0f16dcc875c75d70c9a64bac6b8a18e7a9a3e7b16c2ac1b0d2ca9268a9273b43b329fd6b65b20757b1e06f3fcd12155316404f400e7f8a8968b8786c5891e6eb2c704d73f21dacc9fa1c632b52292c0c09cb3a02357d486e4854fd834e077b50e74628a869df9ece3435703a315483d713b5e3817427716cfbfb51c8b2446e56dfb8d72d6c57bb6083aee5fffcc067a00d72f82cd39a8aa8aa247b9e2b944b4549053140ee6ed5a27fea15bd26f7f8aaeefc1b21c4ab5f1912164a43843476000278dbd315a7b9726027048d4a6ea210f24ec8928b25ef6ae994be1f3c2bfd43701f2d9c5975e955dab176f1c1b5deb910b473bd198e739cd44b74921b04e816c89b17af914ad8d890f38f3d614bd5ab25700c690e42b926d5c534100b8b07e3e3e42644a22ed40a27b6d1864c003b0bd1614af18d6f595e7d9065fb9f672a04a3306d171f9bdb3aaed57ca53fcc4ac7df535d3d9f1b175b70678f18f91e4111ec03cb165cb4d8750464ac1746236e3e4c089111443039e26025630ac7559647007866f668075dbaf20259d73f3dc7f62a32d633fe0d5b1de6ba66e4e580aa625aec58322dfdd31e59627657566efa90d5213ccdba41d157fc8459d9f7d46543b8b55d8270a52c2928ef018ae951a190580f85566a582f4b5d6401326bd68d4aa1dd202c485da186fcc17556434274b0796f1fd821cd6d890831f5740fe6e28d4636c55a9ba15bd2f257125ee71d6476c68e4586b4a9dcd87a36705a1673fd07feb085c0dc325bae2103d933a051c23cffe0dc8857d14217aa24838d3336df16c22957f5b32dfc82bdae5fca478aea7b8a5e48a84586a8beae9dff2e04412f2da3b247ba677fce521e4ae18550c85e186e286d0f850d0bd4d3dd70e14e59334df6d1114f2550ad2ca9b5ba410952d1812f638c4ba3dc62a304ae6e2ee44ea6b9816d7f7d34f0bf2e2d8bd8b1a669517d2701cd010838500b49e82eb03ecb1f2c7cec0d79f2459af975e655cc5737a7688e823965f314cde99bad98556306cdcc3a332ae6d79bd33547c39cbe79bae6f4cdd6ccaa318366669d1935980c81d4f4da48c21ce130f3b0548670308b6c963200f06ad7fd59c4906b5f07dfec95de900df5ed03d2b3d18638a236c4b5d931146e1c66f04a8eb8b0e608789b9396b472033f9183522a3ebd47bc2c72b9c11978e3d8aee5ac75871cbafa59d83c7494db00cccab4f5838c827c98452fa05ac225b917e28155f42e7234e232cc916cd6fe83fdafc4cf608684d84776d65e2b8a76bdc8e336621952d0efa3fb406c7aaf90c06622144710a7e7f52347949f467e12f39955dc11ab0063c6ec2aba40e91fd6882f7190e7b27b77bca0df6e720c9e1e88352b830f29ab7c4c8dc9a2a343a4003a698ab825f197e1f49a8298580c90957bd2a674092fb5588da06c21e78486ebe6b33f57fb230f69e2595b577d1ac2c16184d301a1252a3f188e44313e5ad01a7854032c059464c429494a9d612ec429ed92951f7d7649500286441d6899075812a3b48923280d58ab2c39e99d6d1d272685702862d74a24b603e4637e19d4f762e17640b00b242ff06c2da16141785ac17703bb1238050cacea0bdcaf2bc8198dd2eb929b0d0fbaae01e4f83b75f4e1605c17ffcf52c604cbe9beb4e79022d7c170d7d311cec7f582e05e48ca8585e5733ed10baa0f8fa6c097a29a35de2ed0add171ee5efdc7eab43504255016112a0b93a8cbc8daac02c73f616f158c7ac0b160a45a271c8499a061889cbf497715ae2f070357a75d92c66d8d75cdf2c2d1862bf2c164c42dec9da3d980b06bb1d799fe383d6ca30989fb7d765e24d64d947458319e28cb201c28e1b80957d513c831c41bc5faee9ca38e9e65c96acbd4b6bd3184362e311496d06ddaed82fe439b3fc0464fb5026353cbb055a33478a44c9c551584f48adbf22c29a5ea348b57f2590010639030cb769e4d2d57afe165204a0a795dcf55c48f2134f00f629d9d6f9e990e579b094f660000a7d7217bff478a52e9a4ef98753d8f5b81c5e7c668e47b5072b9d7d704ed3d82368348ebc7641a202c6763764376a888855601fd0fa2307752d2297049688102bcafec463e56cad69f2b325680ac6f18737479121ce643e1d527d343a454e95b8c0f302b4ec4054c1197a83b8f688b3884019aadbffdf91ba2a5670af07a9fe036488f097f6446d2f575731d554e17afe0e6bf3ad247c70185ed9b32767ba893ef0a5f957ee6fd8151e47c4c9345e72753713a43b8b2b9932ba784714346c1e445ab256bcacf7f8dac74ab7075d60051216476160b8a7df38903635005f2463202178ad3b9b61c4cd7878589fbacb3b4f1584b2bef9bbde10eca51fbfb3e66ca711e3c24d3bf0a8990c347b0992e5a1fbf98fb57e5605eb1fc7dbaed207dde632f4647e18b694fa1fb06affd87f5fb7e59576fb751d06751bba1ed26ec285ae53525b78b89863eddd4db63bd5b01767badf37df9a9fc685714cd41933c25c61ebbddea5222480c4a5a0b5c4c0beb427ae5a329036a5892e3642a3a56518578d5e0d8e99b855e90e41b85ca8e89ba9f02ecdffcdf3543788d7febcc0963b706afc2dbf1c587f318a922f9526f2b48dbf0af4d984e46e8c9c2c0f5c94765161f8ed26f337215450d3276ca281a34c62d6a87215b760a6f82e82c8cf1218270c7bf13334ab5ab4c468a38762ca4e944ff7782c58274def890506a70718903ddf77db9084b67ea87beb7696d6a603a15a780d251dc215ecf90a89384df4dd19ca70125189d4eb6dc2c8d8a063f0cd2f55d5fa0ccc7c9a4f6d6da6236e034e92595cedbb40b6c6a52fb5d344a1c1b87262adc8387dad6b8d8d67987dc2ab63e562c2cc85877638fa00224548e61a95918d65f25c355bd69c69a290638c7175199a3c571ff573404ec2002d3d6c0c88c60d636cfcfa9fa735021cb9945eba0457ba7f7ada2b5606d5222b661ab6595b363badd5299c5e0d439557298e2d869df4d3f311256fbd71e372e729ad89b692b282e72460bfdd2d611ff8bb217bfbc43af150bfa5f57c9fdb9e2d388fc0da5996bcc13e4dd797c9d88f2257b8e5b1c91b33183b48be6ffad5d5895e212bacb8b6e7c125032e9c9bdef56f0de121a3c59eeacc601ce033cfb67829dad9e4f62265d33a68ad5b2fa60a88eb0dcfbfa1fec0ae229ff6193c3e51fac250e3d244968043451fa22c5f4a0629e5a31c2580c1df8c49d9426830ea0c16df58a2d252e8f4eaf5829e9867a74d5e62208dbddf178fba7d767209cdaca43694716452bd29e8f87baefac5aeadf53e0b1be82872b5a7e22a04d06d0e70b76f4ebac7e5724cef159a26b2ed556e465d90b274c42c22b0979f4dd556cfbb174f5e423746551dc7954b2277327add2605eaca08f69d06f6170e93777c649417029213e1b83c511f51d67359b21f53c08ad985c7eae7a60fb2613084e16b0c1eef4aa2d2d2e8fae575aa97431e86285956a17872e5758a976f768b2624b0ab74123abbe84726b8dab97bfb34ddad42d363c0c1607015e320119e8ae56991271f3686a056550def9a3db8b2110d1f9aea044c2a8896f404fab1b5b5afdbabbe6561c7ce00bdfd990bc5c6125dadda3c94a5b22dc52e7fae5390c40c86dc822d6faae032a9f018503f7de49d8a688f8a671456c8cef98d8d17b10f0f46e722390372c1c8c82466f94a077ff209d12e7531f7c148c5ef1b641f46c718cb56101e2c8ee4a2afe79cee7cdf9f06640949f4e6739c4ab621f8e8337c0d1e5c2ac8e41dbb347e482431ce5efda08b5fdcec1e73f3eb2476dee8125e6649ecd3d906f7a62ba975e0e03328053676881666d9cc29fcb70afc810de3a69d11a89e119e2976bcf018fe014a803e540b303626e4fb8508d886038127a82ace116fcc5c38123a7d35d94ff13c1ab33baa7062ed976eb8e2daf51d450061addfe1ff1875c8b5b58abe3de85bfc66532e265595b26eccced1090070458f159111006d082c46e8793b184b75cff8e1dfdf55098e98606498df4a76ab82a57752068c5072db11d69e31a2e43036e58fece0a95b38ac450bfdf02a53a604bb28c9f84c95192569ca512b47afca9baa6cbe09816415d99ba7bf2fdbaa06082b516684be87ef1e8237961e4b526492295049186185163c811954656de5e2f84796fcdc9a5b84504204ade1e97cb34ddcf439d7abf4d127c5b0e83fda12691e073d963ec80b3c8b7c69023bdb2cb6f3c1141c7e0acb81d3ba81f245f021abcc5585b40d2224e075a0b1b9cc129e11420d4f0bea9708f6c4e0221d012f8fdd13610224f3f42f3a8393e3560a38185fa3b88fa1e6017769e3477215bc6d9cf27809e910558b2c90e116ff66db3bfa4a8fe2089c9b6f7de7b4b29a54c52ca180648050205dbc6ca22bd5d035c3f88e52ecdc92ccdc79d4dfdb497d79a6f555ce3b0dd524bcdb1b2ffe6efda0692fde5b04db5ce7dadb3a935c80d7adacb6b81581e0872b9ccfd9b9a0f62a5661119f45a7ba240ac3d5fbed77299fbd26b81589fd7d25e5e4b7bedf9ce7156671d6735de557b9cd57757aeda8b336df356722a758952d6facd204dc8dc2439b59b733478b8b9d77ed3344692e5f6d3cee740b9350f29087b4af9cecab5675bc07bec7f1165ab1fe83d2d785be2072f1c6b6cf0c211822dbfad071fc9e0e7b5f594b1fff38a34f2e517e38ffa9fd79e8fb71ef9719886763689cbf0486bbd3ac8dc756a90cb94bb5262b16d1bf89b8cb3b3c1768e5c2be6ee1c19c45bbe177f7edc3e9fd8e20bb8b2daf33720d2e38b3657fc3825f246392853fe6441ded2e50637d72283a04f6a4f10d4b3a76fb96dbd30a732ce59af070ed9f7354933cf18f9394c06f9be30a52b2baf4c3081e3ef3a0339b694b4111369b8aefd32bf88f4ab1e4d92c4a4596b7407b95da5cac693247f4e2ee218282229b861a4d582d51222c0c12a091a6e10c1c40910e84061a409540cab87512d0c111f4471cfeac3e03299d76b79422e3e1526821e4c4a297dd2fb8099e139e3894d7f851963370d79b6b7234ff8c4ddd94052f850051228d430e30549524ca0940c1104172320d2f3832474f024438a780376640a1d399c28c391f4c085c7c3c5f657113dc9070cabee0088ab0315ae94133f70f27252c49770a3891551dcdddda79da639e7443911777fdce40a1caee039a38d9d224b74f084174bb04863fe50c21b4e449182335c41b071a448966537f8ae60b32b3719bed90e683ca009173460c1163ad8011455111d2270939b3456e60d4c48184488123a2e2a7c628826a008830c1cb8a1041831349680a2046ac4c007a624a609e80f4db4a69d73ce89ca3e2080266c2c99215407a0b88155c60e46e8f004091519586bad3565383ed89ed11eaa506388254f9210c38b2aac3802959100663b136bad357d88f8d80236e79ca8ab831a5558e1c62582870d24b61076e4610304610f502081161cd1a1881f88d821891145aa10be83bbe700060aef00061148721224db5f45e4fffe3e60665458a1c553c610fbb3234f1947ae18630a364e3c1c3181ceab882147dcf0f2e2061f582e2172b87befbd30d89a6d30dc1b726237ed1aa128d83449662dbdd4aa5497b544e8165d466f84844184dcab9a011c69e8c4608b29ac20228d957903131206116275481842196031c8804a02a6061560c56088385890e48bd810456e2e8db259ed46481844c835e26e647b124b2fbdf4babbbbbfc0053bdbdda9df6ba180326bedb5d7628b6f666b766b9665b7da6a311e52e48d266fcc21c71234c0c0f866d7aa64d5656de6c3de0f67f8da7b6f866f666f97d17be7b8d6de0c865006580c32dc8b4f2b68e2045fb8e08b1ee620819f20b3164bd1848a35ba790313120611422fb537970a369c843279336b4937bb1a8ac87ded6637bbd8e2fb052162fb8e5854b1031f3cc8c123c51440c8400824dc0436eee065adb5a61b76d4a82028b203c50c2ec67082872dd6b0c24813352e44b8fd5544226c7f120cb7638b05664061ba288041102e1edcf08336608083a750d2244d504020d42e320f21611021f7060bd613ca12daec090cb42ba2f674add5b2fa6447db819fac605bc137fb3ed224dd3c51e293e90877b0e28405193d58e3062a20822092822742742a37f572367473b91cb4c051c1089440811c5a00d1e48a14504a3950ad295a56b32cb336ab3bb2ab564dfb6815869a85bc30cb6a56eb0b59e5ba1720e07200046ad57440f184c8c685a0387972c3568219e6d08289387240c6131b94208e1e6cae654fcaa0806856afb5b68a6c8a2ac616a10cd36a6d1683cc070cd965b1d86b920116830c978392bbc081521d55acb07d010601970320407d70038725c428f2c613398ef80f46b45678b05b08e20bb490030e3266d0640b1f7c2023b4e207fb821195eac2b159a6d9ccd64c8c229da53730216110215966b32cd3320b029ad19b4c8c0f74d6434d0a171536cb30a534b8e294d52ccb32abe9907dd294c64acd7cd44087cc7c5c0a83ae669f3459bf3b62614592bdedd80a83098a023a88610732c2285244b50446821e86e4e4f00513d5175e2c39a38723bc488c125a87fe6d5dd6dd01e5bb8aa0d824754640b115d562a0c3e2a7937591e3cb1833fcd974b4df3c50cb6540302fcd8fb54030ff605767fbae56aeed106a1532852628e645cb65b8edb4bd9eed9aa4f9284c0defcd7b81a258fbe96cf0fd2eaea6c17b42265094499aabf86382624932e8ab3d3d0b77ad224d94979e36983d0fafdc590360046acfe8d706d902d7b567a8ef447ebc1369b2167cfb2fd3118a2c37b9352d77b59182b2ec234d6d7a643eedc0dcc3913db32d83d8f8c1dcc39ee09d2aaa146450a4daf3453b7827fe98cf634745551f858dd8e20b58daaa4851302fe507692a253a941dbdc7c31daf02ca420fe6ade167896d30bc2fac25a43f57524ab969cee6da5c17f6c9b92d9701e156ab058202d395524a77f0506511a8a5a3cc92cd6ab2dfa29c524a1048cb4c63d50679e4f048f1e041b48325e6a5f9b1588f9d15ad7726693e8bd622ad5d5ed22f0dd3e1ab256c0933ad6ddcb66d0ed2326524a7c78e97521b7451b5c4744ea14e22161d63e1e153eced416eebcfe4f737ee627c4357eb988ef29978d80cf4f37980bcdf3ebf75369f550f57d7c3e5c9e85ed7d9d0d0b5407777e9eed21df42110d8238b0d0abdd4be57507b3e4be9873d5f25b56729270b282c51401f4b8c25b6afa7b1c43a3b47962cefa59e2bbf5d17cf679aa4a9a34cd264127fcc07691d6342c74a4cbc8fe7fdfc1293481377781d03b29a1d5f4ba87beccc981092ec50760d34f4b584d4eb6cee69955dda1dd23a3a7aec80a0b8b072f67c16ddd2864ab4439ff67c500bb5e7e7649714a8b557be96709270122c5178987aecb88c0eff5ac21e3b3abe169658931ae88ca93f3f9d8d7f3a59d68059a3f269ee486689f568324bf3bdce06f4db87039241ff09fda7b30941c90efa1ead90eed16492742cfe983d7654196ce9b1b3e7bb98660ca8637b866db4b4e8d8b6f2920b6c79ed097a8f8759702cb1d89e9fa2fdf3d645399d56db614ffec7d33a59b8adfcb96d35726d7f8d468953a91c69f09e5c495a1be4909b0da00a91e88e9141d29ee0e5b1b916e90cd9f2bab664618a46d7e59be4ee1879e22672cc18d5c3165f40106ccfdfe8b55e31d67557bf5a677babafeae6504a75b4d6d65ab196f75ed17d6bdf7636366a8cf5dcd5378cf166da7026e934497875afbdf86fbc166fa6cc6e39cb3a9bfb1bc6984553de1af1c7fc9bba466ece0af4d6d833a60d9c3dfef9de1a91264e24f21679f075c53c70f2d8ca63fedd9497a6d59c17d7c84d85b13d1fbb3653c6b98e35b86ebe24dbcd56a9e3a6cee485beb399dce5df66f292171ed6d9a6d7628d37c5fa6e7a2dae6ff586334b733e874306bdd0b4e77b61c882dc94569fd25e1cb58deb40301ba4159d3163880a9784219da4d61aab0ef7442fb2dcdbb7d65875ab561869a8c7e3d8f3c1d09e212a5c128661c89511c60dc3e3d85a4a32f859b5d65875ab564e185924b7c9aa9a5629a5b5da5a6dad34736b2dc6f8de2bb5acd831f65a99d427aae38a2b185289fcab7194d84dd334c7d86b65529fa88e6b86bdea0fc472100b34c594b99f740dffb665186737c39d4dd534ecafc2c4d871b51aa78d9129ad3a5aad933d904caf77361809cdb28c661bdb2a35de58df8d29e6ae76a991da6eab75fcab96b14b247bad499a2e937772ab354f54de107ab04c9020b14c90e4ec395d1469e44f27b266b3ac66afd5f7ce86862cd3346bb3b737157f4c104bd3a029403b3765359bddd4cb65eed34db5cef6aebdd7d55ead95b33ade7badb512634cffbab64a24d6384a6c9665f7769b94d7c5133b1b102bfe98da6b929c6830ccc46bc6b4b2f05c5e1733e641ac489355441ce6aa6fd73adb637dfa9aeda3d389ac719ace46638cb4cacde22d8258f6351bed03dc48e31dc248df1dc2bb6815eeb5cb8fb4dd54e32809c097011b4c3b00d4e5471fc26f2c2e3d748c3f42d0727fa31d2e3ab891aefb455fd6dda1faf3699ccf69a2f0793e4ea428329847ffa39e6d857badd3d23db8b1f6fc16fdd19aa642d01f93cfbf3b91c6458a0c669791a67bdbc18db453fd696af2d26b1dbd248a3263a64f97a13f476ffa8d7e4c2fa3ef3d3663e48e792d226ea4270b37d2920737d271bfd669f910b4bb688fc2ca2005218e3cfcf6b54d3b1b1030083a7b1e1e238194b5e7af6890a44383bf418f810f6230e78f0984d9a83dbff358cc63d77581eb8ad755a3c45d5264831c323d135e17c67d9a96fd45f22d46e8680e7d55546d599365a9563116c61ed8fe30245a61015d55f69e3e88afcd07627a5ae1cba75c421c217399192fcd99bc3f308b54f840d123e003ff009f013efa72999b9cc2076611cd078a1ec807fecc4be6036154b5e532129651f8c07cc2a7f2f18df0a52ccb65a66b7e0f13ce00f8c02c7afd814f2285f09dbca49a0fe3f28130a4960f24fde8035f94553e9c452c1f28fa17edc068909ef6f65b8a963514a5b2e3e7531e583ef4f3a908e6d31d620aa2183d451ad0ab622caf723b1b1696ca817465817255d3b4419aee1d3a96007aa8b2d24341f147686e1651dc201d9fa212fad00703e9b8630d3dc1282abebcb43dd5397c8d12cffbea7dbc3de3323487e6ccccd09c999c199a435f5e9a8f71ce22d1d3570c552e535128154a8552a15428154ab5ab84d59684499884d5964cb98c9d2e97b1a614c6398b44ff24126bbaec85812191fe45a29c6d78c2386791e89f44baaa2559fee7b71cbce93627ca4e55b8a5d7560d2735519665ed59592e4d1f0dda70cff7f0927c55fba33dafd3deda701aa7f16fdabe764202e8899e223dd528f10b63831ce2f3965a90e93867f741f0fe3c07b29459a7fca6ebf63407f096dffd563b9bee9bc9295d4a4adc29b9dba6dfea9b9efb8373fe709bcdf9419fc2fde7b72ca7c4f80344022863d6317a9a039104d21a826412ea9c72d3ce46fb8a3f7bd93566cfc671ff0e01836c6a9f6e8b24cbcf9e4a4dba1037c6fa729cb53eaf0d7288f4c903c6a214234dd66347b5cd9594524639a594a1ebeeb8e5eeee943aa594524a29a594babbbbbbbbbb3b757777a7d429a594524a29a5d4dddddddddddddddddddddddddddddddd9d52a794524a29a59452777777777777777777677177eaeeeeae3fd38c7177777777777777777f1eeeee943aa594524a29a594babbbb53777777dfaee6ee2c1e4addddddfdddddddddddddfd7bec50777777775fb9bbbb3b75f777777777777777eaeeeeee5427a3d4dddd7d26c9f455704aa9bbe325dcfddddddddddddddd9d52a74e9d7a17db29a59452ead4e93b759bfda0c18e15946badacf20ed9f7a377c8dd624bf78f933d1f24ed8f9319237f7400091e604f2879caabc50736823d3f7e1f58fc315f051924811fd876b96345c36d8b9f29a5943c73f2b853ca13677c21917ef4a317518c314629f317e39c73c619638c31c618e58380d8713249d37b792e2f4d0ef4d0613d3052ca64dd8d1ffc37ebae33f92765f28fe963da73a5b7ff68edebdc5ae83b2bd60ea5740807b5a7bf324d9b38d4348d6e1cc7893097a969dbf06f9d0df6fb8e5dfbbe1a4789fc1cbec6b3982878cb3d0b6f39be1c773bcff33a9b18b3ce7f9318df7beffd844c5a6c3bcd18f0938a69513613988a34b19b48e48b3f1f9efb524715e629b68ae1ce058a19a11ef33ed1bae772d78d31c61863a4c17a16ad499ad9ee1b0230cd21775ad7165f400e457f3bec85499a4564106f06cc1a7fbdde61b7a7a707a427909e4c1bc4288ca27ad6582a32f8828a2ffef5c49a70baf285b9ccac99588b2c7fbe38140fb6ad067130886f59e5c51cf04d31a577069f52ce214ff2e4a03ced4c7b7f9086d9b5403fede9f672db34ded41fc4977ee0a66316bd745fde8fbe0a4e833cedcdb72c72bddbbc1a6f4d479a6f94a71a25f5bb803c55771f7ccc22d156b5888b2c77a554c545756efacd1a486ae9dfec4f6495120dc26d6af3639145d74e3b5d6766c66770fd48a9f6304bad55a5826aae2a75471555d1aea39ab2eb6399c27f7566e3bf5788be486342fc317f8254523e5168b35ad6b0c817920a920416569024cc970f06f206e96b0034b380f8003981186460a1002aac90520017422a211b6c52de05b0fe07ca0daaefb1502b3864d39a8f5737ad35b3659533354a2e303387a41cb1c9eef38cc1dfcc5f5552624c2885d18d297cb6ebfc48f50c354f12e644d9ab884888a4f9201d2349f353b401e20a01f8d1bf703fbdcf3ea9eeece1ce7b52fd78240280347bf2602ebbbdb67efd688d393db9bb83209d9e9840a1dc5155fadf3fc10828533bbe0c379a499ebc07256ac79f2a2e07c79124ccf7d38c224727b3aae63b0efec0ca43f6d52037584d7b3e4ede64477f762dcced3a5827cb973f2202dd6b9f0d203c40d6682f6bb4efc4d5747fa23538dae7806bb8bf5ad6c8ce01b4a6fb72c0e153a3fdac99a00d9c96b184ec25a7d512b22faa8ee4585515e7b4a77fd59444960f56930c2ee3357ad6c84e0143f606443b8868db9d81f8836dabd7d0abb5a15dedf9d651212853f4f3476d1aa3bc7a089d93e5a81764fa604ecf063dc76bea47a9c8319c783ece1bb574d2e928476d3a49711e91e5db495beeee3e3f0308a8aa582cc6c4ce95d2ce91a5e8e24c4a1b29fda5fb883bb3882c475df7d4dda9cb22381b29bd88223e6c8607a4c9dddd5d4a9fd3a7c71f4ec34b9c2bd862c65cc48ef2548eab7cc5da51a9542a954a750313927a1e267acd4447cdc8fb82f5843137a9542a954aa5ba8930332f553833ed54cd156ba7e54aa552a9542aa552a9542a95ea269c39aa187aed99a8994aa552a9542a25612a954aa552a97a522ab962edb45c2f094ba552a9542a256130985ca524ece4273ff929954aa552a9542c0513927a1e267a65178e2d3f4dd7744dd7744d17c6398b9e64c538e13b4294ec33900b840f6398076feb86393f3ef5f2a0c34600bdc7c736f32e0f62fd208c7c50ee8f66f4f203471a84bd496ea479d0c98d34cb17bd34d2a23dd23bf656b9915e8942eb8862a455f68639ad63fed328bc8b96f91174017ea443fb8756c20059237f00370cef8b963505f0d80d5d8614e24cbbe7ccd33c10203f9f9ae6f6e96c807c337906c80c4d3753f77c92e9143f9bc7471acac3d9e0a829d2ccfc7c9723d200f9f90e474c81e6670a3fdf53d031d2b8195b3e1034b6fc198723c6cccc98414d91467aec45c71a00681fda458f46eff232bf799d8dcc379347325aeee7462aafe376d13af4473446d3140a9a5ed8288f3468075d5195c7288a9a5454442e9060605a5bb2b0b04e2089a049bfa590489fce85b849df091bcba17898b9914e2100281360a4b38f599a2b39292fcd1130c7d1d8ce962684524c18e94fcbf5da1f9c599a61092aa09712be47a42247da83d1a096974838301385194aa176eeab755dfb635241794c870e4c4dad18093a423e4820853f1279dc4877393bff00f4e787fee47869ba5e3ef46704fd39f9547978595bfe7d451a979f7f436aa23833a62402e9e76f2eba85b85d48e19eefb209407b48b208eff2a52769117e5be96c4adf4c16a1a4e51e69b95db48a08a39216c08f7404bdfe88a03fa056a419bde86382b9b88ca236d2dc7eadf3a24779a4b7fdf198e750d3c94b9e87473a030598afa814cd192a5acad0900000004110002317000018100886844259146639146aea0114000f65944e665a3a1007e3c114456128c318428c31c4000280218428848c11d90040a1a5093509ad82315c064f1295824b70e31f8e440e362744b8f4ebd4c864566e900ee18156cb8f06f1583b67cd125b6d67bc9fa58f68eed925db16bf9739ae90bf3d954327c088ab79123e0e02677784b00c15e0426dcfc2f5036b4e6bb79224413f9f818c2457e9e7f32d48d24f269211347c1a173bf3a00ca5271ca610d8d2acae2143a5fc3bc5ca40281e7f04cc1a0bfce7969373a26cd64a99e2d40714ebdb127e2ccd8b9f5901cd7e799cf8b1007a61365e53aaffef713c1c08f977d3f8b8c399578cc2250be75fa5a1099786fbd96e9d57428c170ee9786105fd95e322a7e57a40149f1f9c0876370f15ab0cd6a835bd96d8cddb3d77186d280c07e1e324b84e72372d39c03741811a9bd2401d41029d48e13407d3e927c55e4166d46c9f988d8c02703ca704ea02c35b01d4edf354d7deb9f10d9680e8d729e48a82dbf2092d484d076db87968620f2a25fb512f1b078b2e6f0d1439c53053a2d168829222f80b34262648de0531f49793d297ff9f8dc6dc5505f6052b03376684a11545f58b980f16029a2fdcabac29da2d5078b1e2c6898352c5180a3330314df3205c53f619906db9a21747728f69cfb354fc37f3eebfd9494fb723473c2e7c7ef0a37ec010ba67c0444e3e934bea254960d1c262ac06fd4ad02780a0191594362d91cc5bcf3ac1ca315b7b585a86ee450d7166614f623987dc75e1bcb531860aa520b0154f480e2cbbcb5499d268058168f2173643bfce00856f2a3b3e67c6c2b893c59e1d2f548157e8a0e3eb7aabb4b0b98f6efa012bbf6efd50a1209a3f3c00c4e53795ba03fd2ccc9ae2c07c990e1ceacc79aa982ff70b360eb696f546a81d16bbe242b0a0235a3b58399b952705ad4906e29779b594af530efa2ae483e0834ed3a9eb49041ddd988c028bd37a10c4731ac3720e89aa7058428be1f6c9f243041b8b03d26e2124f8b2df102cd23c028491660b81eb788e2b78ebb6107ce6e4f48ab5f395598405485bab004c13e4c652ba021a3d2a4e5ca14ea806a40101839b5180de3404091850cf612ade376bd3c251e5024851d03ca4295a8498c771afa6f7d2bcf270aadd0b9bc8fdfaa43721588b9de6c1d9565047844396eceb13f5402f40786cd223eece080698d50476c89240d0e85aedcb87afbe288ffbaf989e2e52d8d6a5d9575982910c558c6478013ce605d0e7780135cd4f8e502b0f43695e17ebe761126166a97adb5e84fa160b2c4de2a240e295f674ea5b4446d77a3aa61e65ddee429a04c199c66df6f240f63cbcf6bc380c246c030c4349158f8720b7efa593db2ae8ae104196926b5c72eae4593b9108c291a8a82d8be62ea5ee0d9285898344162cf1dec8330b7af869df1a9f5298df39dd438c444cd03d4ed6e50111bf20019ac8269e077c8ba0272441f7d713f8c96e6e219e169f5d9b38c153bcc00e7040bf1fc4f0408525254030e42fff586b4c299f7386e66a2d2d76a73f3e1a38d0b7b0da806e8bc916706cb3cb8b5e0ba12276fd5606ddebe060fd27563a388c5528c250ee8e3b8a309db3efeb1c50ca710e7954d496a6036cfd1293c04241b2eb9bfce27c9c940c19b3dc59d4b78832602a6500717c88d2586e601083e7392b3c74dfc24b506073bb7677c02dd0069c5e77d1f6cf7bde0f04fa1df4f1f5ca4e81d25dfea72c6d90ac5498a335c03184dcee13e9f57c3669bb94bb36d806ad20ed301c969ebee5dd7076f14c97902b305356be2865340f33699e3f30509fe72d51571803175ad52259cce6f89e9cb0f322ff342c86d24a542da116662c680a0179972fc01de606ccbef1231083a6594cfe22c38e5abc393c24cc52cc24c767b85dd5b0878cf7c5fd9ea602e8920d1af391995923e3bed9c53720c1f88a89077a71bb4edbd90d2c7ba090b50d4b313ff0fbc0f424f4d069b997d984651cda3c643058774dd8b69d6bbc253dbe0272a961c2386b855e6ec077d0dabc541e70d78c24028562b983c4344dbeec4170b68fa8911d571da2226d684d97cb0f4d6187851fc20b4867cadd1e4335d62071a4563007bc4005c0ba8ca4978bbfcdacf3ca2f002dbb4f991f5258c0d6d51e9e8bb92bf81cace5d311246292e91a2c30e81a8c57705d0063e6d0b13f530994f4876019cbd9ecabde8ae8339197c1d084f929955b2d57a3fb5ed8dc0a121457c4d6873d811d3cbdd42c03564ff6bbf6064a4762efcfa0a908cb344dfd85d7d5501dc49a00efbd6f095f16eeff0172d5ab59359ca5d04fe0e89a2e85f0226711c3607e236da5eeea4b6d806b7e344181aeabc3e3abcf4130fa6d1190e487128347535206a1e79fdf8e4d8445743133a159289c8fceab37129ac37983ffa227ed14240ccb6e97e06c1028be0e8be2edd1096ecb1ca8d86466032cba8cee07d85a340474d3aed3f599021ddc12812193f0868fcc19e2a134facf37ce86f086b769bc123458d25e2ab9edde2622449525caf077ccbcd3cf9a83dc8bb4fa7fee466f680793c0885d1ada9af0e60940a1dd7578cd4edf2106fe9088520422130cfc62c5810a93dacfc5a6bb325c4d0280a2838bc171bfad4a0db324d314f767307ba83899b09a12a2f19838f6413e2f1d6b319cf13800a31766280b499080e9646090f238f45cac594a77b52729c8e2f0159cfa8b6371f43e842c2f16a70fc0607045581c5a76e0978d30c1e2208a0d4edbaf380bfbfc4f118e025bd4bc579caccefa48c32ba9a3d56cf4f094dfeaadb3cd02a38b03d28a231451a2961507943e5fd14c386ddcabd8841d69669dbdd125fa2759712a7e7f4bcadf1ad3c84d805cc3551c9b240b2366ea324a0c717efbbe977a037c6ab07840bfaab3065559c51148ed6722deb850c5410fdabf7008b2bd7b572570fb1b88fc518a0e9b7223aa381d21234cbca306ebc2ada408e126acce64ac2bde6400f02e4b1cbfe58525d64552e67d0a8bffe9ddd16d91c421657614a04d8f336f7310306ab9d60c0e32fd452be7f11d29eaeba71ac35599711c458aa18b0b308ec11e1f24a06b3ad247c37590ca452a34e0e61350fb93bfac67d76b3977b2607409ae062a68d9afed63cdb2ab8be53f4f23b5d09655616ede8938859e401255e9e0834a0d2b6941674d275abe075c6e38491f246979a9f73f6053cb921e20b136bcf4cd3349ddc0278ca75e70b81310074d3a0cbc6555de1b5b9314f10743703058770f9a969bdcdd636ac847314e39d4d8da45f78a1a8528ebd949944381c04343fcf029445e0f3fcdc0ff44d7311dc0764e987b48e4500e33b3eac0b39af41ff126c30a23e8b197463b70cd22e0f242051afc78076d200c5ab6d480c95b96d403da79d4dd0404f2d1c055d14335afc324b732a839665ea53e4490e735b2c8a780a17ee001cfc37827176c32882d913fe9055554239e9499468b283f11e2142d59232adc1e5a12bc01348c622cba1dcc5862d7dbc1460dd2e66bd36dbd3403e1a038d01ca435a02429db2c0f5e0405d4690894a482533bca9b5cddc813ec847e42b7f06d4f81a3d7ef62e14db642a88fb90e73a2f42d86b5f973ac0647af21518f869dd210a9c2a4a90ea8264052acb874e7b860bd235c1abd49e088b968ef26611ce780ad83a619da7844e4d38c1414e0418fc3c9fe21af1978c61ed4ed6bdb2455d590959e350a14a6c8a66e1a2cf5793af976002df083d12d6a3a90a96d0a5078e428c74d576cb8dc30df4da61a637faea9ac1cdeff505b1f894778ece0034c494032a80f803718499809523619adcf3bd19f7a12f4cf93300014bda301221911ee8c42b43b8036f4adf2e45b27afa14e864b14ba25c903707d24610c938eb8830681f640c45dc1ac77aca9538aec50e22018c53c7d80f27fbca10858f052a418552d296251e8811a400bc022095007e9553aaffb15e01e54cbfd5e45229016ee7014a3fac6ad6775196d0959f44014e39c8237b9038df923403f181dc35c486ff6c65a0175d9c9695fc943cc5c9b314651826a474c85218ea0bcb2daf6566639a8ed5f2c820c8e2e5a2a2ca4c8c866f35c4c85b8eb8748901731c3843c95de27858e08bd9ff48332f711da5d5a6f0372e604aa6b51855f54cb14441b72dee2420b470cd94634671836c0118876fb02f232f31b3e4b6e8e1d3f80193ebc741435288e85d06b0502d80434a77956a7e041c8f3fbd2ffa71e8d3f7dbab0e1b33165ac69251eaaa7983236b7d9996c7b28700bffb13368aa417aea444d61aecf4f7f8a81904a7013bc06a44c50ecbe6d8db221c5c7cd68070869d74b85ebe4613d0747d405d30c82ab3a5caed09f4c351523a42906759fd870f4dc4af481867892e95145d4f3b5b326f1ed2db0b23cc2ec34141a0adc43629a121d246e1e7fa41a9cf6cee97740008a36e73bb7f4c754f9e0033a3e0b384ecd4b93c2a88a6cbf8858aec27b4c04a6bf04385113c3dfcb4e9d536c38ea9e3ce2a9f8662d632f5e8fd61e3a9445a9c703b5bd23c285f0981107717c7ce1e35eb466c76e4b975d5f471c5b076cc9f99e0eb1cf09da173b9713efd087cab7f3ce6457bb834635eacd718704e2ce80fc3b0ae273f9f3763e5a354724bdba568dacb33699759f62c9fa8a6bf76e6e1c18c29c50c078690c55e037652926a17f04199b8dfb6a0c285b59fcfd6636462c97e1cb6c354466c96b68c7ea30a7876fac3fbc0c88225f2d0a074d00209817953717b1faf5b0eedf7c483cceb0272c828240be8e9590554414fdebe6f3c33d56ae4c33e99f9181bbac8500043ac65844b979fdd73de83fd04bc53f0c3d51924db6e040f91cbcb1e7467e2c03fd07afc15114100dd9e5cb9df1c9bbc658afc4054e2d875f7c9a109513bfaf0b70d6f7c1be67c5b4e65f3874b02e3941ce6c568710b662e24b0a129a8182ba462c0727d0a952f8f11976b039b8041c86214e4b224ac98d8fbee2e7d3c8afd75c2348dc092cf4d9a6433bc70f6421631e0130246481e85253104f105b0fff4a823bcede069f052e349480519e24af6bc2cf2391870bc152561118ad4e56d7da6bd49baa881c83734279885a92ba792d02723f86e1e2b4f825bf1df101c46cf479ea6ada83590d95c2593c0d83218aa2679141420b6814c2433ff5c471ce582963aab36b470a7ff94a693f693170a7649f3d6b8f8b051c48cb50efd768b3ac01f8643e7bc00a62cb98a1b318d00a40b239c5fb8568ea215d5a92de32cd06a2747cd230e4ab9220006d5b6383d9d95a9ffc15150319b84b051be7f220afc88b3045588541b4377f1c85d92b74d2a8cd866ec8ab926b7d9a582722151b206c8821a37c1aa2fa6787596063733a09a79fbd709d3f67bbbf23d5d5c85c12d4aa2e7bb0af180d4a3d8712d104016d78df8125469fcd0dfacfc43be2ec19706904055713e7f0a75afba441186d71d72502a705941bb2df0a3ea597560b10dd4a703378b12b97256eeaba56daa145fabffc77b3bf08f215181b457ad93520702edb19e7617b6ddc146516cb8e1e9950dbaf63b7d710b11da4de5ef65ca7a153fc789165e65ed4fbe2cac4b2b99c172e4abe82b14d81056f425940fc46f11fb01b88c2734e937541ef38d4437aede22bdc64deb1dea9b64c7849c47acfb70c0cf2f09800383beee1930908179b91a68c1948c704d2742366863b0b1de808bdbbd83232b96f3d95f4b9b9285eb00acba0128e36d44a58fb6b4c15a5234383a424d22ee7ef26b2ab3b5b2d4e05068aa349bed777b912af7f8470be4c56ac23a1382e55a9d9ff1e872e5e3e74afb66dc44ab1ee1de89654ba60bd7d417ac0e6bd6ecbfdc38ba19706ab000708090c26dde645a2117b88f7a2f5cafdf29d9ddfa178781bbabc53211c07eab18c1f4f98f69445715a82c9f4428a7c3e2480b12ce32d510833b52b1062a6a69bc3ac65d8b68640998fc4e7f34b739f73b9e832e73ee5981bc94caddb40d47c3c276a0abda5e2cae1508f43d30cd6bc75cb08c6e3e58b44f73bf6380fcec4ee8c7d26a9fcf9cb5081f50d3f3e8d995ae41c46600b64e9491345a90968d5d1c868b1f48e4b53e0d4630874b145a91492c0b8e04aa04ca6c17f21a6bc76aa594ec32e7763d8e928060b38534bf45dc7ed885b5c842de208d431a4d02502642e42a328838fa1fa76a65634a5d96849a2ed493ded0ed48574d6ee29e37330bafe2996cad9f08522eeec4c6d5416287fb9fd04c34e80e20b336e9f1168414650033f200d09c114b801d1605b8d401fc2d9eb098c0fd4ed4ced026f4b1901ed0f701875ba2158d580869d8d6285331e1791e82c41a12d1d09bbc4131f7b3b5313ba167fa001e9366526cc0692b59b09d964d2d3f896c2db5ad923b50750a4f2710246a87ff296d11640090c3bf39dbf21a16102c3493c030e32da43d8b64a4ca8db2abf72f65b05e95bd22a60c216f22b981033f4f258bc5bddd1d723d2f3cb5244c28a8b599830c273004de9e9aeb5706665ffc35f74dd0a6ceeee0b90e3696c3a9b64da6cc5558225f620a1658ea1cbd4aa9bb81adfb96bed369ed74c7b70df05e38a3096a9a964f4de8e7251f4c5ab4da6a0b2bee0dc68b6baa9ec0fc306b179cce4b1f7847a13b675c9af1702b2702d642c8318bc588021b6f5f5111170e88d144b7f524926ba7cc6d48023cb2777995a57e84b3602da4d6cfdfff8acdea11fd0e3d45903133c5af00a513b003eafdd38049a0d59721a29692a64fde4b3b1be73a99daf0d250eeefd4614e407afb776cc9b4dd3d9996bd9b42bb6b17988ee26ca396b763c8ba3046a25e2477bf3f8628db009f54c6b159f6fb2d307889fc64e6ffc4809887b8075df86fc08c9933287bd96d17c7d62c9f2eb4241c4ae322bb4a6e7ff0e2e88e027553e344eec1e0f1a8b08c5d31d25c02a7458073bcee7f7d9ed37a0c07f437a355f5cb10513ed67c0c9e4b45d2ce3a36d14787c2e593833b3dec21cf2374b6f94a7ebca1adb54be8e8e9629e4777612132d4bd4d3516305ffb538645669a86b780368f37d2d0bd4360e987acbb3ce6751f9cd92fe8e30014170ed4232b5de12bb40590a7b6b162992a90cac7204ddea95c0fb0c2e8134101cb0b49e213a46c224a0df51a57573253a4dcc16169496f4bc32234ff0f6d88c1eacc12d21f120f232f109d75f1fc6d4b4c1e1dfa958e54d9bd4bdf8d6bcec2463f87f1da7717ca036c6d4b2d8d93de390c4f260ccf9970ef4493bbaf5456310f7c509ad8c3412ff9486fa3620150971b04f8a700bb02769008528c53966518309b6d849bf01685a2a933e0a138298e1f246492ff8459b5c73081e2f18ff4fc88d5831d257b27fe0a994a3fb25e0108238a159f0604a4cdc814eecf84a75c9b1a8d4f3c960ca3160b8488088002bd35c5dc71cb56fcd4bca1566ae8460c203b842f3611f21643a63fd043e06727422579128b604e437400715490928eb85dcaec009ab3c3652c951f5c35c59b3842be476d44f69d78c34af1afdb10f9207f4b50149712213b1cc812c2541dc84897491ad5a11fd49e26502b903c7870b4d1105e48714f2ea90825b378deadd604743204c1f8933484438a80af1728d11892962f64a366d4f6369c965cfe5233b6f18710911bbea89817b3a2ccdf5a717fd2e8b7ff572180fb27e340a7f8a3ece9965872be3ff878a700cad165a43c9667404539787938c1239a78df30eecf2621d3872c42f0dffcc8a70f8b5740f804cfcb0197a890c7f4aeed20d60f181ecf754f2a819450b6db1485683ca94f10598a79e649534c300a1b9ba9b22c9def1e30b8c156546c35ce8bd77bb492c32e6ef58d184fd157a4ae6c1a692a072213208007d64974037cd1e1be6cd84edba42ab6916970d08664e1441ab008db06ebf0754c92b26679b70b315275d8fb73dcaea0bb8655e24067545ab25649b8b40e491839e402ce08f431006bfc05e57e8624ec50411afb3b15f8dce8fec059167dbca449025e1424f20c18ce6e63b9a046564736378b524e2e2052a63d5520c5181cc75a626f7df2ab107efc61d13b6b6c3261f0393a7039b931b04e0369f4fab5de454d3697a210de9ad95265d91d85ea1d7b427af6c5c0380d1d33006fbb0a4421f8235a8848ceb8995ca0a0389d177d1db65992bfebe7613fff4a5d1bfe0f2061599a958a1150d5c5b2b0b19bd59d65d1c72cc6c7ef9a51a7b865d6604261d0ee2c4cdcba1c53a3e6c054c52a141d0c3552659fc7484c3b83d16e91fe1269b1f385c9fe175e5811847ceceaa9a8580263cf3ea4b63f72e7b4f0a1955681e57a834a20f308d514f1f5b3b508ca85efd8744f62d7d190177aa191fe7d7c248441da32b1632f0071835156d27f499fba9818654e8d329a6c7482888cb13e6bcde30aec015dae42fcf136203a5a818be86b3e93c1bf5040b7c9f702a18f9fac2e806a776eac7b7b04236bad2247985f958f79d64806a2d7559013276add0df3cede27a057ebac239b472e2574960ed121d5acd7911a6be2d219ef6c0b305e1d7d7abd48a080c9db93adbd3a1db2926414237e8f88cc574661f1602db0cdd5e85e18afd5d9c2fbbec86a323c59c97bbf31d1d314fc57cba4a01202fff4c47a040a48dcdf8bf19d43da01cfa19d035b69b7d2af8d710034639070270b0ead2c0aabd7b7615d17c52368ab7653f95545c72c6916bedc9138c7e79a3dd55a133ace2113985c5e06fa7320ffced5478e2d50c7b1f56a16d5d12acb0b8c6dd93a986413de286ff4f01a867d15f8d86c539aa66c4089cd38d198800205e03c5197f3a539aed4296cc974cc344eb0b257ccb64e668d0126bf85873ffc364ec17411d04a72281a704ad0e4a4d438d3a407daff3625cf8b6dd75880f010339a2cffc40c8ad60f4241c9c928275f400ad5ef721e5fe1eee88975d5d589b5d01fb65b1af654e0c6d622ff2376612c0e875e39622b61967725d9502b780d1a70ee80e191e287ef969699e466ee748bf8706cb2d69936eb26e8d9ff7c8c9b0394d0c5d14fd9b71d1cb5dad322ae0f39c481d4dd59f2770829ece012aadfa0f6c04b598295a0c0241d11b650de505d3ce96c4ae9986c392c88968d8d92a1ec8404b0f044678c7ca20e22f05930362c8bc1e65b93b72531c142651b3c1b6cc579c1583b86cf32c286e46f2b7f84d70e8354d50b94b606ebfc7924803633de6e498c6507ad1bcf54ffd9d803a40477bbcd09ada5ef2413cbc72c879b1a6cd6bc62b39cef38b4fb6c03724bc2abc6af7ef83d5ef5f8562b64707fda7242854f422ed9fef625768d5eff052be09a9d07d7a1a7a3bab04217c7d8ac5e85176d5943e8996eaa5120bf064a179fb7df10afbd9481d2de13bb196d94479204169e16355325f93671b7e054edf215ab45792530393def2d0883d07fcdd0f485c7de837226ac59fc5f027658f2859b981816bda8653840f927044db49f234f6e2950a379d629240485b934211e34c439d8cd593263487c13f127510901a50e34bd0c0128c2ab2a8acde3cad04352194c9a60197837ba22e52bb76c451376f1045fabe677818cf4677406bda8e9dfc47e4c6b8b91d276d8f6a72ad578e8320d1750522dc7621abb78b63f24688fbeb938342b7db6566d7bf9968dd9938c1cea819338abafe174d983e7074a9aaa27d8a8edd928bd9fb1128c96825f5a44f12de5022f4deec8fcb50d3c5866924d31df9b65cfdc692d669a95fc95ec67817c4782d09c3ec7144b87bb7415dfd884e00606a0a615be57ee9fdc58a4504f6e77b7c78623f305574f4fe21ff7a8a7beb2fda93ba5a613a81c411d17b0557542fb91b4a453c3e1bc3c0ab1eaad744bb6b26a7a9451d5db5ea5ba45c0e8fa91a0220893afc36ab88ee31516b97e2661717ea39a04074651903a782bbeb6679181208cb4b1ab841eaf3e80e05bcaee2463cf472602cd61c8572e4aa13884b9d038a127d42eaaf18520af32955777c20690bfbd408fa1ceeb830321a10a9e6de01a8c79781312bdb1139a7e72caf6bb9ce9609ab019cd2eedd87f760a52aee8e9612938e2bd1a0940b9af7da87b33645acff00644769bdd2c68ca6f355f534b3e9e10ffaf99170074c1ffcf4889aff280e84108feea1374d1fd6ad48e9e9e66d1fadd926857970df48b5e459d3c5471e4138f6aa408bb9675ad4e6124724fc16d5be2bd214a1127b17e381e0692217deb77c7cfd017d7e2c1ead530106c211fcb3b2c3b1a655348613a8fd1358d9d241778e3d75085243b8727f4b03cd9405da065bddbb553e436e0ef3df735044206471a3e8a1b03fca892e2102602eeff38e1c1bc8bb93064dc83e5110a0d86c84881909fc434c8357b96ae3bb089e6c0e6baa07351279707f97a6af30d58d916753723084387c20c9d1d19b0bea45fa02e790ddcacc87d312cada6cf5de6ad8e002d0efd4dc98714d6f0a8ec7051d9c05cdd29f31b9fce9854d23ba9931573c6f65777ef9706c8d4ac4682b5da547892ac2f125c6239b88fa28e92e0d1e40b6695fa7a992492bd9a5cd84304841aa57675787cffdbc17a9d8244869352b00035077957fecd2d1c39367284cf75aab9dfe116b6aab4f458edba40ff9a470f8ef803748dbe2928d7ef338300fb3bb2b3d572c55e6d6fc0faa0fda9e078029536ca6ce49d019a8d84018de8bdf9f0dc3b385151679f662f48925298ee7937e6522a8853a518846b94a30fb3ce9e40a9fd1d8b86466839e30b4440b831c99a23c0b5e4346db7f38b66e16981ab695788e149e485d7113cb77b302b261dd4895ecaeeaeaf875e08135fb976a2e6fcf7cb7eff5fe9a1084568333004aba0f943505a0d315e4762364ec0a779a9029902ae600a87c7fb801d43dd2d577cf5db45917a261e37874c6614efe88589775af7a37272460c514ffe90899a4300ee578856ca8658eb872faa7e513ed4de9971860d7cd28d20113c92dae51ef4bfa210e4c0c4a475e982b7b08ccffe962b635894568f06fa05ad5eeed70615b82c40ae9864e4af11545ed5e1c7f129c71906c60c00070503246c8ac42c8465f4a46921690cfb4728c5515e6101660a134de87d6070889c44eb6eb2f91d9293518947436e4ecb9ea923c932b06be50d0dddab3d5bb256aa9104026ceb15c654e1c328823a8cb5413f1fdefe82225f4269fee269bb35c3b414bf8196a7d871777eb59344b6ecaf6206fb36ad9de16c140a01bbde944f511d9722f60312cb5825ea0d478af3945266aa821f64a8a37192319bd0e93ad87f67cf4b96e34a939e3d94714e036935b32faac7010c9a37a811b779bcba74309b50cb257d9bfdb64ed5f76a849eabcfd80b4190c560c449c5ae18f8789e5281e56b85f2c454c056a5b30bcbe465abbe52f6f94f6b560d977d4ee7d90e109bb5a3ba549790fe2ed54c452ed139a6551dff09dad9b159fc8ffa053b8e4d259fc22e2ae8d75b04cf17ef0bbcc029f5cbeebdf70845835639252c4ffa977c1c3ee33383ffe482fefc469ececd027835fb00b1a0a497d0cfaf80193320fe74b034ffd7b449506d4b53b92be8740215510d96e5529fc1b48ef87d0d93816bd2d78395f4a854461fa85728324f5c23420948e0b7c563791037b7598aac9c81b60d26a7f540c08e57462511c584a34cd99a138539840ad9708f018c16eaa4caa07af514ed88113da02b5c6ac8e31a5604e348e2cf923101bc174f8fd3b016fab4e3f476541075666082128d0f5b628f17ac066b7f0036c1124fed880080397a5ee8ff9293aa7d2ec5f3be5bc5655ec5ae199833c6e539bc75457dca7da9d2165ae9943a695496795673c401183a07ad5a49139aab89b93258fe16c497a3acd746a59ec146512d86fc0dd39fb1c228fe69ccf6abc250c516eff069e37181c1b49f923fd24e96c9b23c1dca8d2b4eca72cb9d03e6a42cadf3fb1072456f14da0efcbd09250b009523d02b15f5d13bac07c4e0959dbad0ca827779a709e01b5ba5b4a9ecd22ade830ab6a91c6cdfc3b057359d6a87e1ab076b9734075b8ea293d958ecc15551621760f536a60e5abdb10b82e82238edfb198c15743774ef530b9369ba3f6dc5b7394ef07d23cc03207af4087cbd6bab7e8ad6953d777a146f158a2f96149ef35e4560ce0a7359c02b24205ba673ab87fefb2eaae22e82231b3fd9682e22e2662e69e49dce36c1c9af1d462ff17fe9386085507984831e61895739ef3ec2dfc8c1c682f846bf936b2e5757040afea093a73a64f35082d4b3be89c014102f47976bfe3ead59e385d28e164bd00be4c4c028f14e24ac2bb9f0362d505010d50b06673207f4bab1fce5e92a5d6467bf1d607f6c3982a2f051e1a5bec263bc284a5abace94a8456cd4284b404d31c04b46d798f5a165079c7e0fc7f0dec71484653187966e2e083552129a9bc5918b9641aab9c54ab08d5c8f681aae6b5f103d4468cc248015e74ce187dc684e7d84392be217cee160eb6d9f09080cb5a866b6959eb366f5f685ab52998a1db725a8c9e82aaa4847c254acafa7a404ac17c617ed3be98717dcc8fb89bc4981a2e3c6943450118bc715ffacfbdd6b0743710f42c705b6331687c54ea3ec822828fa7a356a6e663fa25513594772d94d2ab9fa5661fcb17ad9314431842a0cd1151319bcd251a4c9f5f04c4478cfbf606dde748eb8c800dd151cb64592606287ee5209c06c6ef21b80163824e293028192bdb27fc87bcf87c4165a2326f32758b23fa28422429aa5acd7efd0adf17a6e7a704b20ee5f88b20a79f055ce2a8072d7d0f45a018f586ddf3316c5abd674c41923088949b899e944e1a9664f3d3d1024db7131f14dabae3766c586e0e4e3160b54586f4ec37301fc35bd9fba9d6cf5623908a4fd17cc78fe7a2a9acf00f476fe9b90696ac1ca6713f879b77e7932113a2bee0fc17c4025c12befee358ec7e6523f35bb9f761af7667df28fbdc48b26b8c8abf081f933303ccfd308146ec70113fd67ef8b011149b8ea445ef75283852f31df1c9246b5f58c04562d7b37c137dabcca7d81cf09d53f3efcc843c7adc55ed988b50b4e5e66955e5f9032be4f7d7bf33d088f664e894cdefdfc93f375e17694b82e527076044a96878eaff0ec1bd4c0c6ef997ffc14c13cd1fc9d85ee9abbfd9ff116f320a5c3b8987a1466248bef205fa6e32a20ccb3c4e5b07a0dff03d71e5da2611287d1f8047d5424cc8ddcca70a1e6d027ffc9349ac5e6d96d7dc9f9aff5751778debbd939524f5f1415a2a6cb094489dd4e715a87b3b9e84818e9a0e80053884f1e9ea53fb8bfcfab1d37e2116444b414eb38e29e9c20e4ee30359cc73b7fe98467f486ce769ea5375611656ca936e26184fa23913e6845f31c6ba2fd069d699922ee8e2344734a80fd183e64aecd27e981faeb86387e4e7c5a469a03aafc63f2c41f0faeaf0a518f8cbccbeac98876dbc47f6b0fe910a272a7fbc8dfa601e84bc36d1d8ba02b8fec1d8e10117afa0b27123027a7ce84e20d20ab44feac72839f0cb403b20655240ac6e2808535a8c0b1c162cf4c3ed4b2905da6edd22227531755037f94cb6ff10c61097a5defb702500deaea24395e516c810f67828e52d3646363dd42934727ef83af950dede182d34fd775f86a20cbef7e31a91936d682f8e51a4c4f941c246e2a39c5289b64945dd10e9fdd74d83570383f3fec14a0217905142d62bc7f46a967bed7149ea7e74f472adb25b07ece778a7c4b88ad8a60c15167b5444d192d7c2e08354658d2daf7d8265bab67eec1ff8a737843da9cf0525ea3a311f842af7f9e00084a2807530ac39223c6a2eb99cee50dcfa7769b8b6283908c312799f5948891263d1e12a84cd5786e587c6fe5d383abd983b2dacefa46074c709b895b4b82f529e7818899478f80db7ea7d089a0ec00b68a835fe14dd09684a87df22918dbc9a3180cac1aa99fb01f404f812e06c013ee0bb4797db2208d53727572949efcad1bc8e942a9297bbd5c624397b6ae497f8e4dc83b0eb4b3d2bc3d47cad52851998f4a7510f7dbc8fc496d0f3cde18944b1c662bd499ef1e58c550352d5248891bd3d19e984278a6fea22212fa731f89a8cf2d432a611903275ba0d0497f46ecdc87c21618edf0267ed1c3d97c8b8400b9f2c7df9bed1372666bd9a644769ac0a20f40f15e8253e2dd7a1f6b1124b8d4f39d4cd7228ef2d6436ca6acf62b2588b6fe8a6e9a28e3f562a956e4e27475eb371f0f22049d343ec84cd0a3d186b5ad7cc3ba649257b8fb3c6788a2ea8a7942b032a2660c849d47aa0ff060ba593caa144308cc00839a6d60d3f2091914ddcd3101f2686f803da450c40f3f057bb36f75344caecea4633c568480d0bfbd2f3461c1b44f8b8094b8013c08ab3e89d18ba6fcbed0517c88683cf54eb76352afaf9164884c4176f255bd972eefe3544f664a8444e4edf5df5311e912838e16ca76f301f38eb29d4279658dae880e76c04dc8c6d5b1a4f58e40510f183bdf956608608916dfe2170180da6f23406bf625e06da524b6b6f75527ffef714471bbef9f6af0b85679cb37db2d1d955809bb0a54c609cd8fc86b50b709093ee30521a248d93d9dfca6b7214cac5f8aca4640356856f61f5e9e777422dec4210f341693c6aedaf38c085ef11f5395f4203ee3ee9ec3a91ea1e8c85e0f36b47e9a7d577ab1e41b6784c66c99023275a38f44d52c4475bab09dae85c0b5ed082299bb78f3d1d1c152b309795692a390267e8a73c165cb6b61b9ca24cdcacd0abeb39935b7e2a401b1385438cc145f94ede862fc8d1f5cfcf927d20260f945e705eae9b64f94fb588d338d018f719b76f19b43dfb891445e3b6b694a0ccaac6d5dc1344a5c5520e56c2d15dab80542e5fce2e531850207f5b3f4776710e688529660bd8b6d30b4c63434ed5b6bf5f39cc8d96c4189c76191cc93f98cc467922f3802ec6ca7fce2626005beeec373e7b45220d70f5007d90ce183a874feba6613cbfbcf262e4d5860a5cf1240502f772d738247074d73a7ccd029eb1674b5a02e7b43f0640b17e60d7a07365a12c870c30b536ab1f9c86fce02beb6fc9f99ec527e2c5a58554e5dcd68a88a03292ff982dcd76009925e3f9c765dab73803e53358a8a09373c486f5a30468047936440156b0a7de932db23d4e8c2ecfa998edcaaee33afd62fb6babda882bfabfb293f734caefc6c79ae6cb4f676b09367be311e37c8536d7985deffc17a51981adbef787b6e9d36026ab13aa9dc00f0f7704a3521114179411ae0be1ba7489d74e308b710a43266e553a6bcbd971a5304bc0a48c156006e223401cac08ffda053ca76438585f4d239914eee3e1134bac8a57a7060a71db0d03b34cd59767c5f697da1317df63391ffc355c2c511d998225d6ef47cd89e537762e284d7e7b82b1415815f3fd1dcb9f4e1cb4d7c8e658c1b589279a126e5be607a8ae3a3e5155d9e113bf0a93147707ea251281fb916ffdb5aed466a71a60a2117d93fd95268d159a4f94ee7a4b37204eabf38d21878e75de24c0b7ea86289cfc6538796382284479f8441ccd75db851cabaf0422c2df0d13f271ac30b5e6716d493424cde804c236ba219b76dff3e57f4ca614fd590f8ada51bd6a49f7797eb95fddd6427c376506844eda7dafa0f667138557ab6ea70561efc05cc0fff4b409490991cd4fa3eeecd0a1197359d991e692ed4b6c8e6812e152444ecdb4e25fdb499f626469581849897573d67237a328d8f7dbc598bdc54a14a818a3e6062de78613565567d695d2bede8b332ba3030150c093d4061bcaa533e20a105ba0960dc5a2471b9d5782f2cd79ad914bcd051eac33c56f4ec89b75e2758a47ed62ef6f72de38c6a93e8e1aa54b18db08942dc1b34497eaf8f846eed07e7e6c6a001bd788eedf602edeb84c0d864610e751da3fbf5aafa2502c43056760c93989da53a5762ea023fe62528699d4d18eca84d6bfa5b82c20369ab571b9f81ad2207802438203e254cc1f692b7a2909c9939aa70c010a8915862963ad48530c00a9895456dbba4a44d707ef8a35e1028327c5357752a4c60c91a0fbbaa10a03d64595a5559b935c85f7c6c24dbe9b2f042380b05a301935a35d27ba11d0acaa01bd743754eb18dd2f09a29e289fb078f4762b1f8fa55263369570b2674f747545898953bb1f931bb7b29395923294ac31f5f9ed27d8fed42da0bd5498b73291a7b26f84ec7fc18ab5bd2328d909ad0e2d50d0fa8e9c866ef9ce464f4a42757c525cf8760d383131dcbc4e538fad045842a62286e08fa03dc3b9de0207a9ba14a5516a117a276e982d7e3a4de047307c0850ae72a2d076dc0ea56799c5f3be3b82284039f42c10e64070acd889613eec91ea56f3417d3285140d886c8535a38e23277dde112c7d92f9788e116344969c853bd66f73ad110b5f3e9665741d04d47c243d2c1e3b211c179b62d70a7c57656c5ceedca70b4eebc829d7ba44113f4089fea177b6e24e56f59bd62a8ddfe785914bf14d1aff98b27e2e5d081d9a6cada4c4fb3fdc6adf3ef30b22f37bc00fdc0a780381d7dd614b5a07f827b3e5a859abdecc74dde829d06a6bd66bd66a2b120b4d9cd6ac78d482c57ef157d7f439e805c076a3b2811107b3c48e2267b119909e8c0a4193afb2713d0c34fc8b2f288859338a0c52b2d489365f342c52e330637bb63affce4dce8e30908cae82402b079f8e008e71c1079ec069afe4bff0a877afa6169b477b22de2b3e1e2c0d9e16f208ec4220743d7b8fd0519143487812b16cca897cf373f70168ad35a49bb2e3d24112d66352d1842bb2642ac253c3481ea06fa85aab96a24f06293ade531daeda44ea6d717988ae51b37eed7170f4e51f4763539d239c967220313447c8bcbc23b63e0d838e2159f14972c9be7b7eb80b6b9f93d1ad7a14ad191c837aca8e75b2ec51884aa6777f024c036ce07208db41ea96f61e3d2db840f82cd918d9c568c4f7e8e4cb98426d7230f8159ab332ab4fd252761cdf7e7158e26f894de945ee205ed51bbe82adf643ffb68e384407f163afa54752b492d6f178225704fcc3bc82c0eff2e1b0013cf94ab3d82746396f287e915893b704a8e9df07ab6a3b2b4834446eb2f37aa4c93e5533da06354da98a42a623aa711bea0a656996bd314ba6d9988b4c261ec12a400d252f81df01043ca08587d7a1c61e88397c227221271541f9f9e8e1f3940dd704b5c046a08366e2cdf34614c8ee5ae5701e4f2f01a0b352ff69c4b6c1c449bf67a51b2c3d596cbeb59034e326acc14cb820b64ca104e14e5364543eee0e3a562dbe0bb56e78e70bc2b5dc3e0229e4aeba29e7908ada95cf89fe9b17886b74b40cbed9b31204d513ae4d23448eb02ae84fceb1809cb718496272f0e45021f62f2c28982743864103a0ddf5a5fa24cc342e524ee73f4da5257291040620e82c90b71e53ee9854f032d0c9ef910191630b03b74a634d775f8d318ca7944b9754e6baf8f55e588895848dcee68fa5b601630ffa11a1ae62b61b353dde3668452c6f9ca8fc5f6b04f0ba3cea1bbf9e50632fe33a702c74bacffb1b4006d00a8fdc876cab1c182478455faaf8523587af1c70c33bbf32222636fd18c883f831a1b01c75c6b1e2e19e0f26433585c75207a9e89c090e646f5085ca5f478e0d2e2fad0056667de795603111a883f6bcda9ac7c6ebad4eae2112cdca772a90e5bde0516b6266a4fc89ea0febae5ca28a2a204c54c99b4dcc43a3c6b8d1106aa6499af3abbd95ae5541e373db4d0ad0969723a04451dfaa423f8f17b7c872f2c22c186fa34b1de3594b43682185ba68aed66c5481ac7249881d8a4236be2128fece8ae2b52fb6c1661bfd12497b74825c0a4e92ec65c2c295b7be60c7513413a7abc60459d7bce51b1ad6544c4954cb8989ac4c2ff9fce009a4f244bfa08a047be8750d33604077fef3c215e29f0c2d8b3f7fc27bafa439fecbeab1d6fecf4c06e626be797f69caddad4fea393831b136ff59d8f85c13c479a2abdb2a1b11be455bd5ca0e9118d7d9bde8ac50f106b1f9048d157c6cf859ab22b2ce4afc602bb4e878f9dcc2c8dd2e5e82212ba25fa975cd8751011e473cf0bddac9b5d1dd06c82a49eecc86082c04e4a459664a15e2aa953fc87cb43a11aba5215318115c74df7f722906dd3584c510af9ac369e3bd810ae331b3eedfe7271713ee54973d89dc8cc63995e8b403e3a2f38eec37be07d1057785a3031adaf1d91317fa6e8d8992f8ff35802afed99ce679a54ae6a618b49e1814a8f50f2d9fcd9ef8041224ce903272e3739d4f0fed26d3e6b711db681c7085b78927b5129bfb6d3ac17c8a3e340945d71331d556cc74e72976d4b8b16d413f6548caa6e17b8c12a8ca8eac92a4353f3efe37800e481aac52595acf26324393feac831f8cbb2d09d8c6fa2c2260c078c845e032677da39296f4f8a8df02566042c72ba587529da8b689a0777d35398c51871135381bdaec39a6ebeb3e441b7a22dc7b9205f8a9fcf8abd4c499e7c5083009ac159e5c2acfe92a44514f6e4a6bb099fb896d53774da44cd2eaa8dcbb612d8605bb0545ff1b28faca4810921bfce3b22822c6656fd11384fb7d2a84e0cc6348de9ff39d093cc084ca2b1b901d7157e2cb815b03d3649d789c126d790d419ff686b17c79dd6639ab36dc0d2c0f0400e9a82a2370132c5cd62818428844057a1862f4bbad3ea99652208e9dd99182e4447074e2b46c81b9137e10699033cc7ff28a564510fd32a9a8227d5d04740e384d337cd5502ee1bc9ffd23362aa8e15328c74216b27fd7f4f0ae230986dfc77fa281a96920a212b0ce162622f53f69cd606f7ea556888f80d40c5558d07645919bddb8d9339446092c2cf9864fc873b48d2f1f15b710403ac544d2b8c036d8b9ec101e8d5bfab93730a65b68aadd150ecb2f55a8c297e2f994068253c3ec46b606903fe5dcf563c324a0a49517d330085e99b406dbd925802bce16fb6c66c6b4f22f4a4d9f9e662eba46eedb45f41fcb7218ffc765bd4c916c5583700569a1988098cbb455c2cdf88a07b5b50e126ec262dece29029a61700b0da682fd87015f1d6d3b1bee0736e63efb9087a54af71caeb790fbcc45d267d21be935478755aabcad9955d1417711a2413ee0dead72326c0ec5abb8b6220ad42a390308fbaf772b87ba13fba31ef9f2e8a9d13c57070489f31b322dad7b278d28eaf6bae71ae24988e34f4c9bb82d2becfe6a783b203c5d3bea99e8c69072f2c682ba5dfa84a806c1b4cd282f5802820c65b2a740d4b66e124d9ede73d6367e138e7b081d464065e348f77f4546ed59e37fb16e667cd14d349939b85b0a197a3e9164b9d0f4ee4dbc9c4a04ea6e7fa957305c15271d994ce5e2ead83d7615b68e5d859d08f7b95caf9cc42e92586dce01a90fc1865a370f668329bf0006039dcf717fd7ffa6fd9b831d252a630b54fb7e5e91c64c9871beb1fd3743dbd41a218490bdf7de52ee1dd30a8d0a3b0a6988811674ccf7a34eab9cb06fa2dece577a0024f8e00759b8419213a840c7f49c20e968a29ece4b01ab5002cead9e13a4e9396175348172c40b4ac86941156160a2830988b3440e4d34d1a20a73904247132d30c0821466a43862022ae890e27a3f3ae1145ca9b846c9ccce6d3672dbfbec135c92db8f67e0e285363858dc1e636071eabbbc1e6360dd78b50b6a2d3588c518b1effa40176637ccf3b2e3268ce29b1d0ede401487d920ebb81f70464bc883e313dbb7bdd47a4530aadf1e64d48da55a4c6f8b1f6ee04cf66a5c135f20aa0f51f19a15711d394716e106b532d8d21fe0f7083888a3fe93ef28c4d4e373e53f577a261f4a32303f445e252b6f46d3313ddb28782825ece623320c524a29e9cc1bc610032736b0c10a054150c26c2d5cfd23c7889b22665e08a10a2660a11902de357fd8233f8e00071f30414313d00085a6620a96523a810329a53c49fef2a729aed4ae94a40bab600212ae7661154cf88176828c9260f60bfd07732440691ac006306c0183269074800c4080423608620172000216b001066468820b74c03881154756d57a27a03229300216925861060b39e8a03fb8945ad181d5a553e63476a1152268831522d0a92a88cc1cb8fc73072eff853da04ac5818a10a001075280011974b091cbffc137820f01fec075f2061189fb8400a781638e45a4d9c9083dbb05f7e334f70384b483a00d5f2cc7719c9d30dafde172976515196cf938164e7164999c88c4f20c9bf0947d8bcc1e0967645303d7fe94bdb71d58fce5c9ae7a50095be42b64b0258b319ce21bf343cb3c74b9f0cbc162baf02588c3c210c4a18d3c31550fbfedc26710071769cca7b07ff5c2cb797ae1b9ce083ecd93e6ad077e30d42b824f68e0e62a6a114734a2dd792ee288339af7b128e288476224019c31cf223645234d10456f3ececcce044ff3587700789abf3adb41788a2480370c0067cccf1c91c6fcbc69c2137b73f69c3d67cfd973f69c3d67cfd973f69c3d67cfd973f69c3d67cfd973f69c3d67cfd973f69c3d67cfd973f69c3d67cfd973ce02e480a9b156ca39e94a63075962c2a83c343fcce7983d985336eff051af7ca4d122e704533c2c224278f9537cb78cb1a7e084bac419cf7c496595afa72aa59c53ca49a9940c830373589e8df0f82dd9eb84b80ca285e053474a3bc6202ec40ff660b838e3e9b68d7c07c15df91836c1ea7e9c7552c71099b21030dc0d60541bd104ee7bc189760b276b300115dc4178922bd63cc0cddddcddcdd0563ae38c51f68f225a37ed1941f31f7c3222b657821f31fee88c8040dfc09b1f1c54c590608b7e8144fae4aa25be63e113f7eab35efc0eeeb60d155348fa84f564a7a7a4b3520b2f795dcdf1b2529b95da7a598c6af5b2d895697d6598966d9ae7233f9fe6f8b1d9a679b68f4747d3b64fd3709f108e0d131d2d6c98b498455343a383d364870b9c2637ac16ab59746674eca7b95bca39a99c94d66aed55ed756158966958a669dbe6f17c36cfe7c371205088038542282822d1689442522991564a9dd25229d912a85150b4962299629383637305139d2db4b0b982490bc7890e4e164d769e70819345931bd9289a6c91486b39922a289aec1e8db4962952f648939dd252459656e4ca4a735c591969b25334d92a2a5a4b922cc995144db68a269b44d25a96e48a34b1481696e6c8c2a2a2c9962bd2245924a94b362b53ace06471f9a62626adb9a778a1bd78d11c5fbce85523699a6635149da4576de4c98e4d0e8ece165ad85cc1a4c534bc84595cc35370144cc34ff0119ec171a2b3f3840b9c2c9adc441615b1a65b4c88205950c4241109d4e9b8da91409c8947a211a9b3850460cee5cb0fda781f6c75f7c11bd8e4b2107c92ddf752c3854f7c823356aca74f3a14b89374e8ac221084166e86d5a3f240e2e9ac31c278a7f81f45c44718e38f977e897989e7e60be633e6eeb1e3e0a98f7516a2504b5c791925ae94d8a70ea955d7e7b318eb92f96805f7598c3f262e7fce633a8d9a671d701fa67327f5e63cc7c508c12ace09cb0773e7459c82ad18b048f785c95df8d303e2a929820f38244e3cb939420ea258e2030ff0c985b974a1cd19d270eb85366888e204571ab230500e6422c841031aaec0c20d548a4027eb411428531a4a295d5d334b30c26c0274032baa98993a363f6043f6832d38d1a195448e9e0bc74c44be1aa51a3d941e0d4e6616bbfe61afc78e79964f7c2d34eda6e537a5d2072ead921e1c70f287524e29a517b96358632a852c5a70d8e2c22a6680c4e5c2161ca4b8d907b67050c57da72191061777bb3e1ed8fa6c5c38008bc3e15022d288ff0c8063894823be401c711569fc8010a60453f4fd173055df8dddfefaf653208e6824043ffd0c5a8823b6220d18e10b9f605e6ee45103864f5fd02ab521944c4a29a594524a29a594524a29a594524a29a59492e6c63717b8ef36387e43f8916e73b7a1176fbc680399e34897837c6448c4d1ffc7578925daebc28d71e57de1c61b895180a7f8dff82b5ae1c683a2162211b07063c441857b0378234201ce5832ab70e33bb6629421460c18648001e3c5185ebc60d161613189c1645a09c3ca4a090ca512490b1249e50b2a2a295e48491975613412e58844285c4041096d211402690104e2b2e0b84f163e1f0f163c9e0d8b6dd370342dbb42966156c0b0ab0ad7659b585ba9502b9dc2a5916794320af046774301de608e4f601ef136d36c818b57f0a9bd68c3273e77ed1fc7695d5cc2278ee3b8781363e49eda9cb3a675452442931b1f5bf1a3000cae3c1c22d4852bad16621a15bd2e7b76c9ab5d7b86758d85ed58161c5f7a71099ffa32f44fca1f7c92d1c699d0e7b350176be292fefca5f1463e331b6163b3e486535f8c5770eaf3f8d8242ee17e90d7d2f8d7f97a1031514429bd0a68314170aa3b79a1849767e2c6027723bcd46055bc8251f12f9caa116db2c0451bae55d10a297058705de0388ee36c6caca6f344b4894be2cc92b804632216b9ba071870ebb68da1c7db479bd18dca3f98d6757ec98b3621cfaa78b05197c7de479dbca8e39448d1a08e9b8b9313c33a32ae69245474160d059f5828ff42a187fe45244042b7ac505b1b0aa1a07491159174b338052facc14518dbc6254b381545bfe314b7ed3faeb96dadb516ee8481f37c0b45d53c7cbc41544d2f5ec13115bdc88318ad8836f04a74b4b9369fcbba65424c7cfbb8c95cb7f69767e2dfda4f27c575acdbc076ec5907023dd4fd0079468c689f37c21dea8836ad8a4b96449b25d16649b4613e7d111df354f336204511dbeb37e0392d422ec1791bd85e2f3b298ad8bcecd83fdd063cde76fa0564afa7dfaefdea9288d73ecb3a131f7bf6ad33b1674ac076ed0bc83c13fff36f9e893dd3f60564f77c01db3fde120ce0c20d152b1ddb3dde06a490a288facd5b42be7e091d9a8779595cd22a237096e02ce9097574770beab846b4ead4fd03e6442235aa4f1bd5f1cc84a5220e4c31450f7ac0031ef40e7a0753489f48df3e9cde9096a9b7bd8f7a327d394615642928e590bef298e5534ac8576f2f13e35e00ebe869a5c7a8f4828077de2c83db0e0cf38ea0af1790f9236428e50e08f62384f0ea669e0c673c2716bbb8b2939dfd552f2b80b02344ca26d2178bd3c88b4976bc8c9f8741661f4f5fae7d90977a510ae18cc88f5e96c5ef05c630bf5cfaf272e36733cd439f759007f5fa059b0227e9cba518a597ad144aaf022f9709d9526a21cb20bc1ab3a5949965734b96dc2d25336aa75bce6e9652f225df466a840cb6eaf23c38e0702e76637379564b29b5958755a5a83974363bd413daa81dd41c66cf9e5c8487159fb8a5cc3e190fabcb430d6aa77958059a482b5dbb4ae9a3d245a5eb50ba572ad55a3912a972a4979a447aadb5d64a22bdf41d2b3ff750f785da14c314437493079f799d11ef1fb80ecf93a254faca49cf462552a9f4e2efe225954c26d3594c2613cb4ad767df1e6b1dbd3e6691a345b669a4aed4493e89de2ffd7ff77f4524aa22efe35eeabe52ca4a5ff94ac9033212b1bc9a5eebca6be995f4dad5bffec5b3a862ca62c0c04c2c261fbfe9a67b4046a217304ca6182c26934a0c189ce82696d10bd20b0f08f7ec4046a293da543fb55e543faa5fa92fd593bab805a8a3f5d792ec744587180745b79ca22d12892e1a1d8ebaaee146a723cfaa7428598bba5dba173e554e3402d551ad1c4aadb5d65a6bad35140a5d235dad135233ccfbecc7915aaa89474f40383ff778964f12f4e36e9f4f9097eba1c0cbdd3c209f6721effb71439f6fdd664411f7f398deba0fe31eea3e5de6e96a14f0f3f12aa0ddcf3f1982d9760ebb1f1aba3cb77520b97552d452dbe48bdc767c368fe7d9e7d3f9e8fb79e6c13ede07f3447c921ec9528ab8ab039c3ccccbcb95aff122af941cc7719cc705191c00a783d6e563d9d9068b2d2e5fda60f1e4fe66cf3eb005de6459676dc59e9db1f3096e3ef8984d0ea8b83a5c689383276eb4814f2e9fb147de76f4b6a37a3035f864f9c4527a4cf2b65cfed772193b634eee1148926cff601a2efc07c7a02219f1412c2e3ca95b62091baf08096ae113768c9bd8e0421c08c7c5cfbcc8da7c6c208b2967ef6b11723dabb7dd5759447437f3780b5647ac7fb167b0232bd90e37cf5a8edb78f435c3892046c2987551777d80b38f5047348a367c1275b149c419792a3bf00667bf2cdf837222f65e19c7d0bbfb38528c6bbf0b639b4fb66ee85911ee8bbf98a5f4220bf42c83912373a0afc78b063bf7d28c68008c07f3265d23e0f8dfcb855c705b3400aa2c871304549d60602aa4fa9cff034c79ceef4861b8fc08714820d29056e3ae23dc67eaabc3fd62fdcb107c79393825c31e74025409c1910a598871f92a5015d32898c2602a536de74388e33a57af083e411ad5fbe2ada20633175bd2e466f1c21945aac6acec11491663656d3b1ec39708b82fda441cf1c633124ea13cb2b4f6bebe44e2cd3c538feea28b9b5d6ed653f279d601b11f12bf0bc8f5ec59ed5fdd77695e0c77c32b045c062f27b86b866310701fd481a1c7cfe329c64336727d80632757139c7d766627cc05ef30db2bf814439fc7f065e4f3d0e387b10dbc611fcf56c01bfcc837329ffb7ae54644765ea2c5cdcecf18ebf870ebc1cf88c46b71be28051f2d37bb82e4e423c5441bcbe2544cf2b1c1c59b6853412e7c42f9c72c1b1643c14b228ec845a4113b4fe7790c67dd7594ee079fe0b54e083e41eedf0ebfd7751de1b9f6b8d3281b1b141910953d1e72deb7c3fda08e12ee0b70331f6ef614efe366dc6c27fb288abc483a4f0ff62382c01bf0a6208f7823d4c1c01c313007fc019e1a0051cce782b4858538976fe20c3ec6cf584582a88823421afc17d289bd2f087c7282db107c4ce68b95b1c3ee2b723dc05d07220304f2e9f2300cda6ca620f5cecb6fdef9d8c59570eb21c3fb7e5c20f0f646443d5ff35ae08c248a5c227d8fc88edd7632d9fb598675df065a17fb39ebfa5727645a493d970b7b65351a8031d073ccd11a853702de80a91c7ca287b966c07d36ae9cd8c05cfa38b332c2a9791aaf12f4437ca484e80171d48834e8e9838037ea07753eaee325e5d4c0e2c6efbc38a1f15fea5223228d6441065b3edaba2c6b264dab8e68141f09dc615d8e2b0b33ef32e73c9499b37ece59bbe9e3ec6aadedb2e2be382373806c6ab0258d947af13b9d824fa6464d8f52416b68cdcd85ff6cec6d0765f1e96b9971ce489124e113ade1134fd10527ef47a3b8fcfe1767a2a035f34d05ada153c84ba7e8a8e094bc97d670aaa9274486fe7faec10561e8c29d3ce6371ed40926204317d6e08230e4dca9f2d875776e40d01ea0a0095ee03111409d600232e4dc19bbdf9896c07dc162f26a40e75e3aa95b913570c6157e4b5fe9be7849da2d47e219882a9dbdd2a7f7914a6fefe32e8c3c53ea3c2775f0ceb4ce929e91359ecb6d473fe6c01bf1f23f9d6c12b39889accf142c01eb7e11e732931b67e24c8dfbc59909a14ad64014734cc3e57ff10d9765cdfb08f6a08e4e7b36b3199791327b27b4377169f65766af6716f32e2bcf97352d353ecb314976531013b3086d5214b2cc06f792c5182f13e7638cdef43ec9448b083927b7cb67e40fd45c1a7a466d94029c416df0c49def2546ee7c67d1461ca0d363f046a75260c4f8c75d5b214a74fb94aee1494443742ec6153d46273a8ccf15bd3bd157c2b9fd1698822e308582699d07071cca45190aca516e33abc50d08948bce72ed9eeef3b48a4965de742b6c00c5e5aef20ca45923303c29445ff1e000e5d968db8182222a9da55b4545e524151595ee606bdaaf142e6691a345b669a24ef2897bb374d9e8d3ee8bf733130bcb33959107f9c4c9c4cb9d88bc7d99cf6dcfe3118997f33eeda26724edc5e30684e8a3be96893efa48d44638453a55397d1fe154ff3b8d504edf5dbfe89aa5eb252abcf16079e9594c2182c33622a656f24c3e58ae721516afa9063720dafbe2dc8030c9c4bb7222f2f2269978492722af4c7472552ef3b92a1e8433ae8d8879934724de15efeb6bb71b11dc553c22f192bcaf0f7a4c7709889207447b3d10d087c4cb9534c82d39c2e9e993ba46c2277a95ae93f0892eb9d9bf536c92d2459c2e82e8475dd4824ff4a22ea274710b3ed1dfc019f4d712ee854ff49f873a173ed1be808077eb78d32aca71dec7691e7d0c430ad2f874c202de90894eee65dfc4269cead3479cb9f998efebf1dc7cdafde28d907a3f3b24de79db9fed1a12a330618b20394e2e2cf72d97b28c60ca4ec82d9146675a77788a6789387e68a12cdc729be238fd877e439b0cb35680e1a12fa2d323b5a6d12093bd65736e3b94d0d0e6a9f250a610e0ca907cf5c86f00b8f218bc01c3461c2c9186bc3c497e5caefc079232068e183160dc8001e3858d172f586058584c2a936925b5b252f2a15422d520915408a0a2923280949491004623d18b48844203052514805008340304e25c38eed3c3e7e3e1c1e3d950dba69d342ddb21cb300060d825e3ba6c8bb555875aa947e9ece6bc52feca18f046775f7918f006335ff917f04624b1c01b729b35d62a6d55423df2e3b1f0496655dbbaafe58ad7253d10cef8782c24fb84db3e0fab28c116527e3e1f8fb3f36a507cbe4ab5dcecb2c1914af77308ba9f7f1e3fff647143007439f62cc8cb0d794914b932d93fcf89f43d2274ec1f4926f4af48e84914b9212f092e3bf6e9beed9ef73624decf3fa10e0492f9301007397471b727c17941ac910e70e01229dded1f8f27b3794a9ca06fa2bed626ea29bdb58d8ad56b827a4b603088810f568082233881a5037613f4daaf37a179a4ce4e6ad5e549afe7ccc144e4099a43165539202a1e6259701fbcf96ec4ca8f22289d9f737aed7dff0e4f0e38f997d34f1fdc005e967c6d1c681031ad53104c99421a224091c1966dc527204a9878d12105127c42e20221d2f7880b7632d7bf22f7fad525e15d8f1d13ad9bbd372230083b19258c748003ab9b44912ffbf5d87948583870b1a6552f8dea77f4ec1bb89af98eddf6d9e938c28a51f0629d8e23ccf0297e0ba2c59b563931df049d142ae18919227c6109ad1ab801a788116eb0022cd6a0040a245be4d0182b84e0074f9c10b146ec57bd2e0f705b0ed8aa99122d3bd7733dd753ce664a1f28eeb01325da39ab1a0c0c33b730c718792ae11251a89a358da2bfde0253d8afebd7755d751b8263143284bb510d4e220dfa59d3aab80688a2a75309973d10874b6f313a6ba0e05ecf3aad8a4e2ceb38d1692d1845e3c670ab5ee7f08952100b9fb07fb3e6d267f4b38653534c2ae00d7b1a844b9f6157853eaa270fb7e8a42905f14ca541c181ddccdc3930c6f8c9221c99a6b1c02e5d03c67b892ffc971af130714e498a11055bdcfd810cb670dcf341fcc0a71884f7039fe29370ad8a3ae04b84b16750a3460d181818962e7b5451d901e3570cb25fe75f2c4e892538857286095283e4311ab88fabe738553a5f442a95e0f48c6066268ce217a4c36d07c9fb822872476ca3f2efe5d60f756b776badafb7f0067d7d8dfb01317d7ef4faafc6adf5dce2130c0cb61ed5fb4c2f29c1fd9171e143f02b2a37a1a876e18b975637ce7c910606f0ca2e08ccc53018ce117a16c329cc45c60ea753071bb543e739fd10aa94d866c9c31ee31916e37a018795ba78459de700d0c95803c095022ece2a64b073e1162eac42064edcb8d91470f1b5880b043e88cb15fd73b9a5972ebb52e95ce95cba0cef2395de52ba0edefc52fe42b4f578f12aef75f4b0ab23d6bc0e945113fc57e39afe79f701f1b9e9a58f3e37ddf4af74a57ea95b39a9fb4a875da8d41d92cebdc634ecb27747ea3a155cfe0b1857e9be202e37fba7fb82d4b8a09b58bc1e3736a6f9d2e76174a679a803c6ca905b0fe1ca6b1744bb23133cd4b104a33a13bc1705946e093ec1142de5894da553620fea943013d34d5de92593a7049fb8a4d2c1fbd2121d1c952af47c5eefb2049f18eec0c4b012adb21eb74c3f71aa74285229a141ef8336dc9aff98c9159c42823b2bd12acee47df685f7712cde47ba246fa7e32b5a2828d84b9cc2ce6726bc410e9ea18a67f2bcef57e571db2113ede3b64305eec0d8ab9c9f595b3a097ebed40181a5f7c6c3749307f9b4e2791f3c91784b57f988f452473aece0127cabe2a5784778805bad627834bdec701b027a4aac17ba765127445e146e813a213b388f075f3ec21a84b2d34cf558fdd599eaa10e0b719650e283d93902863f61200e0cc4e11b11135c84d26f3167945a1210b8b8b08b0e29707072a9615d6e7c2900eac6025cfed74377a30c18377ee50715967fa51b516e0c097199fe6537dec21ba1470b030e4223f51fb80eee8fa0128bc9fbf8827ea3850ecee8baa37fbb23ef8bff2471690862e05224424e8ac0f8813802189f602443928cb8002561e282ce7144b71da11fbba387bcafc8057dd71d7922daf1c3c0a5cf288cec0979f6c3c0753fe73a097df85c6e3b7cf878a7356ad4b05b09626c9284b397c734352e212e3fb6a280736d5cd88a82939b458d917c3e5944776a2a7ba8758c8469b43fe131123e25e114127d4ec22778dbf09f7b3c3ee6e385533edeb4f739e0c66f1e34e2c6f3e03b1b70a3901d7d1e7c5dae3d77416a9878f0b5170bae0bab2843189e60556cc24ca3dd8f692ea4e154f538093f51bdeb098e64499f9d71c6089f2084bc828787ccb2580fb27ef6814788807ce8459c1b3722a217679a7010979b0b8bc41855906536b868e372c58597b1ba5d33d9c55b3b242a500f849e794eecb30b62062e6ee9c22a62e0e4c6ad7a261e1ca5a744639457a3c0d986900621c991b6d1898d4e7835573025bc410fe525e5d52d5df05203e6e5c8f9c473464f493d6f3eba06a3987a2c29d0b9974c23cf8d35b4f24f94f1e98db4fb865c510b38ce6aad15d0fd94b8a2c7233cc0190db8b94d2ece6de1545ce28a209063014864034666247084d302e5c8bc28cf308d451eff0891f7c9fbc583e2b97be713d37fba4f0397521d1d1d1dd991667626858daf10cb1e5944daa4d2458976095f7ca30b2f9fe8e1275459888a97ef8eafd61d5f599100f972e1214f177bf3a58f3086e70b4431f7293dd4f103a398bec78d8d174303ee7fe1975f2a691459c669e060337b52c239cfcccccc9252296590eecaeed852c965828b0417092e9a48d37541b4aa832879292f6fe3caefdbe10c79d8c1ab35e1643c03c7871d8f782977798e3136082e125c26b868e09320f009c3271f1b9ce56ac044f8e6e213323ec24da2c8ea72f36d4ae9693d337fd29ae081d4ce043d1ef78bb90c6740530f035cbe0126fdeceeee1d2dcf1cefec6017b70f0f84e10d70f990d97be4c8b0a793245864714f175ad1640b1782b22437f210f13248b0a7f1c9c5258b1d7f454e1f631a087f12c11e9178db0312e3d97389ed810cb67c7c7384fb5caedca1802b8870afd32ab29f2c78a33fb721e8af673dbbad077dc8fbb4db35c8e25ea78f1b11f45756e36d0f7a2e4274501591344afee29988a446ef8b4ba8642fd244286212ede3f9881e67b61efcea451a111dd5db6e48bc76e68b4e88e86ef598084e405ce8976699176d1a252f2d47b28133e4af194ea55e521ae955e6a30a2953e92289e4a5d8c81a9d802417a2b55aed5cf771a4f95d74a43d2bc25d93868645229117ea3ecf3218393207b8500d6598765da00ba2e4219d21da514a1367ea8f3c866ded220d9f24dc408c24e28828975c88abb55e6eb303523f2486ce9d76406c689ee779823c9e1c373f20e02e1faf6055265b4a295b57135c3db738c5846d20d432ed1f73124e7df5f62b8037e8653dbd7ded269f6af45ce9123e4928ae8c31b8923d25db93b06af3204724527e9ca4e1543c2251b40b96e294cd717a343e490bf984b2de07995c296f3d0b6748f9a4d268ebac1ef5f866b224218bcf6297d9cb6a979d7de8cd68a79d03e026d5b40e86b3d795596ccef9ebbaae6b6e40586dce0bb33302911f122f1d12af76cfafb8302eb4e20651dc2c6a90539f76586fbfe289820332bfedb25bdc783bebacc1911b3fe79c9f6d473db7eda8309c0d2eb3f659fd9c3ee6adb5d3ce791b8f59ab61f1d67bdde659ee10d2c53e44deecd9ec3ecf3a6bad96e46ad79444713511ca516e55b61dd9493eb2aad94e1341d1b9ec59d5e206843dcae603a59b17853aeea16e1ea56bb970eb110a854221ef8ba167a16e7e425d066fbbc963de7a1a9f600f1977cee97df1f5a078edf12b724d3eae76ee424d0811796ba38d43cc5ff19b32487c7388e9d9c7cdc7f4be22d77a1f2e6eda3d9a0d2ebb158134db85b61ea08d081937de0697bd878cecdb49db8eedbdf96881e1ec316df3617f3dbb9e615dcbedadc775eb99884ca0c885b7b71edaa79d2d37c64f205ce2d53e97e801717179edbe0cc21b43e4b5ffb22dbbb4a20647ee8d0bad80c20cf7c9fd8556dc208b4b3f6b91fb61bfb0eeb2e20649a80fecdab563dab6637b56b50d86c39e59ad5eda0d08ecdae6037bf64cab57cbe59b9dc8048a5c20b0ee3a763dc334ac83cfbaeb5af7cd0bbb969b619a9679da859707f9e462e7e7e9b34babdd370ff934e53b2211144b426009fb9b066f4cc997ef1389b75f8463644156e4b3af508397f9502c422c8397efd6c52e3870b56b9ac7b41d76713fd8326d1e0fedf34034cfd4c30077de0057fbd434efa31f12330ff3e235e3b5b2eb2c361ae417a2b83dac9a3d203da8076448bcf14270f2daf93b7bf0597ad08b6c454549a9b5568eab2829a3d7aaf2ea693a04f78bf77add88e02e84332c11fc2a13ef3561a4d263847ebeb9f635ebeca20eda19e1958ecc6a5fed0c36539bd1ace770afcfb6e194e6a3afaddd757107aeedba8b2e2e6f40f0eada2eaee6413823f3bebe3a2ec2b55f3cc0b59ecc0160eb5e576c456d5a4f47dbd4d6d12d266d43c345b8517e90a5a8f0ed65b07f4b5c76b9403c3f75f6a1cfe7f30965c73cebb55c5270f0d765e2f588f43dc2e341e8f2b1e6b97d0c63f7dcf2b5c7346f2dda78c019df066ee8a4256ee8f52b37dd543aca53bef2cc143a4b03aea9fba68f1653672a793e5aae4a919a1bf264b0879a34049cd15749e9469dcbf711a174df3c7b109ebe8f2783dd72f779fe391fc479444a37fb76ed9ecdf364324f8913f24dcc63d69b50004634aaa30ee9fd6854f5a26855abe6a4529e42ae517dd94413b051f27d08b46a7a5ca3e0db23915298e822dc59924bafede92965fa6bdbd130dcb35ff4d9b416ebfa5967fb58adb5d67eed5aeef5eeeedb1e326ec319d2fbf81f782bfff565170f37db9f5dcba5dd37e3463d186e4ee02b02b71e322ebfc81527930cb67cdd6a427239555916edaa9bbc19e41fbae7aca38336d2f6abf2aded5f6dabca3ddd0c7a05dd63bf4171ad0e71e78b3b1e12a8a27c8ca36d2c22ede47d0765f75a40bfbeb843fae28eddf9e24e8ca42e2d1fcbc738359a86eb9a46517969dce1132b3e61d415599cf7913c3672793c4448d740312747ccb66d1bc8db86006da36d1b6de748a4738fb1f5d83c10c9a3699aa6699aa6699aa6699a766ddba1e950b3168b03eefbbcc627de969d4e9aed209f32edea8e30393d6d72e921143b3b91155991d5979eb3b058e8334ea441cf8744e4b597f95c184ec1303387ba8b73708a6f03de1031b30edb10d7c6ccf1468d9e7122e3a4d45a6badb5d65a6bad15c64604e8d949dba4b0d73ace8271f8a4c57176b2706bad350bd7118eadad5c2b4e8c03f3a065bc2511af1d51925df11ad54528d8077a1b03c6813ebe21243a23e9e6b294ac072deed0a06b1867a76b6e141c1497be937c39e87b049fd37316ac428251f4f4f3af4bc097f69148f384c405b7c5a51f6b71e991e0944cb49c6acbd1c3d87a588f48bc97f731dc78a49c3f43b3c1b107e499a1d58ef4cbf3eefa5ed65a6badb5d65a6badb5d65a6badb5d6fb82bc0c71d9b6b6fbc5d6a36f9fd1d0baeb0b3945f280ac3d91be913ca4cd0a40630f88b4b2b6b7b86d23d66030d30760eb21e30ee1538622bb08450034db896e448a10cac86499999999198739ee3033c71d6666e68b795bc95e347833ac833ab8da576ddb6cadb5a6ea61e84f2f3f915e59c5388ca2af35de5aab7db10d61eb556bdcc1e114b5ffea2fc659f178df2cc51d3ed1df80fb709e6f329fabbd3ddbb69d5e7e226d967efbf61c9c0a7d7b0ca750befd074edd2dde6df3fc651bc2b3a96c5b4b104168e00d667883e10d8637f8484d37e91d782349cab6a3b50ec219a396e9832e448ab61e9bf7cdd141cf04a0bd554c1285a49438240fc7e3e1a08842a218de184565e21d9db26a2071a1696191392e84af07fdabe7fec52797fe5b8f51fce47d76b6575e33e0e6fb919e71687c0354c5d3974a3bdfc5f5dc7235cf44445ebecce7b207e18cec76c4356e3d52fe79cafff17cfe49e9a0470482c9015b241ae85c1e2eac820645b8bd0131da3e9e9b723ea77840465e8c07677cbaac6505c8fb814fb4860dbc81383007ead4ee836fe846f5b3990d8e670d1dc20d88d0ed0644cab3db0d88ac53b9a7f2b801e1397799cfddbcebdb4604e81efee8da4684fde6118957f3be0632f290e013fd90c8a12e7302f9e4f99ceb3ef8864b3fde103ed11a305f8ecb47824f3d1ed3672f5a7cd2a1a491770d38207cfb8f7f5d88bcd8d6833d22b2e5798015b09b3b5dfee5c0b1e74edf0b9d31f9c42d27adf6c2326df37c38500845344a512195564c2c2f60c4b0c1f5907139c9b5931200bc874ef28993f0697e46e7e221893951dcf913e91cc9728ae329ee4482b13096b5b2d378e8680fcf5ab61d3df4400fb7206468333a1797cf383f43b9b8b8c4f0a993dddd376ee3ddddbd3d7b7777c35cf5eeee06fdf3ee23a377b70ea7849454dedd4c382524e5c3bbbbfbcce294107eb7901a0478770b79617a777777770b19c03925a47b777777b790970b6979777777b7704a080fa777a3dedf61dbd105c0d106c871ddb011536a8a06a075ab010a9003c7d55bd6a38b6f74f0dac8b191b3e5e4c0645765a20ccb5a365a5bab05ea7f1a85613a78552c150bc46a160aca4728a18fe7b352ad40ab55490504e25b1ae5e43ce50367556cc9768b657c64747c195e1f582c560d0278ac0cdb96ed0bd3562295f8be20808c010840abb5b6ba1819dfae832c192c160b8b0123c64ac66ab56ab974e8f8b6745046f370b23ac8686ea17aa828784ff32e38773e0380c64347df43fda9eb2b59ace2965c226b50974938252475d51356714e8e34f2c44509f97c3bea8d33bfd24109a9711fa66055b358446031615d715142500e3aea4dc3aa460951f9680b56754e0e174fda888ecb4d36ac92abd5cd0a6795c3a4740240c12ac96245c19a8245848b3ab350e715ab64abc5332da6693d11c00770d46316ac923932470b99b3450e173831fee2a8472a583557abd6ca06f5f804aba64d72a1604571518f53d0f8cb518f343abc3b690675245835495a7059a02e04ab664e909607e0a80721e33bfc832d98d50b8985135d14ea2756d1550b0f9f7114aa879f8efa49b62eaf6e300c73ce9d574ece2a6795b362b5ea6ab5582d568bd56ad5c562b5582d56b7ee7ce7b4ea5a758ecdc959e5ac7224ab55b6d5a8796b39ce4ecb62b5582d96cc69955d356ade5a8e5bc99c55ab6a4ece2a6795b362b5aab65aac16abc56ab5aab2582d568b35735a5557ab99b39a392bbaea796b392e87b25a455b4c22515653cabaf3dc3ab754f1a9482ffb158e1b9e0d180f5b65280f5b6d1f00b45a9cca98b00adbf8aa3a785339a99c4f4e8e0fdb6b6c32366d7b0c5fa9eb73a15a20d451502d1f0f5f1f3a786b747c2f168b75b146a3ab7432b18b3bd201c4d5b8502ed46572f15042288f615307af4bc777c4d79a2ccaba580294ba91e8d66451d6a5d57c959426005f6bad1d8000629448a5c7b0b5d6be8801c3b462823746c777001dbc02c8c9c9c979a1f1e205cb5f3c86ab4bedcab5d38125068cae8357878eef4b072f8d8e6f65b158ac00b498babf7b0cd795cbaaeb8aeb6a07192b3a78d7e131bc4307af8c8e6f003a785b3abe3427272767060f2519ab2be3314c5badc2588d9a47799fb52edec771de47a2ad3b9f9d7ac058ad3a89c4418c75e74936e0e43f6c85045b716a87cf6346580580cf4fbbc363f8d4c1db43c77746072f0f1ddf6c07cda5e3f7d0511eba3e9176ac8cf7515dc6c3490900bec385c83b9fa1b40edee8736cbe226a7a4ede0e1d003ac828195d4b07f9a44307f9e47590515d37ff0e362a46370fa39b7fd1413ea14a534507326a34431d6414a89b9ff96d5e5b72e7b3198910bbf9cc456bc66e2ed4a108898958a463c41938ccf7f5beded5767777378c261feb638d317a5f90976d88ee8e4eeeac99373d82f752c27db3e6f200de20c2dd9a88a37e3eb972b8fcab065c1ffb376f6c1371bd4f371fd7fb7a5fd67ef600aae01cc2e599048e3d8349cb2720e26d39050db8f9af467e5dc9d715ce857d25e2b0700bb7c29dbb655da5515f03a793a854acd8098316324523020000003315000028100a08044291583498e999b63c14800c8ea85866569b864914e330841021c8100006000c00000000a43001366b300f77943354e0659f5aea28c32206966442b3ff3c41224984f166402d6c9e614ae9e65dde7b9f803dd1622f0df87850c7f3a0328c92faa424de8ae1e30b70f1fb393bb100392ef108e9689f4e7f7c83aea73a16bf199d96332d36f413004b95a3c19e8da6d30fe26d3f882bae380124f8641d24cccf071c6cfbd32755f9c30f6e0e1adeaf2b30ead8119811a203518dd7daa4e420f681984a2aa22dcf8d7f0b01083efbe4a308e042983bb157027da9a8c577ba1c1fba73dc401e4ad5294879af1a642b2450b2e5450250fae602aaa26789321cd81cc7be133e011a6dcdc2ae25c31ac9a1fc1ae3f95cf55d578d2291763f3572e337f1fab5f6b2ee71c2618964c0a65ddb0ea6b2386b8cd2d653d199d368dbdd706a3f0802460c50f9b22f222fcea6c1aa2ed26c1ec66a2074c3fa4d0ea602fbe877a058a5b9e50f4148113be070a770235e868cbb62a57e11d004d81c496694a30fbd742915b72dcce18d6fe66bf59689bb1156227a4f25e6818dd29c1cbd513d69376139f8a8975d1cb04f41e348ef1818338c77cbe3cb7f462565c15ec8cf824c202ad2f02995a40fb727d4320addeb203a419280f924a94ed9b3b223290a34daf3e6a2bf8c0122e3e948a22668898883858bbe7eb63f70c24861ea4912e0e5924b13edfba9e3cc90281db139fe86a843faf60d6eaefa0f6fd5b1964282bcc9b5e7377e6d54506c3449c2bdf783941518069cad13221b4d613b110cb7b6512e40108000dd6d66561d25c8f28ffa6e4c8d5a061b1a83140130fb0804368354110db2aff59452c63a07ea26bedbcabbc9f0778b36431ebe820c60da78a12f227f36bcd46c9dfb97ef7e2bcf4c3ed8015b0fc68ec9e09a6000348ea19b6c2d5359a5f9a5da85baf920ec9f53896df17ad8869ce6a4a4f613ec4e8d7b664a4134a07dde57d3d7e326f488c7aae9d31a0efe1b3f5c108373c9eb0b0ff457f0865d1ffabdef7c4338c3329dd48ffdedbaadcd70d70520c438e400aa1f45f1d3ba5e4c1c00f868560b3aae70c0bb249aa9da8ecebe0f1752071d228abf38da3bcb5a3f2598c8616f174fa9adb717e7d465e6f404bea3b5c5576f366d5e8e9974d17b25517f428838ed113aa68d5fe8e18ca3895743e282475002642370062f042e762090d28f1b248a2ef401b345f1c4e76b22b6d02389c344e4df91d676c48f3b19fc75027aa039662c5c64d414243564d6573b3fade779869e40e975ac69be67308361694a3e9722ecac3edc2d98db0e48f3c9df2fb3b0684b9e5bc18feeddb24e1bd0fc9372554ba0ff6b859367132ea1ad42bd425c802a92c526c33408655f2cf430041d953b53547c3c07102c207103fa03290168c770179879c7539036b7dd4e8fcdebc32ae9a8f756a7d2c85ea9f3793e866da706ecd42b2d9a515b7998a2cb786d97a88f32b99394623141c82d487cdf66ca10d9706e3dcb7348c7f40f3564ade7c78414ef8ea4c9ab7c037e25977b413e3bfed8a684655d04923833630aa6e72869a41e3fce5f64a69644eba5d6664498adec260e9933e8bade49f9a74af62a97738e43e9684a74d1b4adcc6f86f975ec3ef7611df9ba1acd355f2b7b1d83a8a0fd30ef3c99bf75bb858c06fd8cb5ba83e2b95d7bf8b31d9af968344715dbf9c1fda18aa85c49cc86c9230cc010f523901ab7f240bb50ffb1faef5a95bba420df44826ea73b6880b1fb7b6e0afad1fdbc8c72ec274b337ab2b94ff715fbfb265d54c2e751244e35463dbc676d3725205080cd2f5532380c10f5ae81745fd37e9af177c1631b93bbe989445a6a417b96699761ca1b1f59005701d5c6655680ae56d4c59e8c7ffe6842205ed8d6fe68cbabaf8ba6ca578275d5f5c30fe4573ea56d48236e3efb66cf15fa611c69ff31450398968ae7a7c1437e62bce16c36eaea313ac03bc4f6880331b51fb5e1799903200b143d3fa9c092bbf7c87be2c6ee721bd4864a228801908a883e6e1320bb10ed5f5141c369fe6e678ab86af4e21cbbc94c7ef076d5fc32454c02177644e9780ae0fe02d762166d5b0656b34297423b424b42a445412d4b14c84ca2a48367716c1a99e0cf61bb6096db70c7dbb05c0873f363f11c044ecd5cfeab3508f701575da0d0d170cb5233b9db36ca25905112c6cc7fa1bc7593b53344d2430f0372bf507c721da836fbe1c802070209f43437bef11ad6cbc31220a80398a747f9aa771f4094920deeb2791f16e601d2add73ae2d3e4a41082e38115aff5fa64615443760a613108c6adc9e159e9899bb98f5017ca033e1b6aa44f46548e3f446e15a0279424b5bac89694407e056151f0c5632bf9ff4ea35aff47d63ebd7a12567e99c3a55ec11c42ffc76849656c5297a028aae47b9d1cc433890b666cae80062fc8301df894fe4d28b8a09e6f011108b57c9af93bb4d95b622ac83b8bb6880df25239bc66474909519442132f7961f95671caef1e8463b09274971d1136c5fe55f78da1b745a117cf57e797ec125ad8c7b42aed9411499c6c079e40269fa1873f60d66d06360cc0b30b3227131ec75d57ce7dcddd2951092eebfca55889304cfd6e903031f1e1e449e798a446b653b483bf05421b0196a39454606a130c36217ae22ada4d0c39624fc1caa0c99398ab88ef24f6211e4cd9a9828a82233d2ba0534984703f72faa9ce24d64108b98cbfe2ccdd02cb6cf40979f960cc1be588b70c3ee4a95da605a32a6489e97b005f2f7e45dcc29eee4c91f55c40bd5c8b344a4609b6d4f4d7f5e38e1742cee63eb0aa6d8ede8d26dfa664b585802b432067bec6f100cc39f74c007cb7c031e9371d0dbcd0512fa67bec10aac804a99059210d68efb4574fbe0cd1073ee6a181fcd7b75ed3a58a102ff3c3ce38ed47d92888dac58ad1d64f2ab183629b35231b41f0680df9bf1e19d629e3dabbf844739f40e3747295717d3262ed2b1c128aae8af08c441f5066617f082636cae65ad18a282afeca169e273a7c85a4a432ca317be8e60d2ff65d7c0997cd63ea489290c22016df114015617c028afbb525b4518bbf4a3f2db236105ff0f89e1603ab14efbe07ccc6cc248c3f106be44dbb6a3c295250e9967a5729608ab095d322c14727d7901e7b7786ff7186331e8a0ead8f025a7188fffd6e8acdea0bb1d8aa02b03cc6042311194cfaa428351d1d2ff00de9174649947d51fee249eb02072bd30c871438a95d1da3059ca3a9899d3d523bb68e43fb878e45ab6da9be7cde6d86e51b5464290035166fd7233d2d18a12711cdd146f7f570eeffc638e807748b0062d25fe1325f65c810343f5374c0b46bb90bcd6c17778b4b1e7f42cf0c88bafc8d64f5ef1edf4b3da277da9094a11c7b6502e35b4fbb35b19e2482cb1a8b5488361da3b36b80f92e482f9eb1d22e9f5f7609bd3f8c8817ce2c7881f7784c16efc6a587320aad693c20ec932daf57d390134c741a36d569c2a9242ed3ea0d497390b8554c769bfc08f08d6f3527f55def6afc10f8e7f4ffde743aef4144253a917d679a1a3d4363ed75c85203ff2bc892575c440e418e82f8b897d76e7bb4c020c770850617768a6f4857a1efd39861ccd9577a21b1cec41d6917803bba1c347336ad7a37372cc7bbccc3937ae744a47b6a9370b4a8a87376a421087beb1decc31082628932ec7ae54111da7b592e70d741bc4dfe71f32fa5006d34fc43262dc7533493466921c38922d156db0ca707516dbd4a632f3c13596649c33e090bbd8b5daa9f9d9045a3866f5d34dda590b82cdb21c9bbb42c9db09281d83bfff0455724ac41910085b1df12ffc59ec08d49bf10d10462178e976364d8df836a171a4b72e8b4be87912a4ef58cadfea41437907cd6d38b604fcd2a54c5cb5c52e953f06e441502fe7b747aa8f3c014b4c7b133b96ad8965bf4068db448b7758f1e2d1703fcdbc925f58c9f1c2900c12933da0e5d6d7bfd03b2a8004f7617ab685a1b542f3a2bc418c8f017853b590de904399bea52092f1850704529f8462682e36f48757ce84cfeeef093f57b33c6e38b8dc9ed1023f9ac425d028aa73b862077ef74b75fabc40d94f375152bd97cba3a4c2dffb22a614b769f99b7090f01819a28e77c108259f9b1d8d60a1c388bc323348f8d98d4e4faa84226cce4e6dae34953d479809df001aec9daa83bdf45d77facad8e591e12ff5dd422741171b9fb8fcad0a1e3f79f8a50be7bf7cfb27186feb0ed3c7c12938fbef6330ce67debc21030ce8ab0390f0a62828bb328df4cb9de20330940bdf5a1ef9a51007acc967ed59377e9719ddd2d96eae836507eb97855edf4bed0a86291cb6eaad4e5377305344e0ccb968c8bc9acc75606e971ff086700498fc5e9403e3b6bf49f0c0cec74ab37e5b4f40a81c83f589d5a9957fc1b4ad7a01175ec0a4f048d86cac3cd69ea6647e22a94328e62c5475bcd66be9227a7645ff89277edd9acb0a686daac6e8f78a84febb21a8e6a452bd0e8360cf5eb3761e1ee042da4de8dac751ba9063c9d45afbece5d4e32a36134b08c1484405d7c451b172edcdb31b8cf2f1a858569b45c6aa2e3e47113f2ff6d8dfa85ef96146bb34d25208ef7d77bf45d1d7ac9d6f718e5560ff32952261bd03fd44bc4f2824b88c50c3d2ccc06875de4a9f1e05832db43c34af20877152a1eb05d6deb0d879f2fe1fd2b83147fe4e4f1eaa026070808a2686b68fd6079eeaf9e8fae2274f952a6cfb12e2fe34ed412abce55fd4b7f5b2197f0c3f3516948c25bfb05c69428a12168340aedc6a0d7005a1b874e63d03416fa0da0ad1174360e4de3a06b10da1b4157a30c6d7f63dd27058501a20c36e7661cd9dd11471b7d9d94119ca5e75e1305eb426ea81c1ce635f73e014496bd1780e77c1e517271afe7d904189e3e9ab94d4553becb3187ce521c8c1022b0ac991654d8bcefeebcfaa12f494fab48ddafb6edef875e2eec9d4fca7475c42f3583832a967d3be8fe346518ed8e5227052b69b0d7ecce4b814ef428d8b63dbb3d94fdec9195d878d0f31a67c1ad9459346dd00ef2886bfb788afd03c199cc9dfb05ba09793bf61a6821e476ec31f06628a7cefae67592ced8818aae8dd6c467a4e15393bedd8beb6aeb621bfb81e0531e8eeef661ca9e0b9cccebd5e3477e4e7b5f5e4ba8a38f51b4147f4b3dd4526eb73b0001d8cf6b44d92ac43314534f85699e3e2bb8194cd07e81f4ce2a50f49dd7fb6c1079391eb3981c57db0ef353f2b5d7b06afb0e6c6e5e63a07cd95c8df965f238c38e394402539f0ceb9571133f6e6c30af6b9d9a4fecb86b326db50471b1e8aef085d9bc66ab37b770d149a686bc8d6db931692e77ae1dcd5adfd569c6b7d1e22617ae753818ef9ea9f1e3e51561253f2290b89d6af7f455e659ecf9a5a8e15280194aff5581f588656998d42782e0c0380284567ea02b41dee4a773a334cfc7ce5b467638c22681566a7a380dc3bac94d3c5ceb19eea281203158c0765ceb7a71e1520c44a73e050dc2042769bde9e723f61e78ecb2638854528097d17b45ce3c2c6d2f63586b1c7571080504a532a55bab2bdb62e52346bff1eb57ba2234d76ef42b66d976c5185871740909c4586b95ddb20eb7f988b9a1d437732a3a514ea9cdade5613cfc8ad82c77849e4a54583cb20b3c21bc82df9bf9b98daf65c59379b80ac6760a448eafb5d8ba0aa15cecc42b3b62fb88abdb638b989d91d7164109fa945270eddc3cf0f0aea46f1d2ab02b409c8c17986b42127e5cc73ddecb0243fcd819406c1b2dfce6cba346ffb2f1110baaa4051e45655fc7a9c04f244c6669ee78a6a5bca395bd432e4d18942c044438e49effb457d3a94b49de8a8f70487a91e02881323ade19715d2acc7943d387f446213fc693e4b310a6012a1502124e61a38bcf5400fb693db36cc382d79350d23598a9053cbdde4774c3c932c7da8b82de4e6e21d3d2816e75033d1c9f74aebe891dc1b51bd9a07537ea4300a8cfc043506c9314e7703a6b0b5ee471d3ba04aa2d7f0151b9eb3a019a8c2576a56415a588286b7c7b1047bbc8f1078236259b8af23444eabff8c48f93c0763706af5488e778c95cf103aa8004385a96488d2983d3af2feaae157999890cd47fe87fa903a0c52edb2069386cc917a51818730873abea54da4c14430bc1a5a38cdb12add0bd8ee0439ab562f7e5820734d863d1c55cacb422990435bdeac435c8dc55fa4b2c03c0b53f1a404f313aa16d1ae80063173fadb4c030d5d545b2580cfed1a2cea70606efe4eb3ee04ec62ffe1e9cc671d2ad437a4d3ca321cbec0628f9ec0be228f5b0e27b2d8aa1d4c385afb530cf394c46c6fb71e9389926088c024f9f03469caf1d95c948cf4815cb4a53b7b209c99f323b7dc695ba0ff088753cb189d11e3837057fc59d5b5f3add3a891af3b0f4555c75afe6a788424ea777632a409bdf90f19d09ba9cf800970076ea490f3284f8169a872cc99319e22ecacf238c9a01395d396bed9dadf088a61dbe32479a69aea3476b16786c9a15c5707272693f1061bfe6a62ecdf8c5a98f1d6400e5e5fa1f66a7517628c45c1a6edf3967d5ddd83763ab6c3e346376af95c551aed9e8d7d26c9b5359fff01494573b2c553ec19e5e2ba69299befcfb0efd91e57b5debae64e52a58e35675e67bb235700b031e35b052472e5db9333444f76ee966998d5d6c657679e68d3e7b98712ad9f0dc0e3a2ca51d21c780beb212b16281eff43a36a7519d4cbea4b9514b33ba657159ab4a12d117755241542f53deb558d1c51e42322cb28d0ef7e642a9f4d14c5260e0d91ebb1227a316426ccda3575227d545f5f2e65d8b155dec2140bcbda2214936ed2bf0bd8b2b43f89db5a971ee074130f0838cf59e5935e5c9ebee07a4dae90d3e557f993da656f18a29db3c0e0212b6464a07bdd70b447a1a5ac2bb2c2cb3bcfd3d3814569c9ae7aba0839a720ae84195f01544bee6f9f47eae89b6f4ef9881b0dab3c53e56fd7250f1e00c9e94e39ff6ea614417cd4d2cdcf3b517c724fe3f0e94926df858181d11f7ee50d7180a24526b105d732827ed1c45fe8d9185b49f28c6111a3db8baa4c039a1d3ab621b8ad5a535af24db8e891498eef5ac63c676775107fb925ac21dc758624847bb5c02159bd13a061645c91efa991fea70360761c45456b21604204c569e95d797195c06267e2fd176f8085ad3dcb6dadc2b881239191f9f3bf1ffe6039f1f1d8d84a9d2876b0a7be5d2e921683a335e37221123cd4b4a73872b6ba4c694b4946dd8ddc95c3e61b9f6c1a3b5b3c3943ef439f27d560d110462d2c2209ed082e706e1092b8ccf57ab098a0b4895628552bb24f4572a360a40a4e2b634a7081e27f412885ac8239e666c61960e36d3d9a7b45d31b0398d80ba9c592db75680ddca8e16c98dde448153c01b3e643deb177c25447f1bbef9a23b9582c744b4837f7060047a9690f2e76727756206770ab65a0dc8fc2c79d5fce3cd0d932ce0fcf0ce82a2da1e23f1e6c099df71692f9d6b73c840de8dcbeac1bf56374728fe33a2f9a8d625d7bd4912c20e762591102e2cbc4bbbde4dd65557d9ded2d6cb889f731ab2ba952f42038f53fbe0b23c326dcc7938b6dc3b1e14a31e90af7c797d65f08ddee4901fbceef05cfeaae79de775e967c99a9c038c24b067164a7b960272d1940401dfef2801575593f82b2420a01220edbe5c2f8b6a0a3675c1dd36ac0976c9c821488d33a61d3238deafa6f17fb809f48e3426dc67eae29baf376e21a074926bd720b35664dfeee174701fc4a1120de19b1a8049eb4b86e2f4b2cd3b43992017e118f29dfc764095ee084d666e30f15e573d177ffb97ebd4be6f1a9ebb244a517e04a09c9a5dc511381c1549403da327dd9975049d399e0b36a9b191846e5347567fa0d1e7b4479fcae393300b3947077a6292995c35a05480a9f53136077ea2728864308343f6ebfdfb7499c5e8cde26dce636f14f28838a9409006707289293db362af4b364f0a0e7e05364d70411960f6772b1f69b1d95132a451cd0cf49a8801033b647cd04d91ef5b588a2b5039a75296e1c2d41a26f2ab7331cbc921f5706a8911e14a252352c487e3f43aff66b01756168c160316634541683ba10e7c2313c4849898231551e10b55722f64ff299288146283ad6c5cf443643de1d9e5908673a8cff356f391e0a984f97842a6abe6fe660f01a759e18279577620793f6deacad26c02b4cf358a4ac89fe432ebe1bbcd12a7d0a24bb7f42375338e9e67eb0fef510774b4cdb0ef3252bb70e6e09ad62fbcc1bd87958f13494af11c5ea70d689c62e136efc2415e6b2253529f08f2abbcc40d4e06b34e4c8526db1f2a52e1bb932d978e1f0ba26432031034f66ad9cb37743ae5079656edf0587f4c213a0b23b16ede4f0e79661c8c387e88f139b4bf13a37ce29edb8b0d97fc012cc22e31b26c59345f7386e450734c9acf42b1c2265794920e944fc8544a2ad8bea7276cf8fae35677fd9654311792c9caa2ad69a74e4bc04211976caa57c02587fe08afe3fb9eece0d0df4863cec75596d541566fc0493cadc2cab6fdf81bcfb19649ddcae8bb49dea1c07f7f352a86f8a4721741a99b202283bbde99503e965ede0829bb52238b851418ac0d3a6599d3bdfccdd01f4933b4542bae34ba9580ace5c71ee267571b057404422a5d146b3fe94c9414563cb31ad42d4fa3ad4d284a536ffcfce7248ad5461acca393a12278e8eeaae3487508466e2bcdfcc34f60c57ea29f1ff3afd3e0b6a186cfbe930ae9dd11b4a7fb0be85e1ea7a9016dd97ae7d25b1d2034c7df5f386b895733d023db59caf5a08c4679c24881404e7dea306b93baa454814054875f920b1fac6eba698e1e162dee8b97af0b1ed99f87fe6beba600876615ad0ca68a6299e7bce41cd56c2636b8cbcaf4be7e49c467db34d0949872856ebc3ff1ce947837ee459446551867bf613e52bf81b395028bece245e0e5aadbf1c30367140832c750343fa87a77bc4548df72a727840aa136d5a0358ef2de5b9deb51fd79c09356f3523d4c1407c984c026809f5d01f2fb219157eb5b610cd7ac90d1934db6f03b21bde5063db268e06ee2d201fd0a692370d9bbf837d78d468511160023d68d94b4227866f9854b66949414436479d2f5fa9cfc1658709c39d2d6fb393c59770f5dd5436440c953875f60990d9ec85a00ac64189096c1b166f08c0d75a8a4eb175199291504c8950a415c2e554ca6d3df409b095d1f7d6d5b15e1fb49f961268d7cafa74c809b75185b1ecce12df98d07676dc399eb4cd702bb4533157152cf55311584eb970aaaa218eb72cca5648d3b3963d800ae3a25e9eeabc984250707a74fd2a233e9289414979e5774c297eb7ff00061da48011174990708d2a4c1df0910ef62c8bf235f18864d1eddc68428ed646cae84f440133d438791720751286869338c4697fd8a7a2d5b53fb48cd8516de451c66b0a72339cb43b41ba27fd37d80d87c3ff8a8626830b407b5a16be091ba1280ad8a4e143b7450a6d4d068fe58ada0bf1954d65060ca25066ddd1f4593c0f1ea6037e13b9be5da0eebfe9b0fe85b8b01da40e0062740631ffdd11f431dfccc2429665b6a80197be0534199774e4d365313bb801850c81d40fee268c31a4c4c48855f2c51ddf40dbc443e1debf436f3065ca21e895e05f07a6e1c1df9c049b83c86cc96397a17cced5a515be8d3436d22f06a1bb31b670755d08b4c9c2b31b401fff1eb70c941a73540375850faa785ca2b8291ecede0eb04e54dea5c37552edb891ba9a7bdebb59be60e72af96c21c909e4df94db8ff77447eca0c9675b2602fd25898e4e71852b21f16096ac5912ee385204b460e201d663bd516cfabc3b5a7a9cf38d96d1977c721b59347cd754421630bde61db12d027da65e24224fbe7e94ea1e61a3aa17e03aa4a5d2626f23c5d47bfd51d557c55f1e75bfa5b2f6385009aeb5fd7950fc652ea9388b0ea5d916e2f340b34886828437d01f16ff9bd4244c798d98a594071af832f1dda3324176199061b0db38222b838ff4fe4c675ecc0feb9bbd24398d3d9310fd2df42390baaf5f105ffc601cb7b23a230262297c015f140337f6a00e5b4360d3df1719dba9c5e122edb1d3ad65b01a795e1a67090c7edc87702b98d8ffcfb8de0a6de67f3057c0008cfdf568b486290bd80134f84a0abc2ac3bf288a23b6ec610a356e15ed517add8716752cf1829e888a28dc0da392567aba517cf83183791a00dce238cb8ca38f5394b758d40219563e3ca91bb22a9030ba95262d781b3eda1128aee5fc1cd7f82289257b196cfd8015cdff6e550156a58beddcf808387ff1493461888b04f44b7601a3c82cf06f342e996edf4003a9e63ecef08335144f877493190773ccd1b560024a4f58b4e800f8bd5e01698e51746f618d057e5a5c537a77b009a2866d24794e65d05172717e8ff6b77943480043edff8266f4a5dd45df4e970bec7febaf06e0f349aed9a7486e5946e924af86b62eb19cb6e3eecbf9f584661fb684cf437c8bc4780af10b8035660c591faccdddc5b261dc5467991721c24775f0581e878172aafe98139c639adc4a18d6d9d986737b8944aaffca28a6284287d17653e3252a0d4a898cd6ec7e5a6351a791f87df0588a4504a94bb08f2cf17416bb13be058c973f107345e6a8712910da63a3f08c393f15d5181089cb234dc0145faa8eb9a97f40a6a3277116c3899369df9bb73b03e58faeb15d280a5a8e7c612f64989bd002a552110711761f21d0832951e42a6869189f5ab5db8bde4e89a4fd8ce75ec0616e9422d8a175b77ef33fb0108a76b52289925133cd05fa04040c0856218219e65ccb10bfc8e6376c12607dfb582ce0aedd23d8de18e0ad8a023c62869c04c4214388ed496c07df5d51810be415872b10b41cd042e26c0c1b8b039625a80a050df8c783ddf30c5209107b973348dde1aef5535cb66298abee4885dccbcd7326faedc45ec743a8ad6161b2c315a9f4697971c0f6b9cbd757468ce21c8e480281e99a3c1986ece2e8812c9af0b07da854cc67011d155e448e4f62a1d3aa5b95f475c3d829fc7226c26451c3a316d460c17fd6465e2b270539e0e853760350495060c465c80f5d81522046cd85809960ca9572c5631628c1865c05b15a715cafb87efb15734ace38f22a3b0e017c091a1fc22cc7e1d52a361548dda47b5926b68edd1a7d937506bb770afe03f183ea74c09617c2eb32ccf2f91ed2d84dde245615a632b3fc9068e25646ed344cdd3c1eb07f03223f61e84590e0eb772cb474f9e4ab8af365694c62692f083b2b4fc3823c748ff90800b641c78d664619444acc9099f8d334dc345e8c5b467d603007a5505540634663583b958073fdc5a4ecb398e04e371cc4fb3ac1d12ee2ea9c0c77655d03cdc4e745ba0f2fa352197602886fd470ea7f4ece177014c21b1502835a73fe2b2e14f1c229d5be1d43fdb3a5979c981eb6ce221e61d11187ed022c1151493fd2e45c31f9ce90e2a4748d2292d116e94aa1f68813ffbf5834374615b71bf6a4f0c29b0096145045654c9205b18a9b957320b50609b4ac3a6afafe10fb5dda01a4e3b2ab5f9a08a0385d8d274bd6f23e2213d19b7ab25836993c60b4923f24033c8d539c1a9e00ed1b5bd4ccede3226688b6c71bf93db698537ff52fb5fcd978b2cd932ec116ea0199b6ba461e2e9395fb6a45455d6740201f46dbaad94c759f58d67d78c2b6de7edf5e106a7e8139c704e4abf47c87c263e75d83717ddb6a428401096f5247f6bd29054b442c43d4df1a01537b7a259a0f2f5be8f994a7dfdf628ed1d17e893d15a3ee5d2f5855acae1fe208586d51d1dceadb8d8b874bb748dbef39de6eb3b6be666dcea56eb57a5fd8a7de21a314c7c36b19459321de35f96801fba0e743ad82fb40caded108a76b67bc1175c8376aeda5b1a7822a24f295b050d2e8225fe68261fbd758c77b7b3508ac3b0666f64e20dab9fbef7b89b789a73ae46dc00136b8d2204125a834acf592e0d20a2c564344990d25147cccfe04b6f5cd77a5d9cc294480a32932769d4810b832c6502117fef48cb9577b215863ca26a9e4e394261772564e96196dd67b10bf68ea13a262ad844e8a23aa63181f40c12cceb6b7a3826e83133252e91543f605d54928d09b68a6fc8412202373626c06d01d18b290822ef8d09011203aeb763a2f31b13729ef31082714cb4d9145c86f13efb7e1713609d31c1af29265cebab0d748d89582e8e5a9366587997146e08a10929c18a9951298c89875163a223030d2b6a6817a8f0fb007dfc26ca1ddb8480c26b5dde0d375e838b7540a208ef02769167a240cf843408b3e8655da29ed5263086bf56cf44663ac299c2918425c0d8b5547b26d6d4f83b6e8fb8de35de26c3615ccb76ab1951e4370ef23516fa5b96fdea50293b0b54abd86b2c2a22bb754b50ec41ab79ff667e9aa0d90b2b5ae29bea4b150b4d7e7bf6cbf45564fe83d55116670e163ee28c49799bdf91cd80998e8788167eb666382f8c706081296869361ee2b1abd47a8250ff533b1f37f85a50f11d5f8722a0ebf93cc970121d02e092118e8fef9a1e51c6fa6c4582a03d6336abfe1de072983995609d25744146535b55ead07fab96e3ee16b5029103ba5deb3cec274e3bb35691ba61e3a571fc446f3af23116372beb7befa256def2ffa42cef3a8e9e9629a37dd4c611285f0eb01c1a11d38abd94bcff39356d53dcba71124fb710509cf92e4ae388fe47e7bfc819de213b5c991ac864c37c5b205b477b5f213b4b7f3fd9e090cf4c4fdcf9729846b685827e2d318bee8dca62695ab76b01c76583663f531beb54865f87689744907619b9228a77c76e11cbe4cfea51687c7da5c861c2666c9cfeb2f555e619a85eb83892381914b235543abe7cfe6eadccd9a6b19f51b4f60ce81620f84cf83753c9b6262bb0d612a51ad779b859f5a7635e7f66b73828919b74a77cbc1e95c5a41ca04b1e9070396d882c8c32239142285c0ef2a996b5f50189786f65c47627f7967dbf3f567808bd036be0c51f9168b3a3c32d306bc79d722f9e336e81c67d5e64bd5ca0b98616a2f01ed8057a1ead4049a9aeda7d50fc2b871ac242c89dd5fa39c916e9e64446d82165beb02af2017408af7f4b002ccb2a04d3dbffe2266207c4765dd4982d197831941b9b807b664702d4381ce62b7bdebd5eba418f6cd5d5a36709b00f3ff719ea5d68e41ddc8989639566dce46e1297902b500f5bdc40c9e80532c7618c9305fa91258c9286644b8864bf996a1b7f6cb97aef47cffe79638d1c7f5abdd2104299f49ff1dce7e5811bd30d37db60646e4b47eafeb04a0ebe029a935252242c47a38ec1a11e98931c14fd94ff03a115024e8c54d84aa2c7b1b6e84f8076770bc8ba49bbfc53deda661800052f2e1b0e3715373087377021f1b0e091189ce1995ec4efb8a0ca696d769279298711766254f501e6c9990fd964463a007dbd7387890a97190c71d22b7f48c94b62976fbae80112c8807d1350d2167d820b29ae5c8d1ca336bc073484c1432aada96c318a14efbb6fda3564506503f7ed159f6fae9411509aa02ea9179d4b628029d27f7e6f96d4ef3f628aff0731ae05a84bfa48244417d1946e396eac0ec2696ac445f5ba9854828952ac1d8493d21a42c93c9517b6c213ab7214c7cd312953b11942b12a829014f81c75b7a08ac6a848ad01005ff512bcb08b2e56993b60ac033159441637244ff4c293765f4b521311f27a228eb528ee8a8a7634e86fd19cde2b8734d81afa0ef9050e1e9f53b39b58b0181a1e0f4deeca5d18469c25f6e55361fc99ef0642879bfe6cfb070671df4f95f6451f5926cd2aeb8efce28fff204a68db90174a335273c58016b04dac8e537a12c165c52b3cd9023e60049abf5796c3841fa5ff7e939b3fbfba97eee9d195ec3b745812e4bf20de82ae1958981e247db796f86e0f8c04164c4184096d714e9720d2af301b6ce2e1cfd9733e802d5a7e8cdc4d09d898ac72196122825ad514b480e9bf2fe9c7331e458a497d4e3e2e66609a05e8414849a97063f20814696c4398b74ab2ee964a04cc6457fbb95de4889711a219ef906d0960a47318bf18984638a2c84c91b8e08110013a1c890d78c228978d86de823752973c60ca50a40219e610e23ac2723cdc0a6164eff0bad84f51f022b7cd0d805b3605a94e2ded4604750a19ff1b37e29f5b91e75746d4f6abc3d8255938ff400a8b46aa8056772d60152e6aa844cbd0c09b891368244fb72bbccadb338d9c1f27f115016215649cb2a3fed24895d4daf21cc736c45b2e525ace529c84461e9318ae34121297792461d34985ec03e89a35b3cdcbd31fbd6291ce2aa79b1385ce4bf357fd14185c4fbb47dad5f813b1acbd6d3ec131fa500ebfb2c25580001845729c5105ff7055714419fdf7494ece5db1f0b232dce0aa00bd8a599003e11a4f1fda07bb3551a0154922d4f4170fe6c43b6bdeec4687ab710c06fbec495cee20181c4a05f1d0344977d7c04cc14287abab5a2723c23b187a480749e0ac62bce7e8d5252bb85a5080af44656724950616b90be3bf5c9f8b8dd2b5fae5557c3b02283bf82f4c5615d21a6d29b54327c31c6769588e771d3cc7fdffafe06d3d630ae8adf47fdad9f49c9ddc7b8bfd2d8f9bc3aa1de0a05753d75f1499613e03abecdbf99f1acf5c1a81ae3ba851e914455fb84180d56144b676431658685f5da096280e1a7aec9ef5e823386fccc4f8df477a03941fa20d56ff1e2483ab6186cb59ab81baa7c8d43bcd37154498b03c6e080fa657a8163f7fbcffc867ee4886eefb89ca305d7c7579514a9f8045a2a6eea4024602a10b1bb371982592e9bfe225434cea4cf8d981a1c8fe002b5de55abf8b371c3eb66af2c7c5895e61921f0456678cbaef0f85273d85000e35630c05e9eac305cd931adb65314a11f1e5adf8f964cfa5540ea857eb19f967aae328d217c8035d596be9cbb3341bc77b1ac1f8bc4af36e7d217b810c0bc1ff72f703974ed5faa258ecfc911b0f6ee371bac059738f9fde288d9a65f41d100643cfb543ffc071885bc805589a04526f0dfd96e3f0de4adae0d57d40c087725a507c9bc1e9747f1295b53d6346c127b720f575eba1d53f1c14ede6daa3eeef16b5887a0a69731e7367595caeeafbef5cb217817726e76418aa92d36f687fe934240cee997d596458b69706af86c1f99c580b52174ced7e9103167b947031781c36e217bc24e9d1cd0047b1fbd19cb98369dddeeaf9c67799a05b8afd58b5f4899de4dc38db4e6ba76cb77d9f9b5d7515c9189575afcd713fa9d17b315a2f1f0610af705bf06e12eff5d67e33af7c7bdf0b1f683f2b4c37c404f55041b5aedffde2ec12d42f9b216f8a2d3ee14f2b7eb814f3e8988a7aa012bb1f5b190427b642acc7c0b2f5cd1932a3e8aa6c85686770e5a977fbc5c579d833c5facdabe6459c39e96d6c3cb2af3bfbdd249aae2ab65ca82836950a2acee94e58f7e601327aff30e4602933de31f2437733372f85f37f7d6ea33c81154d396dcaed669732dcb9b16c028ffe43382a8a7a0490bf0927b824082be32feb29cb966444c1aaaaf55d538f2878effc0ff12ac645607df1b441797cc30d26d16851326f80be70bdd51048ad1c73d15520f5471432ec28c9f65df4766a0ac4af1828a9002bee3ccda5cab0bc27319dba090e4d39ec587628e50a3b157c99a0e71cfecfd4c1c7332e38d96064e79e85034c104ef70c07e7340d99bf06b9b78046456ed65bbc702c1dd849983d3bb299379490ae13a1fb23c73b1577709d1f16b8d9235661b1684ca326e5db43bdd02152abda1d4edbb54ba6b15b0036b5a9067991b995dc349b664a23dfdb6c68282e4f1405813c89135d0f214f85adff8320ff6e712928d49d65cad41dad96e99b13d1afd0d040488531d60ef6a2e1d67218405e703e4aacbef3f5284ebf53de6404a21dfa2c42a3a184462a00beaec4b8a69d72a240cfea84d54344e2155adb0f953107c1563b82957f3dce36b2a601952d8929f119211705260f007dc184b1a70d464e3d64182282f51b3885c0969eefe4628e60567b8d75a4eadfbaeadf805f23f427d6cbf83a746ea9a041c1c3792f62423aaa49eda24cc67724a39ffaf255edc563dfa73a9fb2508fd5f3f54e1da1c7a4684aff9df0654a21688b947f30ec9843371cb7744921d27cd6d3e4395e36ea67968f16b621089b319e5e39df33e7d8b00c3b91eb513591653bce4542ce975038d91f1d81218e55724ead9d8d7d0091354549eabc54651977250dd5f883f6b40c04386b4a8c7db8c0f641093dba760190e4aad8c1f74ace89bac9e19561ca0763b1d3eccd8ddd01973e8aa7e80aa191f0c59928045d1d8cf6fd56a4234d238d50fba3e123a925abc6ec21a123d967ec8fff1f9f5ad43bb6ffe7bdc849fd6db30f20985008c05cad4ab610f91080fb23c0a3c026093958ef4f7098508257bb01cce4d3bd473b0a453f56d9ca7a7d12ab9be707474fdadbfe56d8fa06e2f62deeaa462119aa8b27358763bf731cff5511388829dd72118f787aaceaae436e36f9eae648a7f292f28bdeb6f44760d9e334a3b29920f1c26495745b1389c7d81a47ff12cc4310cd8a2ddc42efaa90c1615b3600be52ade41db1ffdfd677b440bffe53791e7e2b3036f590c201ace9141fbc469fbf6b027903124193d066ac8212199411fd93c5be1ca4354651fd066ebf0697f0080c06685b1b1a07c8049a2e5c06186103af717be9403be690e14b220537f816e0700a00a6b0ac484684ecc8800dc4a67bcae951da0c8752261036c136b6ede17c3f3188910c800522d28fb3913799c546591e3da92890020d2427689edf041c34a22d3312f4ac67875e35a3ec34b4e58d1849bec571252e2c1f6d97711ee08878c1a1d4bce53730b1fab4810804d3078bf6cc732248c4499e732426ee112a2b418a0d78c32f8b0bf8d8ad03902be5cdd5fb8cc06062804e9060653fb8c9549ad5bd27cd85d7724f6eae6794681d2631f1ed0cff543ac95c26c7dd83c8eb4f72ad94c2eb04bdb4eae11f627f197d1fa052a2c69d6c6d906a8c4b5e1c0681a2204c0c6b6b9f6357395d493af8ab98fcaff45ceeb9f98dd4a27322647b3dd3f8d8836e4cfc0b0ecf0af9e79f9021380d8508118d3f7dc0c7c5f9cc54f9043636d612694c8cab930fbf670f0440daa5a81fde6d32989867625fa88820443219428a50e33dd534048bf60c262e3ba2a7e41a8147af89393d57087a7bb70014cb04a17ec279a78dff0bea0fb6be06b6ff7d03418c550698f6e81b8f331e419d63d7ff1378ca315b2f50e075026865144c10d7c1daf1fee5a1cd2988bf82d0a6969b00a3d597f59bb1d089a6c20dd5d211289d3b1c4ee754d3ba94129ffb1951b520f625630c276826fa7e1f84d9dd7f4ed667659449d2894b3bd22693f69736546c427df415c7f0ab7db002bf0be0c4c6500cf2f37b188087f9d302d74560f9a257beeb7e7cd61b7dc44dd84af654152a27b97733e6aa08c998395708644dbfe3a18359aa9c5b9cb4bc9125315f09c5d5e261d0a9388083794243474d393c09ac08251121e3607e42dfbc562700eb7b48c18a36ec701581bd44625517e8ce8fcb0183daea7023a7a268a28f22f6d65da0dfcc7a7798e85256ec6d9adada0fa5ee6a91c55e1f5ef273e6a83a11d009b650ef4aac13fc7758de995a3d10ffc9d717e4b7c47d8dfec8d2ed23b7843454c44633cf0934770012353863e39b5540909100a505bdb0cebbd6fb1c8fcbda9b3edc1b7492dc8e190e181e4e84b1cf4fd62d1838c60c626793f5fd41df21e9d56062a4fa13e76a302a07d508d3fbf3f03d20311cc6efb8318a57c57f93425c81827a93e38249ffad8bd8c1c839112e3f7e99623d4a053c2a0eead53578711f987d6afec74a60faf36854c481847fd0b0f16a45e860db18b2d092a274a06b39749a0dad4ce147ae8c1a9fda44c67731146eb57423e24c0e0db10e4950c5a2544694f496c9d144a0c36dc59fff11d2b1f771281ab0b36f7cfd06a09c77afe9e434054f163350139d815e1bbbe7d3c7c00d6792dff6e5dcc3e3869dd00162315b90387e65f7d1c5e092b2fd5a6c622cf00fde610adc604b8658f0a4e85a05ad7ca69d1a888d278cf032017ae10dbccd3014686cafc1228a5da8e657f6804538430e5724e544b06de4ebb8264ab4298998b2e00493a747780a686e19d1175a1245556d64c9e5dff2063d02aec1545a9f23827fdc5b59932bc0b5b5511c66428c7aa46c88468584c5868bc7f098c76a1810686a365b6d53855a0631b7ed1084c76a1c2d4c8dedbf4b1928fb3ec35ef4e737193c84574dba5975d9ec76f3abd92fa8195ab249226eaf0323c1626264e093fe53861834383ee808ccbf5e95c60545e002e9af84ed4748aed67cf96e7d560d290e7797892878a3a2b0728e9cec113d96e5a5e355f351a9fc30fe045f884a892b7a21a1e8be95b601aa4b48bf5d08142d6d56acd2f3497a3ace05ace637ce977b744ca005ea19cb45ba4df6ed51717e72ebcba74781074ecda64c7377ebd46476828faa799ae2a5a4d8e2d467e81a2ebd6749b7996ea324b2640a09129d2be7c9477b3114fdd9ef7fb32c11207289a049b307726905f6cdb49e551ababcac8081dc37e048dc112f4ca3549f882d3c32074830db2d3ce5d1470a0e3166fb6be9e9e64252a58e8b1e2d4dc850970f47020e232461db97bff2e4a0b720caa6c8c16b249e24d6ecead0908b6da3775361086dd027e34ed1dffdb6f251ce97b1c53ef0f29994a872f23d592c68cca9d9144699760c155cacc764da051e9c4d5251c7a333343f37adcc5d40172e8a7122a4bf73692eb1348fc746e0021f37d0f98189c21837c6e6e387de2bf6ebf24d0a94509861ceef2822fe8f48bb0b6e1a1271f8491247f0e3c8c909382016907928de4d188041e1f24d7a4753156e026a135696deae8cd241ed9666edfa616ad072b9d344e3853a63406c8ee979900d4926982589958ea28638eec710e31d5a75c8b9a4a1f14488b95de9fdc7f5adec41295652405047128a68e56ad571fa0f0e67be3f7e32e0d43a4d7efe1a822bc4f898f67434a104042933ebc2dbae58bd080f4d30d26b4c688daf8c49737de804aa838e33009f01d2b0ed36dfb3088ceeebf3b3c241ccf4780c964f0b372a5f61421bf86fbe939d67f71eb08294baf4f7d94b3c3a0d1a27da91b8e64a811d16853853cda7951ae28826b3075aada988bf423d7d80eaf50718b525ef13d39a62f48618a03614a70a3cac781b75d2509b2f12d8cd1d591241eda12742803aac34ed3f2cfe06f32182e5383564253f06172d641d0b9700861d8d6fe4c7758153a496be1ebf8309f3160028e977badcfc32d0202b75c63a7389aca7f287cfd98b7558cdc9774123dc14b9b863013c3d25d7616a3d6dfb3b9f1edef8e0fda4e42df93dbf92f1ab65103073684c03b1b063405bfa0297729e07b9ddd957ad107be9cd73516f5725280dabe775f1bb260e1c670a4b148dfb016f7e275bc3be534f6ee434fbb16ee4143f4d30639dc707f5c2013fa65ca9ce869849a4f091d60ff4539f2bbcb66aa442c3343f2ad56aaefacdbc31fd37df947fa06ab3839bd19cb6a570b50a09c2b5ea56aa71784f002b354bd9a39b2a067272c31cbfee0b4d4289c167884860967c151110b7cddc712d8c76ea3bfd67fdb5feaefe7c88918217bda6023e344d44cccbddc8d4f665e31de248bb8f9b79135989bf394ad26808e5808f6a7728b367baafea3d821de1d0d97f6cc621ef5104d03b90675b43cc43ed68556573c7dc0d1f2274c483b78cf59838e21978c2596830a00957da8828edf6e329bb78260f888aac06a29903c9775bf7f8b25ec9bcd52a9be9733658e063dc1c24acdec9dc7e8346c27e9711a4b4618673622e4f03256ce29c95b28a1ca08ac280884407403ad3fa5ecc845394ff1eb402fe0285e8ceb3360351d532e4be0523bf08ffbb0b6079e2961cff9ae09781bd84a65772258dbe822980de4758ecdfa1d154d6f6207c42fb2fd295001055835c54e6ca20340e8d01cebb62551d8ffa23f29a6bfe43ca184d538f66df3f3d35df1694ea3437d3372132a54728e2106102fd5409f6cbac06cdce54fc682cf745fc74161995e7de038a16f5c3b8456748bc8f8fd643eda62b8134c0376e19bfbeed2648fa1494ad62f53e481c61d669aa5b70ddfa3dd497a2f7dd0805f840253b12425dbaa8fb279d8577f44416c49ab3572cd14bc814d3f3275d4a4b11d996037ae08f83a7a23f1654f28c0a747c70326bf1306b9a611fd0ad8db8aadb5764f70b22e89274e780b99dfa9d8aa049bce9425ceaf6ff45a46db9088b952e940d143ec9907eef20bec2bdf0ccc2a69ce1c7e16445265362f02eec9662a615e6b06cc7f108c1a027e4f43bd6ddea7a50b272a1b09167a85ab95d1e60f435621ffd52a3376ffb563fdbdd43db9d95f781c89163853622f1a9ee351efb4bb156798bd6916f2dc84bac078211dcdaa76250d908d6c24c882f74acfa29d632d7e017f2626c33dd14e269b505204bf4f21a8de34db646b99eccb89d1bfb53eef159f5ab516d5b220514c2fd12327d3c9594f0b5fa1e75f67f84468b376ce16cde152cf88ddfb36f02e3c191d32dd36cd367d80ccb3090185b8b5b30857cc8139689827ee4787f0e24321bcdc1dafd03016491873eccb22884123e9af8d7c6844eda8ea78bb1934d1abd397cfecaa08b81cdeb502010b4453b0746538b5f881de70f62a5b21c3051f9934b869ae1d02113e4999da2387c6ecde4e5f5c2be4025c378e57e9defbe024bb0685c78896eef09c9fce3c99c3105979c0161b5c0835285cd0d3aba8cb5ded1896be3eecc00b8c92a45f8ce116cdf294f2cabbbc5847bceb1568d950bdb7230fd1387f00ac4776f19d88335a41f7fa4e12a875a4093c5ef38f475e8ea56ce69c7fc167c80ab92802f5201e7fe02fe0513ef3919bdfc1f502f9ff3f374f757fb8e0c471d5030989213940047df3d0e2c87fbe884f774d861140754e33f35cd6b6be572e506ed6206834f01fbe8278356cd2699ed25994b6158555d4566efe9bd260428b6560bdcae9b6ee03f5705404520e433fdeb6265d09c8895c1a1c2183412de59936dd967c5599391ee0e4248758dedbda18eddb019d2d331fd443587cef6c196c39bcdb8d7fd00f57e54efce160ca39edb863ff6d49bccb55b681f18c61faf8d8e6c428ce0a8bc94127eb8059f4cb4d2e2e4de59bfb8864b89c5f8055844a1ac06f71dfa4e5fbb1100a7f939138216188c8ace0c15d4d3b191a1e4270ca81fe012db28a1bb21ed9881f25bd6f2928516c800a709b68022f23e7cf31a7d132d1a441148daabc613d4bb56b9bb9275c0f8dc2e45f051fe66bb542e9399b703e2ae632ae623bfe936f732e05e31fe96fe2ad4582617372545dae2c361c340f60d0de3c3c78679ec0b8d201f6a28ccc40fd964c0aee563f19e02f33a010f2e9fc0f8603f7bf0defcce8866c46b529e980fb560a961033da36071e283f7fd9abbcff952a58ab6c3f34ede726035b3ac7c922d0ca7cc9613dbb0a47b3c7b4c0af42d8b98ec61dd8f3f65e6d47dc6d9c9b622ad86e7bc679a2b520d9ef413517b1d8dde739ebf0a50dcef8d1b157a1fb878ababde01f636528be7fcf8177877fe41d837c99d3cd07b025ebce38c107f52a3c300d6adbde7305513fa82d0c964ca85c829281e525fd40231c98afe1b58a8229232151bf64a98d57fefb036d71b13a740f7544bb399236c6d3b20b7780357a45b115d30f38069f2f066b92b8236cdecbd384408b615a9dae783f034f06af057864a2780c0c0ed79bb877f54cb048de750eb7635ea1192270a99d479b42ad2d65f5270d0ebb5394f8cc38fe8dfd34778803096975a644bb6992e1e0113645396ac5a293757935e80c1694b4e3481023c437dcbb6cb6c69c43b688e1d4bc9068a4080d174151957f2bd3860cdd2fd3e2fd53ff4b3c9dc4b87267884c2c63e05603f10c47ae77223bee8a07ef5f938e4289bbbc29b9e4ab0026ac08b6b934ad74b7dfc700bd3570819768bb08d85af3887dd4c61523f383f807c90ec17889593df1d7502afe0f4582cc09ddf428c7e2872f35a03312a60d63aa71dd3e11a736f866c920aa087939d01486ffc52ae80c53111653c3bef43a315aec73f4c43986b33d98837bc93fd135dfd71a882ae83be416667632bb249ebd7ca07ee07d064ce8b6415776fe8722abe81104a1529cdaf05053a5978207dffc36b7660c643ecca13c5c813763062210d06493451c0b0cda45d4076b94bdc610d5929ca9ca99f21e23006fe2e5f0735d99b3b3d1a3c55b191db6fb0300e883cfee8fe00046bac8f24eafe4b36f6137cacb030af2b6cbf1e64fe13486885ed322d18b9d1c0964dbf637c41c9046d05b95316fab06d8c0ec92f94df134b5a87bc8801209b41b15fb7746e2ff3615fe40828bb50edcbed454272281306e74fa17b9ab456d484db2ca403d4217e52f43f35703e33f0a628b3808c64fd52192ecf66188a120e0160b02aa54cd437b6358111d328cf467b07db30c94a407c503d95b12d76deb6aee9ffeec9c08211c2c92a63c5c92902e3145a0a51b318775265342c69b7e22e5171af0629e2b50c73780da594218bf836df8c2ca198677388ea5719e6191fb68d2321b56a322ffdd1fa63239ea3e2d9f3a39736538b76e72e37e1f133190dbd64ad740ac1515d4d6e39c3218313419695acc1663d70ed80ef33fbad7bb4f0b7e2be8ad14f207a2fb796d3c0698aa4e311526a25a79fafae3ada367ced5ce2c45b4d866fbb3eea7dff9f2e39eedfc0b0b1199988fbef41ecfbe366786ba9f76be4e0fd33a219d1a403b163630c218627f0aa6b1837f730116ac2474df1afee36f6a8bc787423e8523f057042b21df3aed436c88c740111d308e558dc43c285f5cba99f63aa5734d09897ef1814d10fa9270b03e5c8d9cd897f1485f74ab230008c9c49ef2cce4ab04a4023bbdd8143587e48257a53cc88f6686150d3561eef13cd6cbd771b089bb705ccaff96299c41b6a5cbea944ca8259f43bac929d7106f4d133642d19333df0d1b453cb22df14e4d267b15627ce58d86363e58d0bae179823bfe19acc9965a09f9645db9638aba1e1f3308bf4d94275dbba9883c80be9a7ff9aa16440a3bdd93f75e1f5994fda3c934904ff1a12847de9c2c9cd5b25d5b98ac9b32f817743fa4766eb3f11bce980824baea18f8ac0ca54ba05785a90a20a5f6a4b85befe72743333f450b8d674d6365b70e63866dd7fd9626568ee5602335ff0dcaf3f27a0d0044f77372e88f33abc8f37ce5398a1b0f1d08fe182fa1ab9676172236a1a0acd5b64dc3736c1388e72babb59c91a050249385637c8330cfda60e1515c76fed2a6ecc72a28279f019ccbb182588eed10a5686aedbbc4603aac808b0850fb03aa45ac09c837eb22ccf792c1ca05f195e0fdf9fafe3f24ecbfb1f945df82b4b6142ff07951934993b061d3e3256080f7777d04e032b16824b0ebefc9869106d0082c71ba565446a194600321bd609bc3da11ee8f06c63ebe4150b58506aecef918da21eef30f47a74c192cfeea2dff70b6215bbc1554cfdcd3a4926c149d5c9b88861416506e9252e82c713651b0e07d99d3de6176b4a71c5fb9c211e6113d6292a302468792dc8bd4a719b4f187136b75fb214f87931c9966f31db664911e228db37cd7a99030a9e135e05f5ef8f0a2abffaae220751cab9fc7540124f9a6e92995be86bd43cf649a4184b781516a11231cdf4966e6c05c63a1251aeb664c5a4a54df6ed159a9840e7eb7550fcbdc1c754fcd51423bbb79584d72de44bb6893f51265c4ecc5aa11dfcae2b32638f68ccfd485b868230c86d2236dcd7118f248e82fbf0b2d2714818fd5d446383d26960993eac28aa55fb80cf243ba594b3a855081f2e75e0936c83212006261e7a7bb69af83fd7571e859c07d8f6777d4ba4f8f97a961224d11051cba8050bd3d71a16534251b8e89416a2ac3e75001e4121a4a53a9014f72dbfd264bab71904a1a59f7e8806ae52787ec288137a295b85d16ecefcc6ad1ab54b4b34dd263410fb58bddd2b5ca236f4b324cb0a3ad688c04e2a3ccb8490724f18159990f9d61d6b5ff262b5ad64427e77b6f384842a88077a34b10eca800c969f4597c03174a39e5edee84d4e6806b8ceae48b2ccfb22745e04b5ac19b5734c116e0cdbd8480d96bce5817d3fd0fdd1d200540660c51b2d4c2b54af463a27c16164852fcfbb8d50c5357d58da511fe85f588854bd7f7cd8f4d41f457c6d1ace3f80098ff873f35bb870c4a781ac5faf2728f7aba3580c8149cb78fba880a065aea41352ccec16392bfa7aa1386b1c2461bf47ba9fd9b88cab158f895474e1868e6832a7f3181d766735d87ce3ca6e0bd991e12d48a168065a05e276040c5a77eb8a1302784c61fe2e499efcbee8f3db81daba8900298f73e920cedc463cd85eaa4b16b57228ac2e2fe7bd8e0be41b55e2c4a418dcc4dec26a8f43bdf92061a91ab16059ae702175ca105bc433ef508f565584d3132f8003508e01dc35be8a7976c8d12885f7cb07a25e16b729ccaf7a07f45c1f64c8a788ae64df40d9ae187223c1fd0d2638e4ade08a0f84cbb61418855839867d2e41fa2b983f267a84f5b938838b143b21041a06a60f891936d83b5dfcbce19f252a3a23f170cfedb8e47e31cbd39d83685c02ce2e7c862269dbd7a20664db4239425d4c440432f6edf19bc14acbdb6d062e048757a06058e9f71f2f4da6d6650a8c793a9e4e41f5605ec8a5ee99b3bd2dabdc5a96f26d591a1a95c283348efe6518f9cf6e0b4ae4f087132eb4b0c24788cd8997d6946042f61018aaad9e1a8ea2764628e3c89ea1e13cc1bd8d51cdc38f99a51f3728d825f7e30448587b179b17b8ed07a804361811bb2051c09525b427b955598611f8954c31ce9473594e17c0bf3a80169797be3538f10fa1dbaf57c02e63e01db5f1873b006c86d3f0d877444fdf06ea00d1e61df409b64e602aed675f3a0aa884f1182ab1b1583fcc110af86ecda02e1fb0005e6aa874a0fe9016016d4bcc4eea4ea1f07f1cc4e70219d04d708cdca301312b420b345998b385aa131d158a4128180af7451bf1002bd0a6045c2bff39b7cc92e8e2590b86a6a75452f8d593c51685011efc44c9ef697fedf369621b1618e0ec80e3034919bdcdb793d9590ed058036e19c7dbf2216cb4f637c77eccd82a001c7bc8315280a2263db6dafc3da712764b068101bf7815bd3a976f6a71369d084706e1c56bea1d4950fa18304aae3cdfb51171cba6c69faff9b0e97639ac8e0fac69fe304bbd4f57d4626c493cd809305db98d9c3c0411d25dd8d7b8771f89ee62b5211e0e8594b50f8f099f313d7792189e3b3158ce9d1a30483106126a9f8a2f29f5f0292b0f5a4dde1added2968a7446dd73a935d90565a2448fc922f86482be4a5be5de21fd550e66feb41a1834064577750417b8890c8a08c1cda9139be685ede5e68c6da729fcf1c75871c6fe78b248087d711284e4ebe86f2ee0d022d3131d9c7eb6e0b52c639030ffc74d5113d1c27cf8ab5174e8bc1709685e1143f6de19bcecbfe9d4b9b06a80288c4b86be7131240444f8339cb479e96a6063b448d0da7f9691e42ca1728b40d672372e9f9c89888eafee00646745f8f610fd9e7e17cb4e1b8cf41f9f3d99bcca253efac6992ea868b9c5d812411f87541d6cfd1049de6f9bb37c9c020dca09e4a3d103e402b4e4295b2e2c4a02f373e372dff9563aa2289699dc04b4820524ae423c190ab8a180f2ef47b8907fb1b4dff4fbd55cf87622c20ed57602d068b19c58a754bc20dc53f610e70ffc4bff8a6766bd884c2071d6e18f191a9cfb283e4846711a2f34a088d062633f78e78db724a3ad1c5e8ad71f5263f13212b59d0384f125eaab42ff6f103281fc8287c706fdc9d83fddf411e5ef43b2ea59ef72d91fa78c5406b8b37d17f1406a1fccd2b743e6ade897f9943e3221302e377107b2ddd885cff84785d88acbdb5927d0db48f42dcc51b95c72c5666a51495f0246ca80cfc39778dadb6f018a5ade1396600ca2b0554273760e3f486620a8438a2b74594e31494ee6be1a238853582e6280f359c56d0e283d85629958dfa4fd24138a9c9d1b29f7562a64a3b1e1c75f2edb22c4bfbd9370385d3684e4c4277fa81687c3ed87de0ae2cb10c7807872ed533f06cb55c89ac0ada4bb12552073d9b2656105b91f6286e49caa1cbaee4954455d4ba0a6d9632e8d969b132590ab59762c3a50e6c764dae20b782e655d492d443cb564b2b292291e3d67b10075cef950c09e9f2a8660bf68bc45bfd59d23e3225aa0d41f7d650db80b059d5155f03a7c97ca229c05b1579497871791982f4a5ef872414d844e930ba6404cc3c982dfe89c8580a3acad2baf0a2a4bbf36f1e5de08b11c68a92ced740dd9e28f1901d4c638d151655a2059e2f3b24748ce3a1f7dc31ac652bbc12acb061dbf397d30b735a98a974d1c7dfc73de98ac6bcbe951801cc192fd21b6a00417dfd583af0c56cb949850737cf0ea5a41d898a9607db790d449a7758b5de9775408c7b8af72227f72a8181e473693d822ea5bc76e602909ba2a63376e24235f723725db4166f7d1b426dfc9e938285d1bca74db05d4e5c25006d50618fdef1f84260999f72d1a72a8f4ccb8292edc979dc8473a753964914592ce78ff0241ee0368ab72e3ef620dca28e34e5a548eb5286e996fd8d2d3ce262c852f8f38ff16cea9128d522a696f8db628825bbb67dfc81f65376784e9fc70e4b595c4d49b7b7a6ace42d53b3275f1f697ccf65f2d92bd54c3d51f3e0de6370be9b102b43465eca552e263fb908083dd5c2003c8b93beb646e30a6b0426fd2e57716f1085010b7c94794b35d1d7200c044d9f404c9976cae75ebb86908b1c9436eee1073e76e84f91f6f24a0d99492d0be60360ebdb15f81476633aad722992c1ebb27a64801a6bc7800b74e8b9adffdb6379e1dbb561acc545242bf4986266a1bb43e49c90bbbaabe40aae019fd11782c99e8842c6449b46e9d1d569e833a474c389ef797af41a52ac0fc904770d49123de43dcabbe82f04aeb171352e9c2b26dd13ab47928804a2f91e521e81a266ee53ee1c485629dbf6035856e796ffae290433dfea77cc40a7a750c7d55c9bb1e2ac5f98110acbff935ae41d3bbdbc45abcef34b013ca1522f914d181c5460763810bb20577f3fa3a860e9230e3a82473d23b7bd04b0e18d14f71307ee01cdbc1ca5e8590b8f20e85f44c6e7eb110e7c3a74e145fac2b72e9292a9c874b18ed018cd008a97dd167acd9673ef5325dd03af6a9b1d7b434a5565d091ac0ec5c8761d7bc4c339be5487e3861d142afcb387c9fe62f0d8a680333764121cc4f5ab35b83dfa786e5fca1c5f3429f2c5109fb90a7b0d8cdb033ec0692f00cfb98ef0b58455989c96a518d911916c3953fdbd6fde1067a033ce23b229412363d3cb41a7af6b0aacad8ac4bc11722be21b544093af31c31f826368aa490784ae703cd77c454e39213a6e5440be34db02e1dc400701cac5de25d14d278d99c0e6a075f4591cf01efb46508d67e7f654eccc75377d70403712ac73541166f0ff2489a8ad2992d8eea7edb7e11194de41343aecd6809baa8d44232fdc574890421207c7ef5b6ce4c600de75c2193d5b40aaab91476b9a618a9299d8ed66155692b161492a5e8aae5a91b4af4620dfa559f385f2cce5da86cb0778ed2e939ba19790a7c2305c69fc28cbc123862c38130ae5706cfd8455d3a300bfce46a5ff9559134cd389619b39f6b544c378a6810bec82609e3b420bc7df836872ad6037e47248c8c6661ee21f412594418280020339ae32cfc0e1f46dd23f486ae02deeb7647a47e92bb7c0f7fe184b438604c6a7919350642fcc57461b29c37713bcb1d26bff8e61f873fef8cb1c1620a18a20641f98af8c6223d7397cd4951d7e6aa29c7efcb8ea6e7cbffaff445ec3866703ee63ad96c5b17feb5f6dde75b866e33dffb53e184a2dd918b15980e490e37d0e3d2d2214bad404987148cecee746f094bcc43131ae7e6d375ad47ef8c1f7beaffa485e52f6d04750f08968510c1b0f694cb9840499c2173bb0a6dab775436124b8dfdde693a389cc85654c1f76d5e609b06c18910d5c710d5a7130ee974176cd44346500d35cb9be7c9fb7aeb5a1cbcab526e0ed6bedec8e3e631669d0c9a321dc8ce09b5b5ddcc89156f84bee4f2bed4cb8e003bd36771adf029f4c403ece5a0c234a7fdfb0d61f78b8f95485eca371e7f0efe596c4a953eb7bc31bd746bdfe7e8db9a26f3f971055bfac8d5e1c78fbedabf7dafb68ef3516e8eee3ddd06ead047110339e6da042b867e27b82893b70010908ca4750cef60dd2c89384aadef407f76882bd7d3408af443decfdf85f375101036c025ced1d52023c0afd9e4188353ee55719602c6dcc7df892712b5faef83f677f7cbc7576ffbeb3de081241f404936ffc78dc32e5388f29827ccb80d2cc39c602a4a5812b90eee76001e43b3158aa020cec0865c82740db5b740420d6111d732499cebbcf836285bffab4e719ce29c22ba3d5221bad923ba0088f3eec1083e8919ec622d19ea882d89fb9f352e349fa36ec16a63c5bad7049a560414cb25131e0a6b3ecf24a87300a1636f6f00731a779267fb58e77375a83b0b0c8f9123adf9216cb89ec903de4e1e40b2b875bc42c1746e6e4bde59dbc134b6fe2de5d23ef0b979e987e80f74356139d7b5a4433611452fa4fb8390db39758a3774f23ff071698b8fe806eabac270af7d31889c582d87cd48e4488074934f5b81f164e4acfd0bbd0ebf2c2fbe3c3434b4920306112a262b7ec01907bcf34e8c974192b421e85d5c004e47153111f4188217b03e26ebf7b906cc8ae61f445e12d3311c1a6fc249a750723e71c4192feb0ccdad0dac109f0aacd2d67651194969a85e6d05b804e36716dfad171903c1f84fe239c1dcf4c285f521edb2d8d17f2887d5550511e83f0657680c6e4ab4c2589cd991b5d306c73f3c90eeae55bc9c0b6b873647ad53d767ce3522847f9f8b21cc129595688e7ef7b12b6128778201876f735a2fb603af7adf95d26afdcaff059cb42dac601bfd7bba1e0bfbb54f9ec80f41ead7bd5d9aa36e82a6e52c3e4aeddd2d8ac1687fcfd83283f9544c61d7e3d2536bd8d9247a07cb8f9137b8a1c1970f1b7caf5e64b981b1aaf9ccd5b777557f1345c3be85e372711a3f045ba3af8d733a9561e63d2a00b088e1924057446d3bed82cb193f521e438a014cbe02ebc734b69c1c439040bfab8e84ff309cade4a080d9b162c9ed8a7239d13066f4ad6cce07fa54967058768e38eddabfbca6bb7642ba6ded3a0b1cb5845cef86d4462bdbac38fa094827019fa05544806171b289394a3ed7667d22d1145ce1b6c25dd9b2f1c080377fd72c1413c8110046bb54e2329989c67c6fd7ccd6cb55b7a2e2c5354eed59c853440ad328b907027c2e2a6d20e2211a2d2cf2e7c351c1a0023242e63ddbfa5cfacb8059fd8bc8b2da719b5a95ff15de0f00b7d7fa3ede4f99e0b705625513d87484bc57c34f563f58e189a23a111845e4cb590669d09191d599bee7f2c5053f71e73a204e4ccc43fcae75ba678dc13401189f074996a60538361bd97cc40746a90832ffefd1cdcb110a9946b6872df2e5e3082961c93f399690123be04901ee7f817f41a7647a975001982a11fe571e396da1fb63aaeffb5d52637d6805b637d5e64af78ad96f38cc21aa5465ec3f00fcfe879df035275d0fc2ff463a157284718e5b1acc7ff00125315cc44348a7003e0bc25dc5331b65dfb03ba19dab8d6e4cd42524ca421952e6a40c6ba8ee8056b2c899857c0ae1f8b809f4a0922c4ce26f4a39ba23cfc66d0124afc700a5397ba7f075d419f652c0d56ffc0f9f0b0bac15dcea99b9132838449726b2b44c718e5e44c508bff9965d8e93fa552a2165a7006f0862da8b48b43f3270403e9deac8d9d6bfce7582ee1a85e4157606299c0fa20b411f5bc30f71951cbe158660c840eee2f780500a454b05dd5cb44c0afe75c65e8268b44ea035f691dd3a8e1ec94d3f050fc32bb29b952449d029993a15451d09a63423463c1fbe87e2a62b86537bb099693e6e132dfdc9f26bee10a90ce0eb7178e0f3d649a7a68d41c73eea1a05e6e321a15a60ca2a60e620175cfa522031ae0a2a6a07206eb985134ddd2e2c57ba8522443db1e536a56bc308102c3773ed1e00f7452af437dec3591381b05c10125d6665be00a0f9e265ea239e541d41174e3259530aa0a7fd1124337025c5a31a4510a2c98de039cf62934ca6344bb860dc5ed3c748e472e64d82ea0daa3aa06a29d058132fb7d90c7bca0d1fc5a0a5b4ce4b882776fdb396012cfa2c2a9804219198b5a8625ae83a21df22ac570496216c9aaeb79a35461fec6acab9a761698e2d7db2a808e2ae52f71984f14d8a3822743eb6320f0455533b7b71b27189cc43b1b906bdba69962c9a896a96ee35ab27f53967b2a9731dea0c7e603394ebdb3067268cb16465a898359f9633efce0873ff6f10f7dec631ffcf0873ef6d1877efc631ffae0433ffed1877df4b11ffe4066cb5c668edc9aba3ab981fae2df61fd3b28725260520ccfe8ffce1f95b65643abf9bbe6675dd62286462be1b1b6d8b84404acc6102998839a574b09ab1e3be89170afd575df3741ea7de72cf8ba1fe6d623d9d0e006840689b4ecdf152755dd86bba15e4f0174c0a27286376242bf40d1eb3557033fcc2064e0b5ae532989d09f0027043c42e961d7a03e1ce2484a7f80df88a8cb9dce73f2e00f04fd4d56862f91e0cf2283a0c6ae57a750d095b1e71870842d9b664baf73a9ccc4b5f3058600df29ed18f7699ecf4905cda724ea197997ec9f2a5af1c5e1a29d662bedb1eba47592a52d3c34acda6b6ec43afaae5a0f52b4e28bc3453bcd56da63d749eb244b5b786858b5d7dc8875f45db51ea468c5710302c741c384f0398f98a2093e14748cc1e793324a01e6bacb8522a7beaf921af385c2adefb9273b1006f890c206ead7ee24aff3767ca1037a21a1ec938506ec936a7000c737b950cb0842d6798ae216c2029672fb680b7ce6d03d162d20c3c39c9fd605025d0546ba575d5b0a5a1f455434ca701bcd7cc1779b359e762b984f75870c17c9f10cbafb1e07ea39ea251e76868783b0fcafd657220b2c9a3018fb0bcba0efaaa301f619824549a9816153a4ec862d2eb0ea533c45546ed60a6055e739515a4d167a08e41ca3cb6b430c171bb4685505742531a78574d0c86cec2a002983feafb76c8cb10dfbd348a3f70a58799b43d786dced6165ba3b84932e92e4128886687c0a49f23cc37d8724be0e3b88f73bd7a24c6755d31a6cacd155b81c0a5ea83325b2faec0eb4e6cb3d964753708154ea8928e6ab30d9b02125228511c91743773ecea6e62704d47fcd712f28984af7daab77f8aa7d81e2a3bd7864642263e00f9afdbd14eb0cca9ced32e7ceae1613f43991bcd4de9fe62d6f2c65e2d0fe1a26e300ddc89de851079aa961ecac7f094f43442fd63606f00d6fcd9bff693ba292faa89d0fd8099f427b17b8482315082ec5c6612967a6c13dbd1f267dbeb1d394531c6e6d6be593f645dd3a7905e728b5cc512783cc5001b97d2f0ea6bcc25550ff3888c0225b996a086881397b38702065633bd5bf4e54023ab6a001eb56210577c4b3cbda968644cb0c6a769ea828ac902a56f069c1e4ff9821fac6c3dc40710b825f28b9f40fb933d799ad96aaf231e9f192ffde667576c3a958b03206d72afb113b12ebec86810fd1643c7b57d0ba4a74f2b61bb032f750d804613947a37ca6365c0ef4e44d3291cfe2e53a484e6b9c8bc80e517d7b4c0f50eaae659abd7d42976a4adb133c0b5e76b6317921b593579322035d250d541687ccc2800e1d4ad5066cb244dcce73898be2b1cfb5e8a88ecd3282005a6d95140936df61cf0e4177a80100412423c63370fbfffb062d505811a8203b5049ca9e3ed4bb878383a8eea3ae687f3ba3af36c22bbdbaa0ce79ab5fdd65c6e0c0935212923d22b1f2b969c4b8301bf6f417d664338ec405679870e4e69d5a53d05066c6b49f8235e71348dd6b980d7a4633946843ad563df6d59293f90d166017bdd41ce7a777df967028e0b0eabd16ede5d4abf4142141eb4034841da0a2d0a786c810dde91d24f8765ae8eb1df41d8f3a4bd6197436bad7a155258022d29b044408a3374b451956c289d41d728b9fa15edf814a7bf11fb5b8ed5d3cb628d00f9de52c6093f6bd10a143b5f48692f0f756f86e4ce81db407a42ea570eaca823c0957acd7152e4562c134a26438003c10e49e1919ed4fef20f6cac1d50730604455d3fb817fd022013f13fa885cf96c3a57f751e28c9c1f5d84e8a122732939b2e024fbb1afa9f03a01e944d094fb544a364d964ce7e9d688e2acbca00b5ba14dfdc009d332b10c5852ab9b4c061b3f345410d34a85a24b0bc63a4397c9ef3b8a94109b18bf8e46610a8a3ac2dec97b4b58a55be95d75ba07c220b7446852dcabebaf2960e5fd7946350a83a013027a5fdfe2696bf7dafbad8ae289f182bb6b09554026245ab1d8ec935bc002cf946948ce6a5cea83388627a2a07c0caed3e458bf11aa2cf172ea17e0a73a89208c1ca541faddd21cf31e485e72fbf0ebe1848265a5c08014c016f44c3acd69190e10fe4fd1395e6918d5dcc1708225945937846f0954825c723a2a1244ad8bbb4bce7dd3bd00dee372da4c2808e471946fed966151f89ee77a1c08343dd335e13a72a6cf4960ab0edd56834a5d46fe754010926e123439cf3635c33ca7faadfa17ed8f9c01ba139d156033a7d6c54944893ec455cade44778276d1dc8cee0445a4a9d9068b71baaccc34a735d6cde6d9c749994cbbaef5c34df5e4e6b8b6a8d4a8c975416d4c5bc4d7f666fb2d3ea0bb332835b208beef164160b902125c033356d4c882c5b034ade3d922175927a686a4871200f53c1bb644d243263288a3afda4d939edcedc2745689ead178a08017e11aec51c26002375bc1f6fe6dd86ad5c05d6a1c4d5273b41e0c15ae86c66403bf403bb32694c14f0d2eec56dca3618732103af6ece875affdda22bb5135729c85986e11fb61840d05701cfcd2ed536f974053bcf3bf2b57a857d92df84b5235e1ef708199914a16e2fd6673f06de6be4491afb4949f9bd8051240ff0c21fd3c72567a621579871b960abdb0f5b5dbea564354cb32dd2f2352491d9e7cef97b9e87e4b2af99648f4b14cbdacca5a61fcc14bd01d4a1007551bc82503bafd1a6027913c572a791ff9c2df12671363916326937e0fd388c65e890338dc060af56efd421b439ffe1c4ae5b39a5e4950a4ef1f41d3c6ae0944d1435da1f0bb1bb07ff2951453494b8772d425a07f5e1808bc7273baedf3d2b3fc1437c9f1d9a6e8f3f4548d5151473f961757cd7a0299b05654e01d67f000d89083d89cdc145238d0e9cb2910a12cb5777b7b7ef0e5e081120621a0c6a6720d2edc614ed123833577a1221e6c632d108f71881392553580190917a5cc164790a29b7e43d8a5718139725c950d1192cec9a652d95b9841a974e0b254210dad0e5d23ebb85dc8e8bd4798a2857181900282f9f47d32c151f9b2168c8553df2e11729dd855575fd0a23f252fd59f616dbf6e1e4348acf14bc3b57fcceaa97961763bb8b64564c47257c32473abb414ab9ff1957dbb4ffd237728a5a57396987c7234f1ce7a6ff78914050b9ac2f2a29566fbae727fb7864f9601a8da1b924069b60b9e7a5febcd96e4016ef21104c52d541dd5bf9fb90fff728fb5a3810eab1a639701392db7ffb2092b32b5a995529293cdfbae40d22a1eee2be1d2839956edf41827d8e259d1796c5e0ee8d8fca9b43fcdd39e8d9820837ce69c406f3dfacc87c7e6920b476222868ecdb18f0f51c691b43936a77fa8bfd7bb4f4921707a98a03e26c20c0806ca04c38899ddd79a1ffeb06969a20f769717de3d3ed092b8c3e62b69fecfd58109692ee5028476055e53c4520d56301e55493a293862b84fca89616c05cc8aa1b9f904946e2e6d078cb5247007a50c8dc6c161e90caa670841016015ed4087dd695874ffea005bcbcb01593fa2e41c9dcdcce3d5a9a39b6dddb111425adb84ec2de5de01ed0c450d780d2d7e595ce546f40ca9b2526f39abb6d4abd9582f0f8dd2b7e0de5bd1daf248e9e753f5927cb4aaf2d06c2ae5b3de684f251e5016d547db54caafd38d1dfd68537547ca533cb4cb43b3a6b3d4be8ae92af5c220d2425a77989efae9bce5489d6ea4ed2d09691bd6b8f2c8c937829007ca76731740595877c4a7b20c9a6a843063d88263f58a9f455a5db80badcb559a8b8f1592e0746a951c5844cab14ec1328bd5947a6f6cca312efe61316291a6312e3e8563390dbf68134fdc4a732af2304745e59009cbc8abbc5988cda0a6c249b8e1c82c9db649f7d1369e3af669588a16df14c0c34975b278a8a9f78a72134bada40e4f39d323078f71f1fa9392899d3fd99c0eb9938905aa40b8d9883761f5f2b83a521eb947779c4e6953155aef057fd9a47ee2ee8d89bbb1292e07b4f329dc45d97b1dba581af4badc6c5c6850edd766033efbb5e1403581b219534ec2b3805781a76195c3d7bb82048bb3dce55dafeab1b2905039ac343b9a4061ef633f1d7271befb2df02af02c9e83be8f713ceca9aab0c3a71e55d853dea64bada95e1e5685d554bd3c78d83e5dd3b7480f23f6840b9b811b6b3a7651a7aa82c7de18773ae5aee9d7e57604cbe9e56604b42c3f55ed19063704407b7a36358ca37f1b0260e581b2a7c324587eaa3b584eeb8e96370fd465a9b1b6e498385aea5ba93edab2787cd7fba2aafa68abf278b821a182048b7a6114161e6bd826783af656818f10eb9f4cf546d8305e5750084f2f9be361537ee22eb4a7f766d3d2d855cea5babb538e716c3babd229159594ca5b3095b3a8d4cb03d5559ee29029dceb192358a8fc612c544e370337280ca328ab7294699ed2f7b31b2a75e527ee763a2c86b9b050b9a8388ab22ef6f4d48b3d3d45957296963f977a52d5eb6244a752ea89435d25e5a5af60984af7e9e196639efe6d38da080c4359ec7d53aa0fb63ca4a547a1cfc08dc58e806779d8fe892bf580cebe89a3376147b989bb5158aac3deeb58e581b2f49707caf6afa6344db9796880abe3f2b057c511045403cbaa14a43fd2133854201713e3c643a11d4d94cda0129a0fe865b17a264551b6371b257c406f8ac5723f0bb71cf3f406a728e0cd8c9d1392e419b9bc977577771dfd713c5a079b42e8d92f3ca9c22021d82deea092fe791f0541a1397f61103cc46a0713a39d47482728a7096eba10e5d8abfdd49882de6e56b855559fe5a7e607cb4fcd76ed17f2700dacb77e5453cf6e1ced55137a7bfb0706f54fcfb0de8a1f64f9cdb7fa0190edec03fa01ce0f7eec03126a12c33e201f0cd9fe794414e1cdc4fcecf4e0093110c2159cd4b0c5b08bf1016eb25aea019d403e10b223d2e18d7d3eda8e2a240194819da627771de33a86896105055161f95049fff4144dc59223d078f98b3b18d45374eb76921f235018c4aa01950c491e126b36a03b38d7d1e9f11142512f432c1f88910bf2c017d40e0fc1bfaee044e4b8c39d0e8444454f98808dc5cbba1385003556a14eb36e0aeaf40cacb12ca0aa67217c439db7e2431c863814ea409cd822e980251cd9ac359e368b5a6f36e4b1182f9b5d9a9453c3da66236d6e36e449da68b321495ab6dd901f95de2ddf32da217b41502ad4b323d3908913d4c4298a4f78087e362242065e0cbe132f06bfc78bc1b7c1132f065f0387163e815d7dbc184f5806c258c4324ee29357555d6d40db84851603426f2c7a72c8f225d1ec9ad109e8e5274caee09a087f63d164a09e89af080e25a06b6295427309f4ce2ff04c9c0b06998c15c2a6291464ccc26e1863969ad1e3b1eccb4bd26187e1ee823157045eb276b130dcbdd89e71d5b864c7fc411e356c3fa6aedaa84b53dc979265bb331a14958a9189dbee94859c0f29ef39c617e3ba5829250f960f0b0f39541bc0727737cbbc9bb031c6a8c1086384314608218c91638c31c6182386611876cc47b4124208639432c628a58c51ca1a0c5f0ceeeeeeeed8dd0dbb21ec8eb9990202a10c391e2f4916638c31c618638c31c618638c718331c6084140f9134208619489cd7dc5151042282184105678569cfc1e8a7ad1a24c8c918b90efb313d0c6fbe058bb96aeed86de770cededd1f551277fae01fe0b383fe064ef85f9ef41f8e0b38791bbc95de3401cee604fdb1a2c0abaf0091151132744f4cea21f4728fc1b6a2464406c732e4470032b0226b6b987c466f00357b0cdbd2bd88c8110b1cd1561b306128608e40eb63900d84cf6d8e65ed8eca2826dce85cd3010a8c136c762b309c43607c366238d07b6391a36239148a507851030b1cdddbead073441b6424bd9c36a405f2b0c4aec954f745e0b0c4d2c5f5a71e55c4170e430e1219e7d2ff7e2b1ec043e814ea0152fcce3859bb013ee92d8cebed6d010fbc4bed8d71a5262e10b82fdd10fe86dc93e287c20897d1b13150d05b130ec6b8581498fe5c1be961872ac18945817fb5a62f8b13e7de9f4cc040275c207b5b20e2f065fce61caebc2306dced9a3edc668bb013f8a315a12495e315e9456fc805e38f2c9fb95308883152c84d032336c586fbceec2969b8d1b70d668a1b4f030d6864e9a70871dfba5c3d8ec02bd4c311650ecd807281f5aa97ad233f2c9a5f3f8d2e9c2abfcdeaf24743fee02ad6361dd017b934f80d0cb444f6c764e40d764f5be225b6751d3ecd5d0d71a038fbd4c74798899b04c1cc38ee57313b6c25e72cd3deed8832f2bdd28ec5300362fe18ebdb144748865e699899af061057dc217161509593e74d2840f08045ab1455237fc83104258dfe3d13a2f543e296ac25704ec3b6cd8f0c566562642c24f98888bb8632796b949ff805ec932f7d2b13a2c23445a818353c36fa9e07ff1a85890c1bf971cfb80ae20b233ec03b2c3908575445f11993482538287e0f3d09e94cf7fba560c10cbd20849f16395300288e51f21458fe56b46b0f729c151450fcb2ce1b13ed866205a1fd067b38c779ec551c510967950f80010fb6cc6f071094715445846d587b62b8e2a8858e61e41f65e46d709ac0e76b8c31576f41e1388073a80d951cda436596647fcbcea2a956cf10c62575d615b64a6d3982e57a3a71e50ea2cc7def2c733dc59fcf10ccac579f8f60c35597c748eb6d49b7a4a9e857bbc5aa937e582b5d54b7988c94647f97925ab76c5a6bdc7b5d5275aecca47a37ae5b51ed733b063bbea3bb64bedfa1d65d9a8f6b83eba76e547db65b65ddb6a8f15d475540651a812eabd18f4bd6ad4595858502ca854ea28544ae52897d4550e0294930e02d449281c8b1447d3347c62e1de5b61d84d1c0bee528b51f1a660b1aaba8663df8bd1a25e5595d7543876c958948a50ecda350c07f6d125d7561ed3e25b7976ef0f2beb132db6e5573efb89eb71baea99cc64edb1b178b65d7b265baa142360390852df32162ec334ecf4d866737df20c1023a58c854badbc63a9efd5ca4745e8fdcadf33a9540a04294fb1b03c854a3908e85bad9c45e5205839894f7a3fa66752deef7a0635437aff3da372eda711c75d0eb492307d74a257e15e4fda2b3e893bd19bb81177a3a5b5c4ed88df6e4a4668767885bda36b9545b573bd59bd510ad299a4c211adfcb4d19ea188197c6cc61a0630eba3adbc21a795559563f427a09df5bae4e31b1845df741410d35038c85ecff4e1b3c7c5f996b362ef26ae0a82f756170afa180f82aeb17f1d04f1430c717fd8fbceef09f10210eb7b017887917b353c2dff88ef4b68a4572f4a336459d6da853d5ef319e98fc79a5e73c6ebba3ee755a71c5d7217267f45d9108b495c979a9c8d5d8f8fbf8ebdde72bc6097188bc6eb973cd6988cfdabbbaf73b2bed8e676c0f36f461033423627a5a94e26e14349ec1a3c08e28449111e0ce9d11c8d17433e43223616e78dc2b66d96e94b5943499f44c4720f843c808f1db1d8aff700feec4962e7f911f6258a766d3693ce6099c87a443c1c3e58b8dde85f7d3e8417f7623bc658da6e7076d2981b3d72fce69c90fc62b3156dc46da3e6e26b94362448ef19dc4979ccc54744a2af7afb37068978be6943a26b7027cf1c0d77b2468d6d43229e36245a624692d8679f55d91ea93e968f15a66a0ccbc4da03ce60d62302be13e2acd002852b3faa9786957664a5f664e0e5e993e14bf9b027f18888cfde94f658a6473cbf3e016d478e5c8907f473b381d87644dd71fd3afcb5e5e0cfcb0dc7d6837b022211bfa3ef035a3e05cade4b167fb1d831febecca81d72d032d7afbb3e7b067babebba8bb3d80bc55ed7233367dc12c6c6ebc9c05fd7b521c193ab7661201022f4f17028c60887b49727739ddfc1b4e45b79499c6b0cef017c9312a963fbd95322e3e42edd416f7adc72300e7a138a90ec3121c46a1f691ff1699207f04b502872c4968e6d3660cbce7a353be368d4f01ab783b4e580458858be766db4e1185d238dae7123173baa775a58fad528dc8172bae5e0d3c70d070a1fcb9adf832d4bf1479961fbbad847c4a3c2ce973a68d4402c13df36bbd1ceb921d149b8cbaad64013c58e4e22713dfa8a2b3a286809513bc109b243c4670a20254d588625900c8583b6811845b3d6a60dfd00e3d45ca7619427e3961ec5849386e11438980b452c6b70db6a0f48eb75a90d1453968402da40dc1330af8463f9aa77d84974f44cb7de8a4ff456fcd7ad5209a78453c2c1c9324ad43cb589484551a8933450b72811d77b598154d452197a332b3a57d023a23fb940c55085f5b99e746b45a7df8ace8a8ee553229e276f5340d7c4d3f00c02ea153644db60f9720e96ff3a60f9b03e2024f44e0cc32650af9812b11ce855a1443af6928a8632a15e71d7cc25d0ab3264f9b66be4ba46c5a76b548658e6aaa8a8a830e189515c37300a668c0173385d0a4cec10f641410a452ce9d8762cd2908048f566f11969bb213712dcb8cd8654354efed1b96d1be9d3b46da4cf4964ef663a6d27cd8f4e35a55e269d4edf485b8c9584ddfcc0604e8cc246ee6ea4eb6d2fb41bc47edd18afc73c22a9ee981f3ddec824ca60903447a4c31a4955b5fd9a89e9156b38e0631227552cc60bbb717aac3be247d74e28310592b2ed06fc0ed2e9244822a5d41b238c3f5d9b0d1639b971d0ce3967b4db085e963e49bfb868e2b093b8eb340d65cf34ed1a8352616934e16823c59acd5f1e1a0f8d342ba992aede48486c755612acaa19d350b3a45fed2cb62016fb8e6d443acdb6d5cb43bb32700349c0497bd9184fc3d1ceeb76f5a48a19e445d99e5262d8fb7a360d355ed283022404af61794acba29cde7416ee3c043f854bf110bc72434b3fcbc0595db67a797c85bb377665db544aa56ddb4ec3a513f76cbfadf42420095ec3dede7dd80383280edad2eb97b8150ee56d3a0ae5a5a7d8e55cbba6529685386183fe74e3747a96456da31c0cc23a87421e11ef11513a7fa4047aa1cf0f4cfd6ef007faf834921c00d987e4063db6da8724074236d50293402fcce1a01d1d81429d208f8659f062f04b0f483de56f83b5013f201a7c6a589e72d5e48e69afa0cf5b31cace5bf15198a5c7a728956ad936140a552a6d2a2b3edaaa6ca76914a77de3b2a77090a757a7773a0db7024e270e3b0ae744b437755f1068793a96410287a488909e5dc3763817d2e8d89c2323b81caba9bfc01d1fcbf0c81030e0c09629b2d081d9859dcce9f24283e608f2784134a5c4ea2ff182cf8441530f0a0f118658d67492404d8765fa08965ddc457db5711befdee5801647153d52a7672e6a4d1c45a55cb8e30e866360cdaa5e3db187ca1e22d0db5d4f7a863f4447488ee52018ce0c2126f6c78a2227444d86b0252cd3e21cd3594879268843f85798180be332bef96c4100a8a9181844fdcb2f58f817598899421320843ebc15ec99b32db49a4ecf592f7620cef0752c75d7f862c01137da6c465d0582bbb272187844b63bac31b88ea8c6084cd5b88bf4a5871f6cb8380c94c370f117dc65d95979c4d8168f3116ca38570cc414b12c2376b0458d21c2320638bbd47b635dee24c66d3e85720cb10c104c5846065157c43247387932ad601925ce1fe1b00c0fe78f808c724641588688334faf58e64e3b040d6a61b0a8f57165d91731f645b7c40b06bc5879e1e2c50b540f3e412fd4bea4eccbaf1e96c1714e404c4b0c4b0ca928e6f4830f3f6c3fe8fc314500cf643ec79a306fc42177d9490c0847ab5f1a00f80d40007e5741fc72357e5b043080df1101468f270007df0a7e00dc7b2b0170efad6a70efad82e0de5b0580830700b7e2e0f511f79060e021b18970bebe1a498d11222a33f1e999ec00a751ef54a997b2a83715d433998a4cbdf4a520cb2e18506f6a897abf807a3b05d41ba3aa9765efc8a767b4205250cf6845a4a29ed97450d46746bd298d146449b5a55e9a807a537c2538e68163219dacd9877ae9a66379a6de5412f55204b8e01fc195784025e418888358c0cb905159b48391937037ffa690dd9a1dfd975c890714be2f25c4ba1cf58968bb8f6c5e59b43bc6b10f7739b867dfc9e09eed0e88f7760308202aff0c613e0bea1906c2abf92076fe00f5ce7922eaa5f3348ae655ea9df32ceaa5f3a9acc8f2359d9e8144de6abe889d979953dcd43c379f322fc47c8b6b41f341ee9c47d54b87d8795590e56b453d4381b79a37c05bcd393fa35e3aaf6945739ea52eb1f32d1507b7f96c41f33ccf43bda9930f3e5bbda919946ae3310e371bb3c2df780ccec639eefe76427037c65e4d8705c339117fe0ee4585e5c770f76a8205b1fc1eb88b15b91815965fb93b83cc22963f047799881137b80b9d0c61191b1bf3289bcaa2d366ba4c765263c40015def858ec5de2017d41bf8eb00c03b1209c5813288c9b0dd63d7297d2176485b04c5731f082a40e5d1daeaaaca91c0cc3b039e794390c7b601111c77269ce430827c7232686ebb0430e9b3d31ecc58bebd9db50fe62cec6b01ed81c8d50e631ae27f616623bc9886b9dc6e66c154019f0a3bfa8170afbe2906b21a37e41d33d30fbe2c5df66f3e2347cbdb850948879a3c923c6621788b13be851c7b80bc4d85977a49c6ee252a7a73cb3287f8f86cea0b81ba3310ba38ebac63233ff51479d371b17f76106a6881f76f419eeded8999d15960ac0ef83f8ed6afcc608e0973580dfd722c0ef03a2f97d41f6f709d5bc00339457f358c5eee205e026afe66b6e69b8c7abd500b8c72b01b0ec7c8d183b5701e01eaf561c12a3f7674ed3f3f2784476e62ede3ed8ce2238d627274411acd1a86d5fb630f7c1dcb33da2b0134688bfce3a0ec685c0f1ba1ae388bb467fbd2521618e556c5477cc0b21c4e769fae29e85c1d57b638538cc8539dc70b0156288c3cd86c6331af42a12f3c8c5ccff305f857899aff33f3cab9f327ef81cf570203eaa3786ac3d7ebc3fc2d17dca4e225e252b8ed7efb87b1de607e8e11101fdd187807118f74712b3aa3e3ac6a9aecb6357c571bd7b577f58ec57fd717d466330ea87e8baa387c7bae3e58d551f6c7ba8b1c62d8710385eaa8ceaa3ed0f1788598f9d3724ea7fa817da5abb47f3fa28ce5ab1d1affa37c2ae9ecb8765a6cf7cc4389f79f9cc59843b8e8fb93eba3f6cf7eee1590fdc0faf877aa31cd5c3a8933b186faebbe45eae5a1f7730620ed3437d318f3135de1f3ee31d37ca21c4f5d1dfd675f5c6f860db3de612e2317ed4f570c9dd09856d18afdce30e46bdd1c278ad551e464c0fcddd1f4ec4f50ee6aa3b463984f868341abd3cdef80c64cdc95f1d87438e0e23e687cb1c0677a3b0f1c2fc87ea836d7c394c0cf7ecf522c4312e25c35d1f16e64470170a0bf319dcfd61617ef55c45469bcd109545699cb41d7163695452e770352c2158a7616d083373e682d3384edbe18eff8409d1121e1a4fe330fecad577f54edb1d7b79f6f2f2721a56e5909f9fcf36b14f0bf63d210c42ece4ee23b231ba8c6340ac5cae46871106207665df13c0c0852ac5aa3e5e758f1de7e22f1ccc65709a1020aa3664de05c7c12048050dee2a72f9fc5918c768704fb09d8731ab0fbe11df0346bd7a4834a0ffbd7a201530e8880fc66d47b8481c01bd7cb07af5948134037aaf1e92765d570f0fb15abfb3c1eabdd9b1980b17cfb69f79c1d4cd67fbf900bd7ee4231797efe1b0a7c5a5e53ed878a5e93c1e919dcf481a0c67faacda9021144bc23233686371520c68fcdd822c4c8c9839678c63dc0c216486e861a6befc6d36305e80387f13621918e76f4b58a69ebf0db10cccf91b13550eeca38fea0e95637ff318a71afd59ec2af2c20101a3c2741c9c02b6b84bc24030a0974fbd7ab89b68a02dff673858c4070ec19fc1c116076370900a0e0629e18e97d0ffc29ea96dbf93e5af7ba40fcb98cedf8e683a9a10967171beb6c332dc795055550f2a95aa47a3d168078c381a5defbe4611463c567fc198f7c156c2f8d5306020210fe3343caf39121293c2eafc0bee42fbe2a32d07c9c2f9b9ddf8e12ffe5aa755d04258067e9e6e3633cbdeb6b9f8302bb5373fa2c0e2e5809da769ecfa60c9ede81e859ddc6d8bc17cfe6197b577eced085377c877302a8045c4e83e81f8ec0e44bd6c650bb1ed6227cacec8514a0c93dde6d3335b908c7aa710f552210ec3a75e1cd8fc6b1d58c47cb790396f0bb92dc48efe0377a1fde1a3ed467fd61df3303eb72446df827ae612a2de1410f54e19d876a3bf2302f1ab7f612416ed311c8f971bedd5409c92741cb4524a293b18755e72ad03655c8fc18d0ec3c59ca67fe02e18f3f7c5c2f8db92e88efd505f4fcf04f1edcfc58720ead5d301a8d95faf5864af34a982ee4d79469b9f9f5af6627760ef3e617cfe6d39ba3e8c7aa10a885f1ffdead1fe9a85347ff178b1dd2f8f97ed46f71d5d655c6e4968b63bece96faf7d78cc3c8cb70a60115dbd19b8b1f332461f8d9eb2d98cb2c9490b04072f0b04072d86611c66b1d85da76700f0c7a877b61c86833ddcf17fe060111fee8ee8f40c00eae395cb2fb577d3595597eb7271de6c783c22cb9d371beed9db469fdc7db1f3c6e8afff1137b6d483ab7b7cb6abad0228e33a0cee45f65a052fb8675b88853d2dce87dcc2a5c57da8a3229e7372dce3eea9bfcdc58db1b3a69ca6791815dd68efa84863b105597e8ba6e2b355e154700aeef84c6ca66918c430d853a489dd7c1e122130b16c2fac616c42a64fe1286f30a66319134581d4c5a2815e3f3d3d23755215f6481debc47502ebc4652fec290265700f11e8953a52470a89d8bb638c230cfb9c23244208c2e4e475637db495b5e433e21b18a31f31b81eec125f524a092f1931480228e33a7628e13b64625908bc7cf0d8e39e85424226ef7a2ac8decbbd390275b9fcca3328dfc6f262f0a918b230ec8302153f3628a70a4d6cd69a7c129d741137813656582113d3e9315a53f5c1d644550f2ca7e147c32da22576e57d840545d6c5af2fc10d3ab605496c10f601b500c766b2c72ab17c5984657a169147a6f6b61bd9e19b9b33b2a74f32dcff8c063d3d2629f5be257ded2ba4abeef40c6f500aac4ee8c349dc4e7779ccc0aaaaff6a7ce054dd750483b7cd1d148c14a6af3c5be1eef51595cf7a61ecbcb17d74b48e50ef08f108f540c14fb87b8777788777ba294faae73eb61ffff4fc14fd3cf9099a424244f009f4b1fd63fb490b68a75793a6f8e715fdfcbc258f890ffd9ab050aff84a5254d097a4fb87df685bb328db2eb65f5e7ee03200702b6e5a1d4f8825c4fcf8f17bd239393b393b397c4a537f0f873f3dd33d3d3f3d3f3d0d042404240424f4a4679a88e809d113a298f3d333b147a86722504eccc9e9f9e9f9e9c9e9992824ff14a5423973529c1614a52d278d485b122efec2a95e9670c718131c2fdf5ee254305efa16c41d63423dc33ffc0394f944a12894f944a12ca757fc39294d653996254e963151ce9c5acf49692af5773c7776e6ec39f5a4fcfc98934a519a4a51fa269a93d21b736411562a157b388ec5e22f87c1e5287deb5e5cd5551b6cbbc3f83cc2442c7ff2b04c8be5cf56cf00b974588004cb9f4054f00c90d95a811866321c222cf38058d0d3305ef8e0830f9cc6dd7c519dbec4ed68c2e53cbcc5472da028973ddcf1b126d0ca1fadc0e7a29cc5e766e3f2110be8f59be534e18eb989bd73a7c786843181966cb4459dc4a5de037759f6ca1eeee1b88b39e9ce5d59f488727a88725cf0681fbb72781e38558e16fd16f5d2bb9c9e72689f5571aa1cf4f1f4cf5eaa3ee9d0b670aaae36d86acf0eeddb6ca0aef2a37c9e85eb628268fced6058a62b067a451e55555746da6c604ce146437854a467fbd41889f5023056561e30d684fdf4cccc7c529df9b8a464406955950eed1c3277580665f4025ae2fed2332a32e219116934ecc89e3964eec4b9338457fc8b9b3b7367ee48c9ea3977640f4f36648a02de489211388c3334a4831f264d4ca6ee86513edec4a9e69f949272aaebd0d29b382946cf52a69a52c9970e2d75a97731994e653dcb744d7117b9c7fb606be2ae664de726d4741387728a025b358f2308e8d99022ad0dc114e3c0c9a9661c144d753d0319672815069c26f9dc940e782cdfe545144a6c1e822f5b406fcab6e84d81612886997b80a09322d66938f844382889b2db819a45b14c27c11601e390c4f25dbaf7b87b8f59c8decb953e56fe451a7462f6daa1fc9e4c0ff330111e5863853d957978787a309b5ddc653b07f4f68f959dd3ab1119e885421808e8e51d9bd3335c2363242799b9da800211789848d0b342913c1729b252887bac8c92713aa0235989ade12b0ab18cbc3044f252b21b9858f97761132b9160af4bcc0c96c92ebdf0c260a55402754a6025fc401dac7c6fb02f0d564af9ba60e5a4295b6f0c54bd5d4abd4f69914fb1402125b008aec193212fb91043899557a9b79347d57bf9947a53a72a546ff062b0d5ecf6b8d96cbfb8b63c34abf1bc182da037b24e5facc33b3755d6e14eeeb010de612158e998f692f61b7a59c74ade6119661dd6e19da9c99798f3b1b2320f0be8650cdb6c46700977129e37ed918b36cb84d01b997984f837725ccc8c98b16465d518ee644cc32d0756e3eb2226c49dfc0a28a9de08ed85424c843b791a3462957ba44a462622cf3c46e00481a50825f256cf1a8133e4ad9ecab20ae8751ab62f1dc3bc55bc8c315edc7b91758754812954d8a1651f901d82ec6571ff35e7c22b4e9d3b288361a00c967931f8977dc81d70aa7404783620126f091d323031fc19fcb07a595aea429972c7d7c551b8cf0a96532e67c63079c91ab96396a2cf47c1ae28f46af60dc1be82a6bd68507e26e1c311b94a81590050790a8564342884f0d5d3f71b080d50840a43eca3837d48a6c0633314fe126fc6cc28f15690892134b8e00da57aa5c47b056f04d640f88220b30a321bd0aae8c398b9df06816c09eef8086cf8c23fdc498e7ddab4846550dc4548e444c627a867b8a607a78bb04c4f61811cb3902b974283d6ed861428caaff77066c1de726e0df58a5bbde254aab30d898e9b0d1eb81db0aae4e1ab4a56235e5ff827debdd5465cbd337baaf25b91ea7b2b1b3cb0bc9ca6ebcb5b38279e453d6b3a13551ee27a1000c5d1f7c0a94a2ddc65c2b6504dde421626685aae4d28b557552e344dabd787ac37f2f0796379e072406b7a0b771fd29a6e7a26b5f79eb4ef09571015cdccb4807082580b719e50050a1af2b00cbbc1f2ebe9de5162892e1224e5d866736a9c06923a0b97ba8bce71d1c3df7943e287ad7a7dd7cbfd21e1e24cd81df3eff3f0d96c29dfc2c559fe3e3916edf03cbcafbde56f4e26ac4aab3cd4cb0413f0771ed52c875adf1eb74fb0b019b8b1da3f27a5add579787916eece47d535d565eda7b0c8c9b1a8de59aa8f2454977587ea5addd1e2f23ea495affa9056d5e2d174d9a287ff5d56cec59f8bbb7021e5d4e6a58b27a756ef7b0c7352dacbc1699c864ca4a678da9b4b9d07ee326179f8eccbb7b880b5eb9866f170c9b16dd160ab67486717f34ddbf257aaaa2d2d2da9973a4baade1b9ae6e1a5b4d47bb5050f1947ed9c97854cb9509d85c6c2f256dde593bbaf4563a5ac3dbc70c7b8149db72e62ec3c0f2db587a75abcbcb7eaa15e9695b592b8eed545bd33552fa52dea4db1b8aae52a77d1aee29e65a1b198cec232a764b964c2f627d71ac7a2a55abe728d85c6def896ea435a966b2c9ce9f0def0d03061239094caa2a753f5212dec41802b9ec0a1624d37f1713d7e58d3bde91e6d4d1502b59244815e6f404217aad01e6ca970485851dc382cf370a27d48d6a0026ea5d825d5840080b42c54e17818c0c0fc8d65207a610b6eefcd49413ae49e80169238d5126f61021c08e1c1a921d52848390400a489b08c0080b458a6ab145190aa91be11237dc849ab712a1c5600405a96b71cf1f3de78b689634000405a365a58557f3969c3719980c7c6547185ed2a050e4e76d2a3100090560d4e76d512f507ac51358003a3635535ff6ab0bf1a520348cfaaaa01b0263bacc9ea0f230a78351e388e0080b46a4855056b8cc0aaeab883e97868f404aa8aa961f58a6786875e17dd80c60835d0db3c55d63550612f0f71cb66e404da402c73319326d00b5bb6f21077dce22e89943cd4dc62a2d83c4d34c431131e62828758e6451e6a355027e924dc2476804666e6216ef564d81a03bd2f0847092250275aad0e6a89a26fe08c1ce2e94bd74fb504fc71a3842baeb8e20af89b9a2c6a1a8e7dcfb8215fdb12f0bdea988a41ac0fe6ab70c8f78d8dad16854144c8de4ba6a99690dfe46f6ade67cfa81ab0bdf4d2b7bf76e1f78ede78b67b31f8c58053fb4be6a2bdbc3ce35c5c6c5fa34fec9716a1a48f4eaa3b4628ca946363010912244890204182a46bd03cfd5eee4a8b07ff39814c9e112f4673dd6a2022d01c07c0d140dd7a409de4b75b0de4e43581bfa15c257a4310a85bd0de6edd1b0bad11ad1aceae24d0a99146905bb3248b89e115c11dc056747aa55bb74b01ea11a967e2534eb2151d96ba52ef9fca2a9d443a9809e82d3981dd59f6de5586509e3d4e85486548e5d50d8533b2a2923da0eed4cbfebec2a956321514caf261d4d48ce00daf7b352368523302262418568583618de899f75e772d3d6182b22914452f28306111a4b5a05054148520d7a864c51327439c024b862944e50c0f5319facce933a943332a43a5678f6b26dc2de16ef5eaa6a699fc76571105a9667bd69c0a91cad0ca55ce73667fef59bd2a7fdf3823d933154e65855361a23264b25765e8591a5621621993c9aa0cb1cc73a96129e4bcd5b3560a386ff5a85065cf369b5759d4c51ec13390e83d202017ab71252bb82b95904801c7ded4d4dcee7796794040452cbf8bda0a9e49f1f40896586e209d22d8db445a0b08e80af6b6930eea25969ff59b1b1290a4616478152b01bd285624c1a5270c638c31be59ba37b654c41dfff50a0b62f9578ee59380d88963310c082b1a22527940466c54652bf5b0cc2df13c243a20d24aa2a454c4f233a961627832f81819e28a8f94256ce81121865744237932c8f088c06a4aeba757a5524692239c927ca744928816d1272620261d154a845d173f231e114fa5524205affda6e65905dcd4c4dfd4c4aa82d58925e2b5fa637bbcd9b8148ee5d3df2e565503341c550360cd7658b33d5eab4630a0ca012df6221c1cfb6a22d751a0ab6ea5fc84727a20404c8f0782baa67a2828287f47a1f507aaf6935ef1b5ff30d59b9a4ce3542f72aaf75e55c9a3fca6e647acf1dae5b5fac388ac4b6847a93fb4da3f48dd7a359afc8d675390bc18fc14a2d2766c6868686868081ba24de26f474d4326ea84d6d7d40acbf5402cd7ce14e4d5db262113cbb1fc20266a8509873ee1eec2b1247b2581ced3a0f388e5568a70b742c4f27b1c0f6d85873b7e8e47c41314c72be29d6fc423023613908c9840b1cb6f35e5a7572fa5f5629c70ec8a4ecfa8cc49557c7c56747c5674887c2e8939b1dc819a5f8ff4b2f77b2febebba4eaa378eb86cb3e96cb3b992786f78d2f547928fbbbf47aaf2a35893912c49b311a79684a216e82df150a29e519993d2940a8e0a8ee553221c550338a03dfed5f0cb22c7010fc46fffb1555503b46fda5fcd8ff8ad0625e0d544232a96adc1b22f2828282828c8f247a82014cf7c1485e241f158fe08c5830d35774a51964a3d055b424aab813a6849133d2220ea3735fcc8ddd460459815398f08887aa9d52b28d0596fa9e8e7d53b69136ce8c5e037d02515b18106ef272c03ad883d2a3811888e9088b31379629198a3c332dd923a6d45c4e9277108b64e3f813d52eec82192c80f88033b08af51d4db6cb6124aeb407a14db42b8e3b68257dc4f5aa72bbd754a9a76fb38ed1d131ab4843dca3aad83c337ead86f50fb56df99379beb988c537b3f6bed9aa65dab5ad34bb97e92833db16c858d01bdfde42f28263c98ce28a6e48009ce1474a8f8b18f0df6219102907d4fba9f9fa129522e304966d14cc5e075a9192852fcce087896ce1298dd8027063b5e101aca3e52c3f64bd60ede00a55e18cbe7d5ebb854ef54c3965d5ec8a0e89996b7e2d7e0a49a54c1ded4900be4523f594d3d8a22067b5343a9d4e8094b609ff507acc16a939f09f4934a91816fa4cca8c88018e9fa3a7b0c8b32d51d21ac61df790d145208e3a4320205513bdf0ac64a5f0c589be923a22311a6b00fc83e2454005d98e3e363e4480753034e711d6a5f03554981fdd55ce7538067608e1115e98f891d9dab2adb794db4dfb7048807afe3f770d795c5831a966568bc8edf8dd4d0753d393db37a7cfeec5e0c34d00e26e3baae83a4513767aa0f7d5a30c807069161c8be1efa2646d2102347e2ecc8b0867e7fe9ceb2ccf7779e63646666865d3da350615f13b2e7c20b2e6c3cebc5b3b860f92f9e15cfda82e5bf78d68b67bd78563c8bffe259fc17cf7af12c1bfc17cfe2bf7816ffc5b3e2592f9ef5e25950b0fc17cf8a673dc1f25f3ccb0996ffe259fc17cf7af1ac17cf8a67c5b3e2590478f1ac01bc789600e2e35010929464efa563a723023fba3963582a877779cf603552565028cdc900a903745058c85b88998171f0ad4c236b5a02cae01f0760794a3da5a68575075482256802af02f002cf07140058e28766c5f584c88086367470daaee3ff2585a2b0e715313146762c7fc6d45c6a6087b665875d5d636278ce4a35eed8ce5823c508d6a8fa52d57f366a587619318e4eec1a064451cdc52a9d931a8927713130069b2334d01b6399d8780c92b630aa82de1825ea7d404c5424e324034e147d83f12827a3f137f475c758fba621dc82fc7bb9dd821cf784e035ec73f6a1d01ac1b17c989e225370f09183e96e2e9e4145fae3222cb33dfb7beffdf5787f4f7bf05ac323b8632536afa708aff8a30ed0db4d145aba8f8acee24016c2995bcfe51e78077adb27ab1a9076877678d69e7dbb36644b6fee3d7249f45f7d3f216da95e26ece6435a29725e235f55f052c8aa82b58379422ff744920e48a3eead20ec26f7f4ccacf5ea1ed8c31deb807f60f9b0e322587eec1889e5bf8e7be44071a6bd8c53640c43b65bf1a6bba4860c1e0220830065fba080841964f1900695b04ad18f4b74e52810235c1f779387a0100474ce2596afc58fca4033d02a415218f276e4eb96394156748410b1dcc33e3c85e5d7b22707417438878ba695722767e738383822b8f8f6919ea2a819c742cee6ca267736eb8636a3412f6d5e709e86794b225a8dbb20bce2ca393e909f1a734e968a1cd7bccd8661512aa757d777b48d94f355d6e9d5117a27e7c89d1d39441b430bdeb0cc96642f084ac362d580382a29e45f4d9c567293c54252450beced5a4a7eec658d818bb04323780df43ea0eb461ca144e4d1d940a0eb2812c48823966434e8d4e884d6002c7367aac6d4ae0e3b1f618416688c79313133623d0a28cadedb258c400e163506d9b28aec0541ef592c1e14597e8d24d7710e391d17134c5c3a22d01cab06772c16ab23d401cf9d03de8acf623d968318866690013182f2f7f28b830da326dff564974c73c69450beaabdf7b4d7effab99e5469873f1612591aceae3fd89ae44ebf7e3a0d6bf54261b54bd3346b9a979bcd75148e726782f5865e4a53d447a5a7a74ca91377636c974ea753e974fa417927143904793a0d41caf70e6143684f28270e5e9fa968e7a8282626c8f26750d4cbdb6c4c0e9ede4ffdaef0b26abd50e3485b0e92edd17683e5da1fc32370089b0da43da3449629619252ca77d34b4969324d612f8b3f996a31fdb568a92d5e0b6c31c97e2df0265837f8d7ef7240723b501e858551f6b79f1ecafbdb09f56b3a7c3d29312d44c9a398ea8fdd2e4b895eb17c4b0e799453f5c10fe5b1a8a65755265ac2d18749c023b008f8574f10aa4edb76e31dd61df028d7b6245cb2771627b568512f0f2dc66e8f450a918983564a29a509a5422550971c3c02656c6fe1569ee24ea76916964d095a998831355151b451deb077bc9bdebf3e785e68e9379a7a3aac3edee9e16f3c6defdd046945f9f6d3637a865e057eebdf187bfab5dde8ef305de59196564c756b95d3e97008a7d3cde6f4f3de7b0fa5899e4939a32a4dad3ff6f2e92fe5d19e49a9ef743afd86fca942ee467ad36f2cf4c1965638042803c66e6faef486008b78f6d2e08fc5888092765edcb3984a052b45f1aa091f17ec2658ac981931313358ef31143143f705dd47c4c40b52a2b34053f60125a9228a01275bcdc088140d0f7a2cdf008f8a10bce67a91fa8892e680b20122d7e349711d8667561dcbbc0af33020d03e6c6e29e56594523e68009689af274f108693c1f91e652497176ce5b22c8ac5f496bc1881fb25e428a341b512c5300cbb3413877a5dca592cc367e1e8eb524cf5f24071daeb523a5497a2a2527bfcb026cb6219547d5d4a6571777a8d1fb0d688362840a54dcb4871cafa9a4061ba97973f99f7ba3e841042f8641e1386b4b270c4ae40ac0c9407425e44bd87e03531e512a50fe8680915c35017f112e625581016d4589036ff5eae0b8edd78090788f012db3c78092fc9ba25c30b6adcac5aff865e540b688ece54d3ea1d8d46239e49c4432ca198a00ee8add48f8fc693356326aaa5712820ed17d5d2620e541214d03caac51d0a68fea25ab3a2805049e2866a71072425bc0c10cbbcc74bb020d2b33e26c4409395d82944f2e995c6839758f90d0bea42d00d4c498953e1e07892cfb5d8db0dd284a398416dfe484e622f143ef641981292cfb67dcbbe6d9545798925f9f40c0b4b10cbd7ea25fd242161433785c2030bb228a7e10d0bc2b240fb3c7a7217c08248cf4858908537da4ecd625960d961962141a824dcb145b5b696ed6b5c9f45ffc776bdf0a2802c8fa4c04ee2eea8a4ea3e0e2d58b1e570c7416040379d9c87a40953fc409492940b7fcbe12d08c98794048a6a5dd51354ce96c3031ccbdf82a05a49946c427aeb631ce908af48a41fd2cfc55a3c43d22ae987e433e202c9877464cb21b57a06d58a52fed85cdb8d69df8b812234b7202fc648c816843b1a740bc21d6f3a0d04dadb8edd787636941f1494297afbd96c78d0292cfb6c3fdcb52c1fd9a866eaba6369d08dc869eb999188e5adc8c66369d02d2565dbb1dcdd9b906d88655a6479434dec9211d58c42a15010e5a13c4dd3b44bd3a4a6c5660d6a9ab652da725e0cfedb50ad28603f5b0e8b455d39a097b62c5b4b59e64a3bef06ece8af9b97cf2e0e5a14cb6495634c14938eccf3493ea4d9734a2ca8dfa8ab7298128905a1801e0b426d396fc547b59ea05a5bce900bce280a78233b0821a11d102d612b98c85fd2471e090191f7248fd5e18ebbdf9be3a1492152480ef110fc2e01bd52480e5d9293423248f6abca250ce58f8f9592e7ca1d12133a6a929a4e2e20f60a42647b550a5181c22785e48e1d62f98f8865ee914296a54e7dafbb31d49237912709b21704cc7951683d20234b9e139e2d98e1016dc10c96ed7d43434239f629c13237a69560f9efc1cf25f4b5ec6559f837672ad5b2b17b6503819ec0051bd333a3b7e2c7b4d0149401cf4ff682a0a99c6e07465e1a86e035e721528f13b2126ea5a016e07b433c3ad106d90b82c6a4ba1fcb8799f15aaad887b15b430bba219c16118d3ed60666df610d1ad871c72fdcb1e6c25d7717b1cc4d31d143b2831d76623726da885eeb0d38f6cd3c2cf8b01396792d274f38a881700fd91a7210cb5c6672f947092f41a2795e659e2950d2b51f716880f3f0107ecc4450f0a192262d383838381ea8c9e99957c33a4f8912af14246b5bc11d677f894832d1334cf456fcd1ab4cf453fa76fecb754e0273945a2b9453cb7cc452e9bd66a2255e105193eb3d6108448922f4a6f8feb0f07c99c76528fa6c4cd1d0aa62887d2d38e4d8db422da22616bef4f79295b886b59988401b98d0c11d1311b8a11d13f4e988000dcf20b673e0d64c8050e399d25965835911e0153f004f66743e005ec01eae1030967de0c1b20b23a00c1d38a0eff771b0c9d381f580beb6cf5e5a0d584437d011ccdc544ce075fcec09fdc16e3a796858820c51c01af22da023024d5cd8be0eeeebe039583ef775705f07cbc1f2b9af83e360f9dcd7c170b07ceeeb60eeeb603ef775b01b2c9ffb3a98fb3a98fb3a980d96cf7d1dcc7d1dcc7d1dcc7d1dcce7be0e4683e5735f07f3b9af83b9af83cf60f9dcd7c17ceeebe032583ef77530f775309ffb3a780c96cf7d1dac83618c963f814744b7651d1280e7f3754400d649c140ef7c0a48e80935d07b9deddaea218d534bc89899aba46119bbbbe1935c5f8cf7a643fb0441e16603db877d6c507a08fe72b3a1f68109b210e533a2cc784d1e96f9dce181d7f5396404270fcbbc3b6385174a6f5deaebbaae7e29c7f651b80888d58af9e97c2233738b0045d7b927c5735dd7c56db87af2a0a448d70e7793070565a7796cf7d88e938765ded092193173a73fb2029d3b3c71f20ce1ae4bdcdc993c2b2b3b43260f945cf79c8876d654b007a8444dd4d5514d99221200000000d313002030100c088462a168402695364d3d14800e99aa527c529887419029630c21040000000000000020008000408232ae8746e9442db4dd544a626bc0b8a44c0666e6ad61d363990c2410da69614ae25c895410440070701b9923d3e51c8086494808d4ee143d5816ea2733fc0370ccfb53df95cd8765c78defecaa73d949fbcef3cac8b768af4c8d842fa4ba4af65103ffb9574f3520c694412dadf147bfd3d6254f64d26b88b2dc5e9ea8dd7d50ee069def19985870eb17e306d864a3667827e688bba9a3ea8033ceffa3e8f9b645587ca54c78738a2c67121c50af06ed5ff4ce3d6793c9923f7ef307c91d3bfc0620396f48cd2b288f87462fd2519e017a690e75022a771ad03851b1a6c6aa4f974382d022cd7f9b2d11d02164b8f752a2da27b1db5ff5b38057ec477d62d938911f6922c4b928c8e46528d59469c26c2752df426bcabbe49d0bbd13d4a4e02e98c039d7fc4653322e730665659434852ef0f88ca07568815213cbccc0e807c5580a130ee3aa5964530fb1a53675f8ab1415c4df676d22750ac8d8f7841f5b724aadd913bbcf4b304595a91d08bc552dd1715844fcd70f7af8121646a5efbd8fce21e36925d27c9a0923d37f3ca4995170bc9787d2a1c50d91c967456b5b57f954716d7f1975c96bb868529c6641ce7f174d0b9954216e30144b07e955de7e55a4f605044142c0103b541287426413455ce70c7694c8113cb8faf27c8b5b5030cd1d15d570d5b289933632cda5ea095e8a64e1038c0384af2e6353edaab14ce6e6a339905c037ed7b899fc9a7a21e4d577bdf1146aea62dd29788156d06c14a3003ad09f9483611a239b62de9d091c8b8959e4d41a04559eb2e5ce683cb7f5f6ffc2ee423017d1635e0bf90da1e5a01f29f9e8c1818f11020f37da5eacda0bda17badb15ae4a2c08846a06970e44563ee15cc701317401b2b81ead2250a0af4b1230320e7e6c4b73616b130a50ab99ae09f1a6a43505e440dcc7c4e414c88e0354aadb5db5eb792d3cd05871eeac701e7900c617e07357f0a13a1300341a352a79d3f007f47f4908702d3406a85c6977d0307bfd0859cb5163de6c59fe68c358d00e94e92c1bb67261fc0e653de2c2c59f51a6a022860c522fd6df3ae88ddbc60d52cc31a2e8eb40c398f5c3168bdb2cd49742b5761cf8bd8210a2f98fbdd44bedd6b834bf2667990291497851cab46fe98956f2eaa9b9d9c7b276b76db139d3c45d5ddb7161668b87da4241f36c448014d88870f5fbbef65c3e36f64d7a8c5ef0d80185731808b84707efd8094f7a78441e337417c8ac524ca5c825dfc4e4ad4254e5096979ac9e443bc35e32d18f3a3714f601bf4e4a1a12dde1dc3b9cbe536ba1f30411b05de52d2a9c0cbbaee5422867c0bbd2216b31432060b19effd1394ac1a5f8106d477c49136d13eaa6d4d286c1b68384b74fcb383403d1b771abe472acca7f9d4821488f1627ec0d7409c91c2b58af3221a907f90e4616823c761515a1ef7860eb912945a9a23311a3635223cb422e585bafa85be64faeaa963614af658bfd632807d0be02ae800cb6b3531b3088d29fe5ad36e5eaa7bd8717611a884035b26743bd940a0898fe5c64c7f152f45f8bef2a1e16feb32e03e024bbf370ceab23df5c0a3b0ad7fe45e92dcf904102f1c1be7cc493e7f60efdbda39d9ddb81c613f178bdfbbd1de45ecc60070c87b50269f48b2b2e9d7575db6fe813086f917fcce65d8948389e1cd1ac43deb13084f690efbe37afc407984f0b510ee4590d3add16d69a7e3bbe7a83205be0e2698a511f1f0cbb2145a301019a823c48d393f9bab145aaa313ee36e788be21abe1935a6ac652bd7d0bd2a745af7896bf3b4518fc961626d82b6d9bf4ddab5888de5688c0b349fb8ac246bfaa363b219573b245bd4dd7973db0231f549384baaa00afcfb542958b3c3ee3f540f6072c8d7f8a95d6dfabd5f63b3f7b858b271ca6c29160ae2a59f88f8676a74d0d06b604839138ce10797c308a5c78b8064cc05b7ac02059e6b35d9098b295cd838b432e40f01b184a9306b0f36700d1d0838bdb1f08c11b6e90e7c9aee423080d535e456c60361de846e20acd4182da3c1063cc89255ff61f43b0a137ccb40808b8215fa60108b22117eb1e7f90a10d2e8ef29e2d0717476f73538369147ec2b583a850093c3a0d540f2e8ee2e65991a5cfcd1a70071787da5a914df5214b0c5e27807d0ba3356ab58f9004076c5576e61f9b7600734e1e4096b388fdb0865d9f71401b693bd186c0a05c3d6984bc6dbe270445cb85f59347948669b4509ee13cb876f7363015c9a17309d19ed2b60bb062bdc10964ba34c20a8430f941f3c45d8b78b94ad790955f613830a01020cb2dd618bc1284bf23897bb1bd3895bb3fb7e4b669c3476032a8356d4dbb6710db0d6c684b08b88c180d570189c0a0be1e0c8c19e49d1979f3eb917f6a5e3e40d1bbc0c8bb665fd4dd36d395777ae4a4fc5138f59d0df582d0023befd5563e4f6109e58fea4e8f36c14f6730b2952ad0e9cc99127ef3b5a573057b84b626128af7c282cd367fce29834ca4f9624caafe4076f3289d84b51f8b0ad58b1edc36c77cb1a5f647306e2a42ee12434ca7173f422b2cf161ff1acc76a43cfb526b99957d0d1eee7455ddba9ef6276c9606c32f5bba7fba6a3c00c6032b6349e1ee0928e022cd528853a58cf67ca8333966ed5ef46f860e292036bcfb3701a5c4728558272ef3ae3d006dc2fc4812303a81e1073688470020fa2f9416d8547e48a564b253f97c0e7c552b16343c4decefcff405e9706dcf1ad1169459fa043c1c985b32e0b9d8e6e72e431b787f6d60e5f145993ee38f7e42eaf23231b396ffd3411a255b2d4b09832bb35f4ac9de70b161e4a50900bc97d87473caab1e3a1247757c7ed1a92890d354f98fc37f0c24b130d137142789fd43876568d0f9a365749c7a8b1d28ac688cb69701f8efa3860d6f56fcc282e5fbff340cc260bfd6071f8984af7f00d8bfcc6d6f9baf0fd033ce888ce974d22165756bc17743099f0047dcf8e7ffa5f95de30a41039a8071a9b71a7d566a3572646a95609c0f2ca74a523345d53abf7856b51ee228ebd38d16ac62eb5ea3cbd7ca82670a06d22649c826c64bf1990b70feb5cc3df4ed904accbda3eb360b9b38c21894eae89fdac6eb5dc7c87b3e1247d10c89f1ff598c9a0afa8c33e983f2f1793b8de9388e26895243acb5f91fed03a45c94ce9029e9c78c9311bc547771c72290107eb5c6822879c9c5ecaa510e9940b27d3a5e8a7a13a8fdbd98139ef818428ce413e191231b004c59f1e35a62f31b8f4357382e86d5ff90cdc293893dd52db9a1c82b761dad02a8c608b68be969680da18cc9109bba2d88f0be05320e7ba6aebfde70cf68813d453e18c6bb980087ee02591eef9e36af370811562d5abc8317869e2ed3303f0c1007da883d3453902daf7c252dc01be6477ee7336e352ce2177117b9ad4a64ab5bdc2cc4129f02320a5301943bd41e45a28645a83132b959d5489049f89fe5210419d737a63e030f33dea0ef31864b2cc5049922ec1d785684ba89f4b9b517a618a0444088f68fd8fe05929277a4cb8f36076951b634bbf956bd2358c758bbafb0fe55ed260ffc1800f534c097f4421eb7079b246ac42bcb8ffa71f68305230d18b308e8046319ab2f3d2c1251faf4232fe5e4f3e068387d34b3be11346feb493c24d6f3f8380757895b5864568b8a2c103973bb40d52f053afbf5f31384a33b32385aae28d7cd0df8116a0e3cd2c61a97494aba6f4324bab6bdfe11d99ec4ed3daf5809b42702fa92b9fc706660234ac1273ae1e712c3f401aa381676c4f3ef5c7c5543049145b5ecf3aa7226dac4dddf0ba1963557c938b4dfa77eaeba5bce7eed8655fea03ce7e685531f5ba7894964e76896a14a936ba335599eda32d986d0917e37a8f9c6ec05ce1a65112ba3df701543112d545e3f8adb0aadbda8bb5ea86f5b30bf54ef05c758a38d36aabd0b1c34d38ea6484f6a5de84356517685201f60d3d09b30a78c7113e1393e335c86081df58f49e07682c043806da628916fa500f5ad5ca5f2cc283cdf659ed4f2121702d433cf458b9450f40a0cbf2a790cbf149fbb9b503e7ced1f32f5171cc9be6f8ca951425b48c539a514adf4a947f69017d369b5e0e4a175e5bd5186ff214d30197ee6339fdbb09cc321dc461eb968a30ea323c07853daf4805697d18078388c3634efee95604d4636d41c548526fca0fab5261922b9feb9b805571d28905c5a4fe452548893b565b3787a217cb5334a5236f5c549a2c981397a7478a3a22365e816c0de1b0284d7b24050c73ff27ad329c29ce51205716ecda85a56234fb340fe3c210acc9f97aac0f922c824ac39ee2a61abb22128d9ddeedd570905ba4e2d585ebcc9f8a9b0e834043548efbb2236f2837323da460940ad578c53054bae962a0dbd62d13cc9133735b1ed07b404f0f92576622c42faac629efa1a9b700f349c025055d603b32c41778524af9dd59300a4d5cf7bceb7845ff6a08cbb202256588442f077555697977bee6373357cf672473e2f03088f3df85521dec6803a16a0cfe40b73f3ee863500ac3717a023c7a490420b79424187cc65d1d1e4f8487f91ddbda37161b0f4e84c928dfa32e087f170d1a4539dd7db0486f8e7f109b33094cc8aa8ca126ed9e03607aff02183756ff4dc89f73cfe344587a7776ec7df49aadef10082a39e7a5e06c2ddd06e06b54707d0194a3771e16e6633a685ab65718b68084c6fe7bd82fe05e444419ecdc0879140d8542c63b20139b78f36a1e22136e345eca19ab6881ddfb9636a4b0810a375dbc41837d4955363cb032ce59c5d3a72adbd7693b52ba82ed8f4846bbde05aea41bdb8f9d61a7959c2a942e4dfab863b42e1aa12f40329bff04e1c7c38b8fe30f1ca10a0e26added8712857a86e9bdb2baae6fb5e670d8b9b1ac7f2b84dae118b449ae71edd7eb94e9b86a0c792391144f8499d9c73011a32019a6b2112ce883388d52a80e185922f58bd610ffdfb511501729fe1c2bc1f224a46940665e50aebeb4ec1acec22251941b54bd1af0c5071c13c9c307633e4b8ff380d55eaa1050da35e470a7c6a134a668434fb2afdca49c1770bd8a3e4a8cb5465657c90ce04727e528202465eacc8b15a91c8c053c6d7e3cca3fd452de7413f887cc8da3e8b6fbc3738c8864adf26d91c3356b5de9e5d9d9842c13f09175c0f749bb21f42fb5aa2b56d74e0add4a907b71238e3e738c439e75df0094612ba0bfbad8529c04e90af4c75e9dddbd3f6390e31ed7817e3028426878994492625c980917512185d2f911f0a00ef10bb0489ff1ebfc59819fa4948620b39332e79f2adc07a2d873b0f93b71e0074a4721eec35d9636f1eb53f259ba26d56e087fc260cda23c10c482ec0b196312f6fa51c0560508e35b3ba0fd66c7f781a2015227eae4ad5f0a6fea90a3f7476db2adf29312a756a96e62a433baa0f5a70493491bc92b18121ede4ff78b748986c4900d5f6bf72f96c6f2d8c0f5acf09ea4f4902bed21783fee6dcd8a080e40092c0549ab4a5eab4e221e053600ca453b30844c14aff7ce10380d105e6a73510b6903348afefaeacfe93c93767dee1a44f404196139df8706567bc39b8b90d85d98e02296b29474a057cd083d3cb92a68cfa185540df3af9791b788ec9792f94d017dca6ce6b2194367bbf834432ad20f45ba71d25039515d3a981e4653a384d4fc68cf3b3843d3da6bebdd38a845238eb6896d558580918013927e8848386bfd5708199bc9feabc22b9014b201ebe6592ff20e6cdfe7c156fd96b964ff151713e42d8b28c28a02e876a15ca6740e5e1ba5490f80203604d46f1cf57dd15cd30b9cc806a800448217323eb0d04b5f1df07a235ae394344c304f788ac6c58d0edab077e422a8e2d8915c66c3992737700271a10dae87052716a06931cd1ab26c537434f187c1c98234d0198932eaf5134a61add3d8086c4c58dad80f113a8bbb91a180a811bb41176eb2b2393be579eab4bfeba221d4d16cb378e870fc78adaee7112eea9b7890c4c1a972cc4c59b3763e18cd4896e7286ea5d680e7b1bb154b0480dc70bde9764d33b06bec756c37aae67eec4e07c855879eb39367ccd3f6944e0dd59480769373a0fd0dd24a6bac73c0ab3e391a1ee4eb74a75343089506a60c647c087d73ce09de4e7190769ac2fa1523dca735965a107c7abbc7ac27964bc0eaff5472f6f3a9fff8bb375c0a413f3841215ce242678ab03bf9ae9981a5684644c230a019d094e82a6d02254ff2a52e8c8a1b65e57ccb4f4c5ed9906a877bc823274576fb475de597798c68d411e0521023c16ec3694536a187e6d57293060f08b183dbe16efe0b2fc44d7aad1e58c036a920079bf9b45f32e44097f04fa670ad30c923b6b9a458e02e81a5089c2cab4ed37fa823ce39f845d92f460a00beadb566552e4aa9246f4700512a63d107c8c739397f9cd704d82380b76a96412338d76638572e5de3507849a8d2f2ef919a8943f4dd4c35e11ea5ce38bef42764e7a8a4cd7616209d9432f519a379437929e2b695d1631b4708530ce710261ff9b1cd706aebd84efcde25840f04f2877f068b6efef37c7b5200254fecedc5b50568078772c0244ee80d9a5c36d8a73a2156e86084fdccedf1f2212b80816eff3d7e92b7e618ae9f89b52278e8c40fce041cfc7d663fd6ad653fe775bd127b1d8594d28d5b4046fb99cd56058f9f2fbaf4145e6f60793c52cd0f4d9a11b0e59557ac19bd63a0c8fa9efd422e9900687f16324866501f927f8f859642d660a71b87913860f01087500d46514cc78a43d56b335a66945c28ed184ef8a8320ca200caafc2f350a836805bd5c2b186d213463f514eb44d6c581b19924c038baf2bb5783c31e9e8d6692070f48087c6f807e5b010866a566931eaf7580dc769bb3408aa5602b5dee7a12a1b5612c476f0cebc47ca8232762525f1c4f28178f303741fcbb55f432004074bf16d2ef43599dde021ca3083d7e8d322c328fd9f7f2ed848cd636301ba876fa0b4aea1b809e8c53373516b4fb38c4e2ac68d79a1f84d90e658609aa3720e671e3d0be3ded4e7c9f39794b5a919c43f5eecef9f7e6b99fb31f25be03f13ef3b81513909e81cf75313db726ab6799f64f9034c30e71d4f838c4f0f9e03810ada7a0376dd6e20ffe8ee541981a602430335e4dcec8a30a085034a43c8ab6db7cc3aa7b348b7b3351e9d1553a5fd94560bf4a8bc7ebe5bc4f1e9fc5b691ea6b983d3deeff1ab004a34e0f2c41b4b9c9aa1b5c878034b5359fae39824c4cbd3293c58efccc9643ef21bdc1b6bfd360b503d276ad738b7fc164b6c8949f4d1c980c84e20d949a539b4b1ec31aad9bedfaf4e45ce4e519f977657ec5a8a5ee8c1fa46b0e5248bfe8a44cc49d629e4e48bb97beab35a69970d46999b3064f4b60a85d16672dd7c31f903bfa52553962b77889f7fd4c60db14edec0542319853451341b57325f347dfb6ba1cb70a8d915e96b77f3fb9297d2d98531a085067274b199bbb91b26e42ea7d10b3b9914544997605aa001ed63a4e153cab267a449700e7f76b4d7778a7749c929175ccbe96adfea9d923486e59b4e14caf0ff519c86cc333b7ae0d6b55159493ab112753b05cc71b7e10fb8cdfec312c2b59cca765830c822c040b206beba342f225908fdfa83a97f1b0b85981fcc3282a9c240a0b0a0025a5165bc594e984f3c208930dd13f2751ecda154a052871d40239af4d854d45106633cdaeb55de10abd4346f8d36d48fc89888d3a453c43c26cdab1b4393f515999f96c1ec7ef5bacbfa1eb697173249b6b0075333d16ce93d9776b027eec35be7a7f97c275f1e48efe1fa400f1513566ee530b1c97c894f6ccaad5688cc533fa6090500b3da1952869815afdbf20b9a28be6ac158cf9071a48731607149f7c1de369e8152f1f553e1fce52e278082be2a0ae992818baeb3ff303f663ba4347cca0cf6bcff1bf431b54f6b1bdc728f27d9c0079a70625f1532b77539c2a21ff9942690847c76bf2a58e8a7f6333bd621c5b3755ce78ff10c8e9b650b6a38b01434847bd9a8df4efa837be2985e7ba4af673d07d2b9a53e39e0d870a8c4f15fea2229dee7d0ee5b56d37016b9cb24de9cb2c3dff1bfe579cb7fdabf06eef8bb02533f571ac361ff85f648e64ef4f2b1ec051e6a4b99527eca63394a3abedd465836dfd0b2d5a09efa88e22edfcf83984d90214656f53b203acd932584a54638a1ba8ee4c225e0c64e8baf43610d3fd734f8a5efe382e754654eb2745f7e077dd5219dab4b1ed2e577a3eb01921fe345b2f7422d8a131fcf90afeb65b8880f26d45955e37b6e51e90872a766a6bc55148f2050032d27d55960689ec7ec856ac1a9369b9bea7e1d31bc2b6c4903507663297465efb5301168173d5560dd8b332da161e2dc64bc67d4250fafe204d2a576f500b180df0cf18f863d65b1ec197ea3639c1c0e65e7be7d5f5b4a3c592d55d5ceb6ac87a2c5814f0b604395731214ef1376004d67df32d6aef77de0a61dc2f617de1091a8d067143a0c58896a34474ad790821a7079a5bc9bf1b884d912a98ed71342e089ecd0f9f1fdc9b3df75130413c814fb5dd0f97b8b4bac0384eb12a50213640616f3bee3bf681264cde8d871b282dfed07fc64a69cf1968dacf17c586eed4813f39a079f47d5ae34ee3ff5d05e37314f8ff132ca7ab5a6f8eef3f04c5a7b3d479d3b29f772b6bdcb3a81b1767c1b717b5e362618a8a857fa501f891ec404f0128e5b5c0c25d1d3c2242ebcac522565ab2caf170c170489f4307dcbf10ec7c4542dab411428142c38918774786c5a862daecf973810983310149a0b76b009a8fd08d5be38acdf27c0c71a52cce504cba399b43e53d3c9be6d2eb83281ef9d134da6d363fb8e81ce7555151cef594e4ac73682c95d32b765c4c31aab56ac8e58f92f2d70ee99be50c9a88752caf9f785b39d4e9fd46e85586176cd92b00ae74afad5a99ac8f8235799dac6aae0bca946a635c24e17be3a7e770ae9a62e550d34e4873d379970033545f13907439cdb163690f12a3552be588a866e503a5534ca545527e273ad2bbdfc2479f13fcc5952c9c848e60dd56ac360f24761728886371965060e49bf14a61971b96a42b6318c45254486392316fcf0691e4298e7bee271b7197fdd2b5585fbc689883e3500e1a5f5348a0a255543a1700e780ea88bbbbe05e2a2aaebb25181829706dbda4eba99a7500cec27fa1c3c0b4307aa389f05a6576d0b3f3e03af128d08056638c9e4b4c3b29163eac08bf4728a476e6484b13405c2ff69a0a5b606503a4f2f1348dbae62c64696f0eb07d7f5d910500f13022d9611c5f7672428aeb71a172220c406a277a91b23b5ba38adae2db5a9d463d0f806ad6d5bd22afaa195cb6142275d596c75cb5f7ae283581d9e1f227540319ea593396b3d7492fed1986c31049a8085350c5b5b491e197fed102270e163e442d0e7822dfe0c4b87e7f0451e6bf6bae17efb6bfadf52fbc97a0e95e800198e7fbad8ead9b46b93e95965e98b95752ac7a296f18392ca9ffac893d72a839a174a791e6e409445ad2ab7915ace28ea0b1068d25e7615d390a836df9b3e4d41c893accc84ff99f617d3113932e2982987bf60e22637e63a94e1569079ecb83e3f1dcc3c502fb00847dae087c06eb3cc4b7aa410749aace7126af46ccee34095e038c39a0f8928b941d411cb1d9133343b63cfa3bca3ebb5584e50f0739972687739d0296d89de8da01b186350c772fc0a651088d5246ad71a0445b448335b2b199459f0abe54d433e74aebccce66f447090872109c217bcc68429e472ad0ee9f4d38e305d9bed939f1fed699c03057f5c02e00c399829136c35e179750d2f9b83dfe6c7d261c075dd832c0881fc521df60d9e0865d2beff9059503f2def777e682e8d656c8b266e493d9d2a538d346f5c74adf89d5514b5585c2b4bc98d65edfa138c1aa0c9a63f7ad67a25f741dbb7cce9016b79d55ad07dd3325584c2d2db42c1eb5ba4080268998667096d63587310c2a0d27c96a2e6d2f63b09a54f8dcf2b62823ecf1d9c9bd2fd8a197398c198f3de7fc23002cad942ef88839f62821fa805c06761259c484660df6c1cfb79fc4cd8f9e1da62aad885250c4100b48c1b0b972d5ef23bd0852adc267e3d55349cd4cd1019da6e40e4333b166062b855250d83899d748c3334f5ea6526bfe11e0503e303cfac194f9caf847b0a2287ceb6a4d5f9a81e5d7eec6515e0d6a7789f00eb568e2ec9ab035679f9293e0986220b89dd602264ce2a9baa54136731a7aa141be04bc9107b99de7b98a43bb280a06287687fae229b5c165a37da474991ddf6fb81bddbd206e63c6b17d4e7c6707eac78a07aed5ebe06aa6928a192065a347112b34538b8f7e02bea6d53995b4c8dce0e5a2ed0e292c870d99e11287dc6b078dd173e202ec12bdcbb4d180f15437a21955cfee2fc60ec5a6c3bd8c9182d9518866ec23881837450a4e5e799446e0a1a1841c6a3294b047e9dc370f923dc2c784382ae813bc92d7c05ecc91fc80194ba61e2db13437598746e0cb5b2b982f42db200904210bf53afd18b0826cf6ac9dca66a3ed8dc2b591dff1de78954658221949188497d9158eac6e5fc6116e2aead26704a060c4a4ead33267cfb2e9e97c694add59b3e22e18a681c4f6d200db409cdd0354c87a6d1a0dcc02fd52d42ef0e232f41b7b9b109aa9cff71d81a1cf32406d34aac1712f40ec01482dff9261dd50daaf98669b62173c372c4af06cd162fb675c96e43d19de0ecdabb043a8bb3b02419c1bd2ec256f8f2c9030ce186b13fab85d82ba4683c67306ff6cf532750b02d88c5ef2bef237999b32671df49b5ba15660d445424bd83358e8015111396ae3fd20c1cb4d296de0e07ff83d13dcea438cc130e051bab9722220f045aabad302bd8865b446a7e3f2e440f4dfe3e8620a96e52814fd41415a93d93ef490eea62212cb0b32818430c1d24b2b1225db6a92abd6f2183a23a6050afa73f341098e23ffef38f940526130f254b341808cca9987855a1a49aec57cfad3eac049eeae65c5aac4474d1a10ad9cbe1e374fca01cb27941841c3529436672ce942681ce4d60d6b358a876ad10e87bdd724d0c01e9bb396a2a01c1f6d343c900d1c8436751fe1737845ee51060124f069caa48e0f3b4c714f8b20394afa5ae4af7303f90ec511281856fd1b39920e1e348ea2e7192848894d2de4df6562f97341de96257aa6a638e7d0d91043e6def5c39baf43e0504605bce0a1e3892136840def33e486666d9907ad4f5474f4d17ea5216e0f976caa61c9264a20c330a3384a8f526b2361996d87f55872c91cd254f256d50f55746cb968ad7b342e8ffff76b532e5f3af69fa05d045f7d079c1dcb20017170ce3a8a7f9fd58ed1862ec52073785c8da318ac103d9564a9804c357fd09334e5034d1eeabb6b84b3f48db1f192f6d29878bf981447cef66348fc927674de2ee112756b502f7d30a554ebd6f83254cf814986680c699e872613269e3389d6d6d68e671d6f1a0bf0d7a6693b050a821731dec95adf0847ceb4936b96f9d2313869291eee6e14737f7424908fb44a086418cc17c0bcb8f86bd2148d1db9762529d3c04718153036d749eb3bd0d6593c4aff17a453f7a76a5b0c64d7f94162122c0338786a8574f01af2b952259902c3a1ef959527f224ad40b704b753d076b68980f0dd4344ddbeb2f5e4a71219ae8a74e16ce9b508177b6ccd648af582f65972adf11ae73b4f03de3ba03b8ac5b78fcfa1a9e1ef29e76efce7af5c50715ab1529d7f110b8963e215efa131fdc9c2421afac46bb75c1eb8ccbd72c4dd434fdc27916cb94500f690ffdd4cb70a0521137045f11fd7d1ea1b988912acf216a8456044044725f2a577affec4d3fc0ded4ce583456ced93d81035455ebc8105d87afa40e9fe7a20c9783c0c28eeecafe9f70244179f3967e88b3e14b505026b48c5753631643f50007749185087cc753b2fe3012f01e702912c3ef1e6ea0636d5c84fb4062032c1fb752e2201ae3590935afbe23d3c31f8508c0d1ac3d725c038b801b7f9b7f16d54a32322fd7d08b7f3b847711517a732218fde5edab31aa66686e6a324475706233f9b812429aba3255047a474b430a697611024239a556ac35b61e6e3730ccc3bfec1ac33dde2a6da38461d3943fc6bd8adb341167dd0b8d398e43fe859735b240fe88282cc283079fd1b82607f9df77fb5f27a0fa7172057a0d87755e6d809230280019e484120165633a3f40117a9fad26678a37ac603ed254d427a35351bef6f96f9ffad3feebe30387f7bdba01ceed972adae132f0e2c4ade490821c2152af9ecd5f47418ff6e4041a68491332b5238ea28e286fe81eb40615ca279255c11e6c144d58dee97b6be8fc111a95ba22442bed80147959e070f06ca17f5aa00379aa2274b975a8c4ce54bda0c0a1e3941e35619f575052d222e2e03555bbabd18cff54239074d8d131e67a079e767be87194e4ec441cb0f25c19e986b4e81041ab1913bdd9dd794031f1371bed33d8a667515be97145a95096c71f5b35163e57e79e726628c89e7e7a654a2ab3edcb25f6547e84ebbbbae4e23d512d6bc188f419e6b54143060eb657a090d9de4848d005e0aa8194b2b4adfe30e27383666cc6f90a8a4f52bf46d685ba06fcbcb212981af0ae9a5857d68d4f1b30e2be1538a5f0464a62c154eafdd6e30bfdf5ba6497d04682ac70ae67968672688083c09146dab5e8a19a4338b744f286125d78abbb0bafc9c2d99f3aa8c736d63dbbee4b593fde29eb37a9e5f738d11e805ae1706083a7c2025fa004cca49e9c4ea39acaad1f035a564dc7ab65df102dd4f9c12dbfb91b3287f4665017303d70470ad03c5e0b9b0cc8416b8679a147d193323513d91cd3aaea68c8c0e22dd05849ac27c5e7d43c4886fa924940acea7e57acc39115cfb7dd46418d30c0920d26816659cc43610d2bac15b2c73bc451accbc42e4b2af0fe8e2639698d8f103a978ed52475b18b9bfa3c58497b9ce3d628050c35b684f597c215a6e025bb1323881d962305b7c1c97cfad90b2cef1d84b922bb642f8faf05e591eab727de284fb0b503b0d2be4003c4143cb81130e45bd3d94cf19e5fe17145d8d4dcb33ab26d5ff93fef1641bc88c5e6c03188e8a9a26c8ce8982a4ce9de30d11569e14e411b263da96ae2a349f3bd465df0717d0c95fa03c67635daf5f2006f1c8eeba9fbb89ba9c7a968505d1ed265a8717e7077abf0be64fc91f73cf4a6818153b1c0337d9b5d08665c015dbce7acf7fcdb0bbc3f146647ed562f74eb38d483a244747a3c0f80a4344456b2f81908919a30b802902639e8d9035957658756f3bce344739dc1e901aa3a1517948621d6bb0dea0b0c2ea2cb892506369b5266ce0636846cb80703ce12c743a7098c785c885ef30349109f715b28485a68c4511711b759e080ed76c11c4a4aeb42788aab58181a52f37fec2aba040a5979fa392b83ac3358807755a16f8218b4cb86fb290aec43e83268d94405cf56b9629ebc1bfed87ebd95452dd0ca58240807049fcd9dab0ce24a6aa4dcd666163f340d5aff29199b945829af7cd875c3bb4d56182508f0dd79762b628f052396c042316227847098055df6f7302e1b0f705ca47705b46c112c8a6f01d9dc1d92dcc8d18a9b904bd59ea5b6879bac2e878bf41838777509864df4c62a5498b58024dd8604e8f98ca48d8fe890401dd6a593400fb249d41c21151660162b803047cb527f4a3bfc8a166fa1bd778e3dc5264e5f38f108507532c2bd5c4c9798c5a6ba49c4122b9b9652a83f9602df4f765fc0e968368ee3981055543a4f11540c3707812c0a0b9fe481f9587b067be53e27723f58a15b6c15eb26a332c2d650191006caa54cbb8545d5597ad01812cdd47164c0058429a2a68cae6da83c8e825d8d0f7549c898626475e97954f556369a05cf29be8ff626e09b0d9a1417c3d488c3693f39aeaa7e23d993cd880318000edeecd3ce3b340d71e3b1a9d4ac9ee8f6dd4f3fe5f71ec1b2d44a45ae879afe497b84086b1718254d4ac1d25500516bb57de61da0f7517e2b8c673f240bd02bdab586436c955319e44d2b9541df3ff1d59c65da3d1da61919831cb3fb2904cd12524e931e80e43870cc0a55f48d3282615507792a12e0e35c3e55c8728d577320f75a68b5c746f212a4d4215c08c42b8edd1877c4b692149f5f41d1b1d1c691d3d9aedafcad0fd2b9d55a40637ca336272b3aaa36752576c1d88520ca86f7646cc68e0fe45650edb3b7c9546c60200a8cab628df187d218c6e852018bfa966357fd7e9c24de3160628a52166f2b80f96189b3b5d56e32ff462782e0f37da78b78e273f85f702f6356271c783f307f1db04f9b1e44e86d7a530a26924994a706dfb1057038573bdac8f6ba394a1777ba14562845455b87fec2874ff1d5496760cff2a21012586c0159561354756ddfcc05a67f0158d3e23bc9949a525c8e68360fe05043cfa382e4f08b8ee58649e606db3df09a45846ad4006ef9ea1e822e3d6829c32156f9cbd4298c42e625e3949f03968df34b69fbbd9d59c5fa429be2614f25521888f89e723a61ba5030860673b35a7bb0ad6edb34834d29ad1d72ccde44db0d470d868a9c86e13ac89f7f20448e57908a0e8ac87892838223d705328ae2664fbf4820ea712d6bc2e33337c15bae17b996e52ff54bb75725d6ef67c9e1c57843adc69fcf041e10848717952c41b0e01967a21b9306a7f636c0cbb9f3a130b5f3d6ecafdd9eb2e5b6f137c204d7c977716e9dda82b824714ce84b60e76535c8042a764ee1fef8294019616e6321572e72432605bd6a3c1aa9e4956c3fd7b98caf7d0249eda00bca37d7eabcd0d8a5a61fd843eeeee5f0d6b282e1b96529d7f02c3617fbaee5a59ad4a62b3d7a819fc0fcdf0173bdc56a799dba9372b2c29f5e70fc4c3ba5f7e48763b987b96d0d3f014c017ee9723ffdbb86de547c7861510d93277654389dc48ea6004a4d0200d6882d9ac1215f977feef438a3fad4d016806162662889bb8c8286c317fd990c08cc16b3ea9177dd272749f15d6e34724a898c9f7ec06404361fef7189275ea04a070b757750db8f312282d0b8eda9cf26c73a04560097c0ca401d9775ed5fb061e1147ddfaaf47ea1e253238f21587c5e2b75f3bf3673b4baea600b2c70d6f20607b8d5a60b795925d05d30dbbac5803fe6dab9fa84aabc94fa989c6b1d47e415c9f12c33a3ecf763d5568a4a7becad708ea37985b177716fc748b630b26084353f2ab1c717beb3c9a15bd4356939140c463241593bbdee29850c45ec4a83abd8e07d4a44a83864bc82d04e0cd3a1ae229f6482607c88b94e52ea7b5c0eda81b085e99ccc841863759376207e87b0dbbccf76f48dd912b6ed71177eaaa7499da88a03389bd230c2d3ea4805c27bb5202c6793db621bdf1ab17ac4419807ee25764c22143e486d47233a32c07f109418e0e2dd6e0752422e84a118f7ec512f6486b356c8a984829b8f863fcae3a6e6ee1d32ed0cc3a7ac082ee17e59aecf3708b41e5bf3012f50bd1f2f7e3cc6d57ef994287be6e7297a626dde6c2a4401c1ec8f7c4615473364ef5d7b5cec489e3bc157c0192b6c812459282098b1993137220199f42a8a33a7f53d61585f9c9dfef33beaf0660a7404bedb2a182eda01e2620e6b04efbd380e29d140c2c040ef518f6b5831e4ab16068767ac9e97547aec9e3dab5a9d57964e3a9a39d483b40f46701b34ced650b5da0bc9e8cd9cda43d00d0c1d86a0b85bba844f17a467a6f5f469bc20a50c50eed15d7692a1aa65f90633250afa04c2976eabfc263e4cb2cfee2af5a91d16d8e6c176aa3ce62b0ea9062886a9fe06a5165eddc3eb33ea9b19db7ccdb3f97ad9f9c1cf2137cbfd00ff65464f6c823613c1cf44c41e0962558726a898bb6daf5cefc74ae23d2a3625beabac3c86de579bffa4af92ed5d68ff12551e3b6cdbd2a3789f78948d6bce186784aabaf916599c36ccdf27ff6a30d97b01789b0eb06f9eeebf94b32963c4ab6d358d5e197dfa4a734ad09471e77f1c289c97eeab7fdd94916c956af377887c05078d7c92db48e992eeff2ed144a1908a823cf7ed0b1cf767ab7e1020c36d5a265b33f0ace480fecf8bf20edb8538f91b4577f455defc7ccd5373b523a8b521ad6af681534f201de0b3864a64b834336a93498f639a7b786e964c092ca97b29fbec966bd2a3299a4cf50cdd8dac50ce576c5f15ed7853b523de84791e2c544883569550dc5bc246e78a5a4fc7c395af5be2b00d8212d00c02532e9335a404aa40b7a8295d0da2f1a6dc9f566545d668cf0a8e07b86f2e3fa390bd411448e31c5d9f42cdad12411a5f5f392e416cae4a70ad9ea9788e07957f6e8086b51c26c4d7972d179f07fb519c765cf4c7af35a16037f4f3d3b8d436a85ab0dcbf5f65968158fc6c75f441ed943d654a7a762a76a9e5adc45367e94aa10780b3ae4c3b8080b89ac5ec89575acc868df7a24aacfd4b8d6a98c1a237518c400d9dc35aab422cee792e4934599f4ba61e8a9763e915cf56f82dd8ae608db84b9b0be57f86be28347d5c33a5254afa50baf25aa41fee46dd87a31a1021a783fe96b998f4bd2251b28afd08ed8e947715b0d4df38076626cf13990f8810a4de986ee2e9a7e27a9570f19ff3da19d0fa8d9883fbd35ada6061da5b235118dd5176f0e94bbc321d33bb48a53edecf9856de79a7a9cc7a7c59bebc6c2740b35208373f50b450fa191cdb44348ac7e9e4163f221434030e804a65cefc123b201e174aef31f3641bcd5f9ca59c30c978f3ee909850e10748509605c7816273c4516b64b76e001edd6198a921180676b9ddb034471038c6e7416c23181e220beb44c5948eed70bae69697875791f208a344a2fbe70a96c867b93ea628683d6759701f988f20a1f1c0abebf613f857eb003e795a350587b951a7c9bebc3e6fe2e98519fbf4c728226a7b3767a33845f0afa7a9ec39bdb76c5ba791bd07fb9e4936472b77d03b9fd664f68d56a5d2363005ddb53417feb8770eef427e5392d6a84891cd3ebffa97d694fc2b772faa75efaf1e8759e47f93069cb41a7769de3d93d4ec7e07b915cbd3a5ed4e21f031de2e4a3a48a7e53485f59141cbc67503aee144516a986f0dce06835c99f40db714ac84e664923e4dc0f759f8ab178d64d393aaf26bde7b21899d39fefad52ace38f59fcd2b046009a96430b5d9a74495125597f9e6049a18b1f6fad56a44827a9126a2e1719fdd52ceba729f832d9039918245d401c392b4f95f867a9f01d20d84fdea461e9c8b448b27bb2845e77e3568640be66732302f510e20a7d9b5b24a460265f6791053c18c940859fb4f3683bdaecfaf9e3b594d4cb3877e756f3cfd75e886ad9b0e929c47dad0411eaa49a9d18ace7eae2628d2757eb5346939da8d097d79e2040bd43cdf8466e4d41e7631fb9dd86ca30e4731d440dc4006ba52bbe7dba2be9d33bbb3d4c04afffef6210be94c8f28891761b846ab7c16ef6c72cc94a6401de1f11c835952c412dfe51bab97e6da1cd5f49a3d9a5d20eeedf328201ab527febb1fe98d84d722543bad08c7009f132597c691d33103a7ce68834f28e3cc8e6fb79111ba29525e554d8b887a65b2e047660ec591354e89c4949c5477f42dfbc92c163a832f5d525a0b2485f17b3eef1820366b2fe2387c20074f6e53eedf8a0d2789aba8a6c6d3e1b278402289a021e5b8605ce8124be48cc09763653f7a0d0e2a5642d144dae628e78fc800bfce27de3cfee6b2544d5fcc3f7386039866aa4410617548c6ea01ecacad93e6015e133b16911a9e034a37572fbf982ce2626b409b6f16d88e98b21ccdd12b8afc7bcb57871bec1bb5e6f9a7fb09ec08bb6be78113ea7edde74c70812391de4501044339561ff2585dccf595d110539e836d19c228d852a24dd643502195b773e9253478ff6f00d6072a4a4ab177d4602eeec559669002ad29080a2e3d49dace82825aa2b05686a343ba922e7a6d6c3979aed1018f7bbc06bdc6243c448f742a57861945601419c3fa86d9dca312d2556d868ff33e0aefe72e8e0af8014fcb3cc1a9ece1e337ad7c4597eff9f1660fd09d429bce1f2db8d546aa643a340be3a17197cfe8443c92a6e1c36d2d0c8be5d6fb0c533296dc07aa251d352643ec54202c903361bea949e0311d5264397555866bfecf45a6d1bdf7c61400ab4c4fe4d0ed4e9c01be93d065ff0367abc995e58b60ebe28baab80572bdcc813d1d92b858b09931bd9424aac80a083034fcbad10e3770dbd791c0cc4dd42d6d320380569a2771f90a9ed0d972a58c3ac8d906d6f8fb1aac2642b35ca11bd4c30ce0436c88ab4f52c9d81c9c986da8cb51f824c786d944cf7f6c7c38c261e420e153be7a019c84228ebf72ecebb96dfaeae962f5743f64393c9de08067fd605503ed0b92551eeed7ee6c7a7b91b1e23001f5082735c9df2ba07a253438ded87793296127e4927c7d3bc089fa2f45843d7fc3362061a747eb9688edd90ffea8e5a9d76a35ba4ef9c02dd8f18e0e92b4757b63caa48bbc73a0c3986a84f27c92474cfda39e2b8a0baed67d9a07d6c968ae9c0e9fc02b3792232624eb0df3914a2d5d869279ce122c2f985323873a43b6522bb91e0781c0dd457d91a011aa96c8d1a0b640e1960b6a05c58a0ed7a5c4d7ed9f71c1b5c9f4c2d17c19d83f25fc2c617e5a57a77e02a1e6230094d263ea106ae89fb63f9ec60a8d99cae35dd9c86b40bd73a738a3814d19ab13317164a63c03d28b4f4b1c2be3d30e27370453f06281296e21148a47ab1e16498eea4de8b466a27ea933f8eea22132139d66ed9824576569b31f68f94da2d3ce88d0d5d98ca00e83ecd55ac4ca8f37d01c4808e1c9b8cfab83585ebeb0d432a4b932bde82a807e4367c215d2c4ca74d7e834fe3744544e941dc2bfad0ed99f974bb49c46310a1593384e6bc8eafad85f4606a04a9a265c54b71edc948aa78871b613f56de541a5c1f74f2a466ef94b0d18c9348381d60ddd984ed3706653714f3747f59b1e077338805f81080b9de34da2c8df0de954dbb9cecc7793ae2173d016f6ac505a5e72dd589dbe6f3dbb0b756db2ebc8cea6a04440029d100cadb79771216040ca01786883042660cf5ace80f77249e3d0d5f54a8c8f59e3b64420600f7287a018cdc06b11083f158f43a1cf5fd242089f6b695278af35157796934bc58ce3614924e6c513b137f3ebb1f95b77d6ecfb113c12eb5c812af96b148e1685b1a725a54725183f0d3a7af2e6b1e94dc36f9958330987f1a096abbad270bbc479c4454296a90b27e93d7a28a8647e6ba9c9188946eac102884a912db593f90cb57fbf025db2ad840d8a32b591b798632e3adba6b04ad1ef9678be5d70511726400db84e1520f10fc5bb8a99875bbd1038f4e6bbccdcf1ce339763c4bcd77735340c220e2c750bd39288e698bce09ced5c08e6a92e90d2e7ba28232690fe8c9384e5590e2c73b3fae432eacf6c14a945b94d5f68e366718a14015a9aa27d1d504d4f7728d0f364210215d30a67a3a617fb9ea6056803058d628f3dfd16a0fdb24cc206e0b222421c2131696166daa94a12b4d1a0bedb4ca489fa9f01cfb96c1ed90c2f2c0d0b927bcbf1414bafb780020ea8679782090459d1a3080044d8be1f66d89130060ed836d9d506cd21e5026edc5d6160acef4bb1839713e4fd01587ee853594907f9cb35216b201c5c540acdf7df42e2190f90430af87120ea99459b523d3e1382ed538755c81c3a5e5b6ee7a1bb4906fc46013d08bd6daefa3257eeee8428c27896a7657c688bfbd4173540dfe45083212f94c88d12c486c69114e7919f1acdda4bfea8b0ca849028650756eb939ace2739e70b7d1f515fb136801132988e97052d65c0149884e4131fa26336d09aa1c6dc4bdc984e28dfbf4390e8a752b7f30aad32e956ee0d281cf0e953298482e65f96e543bec8ed764206bf3c0fd16eca7a2ad721d63cda077a91769abf9f41c967512b75c3ac6f617a18cc95561deb0854b11294b7fbf34e02c83c2de205b21fb204ab5d8f6aa883ab694512cc8183779e3f0584d5d70bee0cdd091c7e8c7a9573a2cdd4a4ae7b698365e9027c9f195f5ea4620e235cf7a563f9c490f024a0038c14f1f0702a6eda62f05da96d4382aab60d87596d63392ea890b120492d97bf6ff9b4104a62ea888f054f7c76b955aeec539836d93f92dbcba7c6375f36a07d24dfcb502761b964ba718d13bd2b115efb3e6b31b2ca6bf6cd5c0a40a99460268f05b3bde67f9ac4c51f0145ea2867eac97f1c0022dde6c49f847d78e4eff7348dc0e9542fcd6e1033c889e13083c0c2ad2872c113992c5fc5f5167111b1d3ebba16e4ee6af6d06b4681db462ef6806f9ecadc11b40e6d6309bff949e73f1ad345811c1cbbd6c2854dafd3d67de8b672ba4f18fe2939b69f1deb8587446d8631a330d3c16f0cdffd9abdfdc9ccbd7178b29b8e01ac64ccee5c5e24723d90ee1ce81947e4650451837e09ea4c677eea87d0425978e426d8c78f253312df4729da90c94521ea82ea405123e5c3f20ec160ebf8fb8464a5f1f6d5f00c7909dd9a06c22228643c3374520738f17af145bef604b52761e2f8dc318e13f33a44a791f20a2a00005f1d4ae035d9fdbbdb263498eb2b90efb1599ac23d9fb94e7e8dea6d4db9297164819a72d002d3c52abe8faa064a45d355ecf6ee2aee55579b808c2ec5a0fdaec65f82840a86108095943bdb0f57e233042439f5cb771798c55b1ad8bb85de4d296da3f75045689aa6a775ca9674f06f8f8267950c9b3b8192a14c1ea10f5bb5f669e5bde0e8b8def9a18db13e5d08ed06d60409084405645fb4560d350f46c7d06cb079caf49e9d277aa097a317d0e3d8cb6eea839e3e875e83170a82be5bdd03005fe42c63060459a1f3c346c5120829e1d6176efddbe0f065da11f62d6b63bc9d021c2776fe319a3e51e1a9f684c11b50c12d7f22def38237da2dfd80b9183c3f6b4b4c999d3363de4b7274dd271a4e14ca9467588008f6470f1673a5be058884e4c5d8ace98bc71b32c5fa4db6a201e1ddb01eedaeabfb1ed3e7cd41260c055a80fb5ea61aa42902374cecc5156cf8595da51534b9bd6850d77841def85453d834e23112f0fbafe721f0f611944e174c92de8a917e549067c6938e619579dd14c5da37dc035288aa402b8ba510cd42ae0910ff3998f0e7ff18a8d243907b77f2f29904156f995b5d4f154aab24c0c4e107774629acb35ad3cabb35d5070e410450a77bb46a9b654ca0b495061334adacf3e8958860fe293213434e705553b28149b1a6a8f1d40360f6ab87d27c5b0087bfd24e0be896c8c997afb4ac696b85ea7c504b0f6b40288051e19cc2cb96542cb90036e539925bb3559e1b68665e273bb43aba1434ea41ff16806a56b182cb918a593a9dc07be3c8d450b5c51c8a37be7e4f2d718b60b865a7cb022aba4ccac01aef19573cd208b198fe11c0ece82af19a862c402d06498b11f8182a131938424c1b220ad1ae338b3b41223f9fcb5b63ed1fc86d1041819b369e9105c48f6d3a90bf80116219321235f1ebac176a12c04e14a60c35d8d59489abe001fd3342991d423bb943dd12d10615078c554ee32779f872fec8e3d591618d880080c034b3c5f6e416c4805edef84a65e3a8d5b20a390182e6aa468e91d76e0381a4dbcaf846677fb25942c1f8799a24e5146793bd7846025afa5642cfa434570e6ccea36908cbe3202610e4148210e8b84bf76df0f3c68e598516fb09cc3484f24a033ab3ed27889696a2b7c9e61e96cadd8bf956986a1beb3ea445fb4bec7636c2740cd4dad667ba1f2dd58fe4db9ac88df2f51efc329f348086f0cf7e43016d76b1a7c662b4492e1f1ccc6331171b9eaa0fe3c6db3852f449261d0a94718ae75eef11849f1d5062b146f115969504120f64145a1d2d34f16426da2e5c2fc3d33b240f809893d38dde837bd0f41e38369351164935880df7a7d0a08f95eb6b95b8e5eff23b3fff922c8f501431ce309113dd5ef241004c78ad68f4c6ae875472096656c4df42b5d39b3f5428224a765aa4637a35ee3bb2791134ccac83a306bb05e998b427b38e8a4600c068f59d9b435cd5ed256436a603a1589c5a6af0df6c5be0e0d93be3380cb130abad435fa88ad12ea50752309550486d1f9b150f1572ce47d58c60d32cf6ca67978a0a836336b8b41fc2565d9b2244dc5488a289f0e46c79527252b7e507612a442d2c826cc169faee9e96b2b915f2e1de0825bb747d41268997009a74be49f072d2d372a3762a702b0adec9827f18a73a4b1a637468ce181f54a70352a49527db314ab0a03d1183c62ad311a5815514f931ca2eeb48602f71c3b9b6420ba5e6efe246068b13fd937c435fdd85ddd06f53458112f56062ca95f37a2c8d13121e78d89f2cb99e153a88acf7fc6bb2125fdd1020008941c7a92b9678a06f0ac6b19a9366133ab254843deb6b345bb9c87580ee3593e8a3a685b64d0825ce00359d0254b4683e16ffea93bf1cfe416f60a58bcd0f7f7a7fc5dffdbd778d334da3526d7fb936a18bd80e2e9748afe0511cbc2a594afb46234348676c3ce1da565c30801d2878e65ea2019181315baf2d08b4f60b855049ae6831111fbfc75d4a96bbad06e4a27b3d2b53e7382a212deeb2381a43c888c509bcfccaf188f0be6b366b28b1bae3fe385f65d0695f141174f74553fc1ca7030227b46d79825f801593cc06518085ce7248ddf7ba3228fbd951ab1447f5b7df6142f6efdde24e568ad5c2613313a009818fbe51cf9ac8f6e69a5c5f43717f7dfe6db24ce98c6cf7bb0cc237604ea09865c09bbd0f92067902ff73ef94d199fdb70dc28bfca1ffb3fffa2f7d2ed9cfdce7a80c14c1cb26ca9e1680613a97a0c106368c1e351d2cbafe9e1530b0cb7080ae9960dceb02f8184ff98ec40d5749d49c05cebac702245fcc9dac54a3aa517159f90b580ca5ff42095380016f470630cccdae46b8afb1157f93886306d87efcc11ea96d7738b1effbb76f5d1b295ad313d97d53ad9020780c8b892d50b9ae7c90ad9ae74f0e58f26ca997a5f6d87f13c33168d811e527790c241dcc89b25e79cc67b69174f972d9240c916eea9cac51d6ac5f04b9b9853d90ba314ff11c1a4578ad693bec69d6e88c011a30fdbfeef11f1cab0b3ec39b2619d32e1e747b233aa1596f93e017f92c85cee94b36d0ee04e09d6e397629495daf02117e01b684e6766532466f3e09ae782577055a778fffde13266f591d2c74e726d025b81bec3d3e5953567a9b645bd7b3812974da51f28e7deb47f32f37366ae1189e04b8d0c29e00578876eeb5a91d9c71a16b78d4737b94bcfdb79b1d2b0f83d0958095db3d5625c3c8db44093851ce3e2f6f1d1d9afae8d1c839af2cc3c599d8c0020da7c04aaba73c6c865931f74f14831387c80de7441021615526209d28f80edb08e798721483e1b05fe8814aed5dbd0edc3d5d715e3eff671d370ece2b84e47e7e12ac75cad1478f380bf986c465a3b1534dc89b597420f9fcb055adabd5b269d5fea1beb4501c7cd017b4c57b1c9335d28aac39cb894bc7d414c0aea08df13e50d94f92cbb69f174b5f2d86a1798f0daa2a6cde5c0fdf4fce98792beb905f52733a9b52f56b276830b682888fa6c4343f51d24ec4d063d9e3a3d98e077ec0469dd3fcd1134e3eef7e190b48e3a8f29c9e74a3f2e64d31e38fc0d400c4907cd2e2b8365e0441b262e54734541b9d0bb85f00206a8cbea2c2ce744179912038647b9c89147805d6aa56fae49f1be4b4cdeccc340f2137a3dbb228e15dc9d2cc52e38260aedacedfa86f89e7258d6f2d23e2baa118984a2e89e186c1e111c524844dc616f11b7121fb13974b368f30414916473c088ceeb1c0afd46f682292ffcbcf6cf22789f099730a3597868a0b2f0ab2ea5075ec6c18bcc868c2364f40168086c2679eb084150b10bb49a9801850898eae55e18ef68ad2b3a23ad3784a2e40528ce77e64e02817e0fefa3e9557001266f4fcd31eeaec46a573f9840391277d0800fb197cd7ee096e430020c516716622590b5d7df462311fa48ebb29dd01ace1c016096e602699cb175cabd3df6de8a02f1fbd25425a44bf1b64cfcb4d9aa1d5ef8ec5e09c615c72c044853adeeb5a806d48ad68eacc66ab52120a41f873ba1e7a5ac27c1ec9cf3df08c1132c033a339ee0778ef671ab710a39f9970cdd445a9ec5a706c4ca98ee28aef5feb873c6a1a84e2ffbb25949e51fe76b6758d1a7b04748ffac484ee1621a37fe805e763ff800004d8d7d4867cb200db6e999df202a1468089dfe03d6aad6062a415b22ac68d673057850974c85a7764e77f3e98c3198aec0d09ad47cb0c629317fdaf2ec8689de231102a3ab00519a22b1ceb71997479cfa450c8c034d2f52d83a862e2874dde3d39e30826cdee9675d17ba1d6361b1f39b6b8ee24e1054f63983f5a07c39565388536c9f8b42bc8ed628f4ad779b00a091a7ea318706a63e0ec0a97b71e7cb54924e30c8c2570f581a20c168bf3db937acd0081f5e02072ec452a11a355724d418f223230bbd64089ae1944d8509d47999397d42ae42959fe67d1224e8dc5b6909af29389d9e34ae85b95d799f2886e22da15de5af81b368269dfb1b9546a42095ac6e2b02a7069e84f677a85af8561e150ea9c664e013973f0ea4c61b85ed482c44caf57b0792e03ed5197f0d4977b4c0351b61ca91358fe818db67a581a36d2270dac32d673eb1ae44b71c45677f436746dcbcc79ce9936e24f4af7d17ef36991403c305eda7b24989e08d762e73138331ac6cb8ea7cfa6ec3204bf7a0212e4a80ec46308fa1c5ef5d3ec8b5820f15cdd1bddcd8beac0f13e5444ad81790b47359dc71512c8d1186f9b5c623c02e73d240c76788c33ac3e90045ac287aeb6658eead57dc122b36d12fb80a5e608ea7d5e3b072c97bd39d2b9df9bd6c683414c794a4c4b55424dda2b6b19d3842cfc2a7fa52c352061d0b7e0b0c83148502b4d1c39db94073f8e09800fbb9daaf0d17639f7e85f6b1a257d1da9560c43b024c0dd23ee661435c0b21d601e7c675255097e40107620a3a26aee59fa29f8638a4e90b024e49e8726a6cac0869b54432d5b92ff0eacc932240d107c215afc67d821bb251bd3cadc8b8965c72cc3cfe7891b600d836fcf4cd656509b8dc19459852729bd1b2388936074320e69fe89b17f30a3f51b2623171a6aeeee88899f46f702823d62a287b194516f6f6ee52598c375d5259877df66d3d48b059ef5f978032dad72081055d3284a0bfd0b49e8d9a30776fdbcb2b9f9a20037e70bc89e6ca99a2f088d276efaa013124f9634522406bdee2e0004d68bf5e61d1335ed3eba5c08cee03809486c905d75a962be4693ab0961db1e0a246189912542b8862d6853631ac7323f7b305fc124743c4a5414df146462442962148090134baca280626ad64a04344a2a8c374a80846d35e605d1788b959c5cc525b2467d22a065aa02db9742a5d249a094fa7a975abcaa062f24dd07de161ee6f73ca97fe54a386208eee1cc733126dba6aa2bf5d2ca88af44bfbf00cb173d03001464f2abe04600d8209c49b68bec5a64ba06aa1a9437570952b3b054d8897778aefd1722392e48a9328bfda5e14c97f9449a2d7e1a43874a318b8fcbff6035309533a57884b0c5913b4834a4a394012aeeb6368210e3a3c55ebfb38c7a8a680f07de48d96a54ba33f177769ef6d7928e09381c678db3c3097f38cef1a6347405f0d84d4f4f89289b1b1b55741710701d327347ce5335fb26af4a6dbca7e7b513e48bc868005a60e34a560d5aca43567e1e89ae7773406fc4527584d5f5dc41002f7a99f3c8df74aaf2c7c577ab6eff0315a308d1e4dbd19a26b484059e60f15e8f7b409af131fca6dac8dff5ceea191286f446b256a48376f21ca2c1c9e4760e3dc4405b4f3532b47d30e75b3812a4863a0e86945d1ff27bc81acd37492b6c0cf9a05a74778b14901104b61474feae3a9b441e4f727e256a27a9f59b737c51527376ef8996bdbb335bdced2fd2af50d49253c798949460474630294d9612ca09fdc46e4f67654c5d5380bc84c1076f0bfce5d7550fc0d7f38487a9e46906d196907d9e00ca58357a9ad0a0ff34742e01a2165946693c6f2e79cacb6e0b03c689d726f4714156c9bb66c9c388ee69c592e65a93d731184100fd30c9a1d4e4bdf57e81d46d429285036fb09a388567b1185f6155683157de2fb4e079ca7f9b06c002d110275f3dc0d52afd4ad88cf47012c37ac95cb738bbfa1d38053f5d49a699aa3800279b1641498689e24cf239ba7f071d75c461ade1d1506a1856ccecac09bdd93674605cac8c684e3507182e99a8c3e67d6966038f03b0093e0fd1086179443106feb0b8fa30e46076649dfa045f72add0b81c373efdd390066ab016a6ed14763ddaa85e8dec464a35d72f3cc72f0dce219be69bda3a486d5857dcb018e6afb70f843cd4a3501b65e25b8773c48c1e5da4b6eb66ad6d5acacfec4d5b99a85db3aa8a72a9841f4fb5324e115f99c7c5a3f095b2394e040953219d3bd846247ffaa78fd61b8768f047bb8698a939f426849c00b006a7758aba30cf478d72b76e2f432cd4adf02bb011b3f98354358de1f52d4941084918dd7cbddc51580999edb38941bf131bc66568f73af81a5caca521db5b3b36fac3b1594ba6dc5f894da9a41ef9477452cb64bd91f107f73f38c0e17098640c47186f5db2da5f58d77009e81e2cfda38f30f0ad802e54fc7b9536b05a5da683acbe34a1ca94f993f6d65799a8909c3156a02a0833aa30201624537e414dfc0ee409f5c6b42996403f7010904e7562838c423ba8130f25db44095edac3d71e3ecbd57fece07a0e0bb273f938e979b6b3a345c937e0707ff8d0f65882b9f3035400ca7f13d09a0f0f8d4c732ac2b1fa0e3abe9c68c48e8d0ce60214ec1ad2b11c8a07c3d75eb5c1897a96e563e3eb1bbaf792bf245a68173dac1366a3567a45ee47a94bea2597297072a636a944a3a98c588748e361c3d0f849f2ee4c77908287168a172ab9b745a3dee225b9008e8c4d55d7acf006bd257c64b7d50d2568bd5ea8d5f65689882f135ae8b204f3bf5e5217bf67a0ec16f67d4f029ae7a33c0606b4bba05ccd994fdead933b89d69f322a17db036ff702a56a4137d5289f146798c5cfb5d282dd7697d2c27956b1bba44cb055768d893d90f94a2dd6fc7de969c5ae35f1207fa46811d8acf088dd3bb05ac6eb0be9f9bdd1f95c45a6aad141df657fa32e2a841ed4de472a8e31f518c072feb5b862bcc0c0559f71860f850703f054bf7009cd4132ded7958375bc7c05acdb5926ab5abf95602a37db02837b5b78cf98151e4fdca8e63288b5e0346e774f11972d8e605677f1f6b6a264604742f5a73fe02750671887eb0637b14ece62593c28fa21f33ab5926f3519c7ff8fcd7785d159b33445854a7f2683fdb21d32ff4536a0a75b55d64229f8b82c6fc86fe34b315916f230394147b5fa2896d72c2d79af5e2d49f95d50a74249bae157a300bfce0ee2d20c2a189a5cba6cc807c61adfb21ac09dfea4b63369db387a12f967cea66965a90dc7432b8f7ed692cdd72524650580b81b5cd64e2cb072415f4ed1df63715fa1577a2c05783671bc60ad245d6e0f8ef1cdb8da9c174a4d64e46ce6a2c913ea87e734c2322e06e7fd04477f525c5187159ab229cb7d4b15caba4c13d00b69240312440adcbc08bb3f15136eab2094ff20c08b7944b56b84dfac89cb2798cc36e769bab4d731c8b658499605f871970b0e9b34ad53c402801567470f851756dee3f3e45e189b148e67c1ec131019c0748a3581fa00a0f8067b5a5c9bcc0ceb3984e298531090ec9118cc0c780bfed30f1a0518134e01340f023b05f8f4b327e1beccc639c5300b2a82b81a1b593b8f6c0c6dc332da2eb80fe132eabc49f392a005360479eb722786b7975e80d20148b048f661685ac2e27ed4bb31d3383d1c3d37b4cb0ae64eb291cc14befa371afc4a5445c261f24a5888366a4a00dadce40ea00dd41774dca6ba8f89c05f0d1023f9a09e4a0b5f166d603e7f48e5e7c0657859347789a3521c1451bad342711a4007629676da7485857d734fda7f45399ebaf10bfa067d8a3f3e9f07d19a43c2a04dcdcea5cb07750242b7f977a976338dcfc9da18fa3aaa493a9a15b904b3b8a68143355074f56cc887c5fa12850513ec24a73013570a2100b534ac224629af4b2a6f7cf183a5b3a0e50a23463f942c69bd60a2906d8c18539b3d468c0ae9508e11235df3df14c6eb0dada9018c18ff50a554598ff858a70c0dfec08871bc0d89715b9cc4381014a44eae8ae47552aae950f6077bdbc4c8aaf7f1f3e48d3a1623d76798fdeb103761d8c89a47a667b589c70840bca3d2a2f0078641602783eae2abb7e13f7d8b22900d975b8d7ad5af7bfa3ac6be4b6d626c1379a0492bc817d018d69bba4d8c1fd592fca89fbdc47f280e02b92dc49cc8010775df87441d6e3e4e3680f0892f0f6a7a9ed29afa4a8eb0b638b0fd675f95bf715a2b410fff14a2ec495d38e86c64d5a12926215590069235a547e3334701a9ba16574511da62c7914508497532642a7b0752437618a9972a30f7dc31eb6d84a5f7be1e0f9a2f5bd0804d4495ad527ee0cef5530d008207eaa7aa5cbf61341159614689200d13ba8d2e8a067e5d7c8602b6f3006ac2867654c8c41af2fbf1f218b50ab3744274f3067e477b70337942e8dcbdcae3004e1c853e84275c6f5928d0580bdb81f7e75988425d007481767b6d41761d9487e576665b9fb87f97dcfa4e5d017901c80354ca1f2d1e93dda8ea4e4884593b8750ce2a5a67ef61ae186f317947099818334df9e7f3b2e4cc7ebfd36f0635f8b89f6a70e178deda5c617c62bba22ecb44652e56babaffc27548c0ef09c826aad02dda4ff62205fc6dc90e025c4cb740021ff0161a82bd3996856a6bc497c32815c46289c56a666fa65abbd201f0401632553c1d2e99436aed5fa76fd80d0e16d541f64796e645ed00764e4899ee7d3ef965cede8f4c40332abc69c45d0d93cd1859165e54b7ee15fb041ad58c608b2b5f96423945ee7b8d18cb030294068a1da7fd4d16f5f263b5b48394df866031b74f4a6c4ce22c7950c5cbe84a60f696ef29693c05db3ee361817c9aa7572cf54591eea1df9785d9f234772a30d45d1cabd2f98e84614a6b9c31413b8d8c42841bdef96141af31ef49f8b6299e82f29d575f15493e9f1b9b25405147b71373965a33b38400916e24a9b33181e6aed49812b8d82e1c07b99215615ee945466c8dcdb5fd031ee49185918b5a950bf9f4c6ec7334e39c1aefba425c8694777be2c7c9c6732931297f0a16b6e37cd3308ca0e14642204598a537336d87228a9c4526a0cbbc03fdefde8c50d2af79534a259d22c440212d61cbb5673d93a3b56290c3002e1b2d59292831003c1afb97be70e291e021a5e9adee954d7f2c79ac761f65be705fe7be8ac38b963629d5ccb6e744910c3fee494bb0b951be91ab28cf733d95d4b774a84621d4f087ee975f9a67cb86a6767c3affb2ae1ce378119181a53aac8333ad30848f9f711c1f76811ee200567a57ea8094812c7be65059b9004eb1e8244838884244a239d3e5648ccbb261beb20b87069fd4cabd96ba47e6e6ca197831a01707848680e1246b9d1c90bb2209e7ae74f07dd8f70a778f33e37cbfb456b55b70880634ffff26c23008d2c246f66054644bdbbe5056682c8aff9c08e1e2502b32e3f64052f086e64c3deaf2104a5b12cb7dedd1b479b8ffdb0b8cf0f878727df14c00a0b5a6258a1a6ed9452e7f90ceff5f194200d6dcf28fe2430d951cf5eeff19f0d226128565e0d3d7c45650270c17e37fe20866c4f626b07d79bc9f2e752d461bbd6fc2f5393867905c3193d3fd5557c553d885e47716274d20f9384a0f93a5cf67508ff73063c2f9f7cfbcf4f42e1bd5e7406659e04c6b9d100ddd6838cd53b8207268aaf2e393a0185e416ff46ae99d282aaccccd67ff0c36f669c632787f075a898ee966349400c003ad692c45a2eb1dc5e2e20bcb295459264e53747be1fd414454ab55cbdfdb876c731421a0790b6f68d8dfbaf9905e46a3c79f3e03956031f3efeec213079d7ace77530017834ecd712221d5cfa302c626ba732714903a87eb98a638eaa847ac420effa4c00641ad18b187553aacee0761c3111596c6b09e15326cf6226860984e100621f00ac6a256a3fe816c391c2c7ae1bde71542ec99384a1396107a37f419af044eb6c5b553852e2ca83e5e1623b765a9ea62c3fdeb531d4a82bb412f43b3f7f2304c3081a55d3359f4aca2e1be699a26018275daa8b82bd7e8491b10ae33f9696b5b2c97406b6e29b741255d65dab21d0aeee60240102541b7d79a12c698fb264cbcfc328178852e06e26e2368db84bd96c8ca997cda22f14b412084cf647c12e0227ceee7d22062e87e043f8722c0864de5c897edfc1258c3ddd40c981e13dbc3b6baa3fad64344de0290bb228181087c6326dd51cd0087e669f91d6d46046cf350182c6e50e5a7dd21f060ae8686b17b60de3b78cbe7df7c23bc615a64c94b10928a5206806682c3eb961bdd4bd8d2773dda60a7b7d0d05cd6640bffd069e4db5d765cc27edeea0a2b7fb5e4d13902cc202f1870a7d7a2786c0fbe9427a339768d5cd6ee6a5218b1b1ff0e6497df21e4c435b3cecdad77826303e7b6a3ff090cefdb108a5e3daa254d70644f5467f720ceb82a9035b27ad47f0f65e2d111341e6032fc9f61690c0c83d2a5a63c1cbe5a0c42a1b2709578fd08608c1b527bef00d61afba2b10beebb173e5a0a36654a6c15ee43df807326a95591ec8555f2e1aa820821523eb0ad7953d26fbe8ca2b245a251ad00f342be7eb5c73591f8015f031113aac4bdac8a202a89cfd0404a6a4014673c7a0b6c481691ab06ae56dc1d3c87286857822e0ecb453d07823f5c13f3bc6937a1840505180f6a814c2c339e8eb71801fb37c14766281cb2feba0ff59fe5638a80a279915dcccccb972fbd9a1404ce4ed34eb7ea3697fa13df9fb33f5cbdc260be3c64c670e503cb37b7ade7a912175dd6284379c348c74e7eef5a2ba5a96934da0296dac6200215b0ae7dc34625c23ebc3e84a60a42a3b6fe96002df9fca4c0c03294910ea9b94c4dc5680ccfca5ba38986a93116a1c34f35653813452aa5e5a73b3734daccdbaa76816a9d9e6b36a663b487e40172082562599e26052cd91cfa8a2f4830a3b2c59e65adbdb99b99f8b4c8c74a8796bf22ac03e6a62931e9f453a37e0f495d08cb0639424532cc6f1bb4e5b273bc75195441f4c5af20db1589df6c0317ef12a940bb40c03177f2e2ce301f7a3876e8fafa62afc861a4e97401bbbc0949000084b70049a727b50ff3afb43f0fa588c3f1bb54211ae42e9e3954ed64665c2d51b6d7869272333ee61b44d3c2be97dbe516429f0c4ba5e5b110e33752cdf232a9fb223ce6a54e94f413095b7906fcefb7501ad5800b7174423f37de428cd258a544a53c05af5addb4fa8f7fe4acfbe784e81a06f9d2a61e70e0bf3b42709e0c811924a8743b2043206fd920d7d290991dda0c985f8fbfe732dbdff1ae7bff461311b1e7cb11b344958b662dc873337f51f484df992f695bc788fc14e7f915542d786f4eff10fca8be60dd489e66a3795fd7e64efcc062cf3872039a06af35beafafc3e631762ce9c9a36960458f27daa619e0e0b5bd6886c48dba5060aa84bc97b54cd73a741d2a67975eec6f53997aab15526559f7febec8cc5365c863bc657e942bc360aa6a91b5986f62bbff13316546d2cf8ce875c3bd51751e0ed24da02619d64e3aad8b5f37b9ff31b0df3a00f171da50d2461fa68341a28142ad21684d460c31024d7fb03f3fcadf4f7f464fd46dfcb917c3ca7c5a8c97521ed0e4c59801fc525ac66b2446bb9709665f68156d36d3e0e40d61844f6b5a9b7ad86aac488c9d0c272efd960a54e4b049610dafcfcce2ba8e363d1968231f000bc89aa50c3bc3802e4afa9ab1b229837b1bdfe2e4295cb300f01ce75c8e405a3c3e92905a3237ae41b4000e7d2bc231dd4197abdbbb1d5b0eeba3a453a7220354bd33b469bf61a7a2fd5aa7dd44e834d0306ae25f2780b890cc084beb31b3618d14caf8994bd5a2c90e0b53a3aa4fee56344dc969b94114e458f69ceb0b37a205990bc0ea098951c60a2a21c82eba70e5d222f388d116b10833d0747e08d0a724e8f07171d85cd89d6a4a304c33dc556009c309273c2f79e2694ab1b00c6aad166bcbcbeb0290d970ab4d4f68fa630d6f3541671f66240db8daf76cb752dcd1c9d3b267131a75097a01062909d77c16326673f23e0bce931278a43a15e1a0635aacb30fe6d3c3452d377744c965e014bd28a35520d61fad044645951e7457cf266e828a32b9c8b11251d88ad409991bd0e17e766a5aa3d2cf44181f6679a8d1b09f453aba912dcf5cbf626f891fb2e168b1acc75adae2f910689b1287f877c6e08e3b1c8baaa32bd4800d791b2ac2e32a0992c10fafcd2d6fd0553149026f9c42a8ba2563d12620a96c28828715362d194e19d59e4e957301aab16925e62568a480f9c09b2c146dd5bdbfbd5eeccbe634958dc1fa171cd85ae78f4881e686495e5e1a4cd88627bb34ad26eef36b52fe765b7fbdae1a16133d7cdf9118165283ccb859b423e44d1c7f5842716bb1c5741d8e63db09faed24b1923040ec4518c05be8a9bb29372bce51fc0884ee9c0349a19fcbe51aeac92b67ca48c7db692ea7bfda258b33a51a8af1a8243396ec7796003867b300299c99f985dae0bd1ba25a976c7a41a26b756419987e579f062737b458e4014735a5305f94d469e2f0e671febd4eb2a2eb2bd6d61fd0329bd8ffc14a60b12c5bcbbcebb6435bdeeb031aaaf34425d92b21b329c1bca15d12f6c7bd8be0c8ff7ebdf3d2350a8a934c7a1ffc00e804c571aa253971237283d5f31e360b6fe0310afcae8b184a97aa708db2f685905f4b485cde70fc5c91676bf9759fb039bcdf6a9dd31413d690626184f854d0062e53d1b0269237eaee626092788aa16880a26582444b511664fa829f38fd76ded72a30a9a4ce061dc7554e006dd26e2bb7a1758246eafe94526f82b8ffbbb1edfcd8f272c7918a25555cd98a16d106c2c157811a3a3c5209e372c81b09f4281ce6d1e82daeca00cc15401682a26fb95d089a6c09e1f6bb931c1afcd33d6d776f65877eedba29e59e357b1778b60f9158125e86b375c970f8c346d7f58662bfa80530d06e6c84cf04d85a6487e4e7033ab09bfa0071473fd14559163a6ea9483f34bc6c2b27de714f196caf8cee193fcc4d768f6602ef94f55fb242e6887bcbd5b08faf42ea249237c1a236314f5613fef5cfb721666a2506faaeb799569645e1e36d8623b6df6b0cecd04db32b6190d748a1bcc6d1babc2258e26aeb7d83c8b389c0739975cd091288208f5603363e42e004ad3a4311ecd33766994d5f203afb5a70a284571eb24c0a7854877c434c845d3648da490686eaae8c550651e1d9b00e2ead2080f19ef23ee5f0eb4389a2b5c30ff12d82ec629a1aee6ebe6d446c273c8305b2df3b98a3a5defa7b7895f2a4ac3dce658052344c0ab469c8e4122f50a5d24badceda4f91dd29d6b6e133c19a4ddb9110220fd0835de80f9d7a12ef7ce24ee997650bf271c06ba80c29125c721ca0a9932b86e08e48c916d3d5134a32dd5e00c9656b07bd4e1012255aaebece928993ad85f535cfb527fd6b54337ea15b6d69b5c8814d73a5fbba19c28627b1550d3451c2e8066820f768b5f3efe221d0cfa0ede5681edb85a99f26811075a26fc74236d320399bfc6a5c4849d8a575dabe81f120179911ad65d8274f828c1819b8891e2f7beed7bbad4180e61a98fe39ff48a3a07ac9c7406c8bc16ba488645b280fc83f51cedba142c2285eebfad5424342ee7963f42c7fefee0709549c4b205ae9e755c92ea289cc05d963c7317894d6b5211cd1b41f5de30bfb2a1c14a1e534d5ab77d69e65e2134ff26ec5234422ec4439c7cbc0e7b2c4a59ebea27939a402a69e4bc9a82edb531390eeacc4a6ab7f74bfe562d5fabbe8523d62d95f06fb8bd9942a8970fa89b72fdd10222dad8e028501131993707ff073df5cdc8a6c45a8537833672ff2199b153cc8f5cb6645ac55d08fdeefadc215209e3ea6191b82f4b3aebadd2fa4b4a8ba394fbacfe86949d481ee792f62c8186df952b873a03ceb9353da5305057a11a11b8d3ddddd59cac424782ba904ae4d17b2f3e8862e4a52a0d167a00cc9343bbff922459db2925535c0171bb2958d2947faf4c170ff4a879ab47f5f8a0727996f7a8a4361b046d82d984fd75073644f48f55f48c2a56719a842a4cc4d6033d57927c1ec507bea8badc99e3f6896ae3f5bba03fffcad3bc2b464cfb3e557754b7773a78f17bca6948c32a2c856440cf58be9b6cff706b9fff1329bdf00c1d6d957a2348891018d7d6bf75b21f25c70bf25d5adc2bdba5272d0cca8caa69dde88b4072337e87809a45a66964a3b9d50384a25688576d1858efd6ff420e914c015035cd3db7ffa017c3cdf518e9c89cd508b58a048654144bff2189b5eae887f480c14be8a407483c13799b8e628a17f8d1b0608100e247c9ea325010330f32ef3c74c25c602338015073d705e01c9cf4f6ca93065df67334f4d860f437ce426d41537fafc992cceafa5fc251e507315caeafc39183c4f005f2e7db9518f6f53ed9c586e628fd1b50a1d6b0b83bfef35cffb6ed4bf2ee14132d91309abbb27f160f71022e6e8289f3bf03f411ca54e94a3dcde5a3a976cb82a3aaf1dd8b816ed4ba437b140a6c2ed2922813fae6e66ad0e7d83b29ed5b2c7a80f310f6fc15683817cc481f50d32276d639801afb2a2f79f54bace59853b9a2a8ef7dd94eab230354c27755eb8ab3e5e26510c5607ece4d4181fe85d9c52ac2d4987f4515f3410e8d1f4cfe8edc3b3b72e50ea889e55a722855a471c3c1417521b3052ad7c765e552042a7ab720784b237104781b4627eb091dffb29f37148b5de1b45c6bcb40d79e656cee7e879b8bc276119e4501581d0dcd92c66717ae1104d156c28c32f62d826d099100ab5909e6ede692a53d61821410f0b1dcedd235a469336c9c52def768f4661c5d2a4aa81a24265480f2461c32e08fbbbb5071d680ea976f934da94146621ba10cd04b7070f85051d74804901e8d01b0e6d41337240498239b005f2c1ae114b0d38955d3848a4674707c1e4526d12b35eb27f7dc3883e8ed382e6245f9faab7d8c7969c8cacdbefd6c36db55d04abc2361d9472634030c2306da75277c9b499b4bb0ad6c8229547ef1c9ba98c444c62744578dc73b50b9d6961b1bd674f5751f4f8afb3e510403334c56b4c2e30198d75a81d3561d2485dfc3c8bed86ee206f03603c5e6942f6a68ce148949e0e4f579562fc6f2ba0ad3875dd3e5d6b85c93596e3d4b6c6c3676b668a35ee11a7f829cd98a69b87b102b0613a7a6ff26adfa0e127c7b772d3c62c84e829c786eb35950720146c4081b7c38bf02125579dc20f11f2fd0782bf7334af856e400916173fb71336a2b15f6631697ae7dc288b40508312ea47f5751a644aab44808c6fcbb2dcc0df508f5bfe42aa145dc1441a8e1b41dacbaffcdfd5fe1ce5af93ac5a0edc92655c944e6dc0e39115967ed4795aa7b7082125e88aaab28fe746c1809598e84ec3f33e4e38e3286d526a09f6e04eeb1f1edf6d0b15b513678735d112fdfd746665f550dee8bd7ac26e4e1171f3a3dd77df2db45d6ba48db8bac8acf530913d633070ceb13f439aa81a600caa36b65f70f6a1baa667e4a133446eaf2daa950553fc2f957592d56002a336410556e3c1a8b5566758a207acaf7886de0d693a44d43b72ca172d80898dfabdde76c51dbc1151539eea6b0e4eab218cbd5c86374e1e0581ef9c82e654084e87c42eb0496904e53fb44ae4259ea228090c1fb50e5937ed54a373cc791c0e612c85b320715b69260534e9e9d5a504c74d81f72e4c30654cacee3c3ba46a2b644095ae01e08393cb1664ac2ecc6a028a623c46275be0fab12fd6c38c256f6b3fb763789a36383e3f81013a50fe19dd6466f9cb0d37790fe3727472471c12a83f3e765ed28f335a593e0ae010017b8e088f05451f650dea2ad6b16815d1b28d00453ba566bbbefe7b528019087997978a8606d117e6ec573861dbb821476ca28327a0f235918f43736f0890e09841c0feab738e88bbe51afa352b6ca4986679ffe1dd4a336e8cc166399e9cce70053b7977ea71deb5f485785c6d782f7b5689c872cbc9cf9c77d0892229ab46db00ca7087dd3fa346d5fdd156bf33fffda644bd03cfdbafb200a45c6a8c446acd9e74afebf962c817342c051f3cd1dd995e17a8bca45d6725c5b46f0a08062c323d00e0e42d3d2effdc035ecd53cfd1caf6cdb47f0e12e20092ccc278a05fcd713c8cef8f2b8e7af9b8c62bcfbe6f36688c292e0e13f1c64b5b551c568eacee434ebe65e10f406a3df08cd12f8e23599caab5aca09639f3479519f00bec7c549ad82d05d9c226ea15badf6e1c41a6b524a00e5d07d0853573e02a373d17309e453f698d98eb303cab19fd4bd42711d809f68cd51898032cc8fe9848b5fdce3994045c3de6306adfa2cce30c63b5e0e59f006ffbf949bd2b4a7b594dca6ab33457d8d8e5675ac48cb79075edfce43a340a8b68c071c624543365527d4e465877331a5002090e9844531982789ebfe1ed355f0888fab495e1cecfa374de9a756e0ae32c26bafe9c4322dd731403ba4012807ec00b9ac060633c28c76659e553d96654c8fddf8a1535b5fcbcf4348e8cbf6bbe55d710efb403e2f3d1efa66238858ea3b9778a824cd213234f3888b70f90a0a4595b19e71b148fd9e11553fd3c0717ea1d0842fdbeb6798e3ba7564481b4e75d717e5c35dca228d133d2bcac12f073b4ecb796b9c10b78d499bc78e41a7afe89022d867406517c423c3366c3747b7ed358dd7fd1a03bf8832deae84a32cd22a8bad2a59b416abc15697b48433de351d5d01c2058b0b2a3010907241a4355239060d045dbbe692866e84f32fdce3daca3fac7a24192c67d77cf1f72f3538e86b8fd99a50373a790a6a254a116cc68d369ba7b4a605fe9c98c0d21502c2bf6bd0c201076d3e7be7326f3f51d1403ef6542c9680ad945b06389a74c88b65d2a3d159674c74e3c0e20f7515a46c3d07979e0e9bf7ff7445403c2aa46126a5910857f2cfae00f6b6528ae959bc7ac31c51002d4f002bacf0b37e2f61728c3759c6b0653e94085c69a65c90db917df6a695437103ea68c17b69e9d5aa6f0b5a7d54daef5bfa9d0c2e40a0c6102c85d2410c8a2389fdfbded712f800ae0d69712c179a3cb8c8d9f6c64566e7db92eb08ddd7d96b595c60e5d73d1ac4d69afa2b396da358c72746602157c247d504ac299e10c9d7b8eebfa68badbab691f15d2127d3e8fa887bc79c94fa08894b1172e4085c4570a24bcd70a7b387b62b2cceabe8d370d3dc59ea9d73d6571ee810d824f88c1d43383a321c0fa88a617e19018ccb9039543844c2e1b6f11160c7b29711d5ad97bd9d2a47817ae310eff6184b0ca7421dca4ce514e54f0203c5f3197f54138fd2f97bb01d5edcfcf039b6c3f10f8f144267ba92e188977a4ec219708d56f8ff7ffc0f57cd56cb28320147e34721f450a10d58760f2d7879cce88d6233a28f78308c3c56e7c78c5833bfc418a19dbe3247eb4f2b48b132a906e85e55a60077d4202af2f30992303212043684fa9490b008c4b0316c625910ef451e5fe23a57edd4596381dd9922e6d7a1fae90b807860424e1dd168bf202fcf0268e5bf85068cac9d7b769ea62995e26b469698ddeb6caab753c3a202d7aeacc4a6d65e7e68532c247b140a16d590923d5ee0beb68f8c4872d6210fa712a095aae6015f951dd3b6a3f004edd7f47cd2c5f154ecf5bbc5438f1c93331b365fe10a52fb4dd5ca07866693aa72d4ccf7e02dcf2b1e0a4ac918bd480dc64ed19959879b5a8bc78aa68e380a77356cf63ee3c3eac5146fe63e88ea4647a7bbb6b12fd20365bd67537ed7bb788266c5f2b834d33d78f413b9b0b7a62a7e3886b79998ab12f74656bc90c4b764adac06f6d15dadb044398c1b8bd19a70a3a3199c6d0939d9bd2d282fccb39c64144e5dcdccea73a479892e18416bdf97fd0b6a77bfffc544f54490b8a93c1b9e0a77f277126c0576dbcd2edee189f70ff822bfe4048b04687f8964d00a31989a683484216f81bb429dca1fb47a799c425e563d2cfa0be69ffccc73998ef71d73a352a3aaa3fdeb6baca0760580f202303bc3a668c22ef0bd30dc48ffd1a19bf1b91bd14810e8fe35793e569f2665d049d15cb7683d4dc688091d96d0a94cb8029c432b1568a916a3dca8efe7b32b871b39662dd5c173501c7c7ddc76eb80f0946464d9f2a054e50cfe3a349432d6fbc60ab758c5212dbf3a7711c42af25feba2da7ccecfded4d7aadca2999b51491b522bf6681ea1f888469a27a627954d08e5ac59a8d8f4855c8315e2a0d2e4985742a10de4a733b192a658921cdb6a0776533373b54c96659b02a004527042a5e9bb48560b1557c17b8d6e2ea730d89236fb5c93ad6d673fd3e08eff09994cb2b4b79460063cc53e9c4aa4e99557ca9680d379ef4065535e9d4aa8a5bace80e602bea97b4352e794104b5c458cce22d42f2f4c36731ea9d91615cc52c1f0c32bd8aa698d975da8aa5a07e03513970d15eda3b1156f4d4664d427becc542997b086daf47bdd95e0c0b164f5bce0a76e4ea5020d7fc03dc955bf2f1c04818c7de5bae495f347774d0e5af8c28dc1763882a123fd5ca48df27c9602d25b5231fa719f70c5760b262b0b9a9e21234e065cc869c6e7f5fb39354e7d1ef76a2365dc0c027a1c4da064e172d320a46d5dec06365904f45d0d91190f78d764c7092499937f75c44ff86c49654a55482b6ba677bcf8bdf786aad422eb508e2abbcc1a0ae69f83c6b72d810471b83710c2a6979ce32acb2764bd8dfef6d357cc41ab9925b8a4a4a76b898e2dc3561dd0b86622c0b545e883337f66241454d407355439978fc063c1642ceb44b286a1813e5017ad8102ea8064f03f391b5f12d85a8e7c8742c90ab74962c163310bb84aefc56a6235921793e17f4bc54a987c88a72826eed0bc119c74ca54bb2cb1d6395b141c013a894c0e308c4a0b1a27104ab6ee1a7ad98f897cd4fbe6c71584cb96d56ed1a79433b096ba778d71e4393343769e878158d9037ced685636356b9fba558990639adfdccba92ca136dec840367c80fd772fcbada9823516c1e19dea6b3cd7aa08120b4a7d86a18c8e9bb670ad63d383def1f5ad2a8019167cbe2e585fe1eb81358f256794ccd768f6956fa97824144ad94a529aad66af1d5099edf52abaf40b343f83e606f20eede07b75d74f08c6af8fc3ed16c08bba6de0f18382677b0872750bf7581726ce1f51bc09fbb297196972806ef78b2163f10eb90cdff62cfce956904dc1361050100c86c90db0ba07d52a6044d4234585e3208d1fd9161b3f7fd1a9c96b4ccce1dfc6bb70960c9ea67f1af4daa48496c50f6053f53476cf6e569ab4c0cdfe18e4bcbb09454330b03b341ae732a421e1e581639121ff02558644e9d8811459f9c5a7ec14bae4533b6f74a5724757e5383654e868ad0a9f50cb19439180c6d8d452834f5affd5b2b9b555b5bf0df65014dfb9f86392bec639c1a55284f630664273a68f815b80b6a48339da3b09d01716789d5115561155cca935ffdb01c95d7aff27b83fafb5c8a65a473b258e88cf6e38a644a93d74aba12445eecef94e2430fee46d91d7ebad7e8f4c8b42469ea03e38991540b936ddb6263ff35c41ed139c7d5c6d9d118af8c38a3592483dea88af22cd051144504937bb60b6850a632f0e72bed7001a30571e7079d1a84c38242d0129453d9c4b07bbde0575472c09dd6c6ebfa0ab9c7dc389cb2f056ff03b002cf8219a8d331a986cff58de54bc8891472996936bf9c9e0e97bea3e8e49b20b68a83d964a1a37e08ed514f53cb9024651246a0772e350aa392b5699833d122a6cab0445004ae18db8ba8f51c61239a115a44829360b4f29e501a25306e086e76075e0d96a7894b6d60eadaeb2a481faabf34a0d36a28aa859f7f6c0ec674e5dbe01d8a6c5eb573daa00c38c88a991a928c1fc701d82d872228f1f99787a751dddb4547e9496464b98204fa7024f14f66ac93afe96087ab54af5365d68278870431c29b218a35a49a3accd665aadfd708c5806002d59abbbd0be1dcadd94df45a33a578114789a16b035faa66fe35fbad2c06db290b8dca77c8fe0ccc85a8c90aefe0b5348219806b9f98e35c1f2cd0615cadd2f2657dc8519c839620075a78d1f0fdcf1349033b3fca6462291fb7f752b7ed157841166f7b6555714358da05b2852fa22cb60e74b3d73d82dbe9ccf35e6b3c40eeea0d1f9d2e364433a1ecff653a78af7b4abdc4bfaaecc3a506f9fd7555d16f8b6bbc6751c1c3951feafa585d5bbfefa719b91bb8c347945265e8a1d24f1d1c0d208a62956e09875fd9478312cd5c376122201c774fca7ae661432049228f79f845349c497644e2a46181dd938ed45f7b768e0dc01f5ce4c23e261c056fd26397de6200e39019a52583ba9ee005b42711369cb88a9b7351c119bdeb59f6d1d416f40c56e10fc070eea895d0e193178cabee792c99031dc0f8e505317f4a27736f0ae9d19bf17b1d4981c8eb3ceca454f28be342434ab8c4918e51cbc2f320f5ffac507f45de7fd8a5a188402dfa432f8d3379fdacd034a6cc40bb03d31cbee8fe9c8b42cde7da034b95cf0a3146faa306052f85eaf956a803d71e661e02a0d08d0a0fd83fb4821bfeb5f1cfe93e169aef75c6e598388dec26f790560f0daefbb0e69a3b673e3d916df07819ce2490e4e7664123db125d4f96b568c30e8912a4508f9e5674edc8b95881c5bc1bdc5cff3b914c0a3a45e21dd0d5c215544f61b9a0298c7fc01543284d43803761009b4c3a19531b2eaf66ad7b31e05857d12897340208fe67245fa520bbd8109c37428048c262d84facaa3f7f9e4e4ceb365823786972f5c6862aad2914972840d8d96aeb9ba6d5a7a1bff74a0fcc9c2242788ee868b0fb1f0a0e50ec418056c1f1002f5558381e0b121fcfe13f226ace9fb697b1b1fd272395477d9445ffbb91363804c663598edbe6ce1885637cb93004b428f080c76e6c5323ba82dac1b679bf924452d6797f27081ae37360e740aba009682aca5b6bf48f4d7062d820f90b8dda622a4422a000f44d813040cf8de33e28300a5d4133a0ebd42232fa457e815c14a4fde5c4526aacaeae4b8d38d3c7ca83c64d8dbbff06018e3f2185ce2d843cc3cd0b058a97f5a2c03ce6321664335dcf3c2d28e43db18750abc151c30ada01470e81d8943a3b01922b22dbba7a24a96a9006791d96816984840b988116945d4738f7315689a0eba21690d6d4c3c8aac0a3ad12801a781d46d85eaa0af016f02802a1f3f12469415fc54146a433fb2c24892b18fc880fe64dbc672600b01007942fd49bd607617aed32d783030ba94224dc0ea9a5b939730f74f78462a0beda08ce3b4f30b0603120f10e4610dc4614236c80015cee2f4ae0626322d13820c7d18105e0f4560df56f5571d69f84289e7cc4c5f24007d5bbeb49d9886239760f9943a82a334853ecd722c09416efa8d52233432887b68c8ea2058efb1d2282e5ac811f3401785b89c14d281a20f76c303e25b3d414c28375b27929d3199301133959290203b88bb95f610ef31e7f580afe76d210219fe887f8d7015e9ca5cf41e180d6edd04f03e2d1428b6fa2ffe6d39aa5d48803d44a6aab1220c2a0079e901116bac81ae71a2363372ee7090186959b453eb36bb69073d1bada5234721215ba07684462ef68e4378f9621a2f6bcb7ce14b2ccb86147e298114b4b16df803f3e00c832c4c2659841b5f92d3ec0e010ee1606a86967506a0389202389d7e214840ea4f01807e14300f4628925a1bb536789019e96035b24e17de9442e90fd121e0720e8b69fc25758bb845370a6be7c4cc4b66c7ff0e525da22706b102e6fb3e5c7e0d453bd7fff455fd2dce42e0977b56518293ae2aaf1ab76e5b5271e149564aea1a946affe7c6ddc54c1bcd8f4e91e1292d3948e92de399082b83f15229bbb36e9aa9dde353d0f25c2ec6eb242cbceea1075a09f1c30eda5847684b210573ca00195dd5f6f811a676e89ecc7b36c86962ce9dd9812a69db1e0179293ffe6718c2b0fe90cfbe9597699288e291507fb9714807ccc77342d59131fc56c91888a900ab8001ddd1f96d80e05e05f867b5b71f9fa0a42304be186dcf727fae14e274054d18f8a7c5e89f79db05c7bbc08e5c4b0a42e2690569700f862083fedb2e3bee7505a314f510d6513762d8390fa2e9529d2946e327c042f184874a443aaafb746bf7ee5265992fdaf6b0e6e90794961723d0823292db22120110e72b797a9b61c2046df65f69f4f28a744c48197dbac1dc95051ae21af3bcb160fd84c8ff23c20bb86df4d8eae3f658b9d1f64bdeecf151fbf33ba2005780ab64ec449d3732bb1afb5e445b14b1e26c02a9002d7513d347f84ba613ae0239d84c139433ce0a94c1c462c15b4feb1d5ec4ea68cdca8ab1247f594292006c27015c12c24d071014a112503d782408a69c5310f1890048ffc60984556f17d589944406962acf36b8c13d265190feac2b64fcb48804db9c72bd166b8f6e89292e8e52f2be8851df75b71532ac6a504ae3bb67dff70f9fadf6395587f0b8645c7c073d73e0eefd145eb11063f78682ea05ad02aca35d86a4651ecfbd0836d7bec6d327fb77d9e90f897b07647a8a5f8f56b4534b59fe99387a8b333f199159e356176c2788b0385bde69d3474c12f7d9ed5feaa22ff818ca73316ae97d68c11d1d9c65f02509b67f390b0711c40a8d079f61640592b693d52b8806c4f2e433662e790c9071c3fd9063a7daa2bce3ce3613bca6fcf217b2ccb9fcd9f3356eafb96d0678397fd114c61bcc9e4a316dd6987793a48a4e1d49077ae64fa3fd855cc7c543f4908ed2432227d6c663a8eb0479233879813e90cfd07ea2d5242be4205ee02a031a7f822a4ffbfad8739210bb0f106b843f98e8d0adbb80607976033170fcee89882f89011557d4e829246a005ece1b40a66f866ce071c8f1b22d03e5ed135b1c03905e31bddfc14d4cf9222586f179255b52b10c2dcc77ae001efdf8aa21eadc39e344804d2d639b4b5618a740d6d66bf98e94e1d83c1dde143d985005174f19b66525ebdecb833385e0695ee8cb17df66cd1a36c184aad57876d0c7adcd3db83134be78f11eaae99b23dc8b04ee539d86387f8bad5d54071527ff4205419919c3bfcb4377a1e051e2d8a2d52a17c56a1c8e8e065ed6b361c2d8ff7a603e1caa699362f14afdd2332cb3d07d2de620d7dfe65e86c484c1616a26cfad38c7ab1cae87fa33d2b581dd945f8df1c19ce14c2e1dce763ce592e2e2a57e6b0b6e131c1948d301efe7d85b10e9f837753d88c97639e262cc53b149804da8c77af55209e51493a6d38387a16a9c49c18859e439c9f5da63722f068cd9384dee8ec3d701778f7c082f5e30ec4a008e4544a409eae3b816f337e2aafc8f59a8235d787c2de4cecfdeae36f8b6db7460821841042b6945b06e40afc0aac0a34f2b479a39f4ef2db3c7597a7ee93de0c7778bae79da0a84c14411abdeb368f06ce266eaa77f20ebfd5f4d35345481aec5b47705dba8f2057ee74444f474169e2a6fb08081338d5a6eb88a6060a6dd6c0ca71b4899bee3ad1140f4a03ef7da334dda513dbe744e5ce5d727e4a949e4925e4e573b49cd8688e2e6747374cd20fe2544cbe43c9b6e94d544b0602bf0994eedd7b8ebe4cdb3cdd9b905ae76aba9aee51ebeb99bcc34963a24160ddbe3dc51dfb76d34c71df6e42a14066e88c77f8eddf0d4edd6890aedb8ccca91ba5397d44bfd34d13e25428214e1da17870479dbd9994a35e3a693bc93b0a35b36ff373a2a666b8a79c7b4af6d139cab13781d2b75bb6134d995bb9d24ba32ec000aaf0dbb9244e2aa434dbb6e73e6862c2794a944efa3625fd9ca8875e12de3625073d25484948ce9b70d4cdcf89badbf7a40994e8764b7701864f851f69dd1c24fc6ebfbe266e386edbe8428f7ecccd6d935266a5b9ddb2f798a841a0a7e383d5d3b15d6e3978e3e4dc4673bb9ca3f99dfec97be766ea2453f2f43deaa7731fcdd4e82897df66eae4a66fe7503325e5a8c9715fee0b2b371a8dee29513a09e5fb94a3dc3453a79b3e3a2767f79494d96df705026b776f7e27540993a74e2f9df4ef44952891ee4d58b7ed26b3f4f5942849ba3be241001b58b773f347d74e0e127e39acebe220617c36eb35735221e36c960af3c8538a6ea8ee9f8afc67430a51fac743dd6fe92bc4f6207e2015a9fc111695ef0d218b2018f1a1f47589b37eb0bb4d56e10e2adf0a20415075a33659eda8052af6db38820d1b358c50a3068d1f1a34568ab0b29222422aa5320415951959cc988112020a95128494141420a0a09cf89c9c9c7e703a99b030994c8c989894ae2895a40fa424f580441af16034f27a3caf2bd275dc0e386ed3c1b66956685a96832cc37080fde506d85fe2e3b1431b2c8e186bb038ba69b038785d6210b23b8c6b8ce720246601b1917202b191a559fa42fdbe20204f0912a1f2332054be843fa87c0bf6c0072b7c50f95e10a00cdcc181fc78877798fff2b27d2b776efbce6cb4bbb45d978871bd260babac8892b5935c82a3216e0bd042956bead0d3a1722e0889d2429d7a6342412d14241424d45fb4105c2124fd059ce274ea20181e781a4987d142ada48b9a8c1e8a42484e87474141113a75a17214a2a2360a4a4fa873fd1b128a484e34228139ddc29dfa2874a8e14f13098aaf42e310af1a9ee210ab847e864e271a8768144a22d4305066a514569894836f70eae9b083708232953e4a36833e948d55f7a99fa63621cf843bdf9d85365885d7521c8516c7e930dbb5ebc032a8d02616706a498c244cb8c217b5eb32e10a41955b1d123e052184f45c6a25957a0e0e6a6e8b1a397081d873d3da35808db91b0483dead95213f9823c44210057b809cab6087c87981522c11173db9f56b719c8ef21356e1672d10f0a78902458565a83c0a2d8e3ed73e9d8278d59dca04023968b92058859f0d56535fa1ec933a6358ed8e794674af2165c1ab20583d3db592659e0d56fb1989b360d59f9a34dd219cfcc32a1f521965945175f00eab9881600e51d01749a8a8d9649f75e147a15837e8043ad6140c1300a12462548e43956351656b48f4e134542daa10dda6917d1499cc7c11a49bdecdd48c570e00730f3d23ac7a3a4767cf098073dd013eabc2eb1f56e137db150a1117c64df6e12cac5f3f39713d6914eb3a39777541c83804df87de8cca3320386cd105188a260abda9f04f126b4ecf90704c5207f945219aab7c3d254e7e5121a9945f873234e0b93b40ce656a0c91f32253e31f96fa3edb950d226a7ce9678355d435ca3ea8c93f1a1dd80745f987cb2208897292c703be55546e63523ae969f617a7abcc7e9f8ce09afa4eae35e690282e33240a2953e3d6ff31aafc07739a0a0b043f355b685df836660fb18a09503280893607693560bbe5b389b546e5a7a3dc3ad1efa60a49a5501ed969f608a8426e64ae3f71d1288cb00c94a1718edbeff5d32c62d10f5cd6657d695c1fb8a81096a1f1cc0127a741f984a2426b54ce330a1d95628413f54423125e35adf96055b90afd6c681c625556370c4754de1fca398e42bcb28947f94793baca51324a93dd4637c3d3a19284572a3448ac2dc4aa215ea1d0fe825547c8acaed014fcca516ed3b5081595dbc4aa9252399cf0eba9501a7895e76024e04cea2a2915157815faa566543e5855a807ba9e7e53a342bf9b6e41bd9da84162158a43294f07ca8977c44d85d426ce38a4291e5c3530e39cd641cf01273f4dabce6020de22087a11387914f874dae51d5ed389b24e37b79ab69accafafd059a87c0929f7b015cce3c3ab2c9290db353224ac5be1d5f5760bdce81321c01e0594d1a142eb3c1d7049e5e1b3382cabeaac8b756d0ef2a24288dcc880e0fa1321b81e0594b9a8102813ff41ab871a060a754e146a110390106fdc8b1ae4cbb10892271698d538213da52e6ca6340bcc46498992919ba9ab08f6d4f5ad50663305700bff92395e805ec4c0d3170f8c143121bb3987320eab3847c59171388773168757cb39bcb2aa4dcc58c5960e0e0ece0d84e0822704090d35d18126145660861e9f1f9e36d0600c60e4e8f44ee328295a4214243404d493f9485e75c7aba59f4dacfb6c0772a9ecec43a1708ec8af95286931703e140a0b9fca5fc1194205848f4d797b051e2e847165a118708a22945bc0850bf75cd0a8f676aceaee64fd5245c05abbfa795390f0f0270b565952c8af7dac6fd6f8fd952672965d87e7aeebba600fccb9aeebfa56096b9aa6d1e993c54cdb8df64ffb64c12af6f9699d664601c91f9f22c8535424b44488751aa28824b78ece0baa4883830caa7bec6b9d8f8b58e80d3eda1be497b14e8c316a6e905f068b9672dd0f5819ebe3a2aa05165454d15d7f88458df4a1b7ef2fa5e92f6d9d697553d1ad0329cdc2b04e6620e3e52f3f9c05c6fac664d98a37680b5754e62e94b0403b6425218cfa2dd1c8470948eab76264d8f5b25d18a10b75e642c10dea10dcc2289c8e4338b977ef14a34755f3457583557c3a9c2f2a316ebc9c26aacfaacb52697e4b5448e3ad13effd2d51b99bfa74ae2dcb6a53844bd41cb57ffa7a3327305aa7ab4ec7e2e9d7e8e4bdb3faa672f37bfdbadb58f5448709e501ebc9737070c61882024d33d3faa37e9f7e36b4d738a41f8d470a29f41e396f5aef094fb0515f333dde9ba6d4e97d93c3d3b947cff3bc9309fd96a84bb477d4a1e97d7a9fcbbcd3bde760082184232cfadefbd0bae9fae9b2688a374dde345da6a79cd25c3f511aec968d552fecddc92dbada6bd04883da741d8d4e3f5847e760c353433a6aef0423770e77d3cf26a7ff41d8a66747f66432bf25aac9bdd9dac8a39f898a3b5934388e06776dc41dbbb8ecdd21ddeca68c9a9ea34dbcb939f8e45d353093120dd2e5a5aecaa8f5114d9d4e6e321d5ed757ee79560d1b2f4d540daaf23e3289a9deb9efc29c468defdad0b29766cc8b6ae4dd847ea8ea9d4bfde23ee3f48bc7c94d26cf831042d3c983d074fab8abfc64eace511bab9a9ea34df344a5fb8cf9e5a8dd51f35ba2768738bc8a302b93627947dc54146a6344bf06013327f504629ec9e9e4dec9c9c910ace2d39c7c85557ce387981c0a9847f4508255acd292c8186fda52da37859dfaf0a77f3656e5e65140280f5815d2701f3d0747194ff4eb9bbc07b1aa77cc33792626263810c73b774bd2e8dd0aaf46348855bd89793abaceb2b12a77cb33827b0d0268aa29c48143da203f556401109225645d7652578b34f0a07e10e7db227952c56c0b1fa7480571b6280c2012149d592a11e8f0e85061c50ff2cbf2613a9a18a411bbb04f405e24d94845e52f9ce9dded4cc476cba7ba47b37569888457f0a24257d7132a1163a7e8de1cd6814a3c1d510c254022e7e414c10e62335428b9bf3ea00f2c7f1a46ae0f288475f94d5eb367b72af938b355f5cf46bfbeaecb929bf2140fef9c3ca21c2279e10f12cdae5c1052ce13efbc54c1c5068010fdb33ef0a19186d675c93934ae4a7ea588f66b66ab92af4163a25625ffd96d8bbc8daef2707d90c77609f0bdcaaf2c10f25276c3ae3979bacbecdec3ecfb30e15f26e95a6f87e7e0dde5be2cdfdda5ac63e406cb5cf9e7005e63c2d3987d6c76dc8d73736bc9d36159de0ef445485f9958f73249674fc75e52c88f7be621ccbc2296f215f408abf8675d9889d6e58aac6ff0caead19c9a8457f8346791233feef9e91d2827e77c375ddeb387c3e9c3494548277dbd1ac8ac64e5dde1f4317f700bdf8729046700d34609af04f2e39f12fc30d1e258395f9b4252f0d68d5944fb0056e467c8afc8ef20bf03fdb2152a3303b595c5d8e152ae783a248d912b873bccc82a79948e5592a5ca73ddcd291fe70ea819a801d47895b3cc5d1fbe961a2f8019af9af1dd8c2b3bd09a0f7e76ddd3e54bad89425250fb13daa1cce88adf77a65967193879589ad6d10f689dd68db40f685408cb8cbe5e033cd2bf68988e2eb7f07066399ccbaa1dbe72d21c593c4c961de6b772aaf4d759f62cfff152e97bbcaccbe744edf9e3e56502a0478d94afc8b6597be506afb66ad69bf6ecef36cb4be5e13f5e2a0ba5e1e1fd8b074ac3f2ecdba5784cb08a59ce7116bca23f7c0480a6b207e057f7221d85e26567b22ccbde1e12d90c0f3c643c9c87971acff27dd3f9a3da8166164f96b935ceaf4785e72c7895d10ebcd4eb90fe78a9f0f3253ab98a1ebd40f89b1a3deb99c79d7560869080a4fdf032d88a10360efb350e8f5a6122b043fa451d5833e65db131836415be4f637e5b7a3bb6d21a5846b774cb3b914790328f75640b5864792f54905fff047d3f5eeafe3a5f3f4760112cfab296d3f4d43c79f6751668457dc6fc501545894c4799908c0eb05498a373329d8b10ae07050b651ced1f5cd21a7d2204daa38032da73305402c5e8fe4408baaea56ac900d3833bc9304264607d601db8828c4db37f58756493a5f9712d1dce0300e1b2838f2bcb2e1f3e3209e7c7526169447ad3d1ece6b6ed0f965a7a5ffe6c51c8ac7fb23ec22b483bc052e181ae6fefeeeb512858648c64d40356bde84bc3905e5e48b47f7a44b75bb4ed6b759b177f1ae6db3ffcc3aa23a86e2d7302ebddcdbc998e8ffc93f14f1b615bf85a14794105fea1e2c81870a0e81b1414f186bb1d57e0b6007c1e19e478d5a61132cc01c700091f59b512630cc33a0075b01f90a5c02d0b730649b177620ed63aadd354707bbd137320cee2e8baabc41c17efc36e8349c8384d05c3347652bdbe32fd1cec5d8d33649b4b206118a75b38cba628415cc132ce66d6177364beac87b08a62f7a4875ded15911de6f0aa44310cc330ac712457d7db5ae2b05fd3aa8dc3ab6d8ccdfbb738ba6f8fbb227d7bb67085f0be6d39b8e7ca601c8751d8ddf32e71b615ac0f5c7738718a489a918ab81357b03ef039c851675d72ba905a0bbe588516ad6acd38454c427691860094696ae98c2419d68f3546c3b0cc17f148e56381070b3aa4edcbf27940db10b9e77651b00a1fb551a40e057988908394ad8175b9cd82553ed1a7e3e97886d0fd83ee07bbc2ba58150381f5bb80bab05d389da474c01504d42d3cc43704bc806a2010f8b3383cad2b50d703ad9faea7e3e9ac80dca3cfd5ddb338ac1f97483f1bacebe1d55220d0a717870e769501654d5855d753f9b067d6845d6550c880789505b10a0a300b83a3d9ba24e1d53ed22f23aa10a78b5d655358d51476a5a406354c064636868e464506c6664964fe6544f55fa684ebac8855341b8355602461184da75b74c278f7584343282119f483ba2159b2952e07310b63fd2c4cf4d95d691dcf462dfac4217439e08943589895b17e1a266617ee6eaff5d33ddbb047e3b674cdd35143e28290d816acc28230204e685d3a9e8ea7b3a213ea92300c0f3cdd15dd910ea80bea90743e9c1006a4436871c086590b03d2ce753dd68f7544c918d61616120bc81ab288c4b02010afbee666025073f4e1d576318433ac62aa172b775d750ee376351ecd8a8d31cbb22ccba4847255d6b52574d816eb1b5c95758d0eab09354cccf24a5ba2f9f4c5e0d33ed9942ba7224c6e4598397a02b26fdf7658c5db0c56c51a1db685356d09ca435dc648fd36a3b88c911c1b0fab78cbc16ed900e8970980ded882361e5e713a5b0e76c5b560552c2414848250a7c6f8dd8e14b51b2779452ce5aaa0dc0e6705ab349c8cdbc955c1f140ce8a6d04f2e3767af81e6ad1a787d1b4a6581746a1a49c918019816466f469c1ca532be7ab04a904a9a48a524a60d7ca905fc75346d7b3384642527d265ce1a7bb04cc1e2e33bbce22db73cc6f3d6d809e1f7a7a2a7f0b6a184e885bd22d3adc8207ddb80fef616aa31ebe0b23c4b65817827e590ff4932832285be390c5317a0fcf8e80c7fccb6a7ca85ae3cbab1a59a5b10b43030133a65bac1331ad1f605a1f625a17625ac7613d880994758bf51ea664554c10ffb26ae354addb781073b72586c57a926a593e8caed08e72a6d9ba68543bd78376938f26cc8d30b955a30949f585dcc86c7f623b94e938ed7be89d657af2f04e038f807ab8bd67918c7e60cbb6ecb0db3eb051212cd37dbd0660efb873fd97fd80aaa477642c8e11fdf77abd5c04b80a7009bd43d2f5743ebcea6171f4e727e70c00700f725710a9f05c820abfe27c80a0dc0f943300a5daa8000478f161724b06403901506e49e5f7d0753bac75dcb951a74d6e3400985305f0f57408008a2555a31f144baa7698c355c1aba535383ca8c3f1c0f8fdb873dc31d4a937fec573ff28cd8df7b9c7f903ead411a5193d7ebbced3117fa0c7a3e30f8d59441f179a8a77f90f1d45b2fe88d2c477bcf1be919ae9dff80d0ec09caafda6d28cbe6fca9ff5930de0abfde0ace055a41d803a75a7615686e30630359ea959c12a2eb21df3a0803a3246bafb3755db41b941a2a1020bd3f1506071b404e0df0e55b854582f8e0a820057d816fe3763b5416155fcb971ab2d886a3aace21d6d87555c3728ecaa0a05bd658ea24ffb583f3e3fd1c7fa893e3bf00013809494c3947f2421ee0a6bd5eedd8e67bb2c43a11685fa7a45ac8be6b362a8f07440b9a142cd070d3eeb02a12644bf055ab232835ded6e3bbcda5579f4432821a120a11f504b2a7f3d0760df6e8154e36155538d6b0e833950905bf06a0ff4631dc9962c6115a6522da9916645a5aba6e901981fcccb0ef353d52ffa7405000502e9143ac56c17e860a37bbe181adde373aa5ff489a9db85fa459fcf9ac2d743a87c94eef94ca7a90dd170a8e0155fd3e1d5dea474ae5b08b51c566938de7330ccee533f0be65415be0a50fc61d52602f9419de8f3a6d7fcb85e3815c218c0154029440071be57eba56740d80badaf54dbfab17e4ed23e94f66a63d5be1ebdfbb0ea27fa64c1aba541b0ea137faeced31169cc7a6b8391a807ac6a51958d3e1182ec514099ec19aca2322db23dd50028939da6c8078440999c0f74bf9159a00a2b7b13c8a8901b99ecece928b291ef137dbae3b996fef0583f17d005746db1cd9805b770105283dd338b6c1bb58e708be9e4e9d0a8f563fd54ce9ca8cb2b1af8f8fd65fdb4b47bbceee9783a9ece8abe420c445e1c80c5d1b4a0311ec8ef9266affd685ddc2894ec963e849c84f0a58d44fe6513ad187b63133af66d3012e603ebdd8893dfa6772e09ee1b259546e7e689db38fa41419a00899668574f4e545e02f5942ec028aadc515cac4902f594633309790f6e5f32b8771cfd6ea69c419a07f7f5b212fd521ea42bcd8c6f5c7729479e5744dc8457e526ac96655917e523401f322abb94e5a57e9c249685b48e511face2f760156bd93f4dd3fead12ed570f56699aa631e1e39a3f94f8f8c1044623a0c407133fc6905dea05d877aafbda493e12bf34c583afdd08be46b15fb7281f818fc04730c84ef09098871e121d2d32e3dd49dbf6bd4d57949f784741f9c993f05ef25edaaed8aef04a27a86fcf6650955209ce20954a5ba993b2fb3665076577582acd19ee2339a3549225d2bb9224bd341a8de4489ed41d924cce8d265c8f7e4c3f36394972273d47974adf9a326b602d9538baeb024ffa758d2e533cb8975ea234a37bef9c70a2965e4b2fbd9b9d71d7d16fa6f4aee34a24fac1aecb622dfda896cc95eed1cfbb57e2a6bc3747b49a8c46dcb9d2b197cedd644281cc74872f8dce71dc89a334f22439512797a38e342f0f3d1ede51cedeccc951b6975885323b141494999deb666ac63bf1ee25b1497a32b76eb3888a0743021b335436c9a3bbf76d8e4a2592e7f1e8beacda243d5764069593b4cb2a562d99512a954adb973d8fceb8572a99ccc89992c9dc2e65a94467524c9e9274a64422996ef2d1e912e5291cf714149289cea03c457ae9a67f3345a233a59be8b2cac4e472a624371a1d659e9ca08c4ee8b2cae4446746ff249d299146a3115d5691e0f08613aba42172b42ebeaeab23ab3aae628c9163bcb2673b6db8c6cdfaba8e5d1d5790a3e5ccac90e2b1ef2f5dfacdf097551de89ae2c1df2fddf8d23158905cba04f9bdd408c40f191146acc77e0d16448dc7e22d8c0b891319668891205cb5fffbde62c7119d64f5a9628650353663121ab5e16c8e8c48eb5b2d0cf60fb86d7ae129e4e16a3777777777777333331958c731337777370b5fc1307c845bac6ff1f3051092a02442610c8951adf3182babf5e3b9407e19336408e34827f2bcf5ae71609b815b9620a40557fbbf80805b968d192247cc908fa0085040891dbc3a825731bc1a427553ad66aa62157c8d407b81822eea272bdca136701d61e46be5a256d38c552da790dd0c074ea2ead59dc518b733a0bf4d55d630d6236fbb6594fe9b1cf49238ab76234bed8e52e460558c6d61d7acb6accde22a66ffba79fb5f3665f43ab91b6d188b18928d07403f481815c3bd128ba3a6891ba97d31db6e41fafe65882d1b7d8b3bc246bf7e8db6adcbb20dbb2a866dd726e5b6c558fb5ac9bbb6cd1514ca3b778ec3aa2053339ea769dbfc351a84395839e6bea152692b2b355cc3dd39fee1e565bd7b43b02a26662be91da3024cbaeea09c36da3c6247163126b490a999ed1bc582241c22ff6d91c49460550f2bc80fe2409c8659a25b7871569206e99a91488f8b0356d2bb09ebe5e9206119b5e99a1d83a999ecd8318a05490cb08a7f53b54901564520b382fc9668090cf8f03c4f02196172844949d2be69a52636ae1a5733cab01c9d4daf9b5f0a835906b725484864893092f1e1901d8204988c118c08231bd56ab08a512998e8f9c3ba40c9a62db83ec71e08b2ab62d5be7a8019db01cf74c756a616add1a5dfddb1a38e26b4a73608f69e9607ac205d2d8beee81d5b1bd2143fd2bdc960c439a978d5b1f651ddb0c6896afdbbf1c2f2c3e25065d9771d7b0d56af1bed275e69d4a6ebf5beec6abdafcb7a90ab5a740392f0556455c592752b37b2c8a2caba951b719170cbb2c2550b2e8e34c4c9d15700c32978f5ed52a1f699e095cd79751d2e01d44d814c0dd2c70fd649c271db65bceaba6cbbc70ec3308c237130f06e3d9b274edbae15b15dbbf6add7755d67c0d6bebacc087ef622785159c52466a1581555b17af157dcda59e76b33f5549f8fa5faa7ed205605b712a882232d8bc79d9c7c344aa96cd2c4f33ce97d24499224499274726f2e4d4bcf931ba723e5dc4d4d993ce03bc61f647b3ab88cc6b7096bea9b0d93ca6bfce72ecf91e0a57c697b6a7b8f2ecf2d513d13d24d7e72c9799cc7799c09ddb17584c512df12555ebeef7d26c74823131267422279248fe4913c133ac2429e7b9fc47d343f93afca472a97f3f3ce7927dde2e688e3e6487e44473e90b26f719446e5234a53ba34993656f56864958d934adf7f7e91072c519b962613fd75e82191fa46b7d4fca0a81b890439ab6befd6264fa2df13d646921efdae8d06a571d1a041836e8fdd911dc9d9a96ed24d4e4e82a4cb13d2e46a02ab6c9813694d3445bf4c05f5a14c7e32e9b63bd7c9b91e0fd8cd9626a3131229e5335652489f713242319126f75e22d1afe4c1739c09fd8072541229650535fa8c97d15762aa1c9164f61957199d3c257514f9d45153a65a24fd3e23857e31957494f9427ae926a367379148f7384e9e44ba2491481ce91e494a1247ba479a5bbbd1b57bdc7ec4edd66ff386e7cbf12d5197ce0805c565132dc504a4235815f7d87fd16859c7e8eef6d8c1aa18df23ee5e452265a32064cab9de825c394cd1b8806a8a75eb8815141643a22c514f3d7865d1785d7bcbb24e3d78b5bf8e323d60d593733be769f647b02a163999342b4721a2c6bfbd7678c0aa0058f9c95c5951593900260dea2827a7ffb2f94fa2a07cd22c4d9dbeb768ea4477ec89627f3dc1b0ab3a6e272813f59389ba0d54045068ac4c0ab02a3e35976055bccac400abe2674c1fac42d11eac8a3e72816acabf0d42f9a63c2525a6c4a7dc34bf57d3dbd391b217aa3d1d5656f774d10f55377e77344c166fc21d63c21654a647d3b72599de3d479be6e826f3cbaa0e7904b7c4d14cede98e29e4a7aa31aa1a26a35f26c61cea87aa110b38a8db8e84d77ef36f897a59dbd7cc6610ab66d732ebd7771cd153e39de0d5d65854c40415e86c18352aa991092a4042d4d1620918b1e3b1cb7ae155183f5424360c1d0f0a78d359284de0b600f2eab5ac2c5e94b3de9841c83b708213b8e0628b2d6a4024085b2012861ae680054e0057dd2f14011c8284ddac1373f005b70f90eb450e9254abe3391333baab12c2c382e73913717018d2249ea0574d97410612b08c5ad340b0db64bfde5e11373576eb2161bd3948d6b537139b618fb28cd674c528cd60bdc16097e02ada24951f771c91a48b99bbaa97cbeba2444349869676928c087eb4877a6887889234d11050b74821af2571b88abae54557d1060d45a021a2c682c02dcba7a540b2eaa875e988d330f1fdee51d95e3e546929905f0caa9d05abba7f58d53eebd23bddd249c40a1bebe9966682ec96a7a809318ff15d3dd7cf918da76b0b59214e4d690b93d2348d2a116f5121d9e38560b4a9d8599dde61da3b3b580a6453d13b3aebc2d9bc8a7a49bd26510a1efb8d8c9214a4a9065c8f57e27a1462045225e2312a74010d55fe750555be7eba85653029e4d2cb88ad17106456c6ba7e64da0bd9f48b3af56b9d5ed22d2890f00b84e15837dc9718b82d80cc9cf8c115957f046c0094b9e02bf491440ab10a42380485201cdaa01ddb42bcdaed66a01f4c7c3bc66b0685be03b581dd6de8637922673e9c11cb65302bad4b19fbf55a6a618ada00b9414364d40fb592c9ad9c02d28f97dabbbbbb344b7fbc14b18710bef74b7b59043f5ebe1f2f2f2f2f959f39016ee99b615dfcd2dd180fa490950216166651e20411d10fa808c3c70f32c4a87c8ea45deb26fce0554a2625aa3313d37bfe60a9a512acb0bbbb9b89babb9be8e75b25fce383579002a98165d41f0ca3f52ad1b4afc7fdc06840b8db64ef1ff8d32d5bacecf9c8dcaf00b139fcf9a9ebc32e65206e7f30e1635d1848f62da09f9f23abc4478c31c6c7265a1c9c8dba2bebfe74ff6cf29abb2e16ecad7f26104861b534ba6cedce1f2f2f15529ab830a3c3ee1faafe04990356e6a55bd6a75b463a751fd120473a239c1e69314192c5ca3266c8f2c560ff463875b59d6ed96f66e88114236042cdb4efb12f78b5d7e6ee5c54ab825b5666bdc582b0212ca861b8677bb41d8c06f2d376eabeeb6998dee9761a867bba9d6ea76eefd4e51e122946150db82b0b5223c336866d0c1b1936316c63d8c400e15cc0d68e5570d3826c0821cce17859d1055a3861a7eed7c4ed47cf46da3faeefcd9ad168341ad126ba2f37b9e941489be8e097a3359016d9b6ba6318dcd6052528c0ab9bda7fcb770751fb23406db903d6dde7babb54d24adf9a954aa55249fb1739eedd7bab9c45b09366118e83915a967559bf2e2b7e3b7622db752dc3fa6aabe92ee663626292720e769fc4544c524eb01f3bb7fc643bf14aa56b37693f415967e69b9c86f916c7ef98d6a0d02252986e327ddb361311d44f4ca613d3ca89cc389d88e9a75fa6b9db52a2dbc4a6373f5955e8f7e3c524857e26d47af719a8134d11285e22ca53fe655246947fff542f994a27c58ccf9871fa0cd48ceda893d389c86d41f97622a613d96d49a12fa67b50f4c9c9b44de697f326c7c0ccbc4ddcc41b355ec52b1a7895f51aec9f90ba34c88c9a5dbb6efdd2346d7e7bed397ab363f4acdabc20238c3570d2dd1bdfd21aec1fbc851d7e5783b426a345fa18b5ce2dcbbbffe4154617648f8659a640bcea06af4a8fabc546801a77d896b8b9d4186fd1941aafd8abeb9c657226aac9d96300ac165d21d5a44735a1ddbf8b343aa4ddbf922459166d62845129b013c9b22cd3b26bda12c1e88960443caabde3369a597f61d5de22b2dac284b8efc74ba5a989ff2cfed6f0995ec78e515813e9628f59ac753d1d18abf6d73cadcbeecbc06dc3bcbbfbcc4498f2a39444f8449842d190a3e052fb5dba7141f2be899bbab4899f1647d32033aa75d11a2beb16a6fb6d0b920f5976cb72145c6466eee6a10ade627e81de02b6d26be7d6fbf15249b4899b4abaf6f8d1ac21914824da847748b5d8bde168c473eb889936e1f121d322d7755db72cebb2ae13b1ce3d3b110efba6d14863bc81d6f5829e1a64d8186203a7a7070b2cb2a8fc233f3d3d58ac210bc2156d849e4652396ea8f6449dca5f1873f80c61220e1c0144415416b280052c484fc70fe9e988343505abe0e35354a47458d5b4070b2662d8907858a014755b568f65619685514c0b726b10249f63c6b0ec1fac180629267485fc30a10a493c15727ca41d4a911444b53b0af20726b41e695db8c692ca3596b08aad941ed2507753d210e90baf08211b3a2705918230211b241b3af5a706f1ea0b5218646c8c280a90ca7561d2506744928078f5912a9fe4435a1ccb03110ab865f978d0a9cb916e006b00d5c8753e901f2624b438328b468dd73fd20d2a9fc3ba38576a9fa214ad4b0fe45703a5a86242ebc2d810af307aa1145949862ac46ad4a05121c58878d001004e85e7362412bed6c032a0850945c154849415dc02cf6161901f2754a150c469abb326972aa24298864939031838327c08d93ae416e6981377f7bb90d495caf5922786b1ce437a0c6e814556905fea884f16a91f5e35cdba5b18e1bac05b11b316c7d55ae5472c66dd2e0e15ecd66ea312934c3a6ba6b2e096940fabaa60e289225818d34fe32c0e68b2c2d463bac2b4846d81a625a4ac601524f5a8a47c2ae499e22922533c155e7df5e43af28a58a9299f7581dfa820bf948f92ca93b2a2238ea783658785417e9850959e8e540eab2073146a6a3035fdac0b5ca911675da8203fd3cf0eaf3e5311523926232c4c17997e16c7a6a648e9d41f98508a8a86c3b6c07fa622c486c3c294a08b1a26e26c0b09b63b41c770bd110300a7add214ae5b1de1f64ef3744ffb003551a644161da77374b66808f6f00c412222488493e5481dd4ce79543dfba23a4a66287994ea2faa981da22029a5944132486a9a361ac9215e80dbba2c9facf1eb2ac7ea15d5202624ae4035c8e5755dbd205747548374a3c50104e2d41a04549844c4c1a910a7e322701fefdc3ecdde30740015bb2d8605d7e590a75b32988ce30e0b2c8c7461bbef211751d66cc5be0e54bf5e52d78a5def3e41c2cf1f98908ebd9cdd41118751ad23e1e3ad5bd84fdd088b98e9aad820e1fb16b4ace5d5b74c7ff108065c46246381dc2fc61171d6dddddddd56eceeeeeeeeeeeeeeeeeeeeeeeeeeeeee060316c615e3182cda4349ec110121252260865e42c80711067cc4ebbaaeeb8a316e4cc4cbb2a218acba2e27e21563bcae18638c917e3f5e6884385ab6843430765d45d7a5e52c1c9268e1076028f9c119daf0451184ea455fa88a558d73090128b6caa2383843b4ba5e08610ba803c40ef8bab012743185166a47965d10c5a07a75bb209a224e41c486eec1851b9a2b8609613d2c2fb8a843b52ccbb268c3a82ccb4a41b52c4a6f08f55062ab9fea041cc62c0533bb40083842d8a272147a691e811741501205a8e3851076aa57d78b2514a5a0871384d0dc755929b8ae92cf0a2a768951af7a3dbbaeab8960608996c00054e9a06675bde822a77eaa0c5a31d051c14d109c8086252498620e5e30d2501883175a10a17275bd60c217ddb05333d7ad0389cb8261413b533317a5e95fc782241f0857ed1ae5d1f4ba6890c682a4ac3fc1b2c39facc34b26c208c4e865c5c885dcc34358076e9b4032ae69e2c6c508ae9b56835df34b717406abdc86c59a0c327c90febad4581ba42bd42013f148a0022eca9822dbc96e308613b4d0051bb6c079c217c850b201122554814303a023f060065ea88047b38234d403256c8183294ad083202e82c0051748a0a255c08513a6682d3849173043bc30048438d0604815ba0b9415632a843d78b55e90a0a742eb064ee82cc8afc21f7e6319dca0810149c071db69113454338ccb308ec3580aa129b80cdbb1b382ddb7bb9b59c74b2cb1b00ad260cffe61471debb64b57865d5976415882220a2c9161d715d8eb66cca891eb2460626394f53264a346b06718f616ed1c5f13cb8ef1a04a704b0f56616090961c826220e0e187740cc4898168591778acb3232ffb62a1d6dafd8161e0f71cc32ae6cf585e0604f9c56c4bb7c4581f22cec820b6c5ba169975cbfaf712b32eb25af2c42b86dc32d84eb2aab3dddddd38026e59b286d1b4ac83de8f981d5947530dc0ae1d02d8b5634f75dfbe32d84c75dd7b3fd9d16f89ad39ee8b408597d9e6cae4e86b7e3bea8f985d196da6205f661ba65bb330996caecc7a11803218157223b3dd6265161b247cec1e23931faaee46968609a29b0a31ebb2447e2fd6d9ea66519d55bdab2b0c2bf0021a2a910be2100d0c5805e4612212f276efc29f2cb3ba2143082110fc09da02069d5588a211829a600584105adbf00d172e4308218c3c15c02a0877d5dd4c55f0872f2a7c0c445518c44586d1bedcb7981f283e02ff2c1f593e52590c3ec2472e2f705b8028a4f6b38bae65c31136cd72300bbbc94d7ea06a9735f6cbfac7472cba16f43c1e5bb53acf88ee58b5debb1636578735bbc77850d3b06b9a0dc34913576a1a04aa5fea9826298df628e1b16f559290f4e38fb7946e319d448c46fb6c96ca6b7f59d7f7c4c741d8a49187a2eefcb8cc3a46dbaa6979eb7a66c3dd3ff83d8d895faa7285eca88d76f93dcd8ec068cf2426559088d82d3abf1485184d45392a595ffacdfc4021f618bd7657fef111926704f61d794974168a054fc3f23c23acd3c0a7ac4b6c44311ab4b442a195cac4a871c2aa699a26b31e3f315d9bfc037db89e655799a4cf98d766310d83ba47398aa23e52e8093d518cc316e3288df5d2b19f3b02142233796498ed26ef24c3ac8c0945a1bea5ddbf979a2171611e12a53dc73dfb751f0d239fa1507574796199670476cc4ba2abd865897e3f50752f3f491ad10fdb7bd7f9085088adddb46aa921a8f40c76b54d0d95a219000000001314000028100c884462a1503c241786c93d14000c97ae5074521a874110a41432841040800000000018000019491b00a30b90a839427cefeaa98cd0e046db9518a7d249b1326029f484c0e0526538dc42e9864654eb43b013fb72c6b6b4587471c56fb328b92a6db61975070a93ca2f6df143b5941da23a5db0505707bb95158e6872d83a3149e52e8c98ecf0677481eb1228b9f27b9d8c2d2d450e1fc645858e32e46723892b70c09a9d72e71de2358a3fe25fa142c5909d802c5ba576e82fd80489a290a4641375069267aa87a69d3d880d82e159db6d9ea7c62adb0f890b3ca27573bcc322c7739f3a9f4a2bb2993abf257cacc248c7935e4c2d5f221d65c11c7abb0d8e2955fc79be67b3715b16af3f15964c6bbb834cb45817bc4189fe54eaa34386c86212c7a5f2a02251a15be709c2fb6cfaefcd9a4457c73ac0b79407b1ba96861f3274abab4a900d8df47958e4f11ac279edef955de1bb8b54d4a29913588d26d446ecd90685a55818cf6229ac80c66e2592e40272024ee7871f8efce16690ff133b0dead6708fd93700f8f426a5a234b32dd43852fdc664326bd82f362786e730b735922621960a5060c38549205535c5fd8cc72197c90f45feec0c2e0fae5a9356e296774a1adfecf188795eac00ca3638f1cc21ecef16e3460f2e6c83fa9c81bce2571ad16e679b7db116fd1cbf0152f79bf88357f100b87527286f35fe2dfea9f0393d82e8ed3715231b01e72375d0f4e57380941447f2027818a5c5c7157bbb6807c1fc232659e8561699d02790990b102c6030ec30958a6ab02fe2c328b4c8f28dd8fd3f391121d0bea3c512d8566c2984fd9d36d9bfa7d5bf97fc1851aa33f6a49579d010609f779f81fd7b9ac9dd84860cbea3f17000fd4d97e63de8cb42a47813e1f4ba2bfbab84320db23a87626f6d09fa35fbf6daeb23150a9776660e5796045eea544531675c29360b397480326c464222d8c5d1c6ca7f0ffa3c553b4874489b110c6da5958ade9ded487bc19b825aa81df628e673a02d77716bdd38bb684fd4d636540a1ea0efe313fd61e3699fe9865e515e617ebb16cc7694a7d8b68191fcb71ff2838497ae3d09a94b083643f3a016c0dac613b95fc233500a679ff71164eeac5d968e2855326bd5e10d76ed0002c9a1b5fa263d6dc3ae0d07e7758e8d0b1db82adcb6963694d0fab07f8881e0238e41478efeed2fc5d6c8fb118e94fea701fd705dd5666ffdb949625ff6386198aa56d986842e386292cdb3cc58cf792d6feb75bcbeec5b35db81d89aed3dd5abc8bdb2aa41db54f6e1e19afc958eb6f37f664d660e67bb58ceea4b8b55e26c6b975031fe6086df164b88ec6c37da60655c1edba2bdca21bbaa3bce4809c5c235bd1f7099a453c746bcc8085a66b47959d79c7540b048697244135ee3d55d5e1c34f364f7ba4bd5ecb2b25b3a826e5d52b977e93e82494b8d740e0fc6d0d248a312b2efd43a60ff5432c4ea880d4fd2548df429149f4c9bdb05ff22fd0aedd4babe966076476eee7e1413225fe89a74189af4342a30164f7a9cded429480dfe1452236169dfae5f6b38ea6a569c294d0d90715dde644c7dc8a360a6c9e18fbfd00ab63189eee05b8479c83618d87c67a0289e5583bc65bc72916f9c8acac6aa994486027506bbfa7db1a32b93c795ed484c84e442074fab6268d09397876ac5908f6be01898633c4fd789345fb33ab1f54a02828ed5da3ee77c5469fd818bc1b2eee82fb861c23a12df6cfe69a05b4b6f9f133cc3a21beabb163d689592e0720e9a56bdf069ba43aa2b17e406ffeb46728b4e69c198e95a51e48f789c8d3fb83cc970aa10958d775c47ac492e2b8d0f68ec6520d5a81c81a49615436fe48f6d71db73e4e8d552b8df4b795d8a0040bef37a1a8946ffa0b9d283f58dc150b47b5711c1b5dbb37bb954770501194bed5d694d6802858e8f4d5d0d46c67b819345484433ad9adc828529ef0edbbbd61c55511e7648a2286c9ba6832c849cee5042a8971a32932cb2dc8688842008709cfe40f0fd62fea9d9cee3cdbc51a5cb660436cfbd1b22379465fc7e0e3c61d094132f94465cebe71d3641272935c1917fdfae13d9b6d7e6a8e6793de4904df83db111ba176c2a47be558cb6097f11f798672de8046edb5cbfa68d62a826e86b32db2e119827d8644c0806ae7663559bba7c4723a47118b25a359c218cc73982c4c4a59df8c581fea2e60c24d45caf7282b8cec430076c852682697416a07eedc20dbc8401640db773a5f8e76874df0676277766890f0f6619361e5388ced8c93a669ad1fe9b58f9cbcab551cb10b0c1fbf805a5c5fa570a5f2c22af6c1fb2d02d85b8dd342e83f6599935c0b7fe38a897d34a902003f76158cb1fa0c9d1ef791c5174828b593683c9fb57f693f6d00daf7b5a961f296e74cc06f074ff1baf3c1f5174c89ce5b9391dcd324a912e9663015eba479fc631b76f80fc44d018477a94b423a526b389e0d33e823e6a36f1cb6da04510bef1ae9e7dfe8b22bac8d9595b4493d609792014458f9f7b39fb161c10f2399d5877a8147b4d6c37e67fa00157442b81dc3788a5809e455f250654f9a5b9d366e018cc65d8bf24d75f36de0d80a836feef5e82fea06b841ec78dc7f44e7803848bca34b077fe445a3fb343c4d4d23a8db02c7cd6431d4c905540fafa4cf126ad4297d60ef5f1844018b7d9b4ad2a7d36d7e3a4ce01660967172f1229465608393e393dd0e90d488f8e2aeab17cb23ac074a6efa24120b9ddbad46d14ba413ea7b054813cce0e7d9d559acd836cd262efaef5e5e6d43b36cff0f07eb2b4df4e7e348008719b9f6d3e4836dea70c45dedbde18561b8855bb9dc66ee150292e93f0d444505406c9423062833abad5154baf7c1b6f072df73d2b29ce603e8b1e19b33255eb5bb28156b6367fbfab681cb47fc179dcd5b76db264ecdc86223291134b7a2b3c10976ab189c8f2fb3b6b2273b0c1685a2148b48b02b23f2c83e2d37e9fc2be93761ae4da6c8c37ff8cd0542523a92cd3b1b2c85c36347e92981726c71d6449f4ffeee958296760ed7fa3cb232befcaf303d1e66c7a685323e0dcae6746e2744814db204b30abfd72d7f182e429fba38a790008abd1e96dda2c3ff6cd6c7aadc9dd7ab4558926eb9e16208a593bfebb4e13096c4e00bd9507ae142c9c9a4db9c6ae5a0037ecb690f61f199432420fa36dafa4c2b1a06f0a887b58ac22a23ef850f2cd91b18275bf5cc6e37b89ed3f207ef6c2861b0d0dc194ea432bb7fd5f419f6b74e50678cd275c694b356c37a606e9daf1da6134722e187c4288974321823115d16a03fb00ff0385d8922105647cfaa54f4dec07d80942b5d2042cbb7d11f6ec1c8fb6049e088529e3e51991a4ba5c8c6855d5a347d5d9915b2723a332400c7c277202805d7dc3feeb764e52e6735a185727295974c5ad52e1fa0315114036e3b96295ae31cd8cb63ad0be1b7d8fe6740649821073266033da2f2d45a843f98106ce2ba801760571c6fcff9cbbc09ccafc7791175356063a98216bcd4de4e5fc35bb020522f91804cb4bd9412fdada3ba654a1de001a33d1845669284275bff6a238eb622078da2a0922d3ade74c4e158c4170aee8f650db87b57316a6ce4b20379b77260cb540126f3d121f2e25835204f9cd1e80c338d3d12fec2edc86a60fd12f8ad71c8708febb20a112c935e6b18571850961797b8f7948b55870b1469dc366e8ad8bab05ca829348f3a3850a25708aa9a3ed033ace7b15815e09fef7737f84ef78cb2b729b199ef05204ddf9c4109e87120a30e9670e6b47d69621a3556977380329bc7967bc99f2121e75999abf614e9218871c7a1fe5cebea3f6f40bdac413e1c95593d22fa000f9d0dabd1eac7c602a2536955d3aebca31695a2b70d6a4bf02c3f1e1028af579d0de3382014a6b88de42acf9788974029de0c2fd03d72dec75908a26ea003e447ee4d7798181f01d55c588b30a50e74c7b8004712a2b82e10d62f1ff9b7b90663f303566a8e6e49da9f89c590e52eb64362bbe721b93b51fd2d2b98dc92636643e30c5b50784b14b4e2bc15c42d06d260b1dc7da2c24a11fd9eb6a59c10bc25c5e8810a20b67d9a2147a11ac37e34f03b38fa056469c5340bbb5f68c44cfecb0eba22effb43c325318e40b99f4e4564fb32df493f1300949be2de41435de59593ada61ebe8b5990cc5d9b97d4e06af21c9044ffc6a19487c1ef15cb67474cb35c8b8597ca023cbbbb08bf694f72032d1159805752c40c58af08865ebac8e0517d0f8067ac4d278dd3a67a31e0a877e58cb0500d85a7d6bd00a976e983473595c745e478899cbea587264bf91f084e3a7ef8c260b12bc52122b8012c8fed0578c1ce500108f70a481b83096f099431c09364b2030319428c832e2437ae1c262cb601e1d0432122733a8c645543bb875a70be103814143a0d26c726be7ee1c170b74215e01c34a68f8f0412af7a54fad186d448da4066974358ae5b376374885fa4810583c9902f46760b4e118c706cfcd4e1b8feea49b888b1a982f5c2e45166d0566613181703643185a2c7e6200213322605e6442ec0ce0b4101222c0bca484580c733a20403ce484d342344ec05cae91098b4197a70d93a99d3684a4bd8bd44adc7f09bb650ce159a4da9e683b97a85ffe4a81dc2cd43b2a40d4931e3f207109940e4c545fcb2588253ad2d9282b5865b9537444df4e6dccd1a6689a25cf59e192ccfc20a34e1be6cb0e47084d86bbd59034cdd275da9745596b5ab3eec0eb28b4f250c085d20984d107cb93ca63d3f56288d3b01c639cf719767ee92c26d6af6dd88be5b24c740d5db562d7c306b9bf73885c0e1310d076ee6105c04663865704b113130398e31e0db7d1013049cb7eac161d11bf1a17465002b6772a6e0d3611e77302d0503e8bc8b76f6e9b28c0a09c314f1e13db8d30ba2fa4dcacb4841aa4bf2dab367a707d53b6a552aa403d96e16b1d8ad791269a25446ed9c28857ed78241bacc0261ff36facd2cc7a40f4c1dbea822b29ceddd64364a2d4ffd49da8da7f5dd19aab08bbf6f1fefa020dc40f2861d353953945cdfdd456af439969e6381aae1514b0f0336f849134a5610a5b2a40f136f92fbcb2d44dbb114c625c2163bab4af3b780356d8298dd2802ef97070abb82ddde02f759eb61d446c98f962a7354daa22782e581a0d615375831aa91a6f8d49bcc0c45542d31ae185ac2dccc09381692d80dd1279b632afe5b98c36d600902ec312285a6f7c4a66f53fa809b9ffe283b5e0044ace37876aa505d3429989ec5ca2d13199d79c5b80e8a6db34ea13ff72dba95136516efe19cadf29715c4e8fcd129b1113a45b285c5ef09c2051e4c9d0e3f8181fc65e00d2190b01c7e12ab8c05aea9e129baa3b4938376ef30c14cb0a171185236a4c7946277a47d96a5984d82db6dabf7674a867ebabd48b2001bda70abed13f4fe947b76475206fb508d78bfce34ffdf3a859bcce870b9c8910e9d26be8f86cbe9a3cce5256f583e1a5d03a361b928592f9e2eeea3d2be721a799fdc8c42a81f1f9d8fc747e7a3c10fc04ca07571a0c18228263f90cf62458eaee92bd1d9db6c08775f5a0e1933e95ba161f60cb87f568f5e2628af5bb0a4f637862a6443d0f94fd8e5bbc6bfd00624a1d93b22a2fe57f6a73792c878a6cec59f9ba4ef52659200be9f93218aff35c4804a8b625535c5eac221a457c4c0127be23933e66763b05d79487811e6a6465e754a205a5009fd65d40c3cbaa62f202504585d0af58492cb1205dba1c531973c42057255d97943440b30415020e9ac8ca6c9221fcbbe35695aa68ab3c63918f08b9547ea932f1bd1c9b012355adf29475a3ea063074da80437cb3c837f37623284ba3cf2c333c4ab85dba4b52c1ed5c2612954c41b918584584256cd64643798dad3c2975c8401507482a75ac6f81d94c94612cf68c29bd00a2fb8d6b4088f65da4d9b1e7ea0200d0026c18e05982154c51c197a5ef75f730a9cbb864735b0aacf502561dc972a01a8e33243ff1b1c8ad82893bea7153e67049a18d92ab45c6ea0445f78058f8ba51346171a909caa92908eccf00c0b3c4e2aad11e91bdbc9298f5ec52c868dcdb1c57a2e286133ff35ff6f2f87bc39bef10f2dad4a358ffc8a7555313df71d4d64d56502325dedd2a164768640cb30ece932461f7614214c30a2a8f0575792860a0e6a6b1b07ca2f122dd3290315feef895c5cdae2de8e9e6d4ccd52acb8cb27563eae6a074ebb599c06f66db657cad014501826874fb9a8cce081981a7d0ebbf571b844a7d4cbcaec3ec0cd05f9941a527ac06d086a78f7f32893fdc7d58e1ff57485aa32a41b8d0206c83ac7a2ae1477dd142e105800f6e329d6d319fe4d841a725ebd78e7596b9b266a2c4d14a497d3ef7e5eb74c8bb86b4b60b014ef88c762dfdd2fb4ccb688ecaf16f3f897fcb0229bd144cf4c31a616e06066524b4d4947bf61fac1cb15ccd8c2298f5b7a224ba8980b8264b8506edd7ea13f643624052d85b2a81fc4661095b464aa743475c18a94dceb930c2c1a914c2f616175a107574d3165caca3c146a8a5f311038233185d6c16e394bbdff92c1d7af5e369b109b08ae146949cab52019b600c0686ac5eb8838bb4d9a4efa775bf6a2a1f5d842aefc2b930a79798d5029791b9ddb107ec8a2d0a6177cac53227b784dd38d790b1f9a4b15457f692736d613608bb0ca9c931e4bc7fca2b764666f57cc8474e2c3e05243c2e4ce4e9754c060896281849c21c5daafd2fa80da19fc471f1bbcf3b9218914f10fc9733d21cf37658db56d5c0fe95d49c24f4b82f02f9c5f285920c7a0d6c5d5f4e4e167c4a6fd7f2484b62574ceeb1174b676549b54c3e50056f99e44d57d87f6ebfecf0f44cddd1d0b09e769c1bd7c02e13b0ebed177a19ea5a725b5a38729a42ef4febfcde905fab34f64a9f97ab060ae3da4b979c169a12662d8a93937ffdb3411c759cb401986e6d540b8a0e2f506f9c9cf919d486441da0aa0f8d5745b980c05236d4f3ab0f23549437edd927a1fc572bae32e8ce322b358da0370165f8cb5e3f91877280fd87ac1a7548e7d932e3864c62306e413164fe16239fde9174f8c390cb243abd7d4e1e1e8daa3b8d167f1ceed40e423a06cd21849a9b45ab7790e7d80f7295c1017ecd1b490d81e8fa2e457a77dee190eb301be8e815ea33b901eb481f8c12687e844970670fcb70d581b99957acc053b179d58e9ac52d98df6561292f531ef09c23b3e320afc3db6a915092c3b2663c064851582e7c66f22b17f20cca09734f4b8b6701512d865c002a83b426a195c89e2f331cca47bc1de218c38746c73c861675b90a10413158e1a3a12de2a77deb31d53021221bc8c97227d67d63128da24ef1e482092acd993db5ac9e7b0dea47df1f955f65dc4f6d5f40c1fe7584effd2519802d5ada5fe413a6dafcc000f924b049ee426b7ac4fb99e88010483579650dcaf995f84a8798feffd8d46f0280a4da271348a3f31506d734fa6f73cfab7cd770ec2ce4af3921fb689da0cd80e1e04cf0a2fbadc4cc2fb4c4911ab2159f6f07d3ada03b81e2ace0b26a86da2de5492d34d9309cd91fc418e224372468c7d16ab6af2dc52a4ce3b5a0de86433f853cb53d7b3d2adbf05be2e9c47918e3143b7c1e289942f61bace7140ced6e3b6c94651304bd222b2fc456e68a6912679616de306a60ede4d75b89f16894aff8ee0e8af96e932cb58da6cd8c6ab66c6a2fc00c4b37ce119cbf222273edc688b6670d43645eb5338f044a6d3a2a1ca4a36745a35f9ce7101cbf5058fc82aea03dcc3ccb0432d3d21bcb1673c6670525dbf908f957bc4b109b899da6f7dcf1acd6d41a8eb398852691630fda93c8fa432b8c4a4ea28bfa283f9b7982d84e141585de4dca32ef38a65e920ead0fe7d14fccdca72440524e0560db085127c2cc8fc5dec182999f2cabd8d91ef3afa71d2dbd4346dcba92498d062c5320eb9adf5655b07e39d3d0d9ef211b69b83c595e14ca43866f158db94428ec250c6b2105eab26a1e125850999b8452b5f891027195d5d8d5971e32c4d84ac2455b567b261c2343c728e8e4162c938a693bb4ede430f110e8185dd13960bf7a39ee0261822479f38da6a5fbfa2a71ad3d1623cb1b059216d8420ac9ba6129b18ea30a4d1ff427f6fab16322db9ede117a988050028cd5410a6f4b5faf8892b130d15618043a3454747080fbe689521114396fae46d0d198b4cd9710eda5d6eec54275135d3dd5430182ca1e81c5d9eb2a5ecbff6662a0906f8d14d0b085e2ec65884cca2783c278eaff162ad22e9d08080b636c2e8cc650beaa94b7f47e942be23d03c896e528b1a4d981326120bacdf28bcd23957130214dcb238b77306ff116c160a2572e0acaa5494d2500068218811332882388c8f97f1c0887e7dc6259936e992484427208296983749f2548ca0fea1aa570b1b22422b47291542eef5aa5cb471bf5d23615bc3ed7b89cbf5b8baea1302a2e009bc3e8dd22c76163947558fb9c6c3ab1b430175a20ba6cc466bcd6b56488c3dbb08c2b96a40ff1e9179da473db7d3d5ac1c8df318ab55ba5d6d0eaff2bd8f8f4c4a2bf63547dc5baa197fc3c73b099b483fca26e7cd25814f41d82fdf6fce33277383ed500c02c562d2927f37c7ae0f3743d50bc887a0159140d700404e1a3f44b0380a2f47641a5aff6693889d81e7938d40d225559cf05b9621e0077c6736cf5b50feae6e1379733dcb16be81b82fef1ff5257e549d399ca883cfb94d70a14c502c6ad40dad30523ea1dbf81178f5c22de549987e1bcfb365159f418689fd0309e73004202ff2506462dbb348348273eed0ebfe138eb0e634e0374e19599ef33a30d2f8390fb1e9344e49a922b3362c89ccae0a138dbd046e680bee07d12c0de308435e3239770d6a91134ecfe26472d15fd6a5b6b1519a07e303a4e524c0df1847159a0f8481e0aa6da2fb0c8f0bdf25ad8603162e8bc2a075a67ae8507b5c8e50ca6f9a9ac8f905009391538e566c33ec7f0610762b6e78ed11e4d6d463fae5c50eab04345e79f5803b53cd9ad29321ac32e6b1b03d918d72c38da78723e16d825bd2978a0313c92d870a210173f19eca8fed25a853993099aa4c2a7b50615419c1ad13bbbb98438e05cc9001708cd5dd3eea6a254f831866c8aaf5064c26b167ba4e22961430318ca9590a7064f74a90ded723e357832a864d83adf0f85682ed632ac3dcc82a8c8f6dcaf7afc53a317a2154a213e2eb49b34556fa46f0b8721f759aeeace0fb878916e25e3bf11c00c023f7f4584fc52e5ebf6d3d1e219b773ba514d398261edd4f459e61fe90539954a92cf2bd03bfa8540453ff72094f326342f4e517fe68fd86da95f382e8a7fefa20b9b75a4cd21c2bb9983e959e074a424c49c8ba39bcae842567f7b28142de41472fe15a6c6306239b36fc8ba59002ad7a6a3ee7cb563cfdfb46d56b11c8ea57aa3e7c58dd2d2ca79173de4395d28bacfca646dd087a0f3258e7c209bf1e21dab7a15c31af8d0d7dbf53a0a42e8e9d2c49586edf10f87f46576347c1d3e0e31eca7ce63e2ad35b72640c3bde805620452ec329f425da82ed8076192eac14c6a4afd6b58d73918a702c75132767ed0e72814bbf5f815afa2881dc65e8c3c99c36d84efadf91f46952dce8cbf5c0339c2e759a33815158d3aadaff031aaeba52d261caf9f7b76a7e9265f6e7e22146645bd5788a00a21dd2f6d76b3233f7b3859aa0d14befa02dcde86ece450d10c6c85f06058653f7db85326229968b464739e18ccaafd250af742b14345c2ad426d9b132a0171b60a91f0a83c20d329cac9566c57db015c06ad412d4a24c9300e226794def4618ab60c9eea3a532aff60cb4c502820b958e1cff3d979e4c4de52e5dd5484b847eb2cb5da6ad7dd8f7ea042c3bad9ca49568f126f1aa95f3c3c2730a7d22e2a63661c0abcac69582a5a4a1e1629f681b56ebc11217aa46e13cfa91eb1a1ea6f052942df77e5bde658140093b0e2b235b9602f1f4337d9b4076a9712ab7199e06ed0765e487d5d21e8990150f654ff532acf40d56271f026656fc6a08e629467323e02a7ed8b1934453ae4f6631afc9b7815b5ee8287cb92115fbaec228476353324b5c74e24fb4360e878d07b4239ecb22975d9e8dbf84eedcb84211ee4cb5ec0896d7ca254af0d0ad3d961eb66f6ed34c645f69ea93311c58104026c9ca660bac0954eba11f98899ae96cd7392ce86b5d6b766eaa0813327f12c48c9fd1363ffa9ac5f10a4e0d4f025ac61465f61c12c127701aa24106d7a0af04faa219a656eb511b8d0b506fc59f694c3ac2d02d9ecbe8d68bf0cd7704c0c55dd86c04b17adcc5bd0829994b25dd7deafc9f8ee6d914d0403310ce8c635a5d2a2bd7f26e0478d5cd080837a5bd9e1f51aee4f58638378f0c09ffbd3cede698dfb6edd9f81bf76e8d635eecff0edbffaf77797093592bbd8d0b111ed906096fb730c89e31857b95ca4bb3fd396fb9d57940073128c313f7400e901f76778a4589a163e5292f3b6bf44cfc48be0fe1c28a0c222e3c0c08e276ec0fc79980565fb33342c9c606d9bc906006cf2de5f65c830fd25930d2ce44345e5086a14fbe2dadd05501011037b0368b2c05adb9f4cb188687cb21f9aa8f9e71e998984a0e947e167c59b99284d5fda3326884d04a3cec88e81fd6a4b28d109c35f958cdbab364ca1772834ec8183140e2b146c520561c391874e0f1062357e891397d96394db9f5d30527551b6f5a4c47a4839309ce5ed4fcf47e78fdf5827d4cc08e852049eb6074a1fd1ef58305f6fb690dae2d5acafddd7b078fbd3f6396ff86ca06a4da3f3ed4f5ff7a53967dc9080687f5a890c111cbba27537bae35e190787915d087635b7bdd0ed4f2d6f1920dbd3ad2ed534cd2955b68056cd6558d0fa58bcfd690bf0164fb53fc739eb0aa53b2f3f82891311ab2b2f87b418ca6a022a270139b262876580a7ff5adba8eacf705759dfc98534fe3477e014fe3812a9a3016ba308e4c63be9b2c5065bff78086cdecff40f6535c1265ce40423860ea32476e4114047f99c0a47c7f15d9bbc976dbabb30f2693fede043e753e032b8f11aa3c66493b59f9b6c40ee8071ca0a3b84e6120e15b84eaadd8e1a69f11b8ef6693fb716790c68d07ea6c0090cc61abf14460c8587f6d34a9e7065ddb1cde9904615ed67d7d068ce33c7bdbc912750dd61a6fd24ff8f74f77b52fbc9d6bb09ccbca9abfd0409f4bf3f72ca5efb89372a3b353aa2f9feb69bac065ef8c86db2954e206a3f17f8b58b3256c39cedf24ed79c4f698490b426ed59f8a2b981c4e95c7fd39ae4bc3684827c5967684517a2c55514820083250ef963eefa0db16828c11707fb7248bb7f0912e5708166c99d234739a0a2aaa63b8fe2aae8a0a11be2ff806bfaf81701f339492a4086926328cd522712eb1465c30426751d04ea1a3a93104ebc2a7c1d50f8baa128f6b9f5f8c7e029852c4a7f8921b269826c7e37c9d3bab92ba81355c3fc7738a804cf9914b7bcef76646646dbf71f67428e2b9afd6c6c84bf68cb3a11da868856aedd97947dd81e23b25c70f4c39470aad26e398c813737fdb44c43fbe96c11024c969059acafa5f5806d4f2d3e032cdf1fe31b263f04028dad92ecd755753dfba8020a5059e114ac646434ecece29dfe28e53e796809b44b7b2af04cb8b6338b7b79f16639034a6f000c3ababc6669d301b8d37dd2050706aa4fd6e1acd0ebb08cf6c566a1ae5bb6b93df1dc3bb89a1df1def8d69da967d5c75d4b801313276c2a9691097ad4271d4d8156e943a5eb719c1d66f73e41286787dab5ca8792e741802aaed45d8ac7be1aa41648a216db3a8406248ae7537f53ff3e46f1a54dafc6722ea426c73249cc1c85756aab81140547a6c482a311bfc72e14353df95207cf8c802d20fdd242507fe3e17c4176338bcd49651a54421600f40ae8f3b12bfee477e73a6d725455899707cd8fa233fd21a9c771095414f3aaac2ab98a9ea5bc9bbf4ecb962c171e4c2416e682c5285f7cd09da9d0ad3e3c79c4807af824d6251441af02c5a46be49245301679d92b87679be4081ce958486f409ef4ecb9c4494ac9f95d354dd35385c4856d2907e776018198ffd49dac8ca1e3f90cdd66ad13969d7097e0cdd03a1a8aa8988726e1e6f60fcf8a2b4391aaec2fa1e7a247b325c3a037a429d0062c659a02c5ccbd969c8d06df6992d4888d60e44448a6497d4a2148ba6e15fb8ad714f30c96fa30ec229be961a49caa634f9462ca40ef777059dfb08c7286a98f4f48558e0d673c99c0b4ef59f947b984dd47922cd3ec3d36dde47c29705c7b4f3e68f7f3f8ee127ae3e5929f08ac8a04922cff4952c2ad83c08e55e1130197fd6146d8f98502c491c9b1a31390a9f7ca10bfc25423b4b49cbd0a205610ebb8bb0df6872d030e2914c5553bf3b8ea3565b65aa95e284230b751e0acb4077a8a7295d7a6661f6e1711b16c3251bba53b5f88599611c5ab6725d7b6f58a1e9d9bd4c22917ac080d944423308991660b571564876e8d496c12e26121d8c635226cca41144cb87087047f3a5543c9de96bb5e03016ef6d2c51b80720a2eb5371e0c6edf73bb1f15e9829491d5b665e96bf0852ecb12dc657d991e6a1cf5c241398f7d445bb2fbd4e16a8fc2ace94fe7d66683935375d883db452520f0725839924ff072281159eebfebd4b8c8e6f69b35699ecfd4d560cc502ee9e324751362dc2a6c6141fdb222c45725ede31fe119f467fbe94be0cae90d4ef0201985ded3cf8259b7f23238562c5b1b83aa33b54d4a6b95a05106b35a1588edc30e8bfd770294b90571c9bafbc374a34a114df8b9711455aad174eab0de7c1da611dd978ff757f82a6aa87d1b46d122832a5e974dd22e6af7537595e19b7d58618dc83beb35bf2caf7813ec1815135eaefb8e15bca89f8a8a3a9e2efff383e0a1210e004e32ebecb787d8c33f3a1a97cc8bc4870990df78b5ef4a870c8bbae17871dca72b2fb2536450c0fcdc020053bfaf4d81d91bdecc1879f73493820ab215f3de07fd8ff18692492326c9d0d9b496eff3b8efbe51ea69b1680af0c642148e8ced87dc091b4684f3cca7e67926d38c6b87b2c95db97fe9a8a3bd4db3c8ca1a000b9cb62dff74081ff9ed832f5792b513921dde7cd608d292b5a39cd43a16a668707c5246a6d6ea1a02f8ae412ed1ac6b48af83e393392bb8afc50d525c6d5c62bbaa9610272bedf9bb3ac694ea4d1f098a76315832777e5dbe77c8c6c48f6af78107a521c15d90a4e38146300ed3c7560ba032223f530ddd3818eb668ff1b2c95c970d40b00f5df737ba0665016bbab21268d491bbeb93d7d2db3da8412376977cd828563bf87de66a94fee80ce34a2af443ec6d49cb884e69c19fb97072b83c4bdcd1643cae3bfd2d2b678663b0f540f997d22cab61b9af1e0e707fa534373db8faa62f0cde94070dc9d468aed62a29e1a1098ca6205d0aacd1957b30be5260bef2a3b945233dc7a5c29d94a9980bfe48f526f405cbbac5932aaa0b52b72ebddd814f1660989a456dec4cf485c883e69494339df46bb34cc4c8f401d82ef945a6f8625414915ac0eab09cbfadd3d5c1c86f7a4dfe3f01ff22def316babea3dc4bffcc5269e208f430790707d9fef05cb7014140d0d3a3fc81561eb397a100055c316e859e9a1591a62cc0323c786fe61034b926effaefb94e8bde2fa63b51d47727f8f9ec09220d79a8eb366e1c798cb40d6881af2b743d41d84de0b87c190b4ab44b40194c07628cde0c294a84135ceaf8d85f00c2d6d666dc1c41a8f77df8b912ff28fdfde2bc1576d56c9a622a7fd249834e6f2498c2f1dbebcbd6ef4cc46cc88a884e7d6d36933fb7a2c7ff8950a190a959c8fbc4539fa4233d09d76f086fcd988156386032a120a927fc29d71d2ede9d315f15a77920fd29df81aad424cf8e0e030e67c87999e31036dc6465a9b86e21fd83eca7cb1161afb5873cdb82020620ddf0c5d753161b070a8e70ddb49ec23921df252876f7dd65baabfe34faa519fa85c08d60977c7c3b08ebe5bf4bcd91cb5427cd3c81e01363c9d6b892696a028112e6a40181d0f7676af88ec3c56c98ddfbfaeb37967d580a47e26d426cae493076ccc2aa35527c7b69cfdb905f763fc1af792dc7614e11ba1005c3913db0137eacaa590429c8d65f8765e44915a8184e5c1e807141fcd978bbe353c50b8bfc463465cfe0fb8b635be7117341eee6cce2ef903b38463ddadf61cb5212e793defa62d031ea77385539b3aa4f590ba8ead477e76710925ecaff23465d391f223f5ed3c05ecc3ed858a49dad3041c0bc1f3f81a21ea9713606fabc49465bd7237cc70e609589ca2d49622f6118e986b08e4343d9583231e811305d0071dc08e62d3515f86c87e84f943df07fab04e55d6c54132792226525d6007b67e4531aa4f7d6bdf8809b3540f7e88d88ca26b302291c4ab709bbbc513bf08613849783de1b6660dd5e76ab013e633ccad65284c3e6eac0948a66dfa6a3a691d897ee180cf3c4c42c43c3161e70a1a24614b1c64ac9d4cb8945efb1052026b202379e4fac09fb1a0102250868c0241ac12daf103519802dca7d5b8cd5aa4a3df18e1a1ec51e7f28a0630d97d93308c299c053083371ffc726d667963f123aebd1de4a74435a9429410340ad13e3051cce62baf2c2ef4a389e6bd54b202fee4e278c40322740eabd505a6f489f807b95eee806cb9c2fb1316feabd3a53625712d05b66e52600add0543b83868bb32e1ece97528e05229c8cea094c392bfebbe7a3453626dc0257a1b2f4429c18d0c4e1e50e7d4507bec0249b52487e4eb4917d2ab5d0287fa37f71d8a8a23acd421f26a03facdd08902786d63f1da1d2c1af96bf8c1c6e0c7d0332229333f1e6cb8314899d95928e9fa0a760c1bb02e9d0af2fbea3fd922630f1fb1967cfa14922ed58c11266bb778678ba6400afde2937d405c356d3495bc45b2ecb7470eae251099d33e1e293abe021a41a1c6eccb4b746180e198fc37d02f9aaa307a7eb7e5fcc200bfbb88a2d82b807141ee2438570a4c706140e5e534c54ca857421b162d2566cbe70bac6c0a100bb321e75a65e7538cf646981c28cc596a79daecb76201d5c696ea040c1470628bcedcbba6faf54e580bfc86c6e6371a0f0aba63fff47e48a380c714a3dde077244fad135f35c8ab7e2b58a070489efd7c9281ea17877c2f0668185cea5cbceba68ad7fce5ce8c1860e6b3edfc56e8604e279a9b519ceb19dbfacac35ce422ce4072bf8b1130dd6611811f089d2bbe5a316381ed90dbd7c4f8c4bb1985070176d03a8794a3213263cc319fac410e812352018ae78e443f443d77d981c9b21a682b940a4eeae808c3dc6fe056b556de8db45500aba51cfa4a7c3745e35134db08d278493c13a92ae995cc1975035e621e594ae19737f69d8a520490056ac51f4a9c9367839f4ddc34b43e6a2286e428ff8ecdeb9a8ebb404a895cc51f815a8fc92070b249080f54b3801df4462498e2c715dc9e0da3e03af523f464c474f9b709ab4c7eb66733443a3d3366a938cf56634c47b2a3c0d995fc61f5840e760b3072724ab9fb1108c754d7f70948ea1edeee245fa20eb4390477858ca58586674f4ebb181f0fa9953dde43bd3b343d72e023293bbc887d4fb21b7d552ee28853cdb2eed437fdc1700f311870553929067e1d525819769d1d0ebd702475873587b888123f823a582975a0638b14d9f2413e5f93581963da05f3ea50b6fb37060e1d2911b91c7ed3faf4715ff8c367876b9cba968d73b1e4a64242576ba86937a5b155508f4423aaf4b2d5b9fbebec0a9b58f88879ebe66750ddf546b7d6d6fd05231482aa3301ef8018061dbf4b522e2ea49aa2a20d4d4c8ad70884650ddef015126cd18d97f8ab20b2439fc94df2233740ddb6da4d0a98ce5f1a070ae2df6c077d45603c4e368c9ee7ab5739cad530a017e52314ca1fc99dee5337524e2ad4f6ff772764c73b073d3ad169f147da130391438733af7ff82119d6d6798abdda48ea1801892f377b2677de898608e7e23c0b3549cdc314652d1b067e545f09853b3d319278d5cb365417496564650e58451938ebfcfa46902383c8f7bdbccbd7d807fd3a93bfa5bbf812c07f31ddc5dfe9977e60ba583812519dbb8f189ecefbbc9859ac25117af662c82b27df3f6a8fb7cdadc7dffe8d7b94c2ce3f411e3522cb488d0461df8552d36d6f135291881f2916496147b54bd4e32e53cb1d9685c0d5bdb3096a042b57607b5e46b32886deeb336d6905668c8d7a4fa7bb5cc0097d2bc3cb1553508e9c40e12ba21eac23230568bfb9ed3c075e49b9559642ba5b96ed1959d0f58c51cc6c9b030ef3995386dbcb35c7c56e20d9f88538de57027406080795e50dc51e76fd4badafd52c6867a6e5e53b02a2c793781c8fcc0124e0353233f1417ced46a90c8a88351658809e444dcbbca8b2bb5ceca46c3d684cd7b8965c3266c80891be981c33e20dd701d441028c4f58a82bd44bba5fb70b8bfd50e7c8badec6fa994aa38e3d0ee17040f0e9e61bbde04c2cf35c2d8427b6d00feca4ab5dae76fcaf1b91aebb5d0287d2f74e4471c90393ed522b510ebd48a59bf1be8f733ba9e27f69158501f8224db8e41cc96859df9db20f4b4bfaf4fbe5c80a13c63093df0edf94911ddccddf53b420108f00c1d788052a50837691cbc52f469438f1fee0ff6b9ff473f064de978d035c878b323e298a954f9a2a5b8a6937b90974e830817a934b36ae004f096c55ce368c39a24af5ed7ff0db6f89226b7d8647993c9160ec8bdef2e15fc9968983a14abcdd7297185351d29aacca897cc2aaee747c5d50a10e7aab7676186c0563e4b5add32063b44133bfeaa477f61a4a07106cb6b4f9d34c1b6cdcb540a767d6b606bca17b16c75cbb0568ae4e9db79ef436b30fc8f2329ac3f5e8d18c48e8cff7ad723f6aaa38a613c06ac33810b0f3f05ca549733f69a002e472bfc2ae006c1ffeb3499831cb547d5fcb38e692ddef25ee4fffe8fb27b2d6188efee51a241b95652309229c1f8158d9b5cd351977b913379a09171cdbdaacdfe9376903c8f3240971d1ea4ba18a4f81f54cf1373d99c7402a98db069a68d3aa21fe4c8692be1565b79fb97d8d6f6d9f9e14fe69b3f7bae004d6bc75e252dd29491d912a531a5d30be5e6fa3714f4b790077daadf7edd85279386ce642fdd3791536f4c35a59c1e78b754f7930eda520468c6e7376d5a64cfb6914807bbece68114dfda73bfe17d5721feae38e3c3fb2c4d78ee488fd8904b405e66055b37902220a565810b079a5e6b841e4285df535903896969fdc194e442817a7fb1ea440af8116cc9973d405f277c8b20852f590926d9acfefe4cb69880b91b77236c8374a2b6caed948ad1370a4828c12e2e2096a62efc0f970a2ad79f29710d17c3e8260e44600afe9bf83e19e1a7116ac94b793bca8db43fde4015fa699f7bae8e1df0a5557f8ad9bb13ad7a1c16503d1a1f9fe0968aa1479eaef484c86fac70de0af87455953cf66f6f8cebcee0ec500dbe19e6b9c6219c8623ad5386e9a7c05b79bb6c81d4f8084bf55e0b9fa3950fcd37c7fc7d97a4a3fd6e64632b984b7de069384a26a1304e133400ca054728de16e1f21f6d614eac66840913a907e0b5ec5656d28ee30b85a91e896803b40ec10f12308d4e5c5fa28f290f5311a9e0a9751e98e944a08c4eadc14c749de2d0d338060ba3e498208e02c6d7e8a90e898c1030c86fadaefc65a3647e0f9172e6622870cb61a96911ae0451ce929d2a4258b450c85d38ecfbfb0427e2a1a3516739020aec8ac1cdd28213f46f51b5040e4506f8183a6c6719a165ea46fd0a41a800981d0648f7aa690e9397c9bec43dc33400bdbd7afc1da44f3849b2d8a3e6a4df30f213c7fa3abe962119d4a33edd9e8fc3b0a555874f0ff2d094017508e6a67f4c4eb97027a50492cb5377fb2e8288a67336b675d8f127fefaf3aa28a7cacc964a93ee5136ece9b1e4e482eee3712e67e08814c37f1425342b1addc6da0b09a82503094a1602525f6a5e6267aa4cc64a193ed3f01768a0c30ad1f7ae04627edb1b38f696518c90374a4fe264d9406e4186e8582b74dd663d2709a3c262e56a1f7714a3a9228b95ccbeb6971217a305a15be78ab33735112d50ed214165dc3aeae0d6142d394feb25d92b4626e488a8b09b671c38a27fadeec261df857d0c8804b9ebd62d89f9f8d8f9edecf25c17e498305ae6445ea100aca609527ebaf2bbb38bb99d2ccd88604fdbe5e60dc33a30f3e20e353dc017088f35b3b52810e68055093f47fe270ff72c907f47aedc091d7f286be250b1508d1f4dd45f964b869e8c5d36020c311d9d8df119afa5108f1059b6ad71d0ff251e9934b594eed9b98f1ded42af003230503308e02a5506a1e7fc965979b9465f5b592d88a86ad2bb064876204afdbfde8ab1a1a7693156ab04bcd7c13aa6153043a271e2dcc97aa8a7ea3d091a47228038152094fdd8f617f4168e430ad541a64c57318929e7252631a7f0820222cb58c941a00b43db4d74bab2f66a45b57d9302cdee4a2a5a42818ba7ac9e4152ed31a94f20020595bb5705deba5a2022e0d1745dac7cc1003fa2477c5d25bb15546f3ec7820f5ab8bba0aaa8d0d51185289084f033dff44410d4a9dad0b14cfe4a43198a32933479cd14a5f966b28fe1c0980376679ab83cba6c0c4ad1ebf954381d1e18fbdc6822c8f40f46a11b9b4f040740f711b6d3e91070f23637cde05f3b886b147aae1aeb64e87372e63e9b467f26a58a8630a9baf9013ee0990602002f68b83888119a30995d428eefca32111ed12baa2b741b5119490132e4aab167733d67c519e150c6c7b5c784551a71e00f24ab42466c912e473116c38f349390dda426d8af3e310a747e57c343cc329688f367944e4ac322804c7fe649d17e5f1fc6422932ad100051f9898bfe0889582e344face99a1f4bbb234e586e80fbf07b03a27972929acb5711dd157dca201e60197401a9baf12b83dd8ae6d5bcc82391ad1c833c49e93a1a67352f5799707986fcc97f6e136f1497e9876a75a91e6df79438569710b2cb93ee725989e450659a8e16cb933b0dfe6774d530006bcd4c0b236a79157c3563fd9300383778d1277d650aa38ebae9805f82f55dc5b2d7de074422a88a3e57b6c29796424395ced43ae81b44805bf7dc2c041937705f9614c159859ad9c5741db6d31e5164d37cd2163330ce0d0aa9fcc30da615a4300d1df853598126d4006f008c3db12699bf06255b34a8137eb9ad9899fbccd503a19fdac2488ef99ba83d9522000f00759f365f19a852fdb11f2e22a601306d9e0953e77f7f513e4cdabd26b82ed41a9f43fb07f99aa10724b58ce1be679c18ee64d97eb76f43229b93b8ebefcf1ca38425030d594226128fffb489df4081b09700c7d65d2d7d41efb6e16fa63eb6da719fe3117bcb5bf6ab4b50738f14f16a86cb7ca37b513ab83c9ef4ac79b17c48cca75dad9e42d0a4c80626eb0977ec8525bcc6ac15e6a9a5bb17de8f8d883cdd1da62434db0da82d29e578133a9627ad9c7f1c329c15e206aa79753f4696c5506dc2b607a43f37ce355ba2808030686109fac4050d4a86bfb76f532b800937b489fa8bc856504c61ecae224089e29a0a88c5d8c2a75c554376ef9fd35c3599753b793a62141cb0783856d7a1b2fe1f0b536843545aa886031601e528f881d600f6560dee6e460f7d34aea560b711c9a49d94f8580ac91718a3ccc2749aabb539aa4f2e9d7feb28f112f45983b4773bc6ca28163fbe65c7b52a866a19b698fab103c61b0f29aa7fb08b9aa6570edad8e971a444e9a61a22e28a64694d9b5c104a03522318373f7df29c08f08d95124e8230412bfd7dda08b357b38cb79d63d82dacdf3a3d5544186020306c09f92a688734a548c9909bb0ad23c1523752050ad8b2d8024aa1c828f7700f262a1214c011ebe43d89a8caeb82a9c36725813788278fed18ae5ded578c743591b5ce960e5c448787ed78280cd8482df380ee0f9e8a676af20ecb623be33128b23f3ccb8af4127c0855ff17b94a126829fcd8fde279dc0afb81d13de095aa2fa176cdbe0eaa5cf3a40b3c9bfd4a250ab04b818ad382b44880c6346057457148c4888ab899d3b6ae8fad98ffb87e85c1b9bbc3a6131fea30ad1e906e8a6ca7990034ee6451436f7fac85589ef30ec6cfe206c2ef90b51606345029a71aab56381a107140b5106ab8d55df95e1f0cb7399f08c2597a9e2a9902794ebb2a13a935c929a19ddadd1d9425083360bb71a8db5a875417926e60283a2b4a93aefbc9484108479b6d45feebf78fbbfd1ec8ee0f64b77a0657add7afafc659dd08e03c0ed7c37000eb1bd9f6223dc2150033d2397610eeebfd6fe5088badb693d1a6a8a89b663a706adc6bc88af21cfaa81933a61332f079faef0c6b66795aca581f3f8b48282a6fba8fcc0769bfe2e86e5ddc9120842bbf21a6e2fead0113ef5baaaf155baaa19bb882cd71d7d62b2e4844e91435cc4b63617d45cd3b14d1ed4c5a95c6c70fb01cbf5e918dbae6ba6e3cde151f8ea573cec96b6d96ddd75fbf463fa75312b87ece9484dcf31f2359b50d7c4c6caff380750931e8a41d9d4967d5aec54cd7b690f147d4df472f903d17540f5edc6f251154eb1482ecaa0b48b78273394b8c42f10dc69f6c5a555c14b6703082316311a329b34999a152bc4241f8853cab4278443a62b0eebd9bc24df768c19eb333ab9e21ea3d0bb263893b673f62103b08925734b7b61a4dc24326e3c1aba40b29490e2df3d80571f4162dd9462d074d17dcf5864192ac6120a62fc3a316dee4a54672dac14193fd0cccb9fbb37abf98a4e99b45cbfb70562a52a2c88336ccedee613dd4b08b94fba252333e198fa30b8bc770acc47a2d00f05456d65c4806e6be3242b92f9567f03e5f7030b73c7095413d679815ed473a87a24e81278b6cac4b799b696e4e5e458766149c99f196232af49b17487b7ae9d24f3853ed1eba1e84ffa2305e84151c5520fd431e4d5b9b824a89a025e787d3fdc094f3e085cb9a6d51ee0c72b05b6fe0873bcbc9c9a83958887c7526e8e5d801719b5fc56241d038402e5160a65199d7331c841d367437b72fc4e9fbcabe27743488cf876462b83ee28ac3dbbdf7110b33d1cb361d77685521ebb24f0e47cdf6d610472780de720fbb7803367bed1ba40f1fe7064c1b21fd8676f6d2f7dd3610e2344e299458b845bf21ce21e2a4a3dd93df1400449cc14d0761bd2fb7338f83d6776348c4fd5d1aa6e98843a15341b72e52ebe554ce0fbfbd2a4f754dff145fe6b0d16fbf7cec988c47a3342ee41e52a1a67a4f6208698aa9ba51d9e4dd3b2156bde5426a03aecf68331c9c797305c4d9837e7da3262ef40d8d3719c8fc9e2257573f0768a0c437cf84e759470529f3645d1b922f023f79358c3929d3f05115e723d85214651d507ad93b9a78aa5caeffdd1646a2b1b4750802a9fca82e41473c2cdbae615f155c3a8fc94360f5078fdc8181a53f53849aed21c60ecb160140548c2cd546d54794c8b123ec0a8d4cf1cfa8ae4b84ce93d3285a708b846fbfd3290fde9212c2fadb5a195b633c777550759150f8d97403a2c36ec82f41c3ab03d1170da75e86a5ec0d38b1c3de3a5462d304fb5cf73d908b50d340c9c1f8d9155ce91fa8ede8a67f528dd38fffe4c38e6fa95322446fd6e3784dd1c1582e057b3e6c9391f309ddf625010aabff80c9e1b0de20b53fac28979375a0bac5daefa2355969be56b2193af8f39fd37fd94c1efc4ba5b9172b7434f245483754e302685f252bc778ea50fffcfc230fad465dece988ba86d81c763ee9bfea2b9ea64afac9e50901f9c0881e12e1ac559f1207636cea3a41b6b539d338e70f5b5c6a05ae9024495d4d8dc5ff9136f717aabfa4f50f0ea47cfdfd4cc063e5d3fc661c553036fa27acba7943e8f56fb40dcf25a11e0a2aeec2edcf0bda1d66b1abf3f08f0955f38e202b545736626b8647ba8e2ddebc631bd7dce678d800a49f213f1bc876d6f2220ecf5c0d4015de77eea7d786f3874ed352abb8d7d208781773ada75751c516042e87afccf1cf95e1673a867645f576612c67226fd89f3bffde6dd5c89defccbb2edb0e1bbf04f2ac86825f6d98b3b385821343e8f112c8811778fcd9921d00a18753b71777eda881f02fda60c9e404a7bb013b0e9dbcc9c50b998c37dc6aaac61520300b95f62c0939e974997feedd3e3039f16025f947656f5100b449605d053f27879b114360a5ebfacd0214c8aaac56ed968e8aaa0b474c3706ce8c9d39809f4368e606d537941ac3ed7f2dc2415bfc51c60039c3687e45d007bd81016422dae4aee316c7e750badbc7b9a43417fa163cf9398a1dd2e3eebf3b86241ea4e8175a3624c238cfb1c95f03516e4be2c0ed3aec89e4aa9e351d1093bfb9240ce773a28cc637b67c98ca8e9a5419ecaad0cb63f0448b7187cdc7275468524a0691e0e5c4a444514c6d73583dc8fb63c5cbbb274d5699959d31d81b5d309dd5acecddbf9796abc9d533439e396c2b43ce9bb96b45f05db163b21c2ada14844f0425983a7942172ceacccd7d1a6e4204e13e9f7f08162a8bcd123d4ac9d6cd2406007d631927e26315b655fe328fe19781ebee7b6e18c56205c7cbaa1444d64c4807fa033841bc022aecb928c22c53a9a1d3871aeb334d3bd70418ba556f4132dce8c4aaab5097eb0cd4fa72815ee39b52b9da4543bca67e2fcb53b7d97cf261d71db71a14b9e69c2085984c8288e0f8aae145955dea4229a2a02e6d4007c1366c8bffb6c0cc5e075251a9fcb17715641a30fc1620d15d385b626e8241a3af9807f1304ed409a887de8f8f5c762d4f5b1a91de29a8279c5b9442a47fc55fd91ac39fe04831989acb34751e2e2de57c5fcebd494f057339cabc3ad6e1ef54728148f9c94bce7f520c9cd8171e4a8d78ad4c953b7324e6e6154dab177311f19649409bdae6f3a69264876ac30bcbb89bf5480cda6e3fdde15d9774712c3d615d41e3672e08aa18bb5f041a3221e435225b4db55e17db0706083d8e9e5acd088b44895b8577880cb8850bc4891a236e38e2cde20b9862d87b71af506c8c8338e46eb8dfdd47f025078f67b3633dbfac89582a563f47d8b5204c25b5a45a16585a14a11b00c209f558b8ff11914395b1e4878a234ffb9551237343e02477a0432d45f4e56a71068aff21d8c16c871d7eb6f397712d3c454aa86023d0379a06d3b069fc3a720e06cf012af2e2c95c172d790870c9a965d218606f2ce7b8ab04d2aef58a087032e5653b194b808729ed00101204ea2d2c8808541d53a38d059224407a79a920d696db6f1990cf57f4c3dfc4e7eb4919b6c79a30592ce52b342667bd3c7c1a9f726afb034c5967763727a5ff87b5270c6fc12f4bd1494f67f35645f2063c2e95965d754d6c47f5d209349d61c5140c816144103e3f64de9f6abf2fcae8edb6dddb5849706c69eb7f67a93106a06c5fec16b59307a4507009b5f58e8ee75a78f7e8dfe5e995b009fed6cb9c7111b56ff563ccaa7695f3746ac6c9f28509378aca563c07b930ec5de9d9b9f240699ae741481011d798f24ca5d3599bf3ecfbca220f6ba2c4043f532ebae5c1356db6c47dbb471cb4f1d38d42c24cfaf1a42f8d4e8c7682bef53a722679b2cc68d2e290180d2fd4739b1e9e9afbe5c16f48048387c49f2b0fa628e01900978719d931444ed783bd79160b906e1be8ec02ca2865d89a0c2e514de971595eb68b41975a1976d1924291825aea7ffc31d6aa80596072a04a5bab742152e6d560ab9df99200f79a712d444b26083cda643f6c1ce4713c38cd3f89c7dd6151973c8854e24f3a2d914146a40c454dbaae14ea6cad9c03438c1465fd435dd8186001c1b04891d310591e0be05de0f60dad57182be40c725d460d8dcb56e28d83366bc3b3e7f3441d214497078294360d83e58e6e2a5d4b14c5e450bda1a462b03162f8357c9efb1dc18a8bd712016739fe16bb32eec4c76339756ca811e6de3bfb1af59955ab2d0ab9122f4a04aa097c08a2c2aa7432f60cec73e484f97e78cf7d759d0619ccc47edcc821716950beacbb520c84411ba2a1413813d1ad65c2c543670826be702125e72689900b84398440e0b4450bb879633414047d7e40aa9875332474a335ee17c2801569608281cdbd25273fde79a15c3ecf153d4dcce83c7743eff218a8b5dc76583089cd4f2d79f27cd8417354a86c3c69a697d477d8cdb3c457ebb2a23d1d8078add3b0eb4481f7296726e316c4e011038151b9b433fbbb141ae56aa127ab507094a222c4fe0a29cc167c9385ab1a28bc58e6ec2a6abfe309186b3dd86a6dc346bbca88bc70f259681c00017c9f16cb8c87f7253e9b8bbc77a14f00dfdea26144ecf4804494e01b14b9c56938b53d39c0b3baaab53ed7b290258d6e80e440c6c017a0f4fb23e7ccb285382cb08aa1a1b7001a8cec3691d70ba7610914dfc28e522fd4165fa333596c06c3822be81d61ed13492d241e91575dd02ca827f2669a6585c3dc74de73a5e00c0fd0c3517569668a37b89a65276e98cb2381bd38d5530cf29b8c5faa2044f66f49703809e8c2b3a14b81984038842ca57be30f42f7bd6396c6bca15d12ad09326a21364740984bf47bf420223c894c6228130ade7e30208cc7f04317f22c93ab3effba73fb1b3a5e3c977a5f566f60b66b5329e3c49e3d0f511251c16abec0d8bd7c6b620d872e8603ad235bd5d6fc8709c3d92c15e3f07792b0da6af4ae44c5bfe948d893607922328fb95c68f6679ea8e777f3c652655d60195477bd56338f4f59f5226de5c2bbed7f7a6b5ad1c21d9655e661dc5bd002db2877b25cd73497849c09e1ea6d50f1fbc26f292ee4b23f8b6e55e018d3055d5ec80421e17d9a09ebef35f90ee2e9d2755f9faea7c78580fa53096d6f065d8ea730776906cbfb278cc8d5f2c9762ac46db0878bae961480b51935cc632081c1033ada3f444254ade5c80402c59f5c43d418c2f9340ab91028ffdb671ba56b645c18dad48854cd079606ada7e10ce3e080a9a1d1c81ab4b9b646798d285808e292499225b6b100e458686e447c3871bcb156932f7fc369105ffe8dcd4a8a63429c132ddc91505f1074574773c104c51a89d170984df7e7f09af59ab5a993069d1a0bd54cbf243dc8658bd02988d46a3fdad3fa708558d50aa5ddd13fa7596f65f2f694976c72b4907794e9862cf636be6bae7742e4716c27be6b203d22a441bb8f913a408da5390ab89e9571c7b5b4f0783a356310cc7e616cc02c9f95c62c51b77550fa74027405b8a7455e2951c82570f0262c0d0f0e711160de0919310e5a94055f6884cda3e16098a04d9439442679083e769618c01a8dbbff2336ddf9b16029c270143560d12160926d876c3e8c47e9b69b4a9ae1b94986a11b499610995e329420ad74c486fc85c9537a7c2ff17c4b206dc0ae0a1242d278d1cb12596a178e22cd4e9cf2ef31c4f39b7d99cf8a2454544e660f50f1f5c5270a3a28b8e854b9a12259626fa5b10d84fb55c4338f0a5af94c630a5ff22f471cb7c412669a8c1309d19a77ee19d6897592ccba6ed9cf135d88916516ac986f39af5434abe0c92eae929ecbeb79cef1a6edf9ddb9d636584364b7abeb997de3ef6a85f56b45a4bdfa7d2ad5e2ddfd36d47da8d83f48aac1681aff5274de0b8a0c8e0e4a47205a3b25ea79665535a06617a26a0d3f514b90eaac1522a901b020ebd944d77c36c57334a4762639eef501d83d32886e2cd4aa30cd7bc1e2b04c5b59fea5eab987d34337c1c1bdf2328974df68e21dffff41739e125e1e3966b7705c4bf30d2d385f9e9b7e51da4a3d69732646048b8c72606e3454025d9b36b68c78a84700daddf15905834a6b8bfc8c8d9c0180391a7abe3997ce7ce3329790f7254bd412c71066b915107e4967e3b59c2eb9c35e94af16c1428e2425edf811a65e2f4373874c583cb5472b0ad94e04913cac4f914392b1730f89fd3615f2538dd5ad6afbffcc2dde47033899f07ee4c830ab466af5eea2530463edaa8972e091440a6b8d0d66bf89c63333aa6a6e819216c07cc106ab3aa0f926dd887246c68c42acd401e6dcd0710e46b9fb8249647b66fc290947f8b6e25b57b1bf9907d6f424b04754c81fe9cc49307d342349e41fa952bda8683d87896d72eeb000a37919b40cf2356f3da6aff37ba58e807dba604af409cdf6030ba8f2e351f73c69f5a56b22884425972d78508eeb9fa9c1acab5d5cf510f15cf44efec3bc582c7e7a5cfa6357126dd95d0605512e50efb6fd2fc1ca5ea0c228ae4a5872032ca026ada0c9a767c43ccf68c7600bc48eb8606d4740e13cd81e97b93da90e5474fe7473495f22a154ab9824d6f3240d31473d149e0abe820e498a8d893ebdc4c8a7994c6915db6aa368b1614a4324527b88f1849508e14a1bbac1fb9cccd05d1ddc62f4f42aafd2f8ef8db004d7855268ccfe625447f51e74875b8d97ee29efa5d62d3926973940a637a3b7ddd0287836adda07272402aac1c04b09b26037b219ec526a94d9b0ee7622cba8975beace259e9b9613a5474b7a1a2ebc1675e534b2fd7a9dc06a456d2f5d59ef01d5af411660118d50810ba38f766a6bd67d567518461ecbf08ea28fdee1695080caba5fb28db36ac41cd7caca109ce71e2c8f28129c99a935030f5cf5fea9f34220f66b29176161a14f871bd79cc4ce225176ed39e774af2e20d81fa833a452222556acf891bfd86b5460baacb093ee2d037c821c75d71da0b63bf89f5b524814e3d1dc171300be399a27d48a8fc59a3f903cbe73188352f8582906994aa2874bb5b9c3102ab353d4f2eaf427658818cdc068a3385bab4355019bf1eb02c577ed82bd83e64c03c2d76ff18cd4c726c67171caa53823661ccd0e32ae7153569bcc6448debf38299bd4279403e04d706deee156ca54fc081c252f0c9be3cebd50430eb14b36a176227c314dd642417611f4b011d2be0e373ee0938cc43be87db03de175df5575f8813103340a44ccb62fc07f472c0d8bed6afecb69eaa2d63c92e9da22d94651f228fd9bc13aa5fc9173d6e52bcc41b629b2be56617061e2ffdf225b01e9d88687a1e6f452c05582a352a8fa5249bbc10273b303cc6cf130c63670f57989107598726fc4daceca49239fb8d495f835529963021af7ab2ba19521e927c2b371021476408c7945f769317f1f1552d78b189120b9b6810ebaf615beabfd546b7395ef28aa6969cb9a57b7ca2f102959981ba86db688e9b05f3547224a0e985f731f4657cfb1c199c222496fd08838bbada98fe6161541a6eb167708d15512e7e13af2ebb87609ccb06c7e50fac2cf6ed3f608bff70f681eb3a0234a624361eb0415f44a8cf558a841773bfa488dc7e847e1e75d718f2f54f693abd78dc77129121e7555b0c35724215a2cc8642c609810ed002e70d026514015aa38587af900fc7dafd17d421e688903e009c4f1d8d23475a7099b2c542893aaec44c25b859933be3b27b6332147459e975423462b6ed1b46b53aa1948933ac3feed00af76aa1536cdac1d5249d32885dfc317bc363057f82da01f5f8ab99fbb8b1f15e6cd41a36cf36902f6d81a83cf0d4fe9df254114fe4e0bde43efeedd5b2ec882f017f87df831df2835f92f1e38487e90726f7520f001d06259b2d500190c524a5f836020451bd48f5f55e0d3f2eed96201b9ff08d8ea1766c1d2db5307995a6bc48a19105d0264603bebee9588de2f8b2518dcadeada6dda791395e5ac5996650f9bb827b51c8a3593032333d49af246ac239e3cd8e9d2a37673b35a01d897877ed1605bd2331d3133ef86c964057c009074a3b959637362604981fd95231b2a2ab12e375d3b04a68d321d5a5034103821ebf87a60f30dded5e94c74f41d427fc2422345581e89547b84a05fd04ffd72d5de6317660ee4fb92c662d6a8cf4845487579c02eaac8a9469983340206d2633b2a89fde39f4984ae3cdec4c518bda6c1da53a6a74c6c3b3ae08eef172512b2ba10ced425b867275eb7cf9ed135c57dc364e03e8fd0394f71c412ddd1529f4f260fea8a89ebc9eea5035012553e1c58ac3a6d036d3b446499812d50758acab81e642454d8d07de243a0143ae7206033eca81481d12955b7c62e2edd10bea7d3fcb2872d8e3e98017b91ec3b4358dbf127b198f90f6fd0650e935003d3640d36bafff1d8217f68ccd4719b0102ade2b31a041bea6aca3f260d847d6b3a2c3d8f419a0a4a81204dfacdd29d23351cdc3bc76d7784b814f54e79f7fad955ea9ab0fa76b89394f77ad32219333f6faa684374320ab62bd5e5f29942fc0e003882f55e89171494a042fdaf780aba04c9e0dfb42e44146700ebae8aa3041124e9ba7900a0c7d813a94c1dc31d2e526a851d90d39b14452158af591c9fec5ab987069173f9c4cbcd7147ccfb5778ba20f08eac1e6cf358839f1d676e177e5fdcec0bc04a9c0766c518e82abeb7b1c807f4215321bdc2384d147870186b26a80af1ef9eec748690a3f0f7f671de2033c07e86ce51134c79b010c75ad68c2fe3295cf57c5e6569d164d0b335ec08be2bf456d51c6cb45a90571c5563de81f71a91b8d22b334fa7bcf33ee958e742efe7e99bb0bf02d67563cdbc5bcf2e8743f279eda990cc19a3097799e6a7a067b2968ba0cd6cc34d81dccc4cd1d6470ee059740ad1c8ec354888d2302866f7703d173306befb75c3bd6dde9878b409b8151f8640d98156a40bd727184e4af8bf780a8062708f7d09a33b6aef602902640895936a58f15171a38c17b4488d087f63bd07af847e1a3aaf3590e73a4c37281134622bb2e47fb64df2f34fc24585960af2b7cd0d1a53a10910f8aa268b41748af6c1c4f71170c7b2778d8ab8f7967fdf9364969c0e6708ba535dee68a70a015349fea5f8194f63146337716273925bbad191cc08f02c1756ad146bee46e67ee220c34682877b9698c63961317c64162d4e271128f87875c98705a256377b5548c642de495e46f037053a9f38458bfd1cbe967c8c1478b30d7cfb1bfb8973f9d662d64f76d1e48a7df65900c0c85cfda5a8f55b994d64f97aeedd339cce1718a130c18d367ea33c8d8329b2406698f94543e2a2ac8b055c028bdb0433324fafa3081a43b0aa9d8b0801958148a60c669af55c2f0ccc00d84ee0df82da1642e3aad78f71574c0ff5c876b47b83288879c4281638c018e60f9827fe0e44d875ddbb92e837bf2153aaf308fca9a45756be6764419ed8f6dda1e3c3973769ca5d47a4bd129022fa00515d9049c9d8edacf84750a93aa8ebb69de6ea5a2e003317f356c5d3e351a282124837dab1df83b8caba0e19b7fbf2f44c282dbf7ee7fc1d3fc4788ddddf100ab3e10db225650703472c4234b9c81525403ffad681440bc3b6fa213948d208586f004a0946c0302cb316fd06d761f0cace2fab0019897dd91faca6a95bc553066f9c15b209f3bae005150fddf62b604819fb22a4ccc3cca01f83f8b28a46c6ad09ed99d8bf6e912709362d09490761a65093012740d81a93389e01094efbb38ac49e2122d013bf2bef459198bccaa5366622298359a7b2c50c43115c3406a118dfe2b9096ac1e60eb589a980358f478a6cbe92bb64e5a80cd7c200c24b1bcc6aa5d01189ae9d752ce734f143b1720507db6acc02b2751422fd24959b76f334ea4a56b4781a4a6c13b02277bbf6f42108f3d6d5415cf0457da5f4c68481d083b20a616a55f8811b0f8e89a692ba4b431ee0dca2fd5ebbbdf0053b2b222c2935ae5f881e046c41250b21f116ff068ca1e4a4746a30cd5689084ac7bc18e20268a736524c47efb998c6d7b7a82d9eec85670966a24a808f6ad021e08d16b90fbc9758f49d73f995815c3270047a251206b4044c92020311cf79e3ceccea9a9040b0eab8cc8999a71725ddfaa35ade85fc8248aaa026f68e943d9d96b2aa2ff357762cadd1890e4e0a45a4aae9d2f584c8bfd1331aa155d6917c6c289ee696c2692f9ab0ddb232f17423d34a14eed00b7e7220288f30c1755ee4c1081a29957f92c61861e37453265c64a3ffeeb69f518a851328054c300034426341049540c7783c8462c8340441a47018994660041a8310a8088ea46308928261080a0a21d3388c40233012854011740c47523004494310440a8791690446a0310881ca9020efae1aa2ec3e6da046b08e4a205c5b4a88315065ed921cb04cccfc2586f0b36c60a78a333bbe2b685f7ec3710f806af2fc948ba0bafb64093918f085744c6635e59eae28294771e935067178b58ac47a529cbea7cba3f50b3a105c8540d220328210e6f7c30e480d29f9987d8e7d3609a752df57e962ca6d4a6f5c8bb9b7bc4efedc70b65e02fce341ac48c36db31791a0d6e01da221b6b117c2f8643287f10cf69de820352edfd72fa5037551a4560f14f17e54de3b0cf8c576e0aa70d060a9dd2b384d15a3025a744f608fc0e2074d6b86f29cb423f66c2efb1486ab3b46d639c29bd91cfb611b2a43a758c0bc433eaa2dc573b483999d811da724ad4ca03cacc6d02f1dd0846d7693dd0f63148551a1e78017ad2ee45c05aae950a34577fee7c79dbc641381e56af90a2be379352aed19a92a469b4ac48db40b343003336936bca952f3dc9ceafd207056cb48aa1ce0541efd5492785f08a04ae3f0a547f076db5141d8eaaea53a00d0831d320189dd75142f7d4b41b40d2ae1baf28da93c2b3568147acabd6d10ea3c8a4cfac73932998afc2801a8810ec03070301ce9d98d052139996ed033067d839c7d609ba32a82c4516af7bd76b84f2d42f094d1705959c8473bf7a30040142bd3720252f258679dba6a2810b59adb972bb910b086676efa0820be9c5cfa0c9bee94093d37bafe9f5c072b7ac2f5a8d9e5f3ada086670b4e04dd8de92cb09661bc34d1b639b48ec17f10cbb839b62a1d05821cb67230d391019527052d6a706c62f9d23adbb74b14201cc70eb968b777cb50256e10f550545d0da81206b8afe81ddc7e83564379e416f8bb3c08459fcf57121b257b3d5efbcd9d2f76dba440d919d402b3d7e061f48b1062d0786ca2262f6132258634d279bc31f3793570de739f3c3b373607f98d9851a704e8510052d60dee8bb3d2be76f24bbd215b5ca1eecae1961bb1097993f159fa4e3e4bf90fe653323fb5134b15da93fc0d181297b1005186d94d717ea64e45cb1c30622328221e86c5df108361def7732b0f0dba6c3833acd50b73476af4740b3097918da3a60530c39b0b580141c0ac57554f907bb1d34cb2fc5344ff9dc0e87dd77e00ea3058919376a73aeacc91cfced23600185a50e8498520d72b653d0081545aa17b02c1743094309b1e26be9a793b876fc4b4acb02574a55e8b168e1423fad87628c45a6ae65717763969835fbb8ed1ffd9540be8ff3929f8846fba6ae0aab893dafcce61e01399cb04f2cb96a4e04fd76d251eb9c2acdb1441fdafb104f0b6ea5385a16d0ca136bbd410fb8170f1301e2dc6b5c748c10c721754f7f9806f952776295cd0b953fb30e0fe0eee1d8487487c2aea27f5019bfd5cceee1722264c06abdf0571f56055da8fdd60a33b4544aeed926acd93095e1a4700fa0a1216d9c6d35c1a764cec2613d41e4a461417b80991dc305483e27cbec5009444a4cb66bd15a3ef3a1d9cd7a2b93704d917e421db05d715f0bb994d99aee5b46b7a1f88391433b32eb7888c2500eb51028a6373ae890762b32e70ac2f63b8eae99bc6d2ef09ad64d793a433abb306dc4a449e8f313c92b9362d696163e06a62c83838abd585f4e922ee1b462d9bba4229423ab87ddfd070163312d2171427539887a1e78da037f13515863b205412152d42a3224cb548f82c8ad01c04b896b99a6e27ac7fd48dda11f6bc90d41793e59ca62768aeddf5c8d7a96df79b85f39dfdc642ff3a7a374f6d801ed2cb07e1c52927eb6e6032b45f9e37f2a4792d492ea9a871e61747e7f4307a2d8a09d867091230485588d5e1906d1d067de790501e7023c63aab70e2748a71f705f92b434e2170151488725979fe570488bf280f8719bb7fb9426b68e27aad11e79fb646345e052a3d4f2043222960db218ba4768f45caa40e308c4583da0325482c066c5114e764b07bd8943a4d6595f71c3a12c58514730bfd9bdd5d74290f1635e4d64461b5ca10fdda49cd3918ebe9bd0c7eb65fee07aa90e6b81d8202913195a78ad248799c221f471c5d8fd43652080f0570f69c790367987a0b2bd46e69c9924d33a267c4eaa4595eff9148673c1b55eb9a1be1b170ab9be7d62336c81029e65f2b78ef2c64fe5527a921977ebba789ab01ea3ac9b67f708eab945be05b63f6b954a1c22a24e2eb712ce4ab7b800cae69caedbd63b571306a970f501991c3ed42292bcf21e9cf5abc13899e8f67ba695834504b1dc8edae72cba573d703fac8d706124f864add0844b75340167ec5f3e0f2235f1efacb9a150105a4ed918f158ae057914a44de149d990a4eb193dba4c417fc6971f0a1d223e7c96e14f75c0b2cd057f4ecef8a5bfe85f91ff0e6944d06804ab350abcc7a8a1a74ad62a51baf6af22d9e495a0e6437c31bfe6d9d37aac0e13b2110f4179ec4ff89e01921160985d804e957c4a8a1e3abf61f628c8366cc35ce0842e882dc7cec02c7d0a0849fe001ca6b868522128ed13d399b28c2129d4e955c6b0d122e254de589e2eacdb7493d04cdb3f3905736ebba5b28768355b2f23caa6ea8621761726f9fc6965951cf48552b960a9914bd06b7c66d1a2935d87c734a5da587d12f3d567796793bcf10a1c8f810d9f4b3ecdd157c230109d65909e1be15e19acfef14e5d944508738889a604ba5f2f3c2c5d69d5d69bd1432aaa6afe892969b34640cf5199777897d77858925d29658421cc95c3d79d4079688aef36eb0f37301f315009d84d1aff457781e30a0a2502924c5a5375855448779814256dceaf7713d33387168044e7bd779915dfab0cba253dd55c3768a15e30ab73a06512ca3518293ae44b287b0c970645bc2b0351dcac484e885714aa0f598c3ba9c714b311b4cafc3c912b13552d82225ce914313ff52f0c13dc1e13eae3c9bc480ad346aa3faf682676f16f854c194ee0cc1100e7e36de2661fa70c2f8923dba85e2acc4962045c7c5ea838aa8c335bc32173c5455349dd790047fee693d1bc1909c21893a4cbb1476bc9ac79aced1f2ce3fbcd9e8b6e57fb963244df3a8a99eaf7d45ff3659a6a8eca4ec1499f65ae70ce8d5e13ffdb0b6daca2a50388d0ae45f28528b988151acd434812a4672333dedd6a4fdeb1b44720e9fb50f8c1589360f1894260c52172f04d7b1816fe8b291fdc6b20f52a878afc29d6946c600093d26ebbbc2b419306053b71131d4f8bc2c2a212198b9d5f3c18de6aa8dd05f6e722b32aa5420d4df480aa266f591470227c8679de484ed9f9f35ffb228d78543084a4225c08b4dab47f3cc3f353ee78cf87c69857b56aa28477624b6af0b6fac2b2aa2c4483ea015d29561938dfa0115d6cf114708885a7acea6c5c56d5a5962b11d3daf3676fdf65e127f3149858e11b0db771fd19f7906323bd6b407384404eea749c1b13dbde8b27ddca8a648aaa8425c667d9ad3895af22ccf37eb55cf41272d232a2428958c5020555499b859d4a3d876ecbee4ac32f06e68361f76b6c42cb0f0eea19e7e6c3b5a02301e259c60777ab6cdb11f69fce0ff5cf3a27a7908a124e435889a8070c336da2e5220438394d0e110f7b320a9e698366ca562e9595700e0a99ba424dd63da106285f058ca9c7d76b53fe6a4af31d997b83d8b864e56d9b5b72d92a7667be59a365fb244e5212bf68838ea866de507acc812a9150ec224c192908cca4df68d10ef43b33af2373c3369215f6b85b28dc2d11a6a46a95985fb97ae23150a3f8d7c8e2810ae8806ccfa6f34842d4bd30ddb495854edb574d3a8b1bc457eb980a62d54d9c49bc846ec536917618b1db24850e8f0b9003443d5876c989514d3e33d7bd7c9bc493973f173f502c0601550531238b95d4b2b277c5945fb02e62e735f53a9a1e0044dfcbc1b892a7fadb817ff838205622d0d4501e35cf3957ea547c177b023aa7ea8fe81803370e96c5f7ed395dc8471c7fe2c742d91b27c165860d0919ecabe39e4b8094325bca8ef02ca84590e384c0f722a04e477dbd64fba29f0602f11d71468f0744cd613a2c44113679b0edaa9437b800f8886ffce2e78946cf1fc068b35fa7dbd05e443d43cf339af0b2a96f9daca8b7307b5457ca53cf672e06574fda27e5fbcae664d3c1e9e39b0509ab17c135ef91264e08392ef291ab169de72306c80a2e367933172a34ef9ed63996a0807f451f9ccc0126c1b3049c0be56761dbb07ae651486aea710319a882c998357624a1173ff85bbd07a4a14f7a234e5010a4c60729ff763cf010722fd6512a52c758083e5e5ef7679e2389f0582fe0e9f39dc5b3c17887cdc4ce84a44db4391dfc315654525abdefb72d3b8297edf777a500da09986605d1d489593a37fa0694a6311695ba6fed25c84bccbfd004d8921f6e8699a5223331557ad810f26906b2fbda11bd6dfbb656375ea37b9a0ed6056750936f99e7e5ffaab03e960eaa4b885403f30bcc834431c22c1e47418b52214066878ec1c21452de195d1bb803aa5fdfaf6061d4faf8f81428944d2df71c3ad4597e1618146a661af56cb731b3cdc270c7d005bfb34a7378ac947f30a697a7de6a8ead8a3b4edf747d977c90da0e38fbd94a407c8ad03a658e8cdaa13aa56acb40ee75d1ecf8ad4002730ee462a703ada13f96b33d7532880432c73c72f3963c1dc18411be35a76fb5390e4b7c79222c602b67aec5f8a48f495a05744163e4f503ff5b10189f120122418b5f40e0428490e25ad7be07b86a0cec0431f3d8be66c39402769eac56b037a50c5f6ac3a28eba21bfa37d35c88444cbad2d01598b2f291da33108f39ad461b8411a2eafd7f409fc99c0128c3b937b09eabc48cb39fc448a3e5eb68e8b99b64451fbc36b444ff1876bc9da2ea8bdae0a075a014d546c0fcc032636c8b78fa09d02e94149ea8cddf6515b0f5ec6d4f993f69e6ac8481919705bf4ec99df0b6a36937dc4d1f182412722c946dc5960a845a0bd0b9787d0f410d723c851f76ba0e8363ec65dd408f22504dcd36a85ae6771507e4268f616d5c0f7e2d6451693da08537a57eff5688db3da4af1525715b8f8e74dfbb5376d93e56cfd6e122a72a52d25c88c8a3e9a9552a8a00c998e1933435b00dba845154a9c7760caef02f26b21fa48fc29e6c74df07dab93235bb62332ec79feab6ccd9de3259b21e1c5ae57fd1179d49b3240aa3d1273746cb32b8dbb6ebfae95139537795caf5b05de1c412b15e95b3287ca27439ae889a9cd31191c019e38a1aed20e03bf12d731bbe21054a3bc26e3bbd15f02dbaadf88b1c0aa458e5b52dbd5b2424eb884a14c2ef5bbb89d50ded2e50647de1ab287895bcc4948db0bf0663582945d887d0a55fe01a0611f630d2afbb877fa1f4043f4a8b9f44953666df083b551265b989e02f11f65f2f84098d18615fec5161b606c0fb7d3d434183c108bba562be69b978b232a333ae27986314611fe745d618400256c69022ec3b0f3f0aa7a35fd03d83d060f2b33e5eb98574e2603b7fdf0678e368563218e1a77e711e37c074cffdf20c79bf6809bc62f2e0f1992382b32cd7d889ff01ef2906725904892534344a2c4c70d64dc82f2119614f934b6367194de8174eaa2123ef95aad922f4feb1390b8951ed9427c3873ccd40203f1cfae2522f306896f98331e63838c27ed96b03ced6cb08fb0e10e8be689b4285b17fe8ff3c54523ca1bc77a2b6e95fedf36e6fbcbe88072482ba43741fd5289242b7e9a12e5c5e90a42716b7a8138a23dbb3e01289fb89bae4303ac8097b3eb0a0b0e7fe145ad109f17abca9eb516af860241ad950f792fd246d5bb3a9454c1ea5086cfb2f4acc695a0643e3b037d4cc0e0c2eddbd5c2f6648ee53f0e3d85f5b9150d284bb7e6db360c5463018e45188d891400ccb428741d4bcc6e877d8cc77d8cd99d0f7849a6b7ae1836f2b25656ee6eee357c4c2bf1b56b34faee45734aa2ef2b7c76d6530862176e9150f891957d9a0e91cac420a0d013d115eaf8ad2b4706f1cac9a219e5878491dbec8028fd8d62c745351be3f49e47a7c62e13c8e610f90d60086fb01cf85eab97560bf324cacbceee12209d3fbbe44ed9ef41ee3f56ba464d6055d216e517bd1dd2f0c741df71518aaf3ad648c1ff867f1b963c028f6ae5cd4bdc4108abdc7fdd54db02ec87cf698198b4755029b288add1ae70ce916ce85621f80d9bd22f77a0683035683c9a7d277a376f01bc53eed2c6ddf7dd9b7e944e534b929d09357e8171751ec4f1ce27d1a99747efe8083fd7af0c1d5cd16f105776d26f6323094ecaee29a81a6f44a723eaf44052b7504e3d2cfab1477e4b1b6a65c7738ca4c297285d54beb97b38e1833008160af39f829425ffab98b94d6c462954e3a08c0705307cc2d8a89a33d384211513aa3f521a6ecce5f7424eb0ed94b4fd2d71d18280b476fd8f174a6d5ef4eab1b76d4d0134f0ac7852913abf2f2b28a919311de9530495fb354932ad9c6c7d7ebd6163b6fb3ac2d6fed87b1f6c255de610cbc10acc54ac84aadb4f09e18bba0b6bf18ad7fd0dd7eef18ad4c272a3b29d76fa4954e1a99f3814925ae14e04616a03de2382d39d147839795e76b41ed665f490568a4df767ac015af6683d5e5c3262bbade0654b86495bb5d4f977dbaa23da3ead06679ce0a601f02440b5d803672454fbfe51906d6d7452002628a7f0111e0656a1064571405867bde5ab151700df598d0217562fd9de60bff78ea26b0916ac761ab9387ceb0fd06a48d24d2c261b4194cbff860942f5f9756b81299672b5191cb1751dd7187eba09b1316992dd06a1c7b812b243cc860f86bd78f05430942b50b433909d93ae2543da64075d6ecc05e2ac69daf5286dd5b873ac9761d107c55172fcc386802240678c8eb69f460700fd485040aece7ce57209ad1541d9b8a04ae75aeeab8a429121fd08b760ecbc01ecb861b258ebacea57088c359c93fbb17143b4012023200a80134d91c2214d7548bea5fa54ac533c747873b68a1aa5a25e506cc0cc7b699868d5f46c99652cad70c300dcc0c21ea7a38b1f561d21ad98f1f93ae5eecc9f58a355a973a7e3a3168e7b5ba5c4e0dd695865e2fe8a5bada4f8dd5859a5e6eea624535d41aafe9d5be50946b35d5486bb8af76b7f40b75ad35d21aeecb7da52eb6865ae37dbd2fd5d5d6585d684c879fafd5e5d6605d694cfa625d6f8dd6a5ce6045ea13af9196b6a61f756c3de81b7145f6d382568f9b1a79519afb98bde115d5cf89cb4ec7c44758531ee571198a565ee5d390c9973c2e39e3c9f37fff491ef5b85ca93ef56d87f4a395e94b8f4bf1451ffa4feb596fe280c24847d6a33e2aba1f1cde51f5b4bf8ae94705a19ef55d91fde027b091f5312dfdc74758131fe1fdc0e0678bef40596c879f2b9c66a672041df999c277c050ce134eb3f2275cf234e1356f49cca9e234b414cd08fbfc24e135375caef869e234ac8991a0aa244ea3d2d44e11af7177c476abcdb1115cf185144ce18b36655f35dd45c2c0842078400c666063d0d56d5de8185c26c048007bc2faaaffe62b5dbde9626bbc548400044de020085e9435d4974bda41101c3051040a5e2871c981b53892f8c2124e480204512871f9e80b45498f90c40742304405252e5731d76a4204230cb101106c24287179e22686a2865b03313cd183255ce18a1db61a690b85ebaedef329227f3186402fbea21f914a26d407f937e22b4fb62d92a4541fc488312cf9ce2d3f2f227f51be0979c27fd576788d136a9a50c304fca2bf888ffe13b2860a9cacc1a2660a3555a8b1424d163552d44c51f3841a28d4505173851a2cd4685193851a2dd46ca1a68a9a28d4585173458d14f08bfe1a76bf3acfa160bbfe1fa389d9191268de7fc7c3f980c63fd5c43288113165e8452352c9b47a71dd2714492a54f160f7ab44f34a2cf920469c4a930f62c458f20ff2af9fc76cbf8218e1529e701d5f60953abc805ff40731e24b1d5ce017fd3a5c5d83d4a106fca29f2475a401bfe87f52071af08b7e1352c71af08bfe1252c717f845ff8aa4f1007ed1af22758001bfe84f913ac2805ff493903ac4805ff4a3481d63c02ffa4fa48e2ef08b7e1349f301fca2bf44d214815ff493489a20f845ff88a411825ff48b481a23f08bfe10490302fca21f44ea28037e21037ed1ff21759801bf9c01bfe8ef903abcc02ffa4512e397cd0bf87d9e8d98d6829e5f87ab4f2c978d8fb8388a0510f1692d440d2146314b6e5d63999c3ba6bdb78e31ce787fa06b1215634cc292d44c54147ae4b24652ebfa49d4fd2a296149541295442d6149d4aebf04b65fab76bf5e764a47f4fbc6f1b46ad1ae9f233b12c60a0619449ecdd692da7e9d2cc9fb1d8b6d6625ee7e799e4886c33f3dbd63bba5637a96c3966736ef4fdb8bf8b961b9878ee19276bf3cf894695adb407fc248fc74d1309d61b96681cfb7acf3ac8751df3269a6772cc744a09867c3c42cc3b571946d1e7d13f32cc4b61fe59bae651abe915c38105109d2306d1373edcb30919fc4908be1aaab7933914ce46ebb16924252b7e26757f36632eeb66b200eda61ac8b8d3c19b76d1d4dd33cfcb467a33f651eaebb9d36ad9b99d836ad9b79302ec671b03d9371b5eec6d1f66d7bb10e75eb6ade8c939d348da4a3953c19889b85b6d34ec54a318e16de4e7b96ea64abeec6d5420e7652a5bb9522197195ac9b95b84af560e767c6d9543120a21215fb6e3715883a7db60dac5301bfd829d6b5473bfde9d5bed9ea4fd9e6f3d160e3a6d6facf47fb3635afc53733aff6cd361bd986b68979b44ff6d536b6cfb6817520ec8b81b1cfbbc93a588cc38584a010e442c02f82f39eff01827c15db2dfd71215fe9e13fbe07ffe32b74b7b490cd17c17921bf11e27d111cfe43c889c2941fffb1e13fbcf77e85aed2fd0ab9fe956cbf36af7fa5ee97c757b1fd426156e87e7926b7ef4fef4f5ad7cfb9750dab716c5d7fad6b7e96429b4804754419783b89b352281361a90e8cd6b5184b71601c9b093f3b309126c638308e0d146fe22c14612128da3a3651d6b98530d063136b1e0f8c73fbd040da6ee9558b59501f5ac9731b79609c9b07a485b592c736ea80424f2db489b251c7060a631ed0168a37519c89445828036f21ea71c95161e08c267a5c7e6b6c43e31891cb946cb734ec24036337efd6c1be180908b36d609ded93d9445f6d13f368b31b6d23f36a24fed1483ed8a6b6d9cc3cbe699d48e14cf4a7a7e671629fd929a47568270fedc4917d64616de699cd3eb1d0d69171681f58d8f1c46a61c713e3d4c05968ebc83c320eed030b6b9d9967c6997d6221ad43f370641f5938ebd43c354eec33dbad538c3413d536358f44469289681b9a472399a562a2d9a6e6cd466f7664a5373d32d49b1fd8e639b4c7b6d3e312c44f9547614ad09be12d457a5c8ec6373b310e44548a1e97256e7a368f4b1437c11907f1b3f540446509241b691f1bf99e102c2443d5bafecf2d34e38f02cd40b492f1ff03ebfa43b4dac997d86ea38a2a5433816c2118ca8fe32853617d0bb4f22c90caaf8cb3945709c53eb5163f412c7e8262fc1c67fc0ca5f04fed0cd54e90ed04c1ce31c647d9393e3f4334d068e3e36dac7d6ea1198873100d241b699f108c8764bba539b555088602c946230df4b17942b212888602cd4635d0e7e609cd4a3592dbc8061a619e100d647b10ec47d928be19aa95565cd58ae38d04c555b5f0048aa538105139e22a96c357ed0cc4553490c3ba7ef3c357360f57ada158d7df81d15ccdd812b6a4b65fb8fc5309dbf5afd6fd3a67a9af06ce64b5ef517fdeba8e756debda439b7d2ff233641bd5443319fbc1ba1ec9be0747b7af46131fc5cfd06d141bd94434d26c45dbafd28f4633922822d54a2259aceb2ffd99e2a74836a2914437924d141bcd4830918d5413c146b2d1ede3a7a846a2ed967e8f0d5693cdc2d00d8c7d36717403d1383510f6c9c4c7a5e8cdd10cf4b824bd4982951e97a7374935f045b6ef714c7c5c6ef889c294a37f532403858f4bd106fc73f5284cb9293d2e492287abde24c540ae724f3ce4aa77b7b4e84d92cde3e7889fb5f2c7f7e71aca7f20a292f3e1734cb1cd83269bf79bd3ecf35e89569a850f44549e3f3c7c057a91e741a69bf89e132d7c51367e6892956aa2d2a3485f3ad5464f8a897e54b2855e0433cd50a95f917c0af524a5dbe951269ae94f275b6cc5cf204674ca93091f26ffb0923731d5565ff2a7aceb3f99f0a1fad59fb7ae1f85299f9f2698093f4db5127e9e56fc24ddf8e996e26789849f25143f4d347e9e4cfc54e2e7a9b65b3ac6cf928d9fa71037cd764bdff879a29564a769e4a5da6ee9e7f0d304f2d364e3e769b6cf128d9766e5c755a29be7cd122d669bd5386f9a64a61b4d669b7d6f9e6a31f0cdd22d7cd3448b6dde3cd9bc374bb09d022fd2a0c40d64f044894bd0c357af09668408aef8e2fda28a12972187af6ea6da4b125870852f8c3852e252e44044e5c757ae2cffe00c2840c9700258894b20a272c357b67dd34b4051852cb480044a2871e9f1554bbaf532a65abb7ed5ba5f67a6a9d8fdaaed57bb5fb1fd3a81884a14a6dca422ff11f294ab86294259c87f7078eac65139fc07c853af7ed56cbf4e14a604f98f8fab601bfec3e32a1cbeb895fa3930e6ee76fde406c60be4be6a318bfe0d8c1c7901ee37306660d32f9061fd02e6fe3cc468a6645d9f637e33252bb9a110c1ed09ec200c3566c91fde8cbf399c77d6f8f526196f0f1321463173d6f8dbaf0eb73a2e428c31151e7ce38bd1f1487bcf63bf7c00f926a3bbb501391c77fc3d5f14acae5dae88e91ad3b4906d909bc840c846baceea16a3dae156d7c140dfb8eb1da73711da4504976f9fa88210a3989f5ac71f7e9b0c06588afffbc613fb85d104d34dbac99c05608a65f29f9a18612012e4260adcc23f05daf1e68a4d169e03e0920608d686e580dfc6ebb9e79c73eccccec6ef41e44d14f8854bb09b1bf68a4d16e1dbf16f3a36e2c5ac73d68edfebd8881737e8650842c7dd03f3028950edb8636616736e3df426e7edf8cd1016a21d8731334c3b0e653b055353296b75896e8eba29a6aa66e12f91a26cb7f09bc80d8c41686034c1540363a795011195248f7a14a644a9e00c3fb8a2f84982fad3a330e5899f28de7d3ec560b8b5ea8da7efd8f6eb34b59d07222adfd0edf4a54761cad28b1e7fc7ddaf123f4f3c88119d92091fa5373d0a539af859e2284cd9c1e0adf391c6d14944e2dd0ad13afe8eedf841b58e7f6c3bfe8fade3f780eede20374f1c114c3db08e592dd26e8269ad9b1b36e7601cb748ed0e163a18bb0f3b66cb30453737ecc875cc96a1091d72e462fc8f7b60a0278661a027e6493956981c8b76fc2420a7d13ac7b15c80e016e966c3c39b12dc0f598a25ba07a65da64ea2e3c7a607d683e007a528f2d2250697e8d8db1ff87d9c7bdf59bd61431d3fa18415b81b523b74a9f07379e652fcee71e93df827cdc2de077e810920cb5342fc6dc5f81cbb5f1bffae62343db0cde24f087e79287e8f07b00b7b25f00ce9f83d11e09707b65bf83dfc9c2e8ce089958aa774b74231dd2f9005b8851f09990d3afe263a7e539c759cee172e656a1767608a59b0f729ef71297aa407b6a918bf83e97e75610e649be202c045597558bbfe18f2d71394c7daf5ef40bbfe1749b2249bf2922f0a4bb25d3f0df24fd21c5eedfacb931488a8243dda752925919e9576adc2bd28dd564ff8d9a1dc76bb363d419fc5cf2ee5d8fd76eee65c2e3d4157f4af78e96e3beee5542fdd6db7729c876eb653b99643df16be5b5a74755315c54dd9fda22baa7bd596f526e7aebcc9a52a6fee94373db4f566b7b6b890f1a4f9f1cd8e6571219fffbcc9bd2b5c88c7f326a73e2e55b890ce17b17a219d3777cb85845fc4aa866df150f9083c04be8797c04f4005e64f06fc02be01ef807fc0ccbffe4cc0fbf81d5e01cf038d8e3f73f8b3fc73e6cf003c001e852969763c8f3f77fc59f327cd9f3dbe006f803fc023e0519892073f77f0b3869f34fca4f994aff91dcfe375f033077e96fc9ce1e7ccafbefc1c5ec7cbf0d3063f63f8f9e2e7eb555cfcacc14f1afc84e127ccafcce0678b9fad67cdf821c609a05dbf04daaebf87b7eb8fc0daf5430046da426d685d48186f8b64ad2c1246fa80b4eb7700dbf537c0edfa19c076fd0b808176fd2eb295dac0c270592c098307b5eb57c0daf5efd076fd0968bd5dbf0cd9526d5861b424ab6df1205b0868b136a40748bbfe1a12c66a00182bebddad76b758adb64580960d03b04185210092edfa6748d68a6cb96ed70f8096dbf5d7dcf6abc6ddaf550d904df9500f5dfdda35ebbdadcf5359fcfc5c905d3fd47377c0f66bd36e52bc15543f95b5b26fcdbb5fac4dead2fa56d69ffa51ef4b6336eae6f53e30dda89b77937aecb76e5c10ddb41bd45b41b5e543513e1705b29b95e49a3c94af05d70d4b7a4ddec98702d576839abe152c6ddc4ddae2b52a1f8b02531d561bd22a45145b0eea7e698ac872d2ef454395a3826db8ae9c177443567f1b8629270c530ef87258d00dd910e5ac9c96a3826db8ae9c576439e9f7a2a12aa662cb09dd2fdda8595c71c407c64006774555b62582840f8e308309be28f1cba62beb721143c113de166dd5b50505618b0f88c10a350042ead28ae0e0072d30e285d2f3de80a1a188215811052f9422d6881d90410932a065c8a5c2127e10e404521042194271e881fa013278800ba5475dd1368581b229fbb6eaaabaeeda626d4861b45ad69b736044123414bc2f3079d3975db3d881149cf0000b6080aaa9dbaa68e8c21659e822b5ad2ae8cba6359cb082164368e2052acb0533f4e0092fb850a26c93108423f4000b15582108255e42133029c4625085ac4459cbc005177481062594284f5023b4e8a2160423b3725d09dd546c39e897862a0b15594efabdeb9b22aea04ac8b6421406a7e5aca0abc28188ca15fe7a14a66c79336c5b1c88a864e1d204f366987220a232859b1c147e3e0a53ce3c2e499c1619d46935a56ff9ab508b629d58938a52cae15123b705736a5dd69654c7b7dad10bf372b95dbf892da9340f237249e84be6f4da30b531a5b5e65fa29794caf0f3749adab3b49ea29793d2f3e49e26b6a48a5c1a4e3ab5a6b5948a5a1d7cf4b2a6121a7a73e023f7b49a52d21b4a4b3e6a4ff80c3f6b3c1051b9d24941286954572fdbf54a471d4f5294babaa88aabc278f919cf76fd63fbc210df4f3aa346a7a531b2307fce403f35f8d969cf913d3feed9413fe80b3f3bec39b61ff1fda49d75744754743f6a471ddf31fdac9d14848eeafb61df54f892a423102a52d995441da9a2371dd1923a72452bf9e6d8bee62755bd29f2373bec8ab73a6d894c797364392e4db8f9711f9725dcfca02b9707222a4b26b7c48ad419bffab426d39b2ab528d20a338e52939413ca4b2496c69780d2919a724a4b6f9b0252476beba4b698501824d7f52dd0cacf937a9a50920b5a47ec292dbda416a48e4e68c925b1203e32bd2d695cf9c8e492d4cf0c3e425fca9507222a71a038dcd00de98ae2c0f1e220b12909a9c2a1aadaae5b9299f6868a635dbb7e9319f7c6fa76fd37a06cd78f32f3de58e1e78d17bd819d79f90d16c77ae38675a685df5871e0686fb433ed0d15078e17073bc3de4871a038dc1b66d61b1dd4e4d3a64c6e895551923435aea6b7d4925612ab524129ba2ab9a597d48e56909a92a8bba555ce43b65b1a2de191ee9676398fd86e699607684d85529215958648efaa55b924a117c586d415aa4a4b462faa0db5ab5565624b4aaa090915b9a6374fae693cbd25248fcbd2c9d49a90beb4864829afb9ed9616bd5d7f0768549a3f499108d5aad4148bba35d173b76b559a5a55a894a46d556a0a85ba2cea55a1295584524958d3737ea25c55baa2521212b424f5aa52a969edfad7ae4992f4c44d912469ca4da12896442549bd29d44ab2a254684a45a9242628aa25a9d4112b724bad2945b923552a5a4baa8a25a9a857a4424ba957954a536f92aca8950435e13cdeddd221932455f1b8a1cc945bc2c325e1660ae5614b91a8e5cb0311952301fc009e005f80efa1fa93c7ef781d1e001f00ceffcce1cbd7f1345f1352f973c6c33c8daff1ae90cbbfb4bccb9f2d7fc2f8f3f5316fe3657ee65198f2859f2efc6ce1270c7ec2f8d0b7bccbbf7c8b9f2c7eaef053859f2abffa95677deb53f889c2cf137e727ef21ffdc9a37cca93fc34e167093f55fc543de94bdee4c94ff193849f287e9af869fad2a39ee4533cdadde2c08876fd3d0a4012c0edfa0740e2dd52b96fc94b96b0e4ca25552e491280b6eb07c0dbf5ebb023d596b4e4ea25552f59a292a91a1a52470ee55a82ae50524596acab1752d5ceb426aa8c5ae2aeda95fa5257aeb4eb67912a56c576fd2ba4090d32edfa57e48a254b6048b6eb9f41c6f6eb448188cad5bb5da7b46a887dbb5653e49bc29ad252dbf5bb5d93f849ba292dcab3af6cbf38ba8650d0d5bbbcfd143fc937854549bfe52e8f74bfd2ae53d497f42f6749d4ae53d213978444f9ca53d2139744394f53d493f7394f5951d0e72096e37e7b4251c577e572da27df132ba62b1434d4be7b4253d614f5e41571f6f4224f416f724e4afae6095ff9c91f88a874413b32d618ed4ae53d6965b0a1186e0a8af21f9774851dbda5b51dc9685d58958a755b140b2ae35d795d5cb444a54d393f575cdc1654a5654955d815d7a5654165c47855d6955646eb2283755350977485754165ac315a95f7a4dd2d4da2289297f48a4a58cfca5da9dc51aa25a9a2d6b37a47aab5b48a564fc96a858e54a574c596ac56290a15e2e7e96fbca96a49fcfcc1f9fe2fe34d13d3f83f3e878c0f3f393670b3c43df98fd3090e37f809f431de5c89cff243fc90cb4b8b0a83850dfd0d2cbc259591c648554cd011ff010abdb82d2b4bfb82da80b6b02cae0deecbfb92b2bc36bc2f2a4b4b3b038d81beac33d21b32d0163706fab2ce4865a037788bcbf2daf0bea82ded0cb48565716d705fde97f4c56d5959da17d406d4e57d695b60b0e088c165a831549395455d4163ac26ec0acbca424dda15d5458dc1b2d295d545866be2b2d495d545866be2b254937645755163b0ac34c66ac2aeb0ac2c54861a43355959d415b4259591c648555c1374855a49a8684c3da89892581c298e17072bde683baaa81d551ced0d77bdb1ceb83856d48d970311dd80dec08e37d899975471552da949460a8a219aa0a315956a92a18262a8a2c93a5a4953a8896505c5104dd8d18a9a72514bd218ac49bbb29a2e6b890c17e57149f2264b35714960a8259737f4d27e5a3a2cac890d68090dbd7c5ad60e4b6b6283cb5fd2d0cbfb69613b2cae890d2f7f514f66a09f96b6f3b81cdf64794d4e196fc3e372e427eb4dde8c81f2b3f4ad53e553de7c594f38105119e2e7ca8bced08f6fce483ffc3c799293f4ae375bdcd3f31ce65fde9481922aafca0535c95841314e462bacca2535c9604131c41474b49272614d325a508c57655d715dda12192ca80a3b223f2d8fcbf0cd9537a54a955a218b9f304c5cdc120e44549af8297a940a4f79b3054501d1787e9e3c0a53ce78126e442e5d3ec48bd85f94aa1f4d96b4e3096f3c1051395a5fdf51d3ae9f7314f655b4c69f521cdc9084c455246ccc8f6e687150a51c21255b1baf72571518afa2aeccabdcf0e200e3c6ca92c6a0bd330fe34fb4bdc1cf1cd6b34ccf1cef89c30cc7a13d73504b34877b830cc781cd21ed6f8ef6061b1c873507d4cd71431bc37150cbdee6586f78711c5c7c4d43158717e5b22a68455126af3ac29b5a516c6a8282f2275c23acc9915645e1a70eb4743baba3cd91c35bf655079b23cdc12dd9aeea5873a039b4e5da531d38bc39b0a5da511d35380eee6e691a307c06105139be5dd36867b4610db4e5edfa5f5c3833aa8c2ba38a31ae0db545060d3634c30dbdb0201a2ecc5b2a79d5dbf50c95060ae34b345618f684cf58491a294c1be34b605018f584869a02e3a2c0ac2c7f3283854969a8278c7bc2ace70c96c39c33d693460ad3c2a031388c3a63864a03a50183c3b034d819ee0b4bc3857969bc34da196d8d969717b13122979c9954a6b591aa625a1bee0c6a0395494b62581b6dcc2bc3caa02631ab0d56e695596dbc648c6a63957965561b6f8c8d35e6956165d0181bec0c6a039549636cb433a94c6b238db1e1cea832ae8c1ae3da50555a518c3bcea832ae8c6a43b5e18e31ed4c2ad3da486552908d36869d416da0322c48060dd96063d6988fe8d6695f5766b571dc16df6cac34ef8e35461d6ba0201a33da96f7f3825c0f0df65fd80f0d3404c3d298f1ce5069a421985604a3c2a033d6cfd881d150791cbb7011e20f9bb07e7642ecb5136c5cb959e3c9fccc4f9c194d96f9d1a498ed1b27cd32dfe4bafec79cd6026f8184154244404d1c9182176b0f98b84115514c61c80e35c8aa80441726f082063b0a67f0c11988f05ea1873a66df5a093c4f11ac0e7ef039e20a61e0b6177d774e407a6f5278c10552982d810a21d4c42361a842731b148e1db31e8875b063235b58c125845c16806e691e9fb513423377cef674f0c8a1c330fe2044d7bd17a2eb1c87ffe03dd7718eaeffc079ee7ff09ef3dbfb8fd4017caf6fbecfa90070ef3df71ec875ce7be4479aef7ddfeb0e8d27079be77c99cba13b1d502dcc21a30ba6f55cebc230725f17a3defc1bd2a3876669efb91e3cbe18bdcf548818e3b37f3cbb685626635c68803142e88e37dfe9f7b4e8715940f138fd1d7f4db250fee3289ab5f16bfdaf5dacbdbbfe3df6ed82026fe7fca1defbcbaf59f9ab41f902cbb579137f18639e41fef1cd02031278844f2edc9010a3745c8fdad61d03e072b7bb95bface5aff50ee724d425341223e7438dc49863bbd56de179990489788f12896956f7fd06b4016d34f718975f4db3bad40ee00feec1cfa5def5126a898e8239d13b33a60fa177477c26d835ce0c23e74d14cca3752ff575337751b3dcb7316e62bae7823f14cc23994a9f899ba3d7bde7e14782073a58db2f14ecfb50b01a8a43bbf7fb04e326ffc7c598df04c93cef3d12a4c292d8b191f32075f3e686abbd7b108804a9a02440322e8c260af605f11e742274471374047404240bb7d86cc20de8037d5f6dcc319947e28e0aa25d2514114ff70da97b264127d0bef9eda19b076747c69c533a7c0f7a1037415a7c20da077a9016201988041dd1acee89e0d0ee190024036b33d0090eedab76e5debd878275683ecca1251344f4940e1e8748cdbe695697aad97df31cb08bed8e26d845ef480c76d1bf2d8c60ed00ba54b5bba58511ac815d80546857e93daf1322779aef4d4e90b67726a84507ddfc2678035f300d9d83728698dee410e9dd06840521417048ef3e081307896856f7998368ee1cb9b11851302ca34d306341ef402b12bdebb2237a879af50ef5ab2d8ca85f7dca7b21724f6dde07c9efcfff83091ffb49fe071399fb20f9fd2b32e5f1d4861b80e4f7ef40b27f07d473ff837bd4ff40f1716f4e30eee79e8bc2c8912c257eb7bacfa1f79b4fa6bce75e081125c9a3c894f7fb851051a27e53318e9ff25e0552f70bf5abf781fad57bbfe227131ef741f22a7e724fc253deb91fc5531e1125e8bf4d8c66754f42e6d8adee5164e884f1634032dcda2f70c6b9894a7bb7a330763a36d285257ca09be08ca64790fdad6448126661543dea55ad4a0b2c4c95cd04c9bacc4dd490debd0992a150146cb73a9049048de9bd0d4f19603ff74c6cfe54a18828bd508bf1e32116c6ef4d14f9a412113d93acb54402b1db4ee2ad35e416d0e7d82108d3ae20ad57bb70077d6b0d790677d09b48dc370c580fb3080641c1b40bab6abdfbdce91144f5288ea7bc2ff91fa927f98ea73c9e32c0fed5efc07d09ff817aee57fc07133e50bcc7ba5bddff50f1cd71e9795918533ce5837b92e79e847f9f8be2a847f11f7bf3b0f9e7ee56f7dee7b1769548b6fd4af9e027c73fdbf76ef2bbed16987aba0960ca41d9e6bfb7d43da82ea1595d7e12b9498be8170653b088667532f6d4fde89120ab59dd7fb6cd3f5b8d97375ece1e49166b3848f3c68342c923c2e87d8ebdf1fefbd023bff7f815461324a3ed57cac73eb9dfdd1351768f3b3ef673fcf446202b41ea6e751f6671933eec56f7bad3836675bf6ba3e94d6cc3586790c7e440df90b844c1b48b88ded1d8fd3add76ab7bdda9e1fd74cba2dbc13b38033d48b6e118b3785ffa6c02b1a98133ede2bd4b7da822dad57d1f0aa65d41d82eca506af7a819ca89ee5143d02f120d3544bbf01332507bf7a8d87e7165de8064da958476ed27a8da255a62a65d4e681768d5a0216817b6c2fc980092712608ebdd8b487373eb5d47e3bd373009edf27ce7e13a549186cff6a9457ae7f64ee4e657dbdf1a72f3a3ed1a0a160383c47af7a82d7eda45ead8881a886c6046d2d0854809236a58024cbbccd30d9d816460ad777b8a5d7b1ba387c6b96d641eda4686c598ff13bddfecaeedf60bddfb4dba916dd4cd12da855dce8df362993468d7668beebd67a579580f13b46bc385ee7d08c532a1581f62d637ef791f6e71f32127e2fd027d808f77cbdb707388eeed10f5af5fc0a47f1d70bb67866eff361f0c06822e84f7b9e34e004efde3987f3bece7f80f70770feafe740367a3d1d5e121c3f6101d0b6856f7b551779f631d912e7af799c604fd0267f8891b50818275399df52ed364404537f3da3b19d8ba998f6459effedb78a8182cd52e33a328182a8876e12b7af728d4440d4111e99d15dd54751305ebfb3bee3d8e8b3943ce3c40bf9e5fcce40f238e6207b76e8a51ec00bfce4f868c592d9c408218721842ac80f107fc19d64dfc7a8a2d7a4689f40ccb1ec8affc22d1afe4de237d6858c93d2633c0f50be45bef36378174bcc3a734bd4fe9c0e91ebfc0c78aeeb2619d23f16eed166c4b118630339fa1ebdf37edca99ef1b66f970309a1b77df34ae8d5fc63acc3973210c3b39e07c01ea3763e850639f45830434299e8502a2608e37c4f3a4b88113dddbfc7f3cc6dfb1f9befb71bf3efede9015742f0a2460d0bd7f8ee32751740b092efaa7e32890a042ce5d37040b966844cdd35eccf33c0fc605c90209b42dd8d788fd1f68820d7690c56e42dfcfda1f43bbb40ba8e3242061c686ff3ff24079568e1e3e1c10c3e5e48e23d5f737b48b07cab372f4f0e180182e981b9dc611e51fdf8ec05c38e086c3d9e81b39f0fb2831c6517411807699cf030d97981e3d5000881b391e451cbf8f868b0bcc36cba15dfab39d19a540eea518912240588007b5870f07f0d02cf343a9b9ec57106d33124591dc4b5d3f2b46bb6c4900831764a3d366fbe0903ef4207e79d68571a4593be4801c0e07e4b0d65a6b1d13638a3dbc2e8c22aec936332738a1094d5002b6b1e802115899f2f19903c99f3913f881e42cc307ef11a35937ba8c63344b3f0ffab4b10f1e34cec1f2e0ca5f3e9d700b42158967c4dca25f3ce918a5e35f61123c3396b008cf8c3e8f3f1d0f217220b431b262b8b0b0eb0310ac18fa854b71cc333d72cb10990358860198457f2872c6aebb393a754b88dc928bf8c8333e3080955bf4773ee41cce103718853041d7dfe98208fd2091aebf1b41d7cf19118222bafee1616019209845ff995bf40fd15948d7cf71b748811e86c81e7e41ae83cbb1d9fc3e69560e1dffa7538effbe214e27d5f338ed7dda79e77dda1d1d4621c434c60d05760cf037dfe7a24f27cff3b8897f638cbb8fa54f1b73f0e3ac8f85cdcd86023d50c0874df66c3db43ef0907366b1b688725299dfe607580777c4a81f9b5a6b8db1c61b639df5bbcc981c9a356245e650166bb3f2de1f161ee7799dd7791ec771dc7e5a0e1d7adc9b8542043308bbaf81e0efcd6d6e8364d851c0cd596bb773b1399d7197c7fc9dbbc2886d3d70af73e416fd264cd7915bf49b317ac723b7e84fe9fa4db0cb7b01e416fd660909cff4307936788687dca2df01b925bbc44e2642d7af8dd0f58b74e4199c5b7ae41674fdabee32203e7253e71974fd9f225dbf878a5c02ccd22faaa0eb0f5fd0f57f1e0884ae9f43722880800352d0f56fdcd2faeee09b1d47f68059f48739a32037f773dcdcbf3fec9a44f48e4b60c7ee01cb70af5f02fb41100442d9f68bda956bdfe638f1a1e2c98e310a854179efc729cd73277b0e4d84ce794888514c1c05acebc7e1b85f9eef3c7ed67e897f7a33a6c77eb1fc8d37712b036337c60fb15fa1c738c752f887184d0c852b8454f2242125d2975e88aaa41282faa142ad7ea04a5ec551a6126f91562eef8a45a159f5e78ccce2974c51db14bd66b706d66b76f34679683567fdc6e834b3436897a5d1ec833ee537ab3c6896b3647e4f5455fb914e647b82aaf28a5d127e515827ae2acd2c29b728198d79fd6a95c4493908e12acfdfd42bcacaff10c24af9f259df1f93e49bd93d4159e13f84989ca4f01f26265cc8ff7f0e2126266fe6b4e6f90f21aa2f82f434ff43a5e2424e318fc2943afef43808292979130b517d11ab5799f1ac272254edfa4d1d109bd262bb5e1185561e9fd27941ada715a92c8e8781ba5dcff0b835446ba8bde167fca9ffedfae59111b136fe74bbd6e15f6ad78f76ed794f111b723daa0e3c847a446ba8f5a43770d0eb69456a88f5a0200f2b4ad797835a8f48757770107bd6f01f424a5f048986ff2895b81051073f8188cad22be077781e7e01cf8017ff861cf80f21a62f8254f21f2c2e84c331bd890b0191587f1ee00df008781f9f001a2e7f0ee0054083464c4ccc975efca4f1a4d7c3f0d3e54d30cf7ad4b71ec6b73cca9f7ccaabfcca831ec79b1b6540daf52f40edfa7978bb7e05bc5dff0e2764aaa2ee16ca6bf29eb00950bb7e1f69d78f00b7eb3f00daf51be06425559514c57df464dd2d7255413ffd0348bb7e0190e4ba5b2a289f9ea8641b8f599b467ed38505d8963117580b5811224382c886e0c41249a846a87ec266477b3ab8c91c08725ca89bffe0b7f13cdd7c5237df4475f3f3de39e7cc91c87b679d45886774dd97f7efe7802037d9b786223c8d1fc6fbc53dc7fff479597cdd16230e03d9599807ccb289309ab866eb9bd47a8760937bef9d3b1024b9d53044020d0b2a987044733a3fd743ce39e7cc3fcdca5e8421144950a9b44abb409ceaf8511cefb1d9e9f843ec75fcdca68ff2cc17fe29cf889c57e599b1e39f479e538707ff3ca3ea465daaf3d38cae5f7fd79d870d5dbf66038059fa555e00b00be3e7d171d306ac9bdf9f2bd2379118d325c8e7075ceb6e10866c18050ae76996fe0dc771fc61142e7311623ce2d7b7bf51b3607bd7bec0da03fd07ac59ad3054c2a81f7397ad633f7e148e470edaf3d86c308f1c3a683974f078171aae3921b431a280206938ce916955ab9f2c3e9956c51ec13e02bbb81da420049b48ef52cdea3e8f3b349f5d043cc1886219dcb36cb7b24cfc4412b7474633cbdc8f129ddf813bf762489a640f5f243d39184973e7d09afc3c479a597cf135af00d981207728817e894bf13f644a6f70a0d12e7ee83d8a03027d788411f5f98c5fe841f933ea430a7d63ee208ee96332994c2613caf4411d614479a49191047a52ab4f8c291d3cf173e81007911eaf00198661f8a1eed08439932513a4257a473232923269446b69c751746c448a21f470ef510ce9eda38d5f187e40de177aa0cf188ee3388e1f07d522a461238c1c5228a644ce0de97eafda756413e9b6dabb6e0fa17722a78d844107bdfb7ca4fbec4417be8d71e414611c3f208ff42129f4a427853823c7037d38241289e47568485d378e451847fc7ddf388e1f27723e926999cd47329bd94ccb4732bbf176babb10fb384104227c9b4d8824fda71381135240d5478c83e63c479aaa0e84aa8b9ae3c6309a1be5bce662d41feef351f5231ccd333b8eba46815effa7c593aa7fc84c66da10c6cf777628d1f90f57023da25f1d5a3eb282310a311037e9686e14f4a8c7ddf49c14c9e37efa1c3ac4e18c9c8fe9539f327142dfe88964ee1f8e4934994c265348243d27248431f466a68182f0417d88423d0a04fa04018442a15028544705611c6956170a7dd7a10975a8d047e45e0cc38ec3bdc837ba431f92b18d8661c76597d541eda3859c91f3d1c6940e1c0edfe867a39fd103e9f13b4706a1d94cfbf00c74a1501039d46d5447815f496451e48ade6d2253fce944fa1008b41428e58ddf65d7a304a9d2a751a78fa259ddbb1e0f0af55d8706d569d4e3c94ce85d57d2bdfb8d0476e56fa77a0698d5bdb993e8dd87eba8bff3a237338d167ea6b051cd9a01766d11605667661eecd83bbb998b7ccbee467790defd4ebb5da477bf83ccbaefa6e042a75a2602ecd25f6056a7d3a0c9f0f51745d2a05d9b0598d57de8056134b3acfb9cc4c721f510cdeab64635abd337edfad31baea3f8a2efbc9969bb438a7ca798c50ba650b8ad18f5ef2a46972301bff20cb73a2c63a4cb3f1079805f99a6592137bf2c84de3da70ba3e9591bfdcc31f49b655b1bcbb6368f149b1e8c41a038a99afef9cc8af1db1d9fd53954e434874385d39b4e1d77fa6481faaebf6f1c35ee320d85ca6b9ee555bb52a9d5d8bd8d7233f5a5d7648acc6b9ea5deccb3d46727340b5df1919ba36aa4d2fa455289ce87aff51ea25bdd87a4ef68be51188cdc87ac663141b3baf03f6f8621f7e1ff10be66659de794ddcf8b1f7e482dd369911e3af7e2eb54bb8a6899e6b8aea16034374a44a71ad55ff7789c3542861fc5d79d1de1eb0f00c9739ee43dd935b955bb58bdfb14c9ea79a65da5d3697cfc127da9f45d87a6c4b1ba109dae5fa73c8fbbf844741a07e5a269b8d052adeed73e02b7ba3741ef9e05bd7b24f4dabb8d62962ed3682854e745fccc6527f65f184b3f723ab683e03a10ac5ea285281437738dfb820fd177f8994b51d7719169355a6e51d287a6d02944327d68fafe0b9142a490e96432994c2613294422bda9d9cf53e2dec379a00ff7e38f9ce7f378a08fa7a473fe4a9eef07e3477ad2e70e0de9fbef73e8c498e22100cdeabef3db653b64aa47c90317b5f1c3bca918bffdea94672e3b1f721d0fd903c7854d0c391cee38c3721018caf99013770708560f8d18cd8d72b2768d5b46a4773bed9dc9792172073de785d0acae233dee9cdb7b422e9a18823c5d1cf27031e47c0e8d3b9ee78e103920720fd1ac4e0a1ebe2377db8b8d8a21e713ea25348bd5450fef8846a20ef9e387a315634a87f1431f1ab90f3fdc1c3d9aa5e5d821ab73681caf00ab73df8ddfe5dcc771e4e6378ebf398e2bd179ddd141679a66754f440f7d307a6fe6d87ee523bad57da7d9ddea1e8ba7e2d4fde944d3ac0e55a441b33d18bd7f27c65446f310cdea3ee5795c767ebb28a7d11c7345debddc11e3e777bf74ba35fae94ea3f803bfcf7b0e08ed811c7ad73640f4b7c931e08278b2c089f70958c8e20ca814920002140881220d49f8c0c360b00f9c4028c84830d285e6987b1f5a8a197cac182e2c9687bd77ccde3d8ac021d4e27f1ceebde7a068162900cdda3cf60df27f1e2273fcdb9e14a430621afebed349ebb19f38ae39b62c9af5ee0b45a08331ccc1c3f6bb6f1ce72647ed5d0c30ab7b9333f3528e0d7af75eba5f1cd86ec500bb3820c0ac2e3f07049bce7126e8dd77afd65a6b5027d1bd976296db8e9dba7cdbad8e03f3520eace3e0db71b2de3d2803dc5d9a038b62e460bd7b8e90e7c0b04ca877cf098265f437823105bd33392f10e5ed4521c4286191d1fcbe125841b4758c071f9009a2992c2ba2e30f3bf1dd61ff8e6234bfe782e03cee4b7a68634c8366711c4cb358dc57a473efc9b4cbfc629d7b8f08e725d13973bf1f11edc25374eef7cbfd4e4398c52ebc9889f64cbaa6c2687e68e7fe43b5eb7beebf214434ebe34a3a57026e8876615ae74e319ee77d39e371ecde6facc128468c693646efbf6f1cbdaef3baaeebbace93ed175764bfb8c53d57e4c43d61eb2657a473fbfd64e118663bffeeb86eec5a3721e438ee750f7df31cb959bbfb90ebb6e7f14fb3b827743ef677bc8766d1d8bf31379bcd6f17cdda789bcda6e3b60f1e62344bbfcbd74dcd42f184710c575cd1b6565811d2202c1216099328c266ccfffd875fdf46fffe41f38fc4bba38dfb3537967b1c75ce01cd07202ce0434e55edca4596707908c00720f011bd3b343b03c1e90eebf32e375ca89998dc926bf44ce3c68c9e597ace61838c959e55ab37c55ef2f951f6e71a959ef7af487243623026cf6434b7ec27f9514c1f3de9c6fed739568365b20a30cbce44f69368e383b879027d889b638ae7cfe82641917925b31399099c6b9059fb45648e0166ed47d1aebc3faba03324fcfd3926fefe4c648fb8a9c59d75d7491f6e44944c12897cf084b8c7dd5d9ad34f10b9939a79063ddfc0cc4de0233d833903c147f011da484cc10874e01297e6a7da5218f7872f78285ed0695510a14b01a77970400f3cbcacbe6386385b1e1cb0f769f3f8fbb0ebd074bb13804f47d1acdcf13a34992bb179dcd181ec313897d10b9482676ae09657e8f3a36019cfe70f9131bbb51f448e2187e5c2ca7b8b64c6acce7fe7f7a388bff7a7eb0440b374f8776844cec37ee111e4436096fd9e9a63ebb7ef18faf7b3f6bb6cad5f7b28dcfe8efb36558445421a8449602c92f50ddeb00ca9ef07bbd8e819bc127060fb05debc1260176806d00ce08df3c076c38ed4fb0763b6ededc2de8ec49885230d90cb6ddbadfd7b8ad1046f5c4cedfb035dede27e57a1ef0f42eff7d03ca3617de79c73cedda38fa2ea708c01e4ce7133731cc7715cce3973dcc622d986071ccb074574ec75bc862874f3eb58ec702bbf42b9c5fde64d1173de54b970667d6fa2741ccaaf1e44ee394937c707f948d239cd451e7a851c936457e69877d3d5b925be07eeb9bc44e7b0003973ec9adb32cf4ba4f4fcdce7d94a0efa6c36e368f6e681f57d99e33a35bb7350bc074920583d07c171b13c44866e346882f0a3b30eb5ae41b261095e85ec114db07a6763cc9d376bd8f8667c34441b449611655419adba69226305a5ea98732a85549f8ec399cf2ddd9bdf56c12cdda3e496ee378fab18a51861f6644425d3bb6fc52946258c6e6cb2057762889fd03d88a377cfb97af70fd3bbefbaefba1addfcdeb13aeecdaeefef599c7e93a535109cb567c331a984e7f1710cc2c47efdf8b6d934f136468e338e3a34a3667ddfe6f46b3f87438e3c1877cee07b9b8f342b0bd1bfdfa4298e60fec653b8c15742eb5400be0a885dec60dd04abeb386134bf8cb9ffb44b09fd26119a9b8c39b4cb2784b02677ed6d1193aa3108135cf6bc1db9ef2741b8b9c2b81a77e47e0abb0f7387a6471138841db903f7cf0ba329c4eb1eda183bee88f1c4c7278cf8354f791e17a718007e1dde3b9a63cf9a6f1384f9694858bbd65ca641018b11a90ca8948a959606b5638a040200009000931500003014120984c2f1781e05792abb0314000b62a076886aa0ca93180a2a860c21848080000000000004c2200155876a40b575db45ad7e3299ced47707627eef10cd7b537c803ce0fbd8a7aa245128db5c49a15807a0fc9efa6f53061dcaf7af7d3bb54037a5a19daa846b65f246735c8d95d8782a8051556aeb6ed01629a6d05120a916f92e5d3adb1c73bc826229cf48ee3071b5f4ac67880118153f5dcc9b9782c06a62b2508bf62e3c4d42f529f0702a0ab7ebb3346d33ef7f3c109a1fed747b3c96e7ea58955ed037e81599f2aa17f3da45bdf3c4d72d05a9b5485318fb7ee8371cce805493c3ed3b91d42d2461a73dd7ccb6e7e5591668d83aff3d01ae6889f2189cecb7ed2bf425ad3749a932e02475c73f095f06b786888a86e3a6ae3e2e538f700d8389510224ae1920852897232d9a863e10973f41c244beb31c6c35e346c790bc575116a1ab55525dad58e39abc6440f241b021f0b2fa7e4f75c622cb1c63bb6902bd768035aaa767b3c62fa2d4acc3c4cd7b9c0436d17dee0d27ad123aa8de14d7d3a23d00d6fea9a533c3dee9fd30f0a642da73e7a60fbc4fdf6bda05cd7519e8e0b0428ea2b055ebce40cf3e4b626c92d915e119deb97fc36857efbb5d10afa1b915a99e1715caac39e8eddb8792e290fc0f5f144e507a7b6ef946f3bf7137d352be9030af6913829428901c783608384998d01a0d216a68ade51667c836b52cba5e9aa15be7aa353d655638ed7bd1043294b48718ec1dd21f097b9c5425a8fcc86920a7d141b1e7c198e8bbc0b57f6d929f932481cc791558c86efc05100d8d42509c8d905e7d4725f521604d600a5060dc12f7e7d5fb51ac41b4df7de60d5e44934066c65a1e0156935b039d6c11c360b5ccc116e129cd3f39c7085e65ecefee0f4d38d1ff5c249b7df2380c7800772208ef9c8b5ba875d41060df598fff4ea489de29c90b1a396e1489d42761543517ed89b34081ecc44393277b35e70ae89d5f4d76182c57041200df84099191f5c4b4bba0a49fba8fd1a1543fe5e43ac10baf3546f7965549e91f3914c8f45c17bdb51736ef1a774d8f71cd1825f9a86dd83ec351b32bc970ab9a268eb2393a0245329fd8596ef0934ac8b24f453fd28e2cdccba2e9eb57d4d49ecaa496da7ad67f27f0ff0a5fef633ef1ff8da85b91ae25316768eb4231641a53e7e21ed20a54d7a962f1159a3f876fc19671d006b7fe6cbd760c7967d6616574c99226a72e904d5cb5f59ca70f45a968bb65c4d0ad62d12ba82ac0b1118af833d055f5aea143e218183f8311962cf11ac1d6a6ccd2e226411df0ad0e55c82da61c61b193e5718f5e99bac9e462e4909d2c8a9021ea5ec8b7a59307484f28129cd3b394d15e1e162a283b7586a1f106d28e04e9459307cf8a9d53167890a120d50626a9f1f848e742489781f4c230655075c3d8f819c62b20c879c32366c5925a5e01d2fcb2fabb8a3a4caaf0679344ec5080cbe45061d99c70a8e128911c1329e0ce247245cf8dcbe252847c2189219891a984587a205755b0fba06fd2f5e0fd149cb31ce0d0d00fe5adbdcfe3e5caa8fa9b800ce649f0131a9366d50c3ff8e65482b8692b919fe887fe736d029168114fd28863a7c5063f2b321d52a5c6f6d315fdde10143e7dbe40322dec0de3192e1f1ad7944213d2d34254c614ef880c68d0974dba767fb8aa13bb6f722c23c44f1ddbd489da149d94020764b86dfa3f2e30e187b811d7cef75a406c17d0d27b0412b3ed174c583442d66581cfca3818c8bcaeac9e7bf56fcc032a76285c79e2e68f5c547a8cc41af8f97603ae3dbdd3873c0f88d3725cfd5d3153f06427bbccf84ab8e890f471e978a5d8696a74fc1bcd7768d8d8f1f4fca5837b49f499afda859461f84296ad1b7a6fd51b16045889951c503e6d527cd4fa031ecef61dc7e7faef9c35abb8258af46542005dd313c1fcddc664bd11bd95948a140dd450c5e76d1316c6ab7fcda91dfef198806c590f9ec9928c67ce2799b006ac14cab69758ac77c9ba7af731a9e92a77587fb38c52c083c09eeaee552bea8c9cf9ff3886e198d0e031a8bfa21334f2affcada629e381b9c8eb7a59434748ee875d5589e0d75df2fe743982bb0f4be5bdcd9a3ef7b2ca644fc7e91736b1e13159c0511d975fc8303c8cfdb501d6cec8fc7cf6e7abc5bd3eec865ab356e6daeef38d325ed43cb0a17fcda90f081fe497bf18731a3e19922976292c840f9899da184128ecb3c22acb5d4990379add6b163588e5dedd8258abfd7cabad271a0234061612b45d586eee86ba49931abd70f12859f71d606be4c44c4dd382bd014ec9b9955bdeec523234b6ba0feab2b638e988aed6ab9348761f764b68d0034224664151620e9c40ef7d359f96a1ceb694ced916521522a6ebd8e175bcdef46ed869240536d531b856ffbe070af9f98985ad2526e6a93a04b5eb8c3b05dbca55fcb69e06b71b265e6c8eaa22015dcd7706134bed31048b7d9736ec42229ec9834956408530234ad174862bbcc26f9960f1c43fafe0af88681615b579e63aeb5f7a9d6df50f280298280a23fa2c7ec7d2acadb41c2f63933bb2d5b60027ad6b1c81af54188da615b6cec2cf464081176e42ca24de32a083df1f821869db613ad0d63eba05443be160c87039c16bc34a8f53a0daa078da28a35da5186fe6f539a55e9a1c3bde123c5b007d3c5781eac055dc4b1f3718650424ef0c29a612455f67750dc1a2ebc943f3d4e29268a8f256d98c82caf92735335f0adaad048095a216fb8a909fa3899f845a72e161b968fcea2abab1be9a2c9ddbc11cbfc594bbd6ef54ef4b7bdeca5a32158a07a3b356eadc350e5fa131992f1b40cdb5e2eb61b7f7ce0aba9cbb34388020211a8254fa2b0c8ab3dd739fddebbd42e0b10a3153a871f38b0c86b3d899a850bd991906f7817b605a8980fc10785eaeb392ab8bc0c947dcc6d894f4b889b77d88467364287da92ab9f56623a4b6c864c12249940f34373e7b6c91192da2a045c35e71097c855e250a4a4994de358fc09e79a9848e5e98d7b96d244763c4d4181e52a5bc5052212254b11f6dce56c0c8ae3799c6fd6adc59cca0562ae822431276aec055a5e265d2307f15830c849c14dda6c4d986ea0d0129591658e8d3e24feff54f1154dc73c96676657427b1960244fe24545c8982ebd391cbea07b9049c1d29d401240abf4fde713173acceb35a465909acf3ef7ae7c66d05ef15f94c3841be63a9c7577e26b055f21f5c7dcb7ac307f83a1bee224191f4a4264b45bc79268aedca374df7c65ac13ef34cf01fc84852f041239d482ca2e9f69fc99fddb25d2632f283b9f2d644ec976fbc82024df9d750dd0e3d934867279b2590f09915b8155400caba49b9c0c04df853e67c6b17f9040e17de27668edb391ff12e21487e24c9e34a1d40dc887b5ec18cedf777f4d0d57fca5cfe3980c7a40e321c7a8a6f603de90a15eb7bc62fc33c26202833af85915be987f92eee073db752cc44dbf0d1da82058515d93acb9bfa17ad74fc3aae4c5e099a6d67ff4974f9c044229a937e0a3c90fde333fc25eca516e86176bad2903ce1b4e57e8c1e321b2b113cf765ac57438b53fe627b16b4aae7d1c766c79345fa90184f89b4d7f8bc9af1676d9498ba8252496ebb34b2374e376b3f8ceccc450268c6eeebe2b76f0cfa43d787f3e2b1594cf679aa01258faa16be92188493429b8b037f0a650a0849a59af99fde6170d272cfbc7afc9ad3c828608de0123bcea5551a4d64a3b4f394920d1da30463b9dbb60f0219897737e2a0fb6ed6bfa8970f416d4e17d2b0e4975054225aff62947fee2803594e59849df7e20a581ee6cbb8a769f72e55f87eb9f8f8abd1a9701e04c37848f24a827e4baed5293a550bc25963d42c7c46a2979f4e354ac53b91a5e3ae89b4af6ab68c2b7a41aa1673e5a3aabe4960a9fd53f3b686e1424eb7767bb38827551bebcf44bf4189c7ce723d1fbe8ad5fabfe1e9818aa7ff639e4b20b0fc43d7bb5bcdd456db860b46e449e41325f13c424ecefc7dad11709941c8ff4bc40fe69959350ef42b8b0dd4f59148fe3b5f6fa013fc8d3b8e5133b23c3e247f34b3ed8e68e22824eaa42e8f3661f3772c3c586c7b339139a44915e3531b524a1b8e11a0a4473bfc0157cf40062dc78b8f7d82d7146b3930b4039960719cd369a517c43990f8c58b45d21462c5ccdad92ee0359609876f2657de8854bee7cff8a4220983ccdd0ca9b70b3f6382eefac1e805ca1424d8c45d2231453ab53dc1a51eaaf4f00c833c87857530a7c374ebb4aed9823f212dcae4c0cd597968c08bdfbfae40ea5052f79e9f9e2c268bfe58c0c58172bbcab99b082f3225d76b2edc76c760dec8cd7eddac95e688326a39e30d6c74aae17c02dcf8ae295bd3a48c38dad945651b59d4aaa2e54be9bab8aa88deab1af036f6a72878ba65082460bc8ff6a339a8c58bbf0a2ba6d6d475893bc433db228910239b016f009b4810a69a878568a945a70f62d8a93c44d3a105ca7c53195d04abcec6c907884c3622dc82d210ade58fbcefe952d34a75e4d5420a349c09d3d2fcd9441973716c631954a4f53ace00b2669cbad3f3cb548c505d00e79808d6608ab43caa50679001aed97e402c0357871718d16016de630cd52454d6237ddff6392fc3993a87534b326d9e0c424aa11af1864d57bbc6bf2323bda9a76a98c87cf917f636ed982a99e368ea0a613f25feeedd60dd531ee56980d1606d0ba11c49f194eb183303d9fe40d070e2e93f0004771a03dfededfdf613f12921bb7e91433ad54c947813af0a7d51335506054ca9363cf1d1798448a8e234d799f53605d15128a392b8ad5cce8b0ce49de1d8f69191ce100f8f9257e2220d9d1e30a1f66ade3fd7c5c5988707f18eb115c961d8b090d0480b50d157cee71b2e413391500a3d961147cb184084614c41079f2f6c021d967c01f96c8dd2c955dd74ece36152ac7a81d8f5a9723f124052026f34d6123881279b7947a255d5bfdd3c806ca33d0ee9e97e21ff0eef5dc7f9eb1d08d53351478d40fde5acd70a597b9421bddfb47e6efd7459b29f645b1d884816e48b02edc450ecd832c6e8884d10a527c4b30bb8747d190a2b499827e7260443564217fbde47f513e7b82d98b1160a8eb6bf391f578e7bdccfde555791bb377fbf2cded105d7d19ec2d87c37eaa6658e9d8baae4184d97ab4bb21723072ad6cd64b97b3997c126eb5fa768b5494dcb5a8a3a3b47795f9fcecc438785739659bcd016374cc6d59d59d38ab14e463588e500f4a2447e70b12124f557dd496bf6c4bd3876427977691631791faec1f55ae17bac35113d5eb8b8fe315857e99c287d50544b236ccf69c9ef4672861d351b9c09db70dab4803242cc5f0e9f4dfd4235ecc755149f954b70cb621665f9eda78ff2c3046bfe90120f5d19c5bde67a5a4a7c3bf3542a18566f040ac3bba5b157e5644574d1b878e504b43497d26c1fd470f31d6bcc44c8d3d00ff5f17fdbbb1d6fcfb5255bfbfaf5f953ac0dc5cad9240771a85797f3b6fef79a1827d33f451e1766b96b3164a8bfc273220f992f5accedcfb561f6e1b1c15bc351ef6fac48ff0b564dae571fcf4323d3ce95743e950edbe63ea95a8e6ab66eed2b9463985b4029440c2d76b2accc903a480a0a895847a3f1abb99ec0a96bc1fa55347f1e8e18318736dbfd437e5188d99b3bec9283ef489c9368a9d4f7c4b3702dc8c80c36ddb7bc7453ef29a756b3af7cc4ac7b281206609547f8ec492adc1420fc5e8a47173249e3668ac13f0e942706197c8c6906872764e306a5443cc95843861d658dd38bce9866407b87255e1ae1dfb21caacc33ef7725e9b8ceba90ca16183605abbcad4ef9fcadee892d29519f78f1c98201b278e039e558d2e96abb2f4635e2a0de2b4dd30f3179565b5f0d2953b4bb1c76d709727342da4870d0c04adde74d10a16bf83ff137d31bd3e10f09f6e78eab9d9f70570dbbde564c29b1c0bd419d165b927c651a60a65c8c2db55a753a3e0ac97e07ccc7bfdb28c8d815e74e318ef2600268c320bcc208ca61232856142ca452e4f8a692ce8a8c96ab1572b656c90cced9cd84ee0c1884686053196624c332260e597ddc5699c6beb737f72871a7db260ffa8228eff81d87f80774bb24c803e66bdd14bedea5d634032da39feba5e55874c604ab6727a70b4e5edef0bad0617b612b72b32a6f6f032a451d52c2b247201ef3c6665917fee4e0a269de5ee6aa2067cb4b14395b80980da2e1d52dec18ac6a1824b38c01231d69d95238eaa86a68163ef43e654d3b122b865400287abf250d65534ab025df1889ea9a13aad50e8908bf4b400920f13a43c6b21e45ffe797b95efdcf07124b9b41834abb72e39182381bdea67c7057225cd73175b37059968586743580c797a5473909dcef06a7d5c246757d553907f35b2cb5fc35ba53072c728b7550efacbca57aa9e51e81128731e326ec68d5e8b16538af43059873fab6b9aba316b07465302d84d294f57928a0346c2b5364b35f8aae13ab4976b6025baffc1129b08518cf64fd2099fa3ce1468b064c81993302277cf247e6bd8887a7b7358d3bd6d522c6430287f8bba6c8b5972454b50b35359cf2f794ce61ebf23bb527688bc7a90e549c8ad83acd69a3471c2904612834b6bce304e8dd43a757195b202c25bf6a33c7682a84b3ca8608cba286ed94d0d43519c56749680f330556f0b736c9988414099f15ff40349e9a5a411c92221e0ab406ef3961d4a315889b81e0088512bb989cc248d1f90e32faf92cab388a568549d0462e9f5784acfbb242cee84d026a2b13ae88308ec1e5cabca03043c80c78828c7807e959170bf2fbed58346a934e8d3355e6afad358adef0f967717f8477c732895a51de7032e0c613dec6e4bba3924d863c1ce92c811ddd5be3e94fabddc7412a5d9d959d6262dc0b06e7b37adf858830a5500e06f8e65570e2bd4ea357401e2327828bf98dce404fdb0a6ec13ceebcdea6060661de64381747075a4f8f2e736fa62698e32a00403edc5707039983707cc2e192a23c3f1d95a53fa863465a700043422ab3dd8bc857e75ba252fc89d4e42338ab334bdad4fe124deb7e6b8124e3f39bacd1b6c662e3d8b67f6169846b3e1294eabf34f362480572b76a7a46e9bf1852f28264de4967381521e27b153dbe785ec7e7f66b8027a179e079cfab198760002386497c2329159ab9133c0c1fc4c94d51880a5749a2b468d69e4d9aad13e3d4ed5bbc190acaf50813678be57e85de55dcf7780e6a7fa5335b4f6e5464b4c34db42d4d1e762e250f95d0b136f3f9ad1ba5ff76e256f8098cff4540f215a5280850837445ea54b44e4c5bb04817d0704dfc3dde7c7642fc1659b010800172420f40a9e1d0ca7f2eaca23ab41a2fc46a567e6af0fc4fa4a9629196f271bce2fcf3111752b87b70c534421054d9f65b02575f8a519a13052d0745cb0f939c6f3d3f413ce5c549357300e9538ab6685986c6c8d91f7969c2754280111d61730a3770c12d4b5ab1801f425191ba3370d8efbe1ce4f533c1a0ddba17adcbe3534e9d5a5085a4a25e75ac978ef4a8a457951ca542125010045cba19a8acd7993190e734b793d302af2ce7361ca5f43d0f37a8be73dcbef8ab5d97a00056bbfb34168bcc0ec5541dd7be2b36f3813b1ec1b589050b5c080e80058d35bd35ce6cbaee89c5214c8a7ee725715a3771852c4693b9926e93a6901b748520f156e8c4c43f6f65893504f228061e00085afe330f3d8ca245c651e4765b3db2ce31213ecba97e78a54d1edbcd5b5d699787592a260976dddc164331232d08edf9aa9999e11a6a669630a7dd5c011ebb130514f8046c3ad79740a829a49055f2d4f0b4e3c6761d8e5196305aecb25f9a6808cad8bf6a155c8d88a47f101f1fe81f80d2a2480deeabae34aeb25450ca056d2fba299997b32cdd094591f4ad014090182208c51a72f64c34a1082fd338687d7d8009fac52e0ba601b025f360338d857972c4246707045f4eb1d969f05379128eaf17fb3f042904f00401cf5dc6803e1d25d02129e437ff195fda6b40bf85fb6bc606f998ea1750eec402ee3e5d4e01dc9ccf3f9d65a0e3724a588ed25ce348ee204b2fe9aa512f462285eb296ee7fe7ad41fbe148b9805de4d39bd3c69eda5462d70d5ed51de73c6e9fe996d7d22c08c4ab0a5a7f51924b3af3fdd072627b19f3953920055da45571d648058fec87453275e9459f465a586364bf98e5ee0e69d527cb867767a5fedf4f2e348afcde0945454cf583471061fd50cb150e10ae1d0fd5459c8580c47c822245cb6e53714eac0cd883ea876f56a43dcc1ad9f01d7a37e6690b0a47073497dc80a10e979aef671f86d39771f16284ebb73da049dbcfa20704e9f55c5cf91004d86dfcf5834d10e8e39ef6bcae0a2ea5c78097c2fcca163e5e06c1647243a191131f7394d1a277c3a8f83686e11a254dbb4915f863dc567aa622f6e90af061cfce68b9c4df4848bdf72cca11f9366ec477b4870a0811002886e0e4f3a39f6fd0a8d12b0369b9b3cdd1d6b8c711243a426133a156f3619de368e197145ebb5c52a7e3434160f92a7aa489128a15f8eba703fb620b7421606ab5f2c3380ff09acc579c43113a9a0d2109861ecd7c7eb0b86fdd5f1d508bda9689e6b50286bf4be35e9945f598982a31bf69fd0a26a0488f981941e3ea2b83ee8f9dc6ab99da65c8f4089787271aee1a45d15f7234fe4580739944ac0bfbcb8c02d97e4bc426401cee18747e3c4282e2a4c2f28c06320a7e37a79e7ae0f7485455e39fd618ddbe8c5bda7743c98765694ab622763ec28f9d8130bf21ec2cbcff130cdc70e87b2efd8e05f35166c76491e5a697acaa91b81d7c427afac5c53462369f9855c1da521e24e9d0a5244af65c8035ebea680b233d4252a24eb0ba7f4182b15fee968fddd4e6c1949dbf70091f635f6735c332d80173b4bd3e4d4bc8e4f4eadc52188b2b7c81277fd548f41088d8359e0750591f97628d0c01163a349a81fcc01539cc4afd48a1b5107105a54386eb097a6d4f7ea540d4b9788c8e8af3fed01a73063da5e06498fdc5f04d14344b6775d917185c7e19e4f02605f5072609ba958a39bc2e34010e84d43e4791034d234227ac0fb175b8816e2b504fd0e57657630284658076caf504a5daa13679402fa850ce80a76c2ec01aaf136f71edf5142751c542d6c44f6f34fcc42e814559fa00bee04b4b6e8a0ccb6c2c8e31c3aeacd997d6c7faf679b6ed4fad94bf6b2adfe05dce60622261d7f2362713943a482329e0257c396f1b881c238bfcc5050db58879f801f2f6bc0aedf4bf315f6c4841be7c448154bc0fa9b4e811ede9a40a2b1fc407c3a5f84ec990c0db407a4db9f6e363a1cb2ae700d0c7f773a6185a2866277850dc82d33734ea9645a57d86e2908ced9a4a92b1cf33d929f233a6c90117451aa498ebe79f7a2c16c7ef7cc2daad6d20abfde44b2a13ea4c628321056d3922c31f33ffb311a331471861daf9e884f0c5a1024daa975b50f2f564f75b7af39193b3760e5f112f5d59dcf45b1f7dd45317724287e8b45ea9c949c5e6c26d1e1c257d03e62954c9da4240362220f1fac68fe9e38177d2bffa54566faff09885931f19e47ae0d964b1f3f1610f9a7e3b2318e9ff2cf9aa499d8a3b8b360adddf69b587d9351f73a8f9d9338d5d91c001ec6d86481bb0144b4b912e6f8e93bbecf0e572c91efb0366053b49e150e3d126964bab6b363c4c3e75c4e3b50f0d9424a444b809ca193c81f732f9def3ecd39c37af80cd03f0c1073fce43d2ed4a52e4366122804809a2eaf26243f7fb0a613d4e5b1247f0d252d5c8449807515a731600f6c80b21feae2fda29afa091c7da0fe448c7c31f711a16f0a88e9a6c67bd246c6454b5033a13653cebfb8558ca02d47077a654b74f140b3786b811a477ff684341e102398b7e52ebe0109bc5d0699bb4654e3728bc35250e396eedeccf2632c144cd0e4ef69221f2ba5c2aea8715b97c38c8dd15f8e7b148702db4a6dbdd6767745b4698cf3f876c6bcbcdc34bbbedd62142748482e9ef4f8282cd702dbef3c843daa50064e72d814d034b09b688376bbbdd69f3a1a15d0028a9af2cfe82999998690105d7fa9523616e8219127b7b6e808938be30d3500cf5057861a01bbe2fa581c99e8ed46186888a89cc733cd7daaa893b299fb95968815e5dedb373e8226ea3386e99b21fbf2042b7adb261d54bc0ea6efdb20a3350e1a6a264de2500f0bdf2e7ab0e22144f25af62f7fb93d4d082575a16a8dc181bc516c082370ca701e950342c70cb3c1ff303ed18a9984a1630932acb5ecd9ef0c7b08ad941c9a1867da214a33c2b064bfd51945039071e6a171464689f9083d83632ee54f660223bb74797475862da5085fa3fd27de3c0156875119f3765fb66a78183e124af4cc6422c388dcc51317e5a39208f3d15dd6c07e69a7b4497c85e5506a5710c33900f2974d05d07ddd6e20d8fcc7115bb3f5037ddaab2766838403dc5e643d259e03ccaf1bbe82acd374d5b7e3bd1605b2e3e69aa30fb1d66e0fa7952f29210648f6862c00194a122f5983e6a01629bd069d005df3fdce2050029eb2f20fe2b695abf23fd7bbf102333d17c029dceafd7a17001600f33c5007a3d32c9ea643a50378f19a2616ce502f907a52d0a7cc24cc525a911faee513d89d1e68885c11a04a5ca62baecfa71d61927e241be67486cfbd27696646a5c686eca4c2d38624d4089814e5b94479d4e79d65258c627d5230db10539d6c42af408c53674e7653cbfd0790c74818c53f6799dd8421dfe839754b40f15f48bd4505e42f613d11c5efa04e7384bf2edb16d0407dde3233123502bec7f110f9b13ec0e2c43770ccbaa28fa9d7cee50f691ba2f9df3abd00a730a419dbb376f7928835629ec5bdbaf1c11476ef9b371d801fab74dd49d297a523c8724a9cc71a3e2220208838f3a1af43bdd2805e25eebd58d4b91ad0c5bd09459e701e239202b680da3cd7aa030545ab10c91700e259ac89be81e47c596c0f5642df64bf671782708ae9cb57e58691869976234e5e30b630a6280914d44c612c76e2e7e4b06dcb7e3ba88d1fc368b24ef99d4ff7c43d995184c60581e475275d9bdb8033a29dc688eae204bb208b573883458c6811b58e69a99bff0225d00934d97b50048e1067b3499860f28ce6729e9404ba434d671d1e57161444309241edadbea36b59f082f79d91b0aa28ea21da9f81f46c32693a23610c5960291c068b6fb6a634083527911949df14f055ba4fd00bdf0162f7d15810c2ffed58c4fcbf4ac57906f498b07e393406df08087e06503f34f80c1dc055690f33bda96e78f3328176458ef78579ef6b0835b64c56c2025a5055717f18131daaea567bc9699304b27699767809d144faa772dc7fa5429e248885f0149324b61ddeadc10153cad05bc4fb257947d219347897adcc7681741615ff55d0707c76a7db0208b451154dd25d8ac72b134da050f09d004050460a80f1dae1f5f70d2907355591027085bfd7ab3f37c3a3a7ada94c37e3297aefddf29f623db5ccb9d4663e539aa1c0b65c91a047f8f3b1938ed4186d2a4ee87ab1b68ce81988d8e9112ca589de38fb381da56b881fdce46b5293586f90e357ce3b2b5b6ccc2d7acf7a5dcdffc55d67ca9fef12d539414aa1ddf5a6fb3a779b537eb9464cf63615e03a039409c30ae85af2ed51e8e2123ca261d5b48d7954c40c5659fbe3e87c48bb4580c16fc4e0b7ec4926e477bf2620d187378fde5f869086e289db9ea2584770df680af6e2acb21fe70c8ee8313e13a49b0c3be7f6efac48e657e51b4282cf26348c84da6513729cef14172d2923ecbe129236886a7d8ad2f9f657772050e93f9ab0f0c414450e0f7cc5f37983c5aae8b73db48698c1cde91c6ea7f059b0d2d8875bf6d7b344864ad82d2b5bbbe3ef5f8d6824b7672c6e836c9e6c1920a9f23110f3969b3442e727fb7cf1a825845f95f324f313db6ed7478142ae03e76d118d8129dcb53dae7666d0ea79b48166a4017aee2feb78f3839c1eabdc38f33db1a28247515d1fcdfcfa420d22d62435f623a03e446368a056bfe9a794f55858b15ab2f27bd4c5c190c1c2c7519d1f14eafbf4a45893930d0854b42d437bda88fc70b945ab7a9ad47a3052bc1cd5477e531f89e2c601a7e622e3b28c6923eeee93d0689767030acd6141cc6c19316882aad1a451523ee0d197ff906a4f324b4683aa02c5d0d7eb6e3364098629e694c9f236945cfa384135f6eca777aeb65bcb798b2f78b534fa7a577f1d0a9d0aebaddf15637869d3da54daed2ea45d9ecb60bf0f20cd0d5a670a1b7ccea6a39d62e628bc0e579499ca827bc474849ce00532d8ce087e56aaddfc1f22a8839a6522634e0c27b3ac73289182c10204389f0ac46d2d2a5c1a202edd50a5063ca2a790c39df349d446297286190e47d47412211cdc5c761aa5672170fc9af1b74562878f834eab6c22c2fd870082b7e0d8898d670fc416704fa7dbb33f9f90c9a33c644484cb86f0ee194f0de1c4ac74e433b788486021c0178c9e7e4c2b7d15507625a92c66aafa7488c1f9356ee959eb08f54d28bea34d89ad78b12a132947a16914ba8a690d74d6d54188206256308820e50ba5f7e8dd0368d83a11d1b1f80d7d026353fdd9034a29794804a046988452276b7ba76deaba3df78dd8d796800fce47af81dc11b142ca42ef9541f4086079e2e0ca787a836755775924f290338ce2eaf88c0340e89a7eaed46d78088bda27cf4160c97ee9b2c7cc5d876d7077741418300f9b6db957571c49a900d169613c9a7825ae3f7eff21b5c428f7d54fea3ae4e4beb4ec9bd2a8ff10340e57bca556a31cb48740b24b7066f5dd2930a6d660ce7cea1713a8b935c41dbdf83ba0ee829f353a0aa5efcdab3a42ea775c3b4fcaae8934534d0d54642773f0f17e68af7cfbddca5c92dd0c5c4714c450f9f3345e11390472115d06aa75bc37b2dc1a1ef040b7cbebc1247299a01fd057774a9495212d80d272a176a45d9cb0db63506b88a1810113d4e6e3e5c50f80d54df32a2ee8529b807e1300c47b87c37cd917e9f9990f037ed1fc3eeba8211fc724a36491fc7b3434be913296fc917fe2d5cc9f950e9b3a74cf862d91600ace298f3e3d2623a36eb649a228d5cc25eade614311a73499effa4b579e84cb0bee3904b4351438b085fa4f2c183ceb9a26421fb422cc371276355e0362da5a11d41a276d8db51fe844733eb2f515a75bb84a542e00589c142dabe9820edabaf09383b52ee2178b4dad7789dc4762827fcc6b53fbae15ea09ab18999b865bb4482be7cf3f07c8f6a091b68dc05de6861245ec6a31d82c2ce0fcc61061ee28293afa87c0359d71989f332d6081f6077066b7c2533020e5371a1787a20c48a37043e7b56b87c86fc83c513758b463d605e49ee50d4deed8747793095c802b107a7d71cee0cb0cad65931a8c987e730d802c314acdc90f68ce7174343649f83ef6767e44c2bc82c5b2611fdda657bd6def599ea760307eb484177b4db2655038031745b6fa7cb9ac171ad0a7230e43b49593effe6c8b928f332180b4ae96c6a870a71cce8603d6ae35faf48c468444c1973a168fcabd06ab14804f9b572cbc9e881282e3dddfa18f58c0c13ef5587875343974331f1e1e3c35d0155b4f209883bc194307c8e068cba801646cb3433b2d1cb4ca8d6ec3fce011e11dbfc45017ca976462b46fa7af63a1343fbaefa4414d45c6d9f74ca9b9ae01620be855fa50274256ed23847dd1793d2d375dcc83adb7a65f4b580d141fee12342475c545f12a2fa073f858fe02cf8a74e6aa543ec46201ca0ad3286d815252e0fde6ae9b98e752f0dc477637bae092f263a64189623ce1b31e4ac7b55f9ee64ba984285ea51df1c39ec03f79b42d9ac62c8b9d2a2b9a57bcc7857896388d191701945e17347818356f66f0411accdc670d5945437979a7d11e0ba104c28d4f4de27cfba61512e001c2b5aaf29811244572802f9eb033426e2271260e62fb222988efab1a0265a6b9d4823d422a2cf5066689c82f1f7a973a50c3413f52b4af55bf254955d14a71399f1efb2facccb04b81622633a671c5c2c3c69fc64d595515be85f0ab60793ea43fec06f9cafd85895891a27cab6403b1c2bc3bf81b15cc0f32829d78de3d49c911db61227d2736613f3876fe81f8d54943015e26f079461d637c9ffc7f28d43feef5ea7d3e19bdd9d7c34baa282848dddb2bfb86bb151bc8192f56f7ff82366c497781c833b411f3139ed9b348aaa20c44017a971b8a4f836b4cd847195406ed73682f63cac381329ece16a3e1a51c4b167045041bcd35a52f93b5dad4d75193ca01f64638869035e65ade695d0d44d927f9f6d51fbcf01834dc769c3e1f0ea482b24bdc8dc3302ff9601c2dc52568fd71f67665ddb73e0d73fac501e6bac287c73d20280305d46acca002c693abe2b8dc4e0385c3ab39c0142d0ddb39f068e633af86133cdd2104233c050954deb9e101416e3c8e9b9f940f2ce5409fe675aa9a11cb6bba3a771e8f6fb18ffee658ba26db77d3a1752862d018a4f83f7b6065f47e0ce744ee8b1542070f7c2d837af17b309be128080bc0acd153aa5dea3cd91989a4f086bd75503f2a46cfbce3099a5b1bd31cc06b0035a0cb74c681062bf7a097fb3d95bd2a1f55db93a21e551c49ed6c3467d87fbc31098411c2dbe0219dc08e91f84b653787183f77c538ddffa76173b24129ea7ada9c22c48a3541ea9b932bf0cbe11c42d9fc0cfa40e1a8d83dad2237c265b2a5334a6f1fe85c87b69070ebd4b53e946cd18205f7bd031579c96074b49ae682f4a807ff464beea029b0e4dac1311dcaedfe121b0e90e2b3c74589a1211efbd9beae7b9334025bda54ae65b2eb41eb010757c2b95f6f31efc4e7f8c1575e5a884f3e4fbbe47383cb548496c14c4d23c2398983f2fcc43668172cb38c5593fa058cbfde144589da4a935fe8a7e56a3b7e9ae52c7db30627e71bad27b10de1659110772748751fe7667e246c06877abfce1c127f8f22d8af01ebf19e91b952eea493312e7300fbcd9e190656a609f3f068f284743519d02f62d2559784732106ef0db3161f81ad823cb2c24c99d41c377917411c8dde6e2a57a602e488010d6274579e91a4c5eef1539284cfa3574ae3e9331e39e896c00edde682b1a2810e1be3f0850ee91656e6723bfcb3e6f1d1f174f656a551090e40006e30a2d3536991ba3f0b809d11c868ef70d1390faf37dd3dc378b2dc701e29492f6247b2fd2444f15eddc783f18f5192512b66a2d62e4e27cec113d1847ad545e593b8cce4f225f49d2094f1c6d9b55b72f72de8e1c150213f27dc617adabe1b9141b55a9e3afac66a141130485dd97b137b68c8b34319abcb327d7304fa00b234b469e901b536ec0b451c20bd0194681b991d479a6ac11759b2eaa38bdaebcd74e1425e6940bbb6c58831a0a497996839202e9d71d644e6257f75433f225ec148a848fea3178c84ac5d5e1df2a6633ea0de0f424502e2eda9ba471902b21c7ad965b08a42723ce8b375ab26792cd485b1dc248042cdcc6f74569e703763533eb8ca6751af8d685f8232ee6154ae33d3537d8dce7fe223ff4a20d8f3e763fbd481b89e085a6fa3e7d13c2c597c8e2c2e108ea8b69a2f7d3c6c219f241084debaadeb8350ec4df64a1782ba5ea5c73d1e8d96ed1c4a21abf268e4d4cf65900c73638c045afe14de2222a8ee86cb1182c4e67347bebbf4eadf5efe3ec7cff3f32968db57a09d2a0a33ea2aefbe8e20f0581ef098dd2356ee593061c17f14cf7eae1590866a1995c27a3e4afb27bb7fc5cd147e0f5ef78fdaf8053548938f4ca31bdf60fb754e60f213f94219779e97e26933d80cca3bd5d9117b66ebdec9fa9bd8f04344cff52fde52280c87326587c38d181847a8340a200a37a32710db9d93b6360092ed74f2fdb9ac90e86c40e4dcb84e37e141c65cbf9afb192a9694987032116ee364dc55a9c62ebac26fe8ad551b911e667c6cc2ed5fed45989ca929c19a72853fab93bf9b76df6fbd347e22729d4c7551bb10deb40bab13335ff655c13a14204095808c33b9a7e894e79deb484686f40d44d69dc8605f4a7e89d4abb2cbfc64a6785075c1f09b1090e930b1f537ca030a442d32fa6611f06a7ffd06e85da1dc89309aa3f0b9ee7e17858591695500d00c0ddbaf47ec44c8dedeafeae05a7092a65cc143cd75099b19b06939ecf5c3b6e56101aeabee00fd1955c475f5e7ed509f1a9c725c2f694b9fbe3085c2116c81393fb8077d7db841f76992d6442414b7d8903966da89e4866d03b5440622a4a596a700330e2592a37da34852a0a4978050be836ec3886e0c40b6f0088c45fcf08f4a4adbc45619e8091731851652f820282689d5af87c5c8043b6ba35f783772646b7253ec61813c506f35ae2cbefe22f302291e5871de7c846b9f3085b60fdf734d5768150cd434deab7459ac172805e696a136aa3d277c11846409b6cd5dcb8a4bd2a461130f7e80e2220f0ecc3f7078b00edc18752b455a9425dbdabbea8d30c656926db39d8dcfa19fda82d147eb3947f43aac8427b4513f280faa0fb897de8680f3c0b2afed89e386133f8d0fed970ec78c49fb39a8154c347a71fec7d3f58d9b3d3feb7d3ea7fb3e2d498fda1697781f54c3ed25e6b5f9c5f29e526efee67e43d5fe1f8f63ba8d2b5ed933c7f4a09b3d81400cd6f071cbc64452dd62ed092a2dcdfb027c7e81f927c5f09fa707c1a8c22961dbee2db3a4b39e41c5a6fe65f98e2e3cd28829eafe1f89b667dcfcf95eef694caef98a6f3a738c5e7093a7b70f7fbca8d3181a3208703cbd3ee3c58314fdaf11335ed7f1d91f3a59d03977ca9bc7c99fdbf9bd4fa7696460944c472e3afc78c1aac415e2ebecec4b7514cf82474433cff12e5529c4a7732f85dcbd3ccdad7f2a8fe8de6acffcbb108f809a9db81619f968a9a01e910ec594a0bf8c7aa8cb29c7e16a1d59bbef6452745499cd4f85f10a5613cd8c82c5d31d37e6dca0dd3fd20f1d49d11f54c6a99fe1077c17ba052773a7c0043d66c929294a81088355c27132b974b98fdacba10c2677e0bc5b073fd10a79518612055a43d1a36b18787d11aa94c6de015fc381223f0d288473c44b40d1b6660e051aa09986d06505e0f6f45dd9a38fbc1e9063ef572563dd154f1a3731435bf8ede4ddc53ba176131069c35629442cead45f1049c7fb5a2f3867f0a67a0293e11d2fd2083a8c0007439c8020db582194fb54755a348695f84e5be7f88c936f93cb39b6693b51c8d5f9dcec3542e13b4504b956363c7a8d7834425c9501e7f563260a78bcb9ec60955d6267f429df58f9860a5c0a697cdff03868fc4e27ec67470729545fd0a9663fc8a9c0324d6cd85e60da9dd15a6273bd5412e7508139524b140d963558274cf2ab894ebf17a24bd692138f640a95b7aef99e4889c70e4f67735b2208d32abf1938032b7868ffad82070fa49c38de74fa0c49225bc06cb813f9902645bb3744aa6e2324157f3f89a183da375e970dd7cc475d7cd5730b7c960b2e006665278691d4ad3b28cd43b1fabd890e1bc14f24eff4c1ae66753081b048d53bdfeea12d6ea33f5850741e89f52acd0e6fe549f3a3fdcc29883efa7ff526a6e0e95c800403443d062a188d15d97d661243227e33542d8d61bb44c3773ee9e063fa5cb1c3a31528d9b7171d3889cbd88b33b701e8ce137087d2aa00ca282c6bd82584c0a598a122eba449bc644c411145eb3cf350cfb1303c0a63661843b1b74afc6c46c2da9ff1719275383f2981d1950bfac942e858c56d1889e6a1e60703108f64eba4b75f9399222c92d87e6b753e69f3c5b5c1c2a472355180ccc376dda2edae302c4672f75c5d638de957c43656c98ca77edcd29e679244cb836de3285ec336b83eb0bad63fe8a63cec09c938c1b7e18fe4e17e473a947516936b955b0f44e612a6bcff0799b31fe583c6946f598b2d32c960bf4e6465c3ca9b4316791803b2df4c889959d6b655730c6df95e27f1ae0317e01b6b08f9a30f7b226b629f7ae71a13f0d92f28e7cddbb03e961cdb7602d2408185bc0aa3269ea754e6923fdebd30d543279c51a6d279ba9c1ff70ba982ce385405a288a8f6af0a969518103b2c7650ba3ed822c01d60cf38ae995164fb85c26ebd6722c1154f4dca803972936963746cd30426069acce10596f46877f71f6878f202a6b28dea9f61eab024d74335e62aa94b67c745ff8fee3a271c0ad756aade2fab3dae324b90dc861f5bfbe24bd43be5ad926098b3a88af5effa8815f622ba4458a5adf9b9cacc26734009fe33b91b6e6cddb7e90930cf5d459f6a00e40b8e55c752ba0a63e094dc952ee76475635d75a232c86b7e69ddf78240c2605511dd39117547d56b152407c935274dd2428d9de0a5ddd4252c7f921193298297b45915400d22e555712d931069038efab9ff60b248f3dea4ad2ea60894bcdd7224ce3df2a62f091ad97fbd824ace4e49935d49cbd734511eda3964e1ecad4b07ef3fecaff1c29df40c3bd39561237c2fc938aad94ac4be4bb0f1f1f4e180e180015f3720393809119e9936c41ea146e212d86e4c1a28d83d062426a460887dd1e546856e6bfb77f1ec84b2b76a54e3022ec51185e4b0c0a4d4e472d3f70e390548117cb56ca6bf7e16d1b397d50fdff7ead8775974497d2f3b987459844cfd7635d04d792f3fe00581414c121c83ff57b25b676de9ca295b6043214ca193710ff1e3b27bd0b7ee7f6787bc10854eeabdf0917803f3b830ae5883830d0d0008ab787bed780c25d3da9381c81097576631d7fcdbac2073e11d055278636b5723f8a8e1fbbaff3731d50bd11b328bd1e9855688bdabceabac59fce7f31016facdf19bc72b3e015a08949091b8470195d3e1a3f2668bb095ff798f0330b5b885d9215fe67e906b6fbb0adbd23f755b6a5f3d4645a5336ebd748eb4a5ec7b20109887afc80d921c6f6c299aa9d1273fdc2bce55f28ae3c5a8dc96eccc6eef8bba603dddd037778c8e06115b0afec43aa3660ef0348677e97a06f2318797ffe04a887bbca37f9ec57b8b8964c68b17b2b806de861707bb829c7e3f6795b1d34aa99611d023863f3709a44e297efbd0af6bc00df0e1b5d1c507487c4f88eb991bf0aab1758f3039eb97081e21c51c6b6aa02f0ec055c9168bdf53ca7fc54bf178f002280c8a086cd5693781009b7fc9a507a396bf5b5535ff8c85d66c9ea5867d259b10566d70c14ba213bc02d304ea8cfa8d748dac6e3bc23309460172498316bc0d562a40a4583b39aa2d917cdfe137fea2ac10e0dcda98605f79e3bca0c6b762cc237d1130165d51ed81c301ae6945ada4e434d940b20254c2d88710077816af9daec8f263c8016974ffdf75ae390a4ece9cab9299e0ec00a0abb4c5ec9b28579761de066821fc3e0a2258e6950b515b01d3b6cb6c044c7a4f0b554fa81c8bb177cff92987e5aa0b4a03634059884f9ca8c0dc163bfdc2cd8ff6c13cce38c44744bc9def2b07429990127fd55495d92c41a6e300999cdc9184f98adc1a1a735355b89dbb19dac8a1de59993fdf9740b0e8c6f77d53c0e7b733d180f5125ed80d4533b8af936b71d6a4f44c8983376a528faadef8e13af4f458604320fc4991791b563f1f32c46199142b7ea197671cc4977511dd7caf9bd0517f7c1156eb9586c66051b218aae8f4af29f328d48c59f354bb6b28ecacd530c38b7290e54fe146c22ffb171e40c98462a1403a992969d1380e5e9b185127107201a6f429be7210feb9ce2dec534d08be07a1805d517a33eb9f0f61ec50047b04b762965e68008ad216975b9b51b5be2a2af8ff9897223019b0df3296dec2506bfe8139b1bb0dc358338f86346e958273cab2e9f3f4c43d85d077977918f82e588e14be72c811d22528db2802361eaac4633751bdb7217dc92ae4189c2b9c4f800b2a779ce451262bc6a41c9c1bdb1eccc5f14a917eadbcaca7a0592624f69decb8b0906f2a27e8a9526e1f980ccb62e1543cfe9585a072db13ed2c0bbd5e2eaa9fcfb314047a6808e921523a3f110ba284605168ca470aeff0e41a437130f2d098398e365dd0d5dfd02b5e71f9de8448bd0156642cb748828f5817ff88fe3420697e46a646f4bd7918fa674ac1497ec4d77babbc5b354b3d69e240883405a0928d14fdb279fdafe8f5ea1507824a168885362c9ed5d1b074148493076861bfc443f78949fb531bb08971258ea95962261d23c5c273b49f84b61faaa365fd6201a4bfd62c1e0a1a60c9c90cab612bb50f8d525e9e5afcad67f140609da25bf10a047a5b1bfcf89e4ad69ddf5af67a168aa8476ff42b199fa0209925ae66fc602d7b3d026d6dc96b3475928881c543cd72d9b7a7aeb84eb216e704898b65286dba0912bedded57dd75b807844c7463fce5ef49cdca85f53c60b11465a26d81589c7f44e903b9e2fab0d3c472f8c1637ff9a90e32cc25663be0b7e38dba18314689598e581ad103fb1a876eb60cd5af433066aacf1ce0904abc00adb94b7fa44c9e4893262b04168b7d6279ee3e80c9966a1369bb18caf5d14050a93ec2f6e1eb905c3c5a407ed8603b45206bca65a559b19400ef1b37606ad4ee550d174e101de32564fee23132ada1c227fd10597155b4d21900d56e1220afbe097e44fd7bc89eb5715416ac31e1c7f8b88cc6f1184805b5d8d77151fed7e535a7f16b2f0ab2c1829de133d7854643f209e99f279d309096d9d20b13c1a28b039ab659a49200e99bb72e0d3bcd02148bd415705ae74ea8c05872cd9ce8461834dd660c10b75ee3f0e94a0dd502f7f1741f0b264d6c83fc7fba517a82c18654c9075444758f4a06c29c30aee47d80975e04308729e8c569ab2eef2726d8f6c6c8d07e76f93d8d5b5a6d2648150cd692ffe793546ba93516c1b669024dc12592a9f5c5ded540b5e2a39e7686acb9ade4a7665716e0dfec959b5d0380592b2c86c8529fa3553835531e101aa086f6db128f5daebc88b62294310a18c54bb54e63f4f9cecbb2cc25d68f36fca9a0835e3da531f9e41c744d221de75317668e8514251accd690030426417a8610bad5141bedde06e974fbaf111333c57d6983d5390f7865b6fef9b8d9c5fe31235e4557f489cd8be69cca147a68e40d65939a70b033d95b1bc75938328807cdebf9647a13f477716d156037b223c49ac1698dd0e09b085170feded74d466e8bd2b40848559ac5e8cd66c9ba3c924b5870603ff530d928526dd4a0e80f00a5353c3f6d0cf02636222e62f67fa7184096c87693f17c1cd9a5588db19b113e70237170b8359fdf8fa62d0dc6a2a3f9f263b630849b55924956c8548f09466e6813c2c439bba25611e13304aeb2b45e2b3fd2cd804eacfcacca4060e834881c90af0a30200fdd0392674186b232ac7c3dd5fa9178c111f2bb7c48d32bd83bc5a178678ee86cc54c572ca610600e69422c111cae3d330c51801870dc2410da2ce471be17392a3a1996be2a493dd3cdf2bee7ad23caf1d7006a7b84ea09fb45052d6c326eae3144e51470fa3abc430c5a269bb4cfe3be9f5db5cf4a6ec494ef4cfc87277bc47b27baf7b3c2cdf48fe9045ea04fa2c4d95e41633f986e4b1e14a95a5ed027fa243fef67cfc3e96df8adbfd5e006d377605d8938388708ae211022c7a196a431544242c3c811ebe64b660a3522a3574601687981bc713e9dd402a7794b0e0e1361aa0f73c8517274ba317410515102a94764f3b0bc730c49dd1191d6a3b32869ce0b0430e26dbac918a1a9ccd266c1c34a6597aa4a3f91a2945d4d69be906a84029d1aa362876ce22749f4241759cc8cc4d0b496b85e6b07fd99642683646fa449a5d26c622db1eb51ce0d6522ab1be56058bb2986ca1e035762904a493942a552e93671493f929a7759725af17d09a8b9d041c629eab439bca83a2690c42e45b26b804882b24b66c7e29966dd645b404e20ea916c16e684530fab277bca11dbad21da92cc938d8653122b9128aa1bb9a2572395c3c09b4a39318e662b27b13765b11b02d3701e5a29335691f07406fa12ad98c863c65ec3030f3d61ba6f2a6ac69f5ae7a92ce074ce203504a80f4181f1540d271163b8d2c3807938624c9f06c120355cccd04a390a138e3f804d5c280bff7cbdc1680463f47ead0c05affe96b0c165fad7dd40f47618f62c50a31d7b05e61bc0f094ea8624982bbb6346010022687ea2d681f587aef931f24a73ab581cf4e3040ca544024ef8bfd23b98c5512e085777687192847330df2cfcc2bc3742ce8d0f7f2ec203251c1302454ca730085a9152386bbc6ff1267620e96b228da81b8bd8ec65a345c4ee1a1180b5cde87585b0237d2f7e0c75a186631e83e4531dece5a1c15fc1d570fd587f484616f1de661709b039b8b8afe0d23b9f7c92e11e414dbe42e2129f74c640f0329bea24c08091bb9b1bd2a6382c4999d0324584d0e9837945a8081ee1080d3c278d689ebdd1860d33fdd1159aba21e8c38c3c341d4d0b541b5e53354fc0d23b20b604e7e8c72151b345882521b76d3a1a6a095dceecba37603e9d92d56ee010a04d8eb3bff964109fd603dc002d369fa113addff39e809ae6ade6b3be05b2046852db7685d4dccfec9d5b1ff929bf927ecd022639d22c8f4191f4cf1791890b46dc8ecdd40d9e163565fa6a89b735aac6e834a34c3a1a364245628d3cc53992012ee488c145b92591df292fc5bd574620a4eaa0759f9bcf5feab76a567c6525771fa0a4b2f883303ec175e1daf5284b5b74d417a0630d9e8e3f849c88cd74c50cd78c012007e6a7a63674a642c976848d1ea2de9b7c1692ddd4be80b14a2c73e20606c8e534aee6a9f4132da2d06de501e5ddd969d7acdaaaa766d4173944e9b8b02762d66177dd25d2f9c9745d033dfa7760a40b65a63ba68db638d3e2d654d9f3eeef43a216d6350f60cc384321a5ef3b85254905686f9ca42ae264d1d9f8823860da344eaa274a74dc1efc2e3c9001eb7e1bacac1a5c8df8c3fd2013ccf871a2aaebea124e5335ee2da69f46e324ad39e70ee019e605084c5108aa5b2f78210174107e9568c07f78102568b8db14760de4323443f238a8435236e64890ab3dedf6ec2a1ae23d7a59e6be8be0d90eccf8d66dd6c9fe687a174237f44db1f2a8b4e46e6894af3a67bbd40638bfb344626a06ae9782ae695664caa3d3482b84fb7dc214100c85fb785b3bab325ed8452e807c34f72091884b9ce901b671a09fc2d0ea8ee3278afff89a1ebfb4bf8507d1dc4a8291824fcb43e3a18b6557db174be71ac6ad8b9660f7774ff169cd0d8959656e0a69760549114af6f47ab023b2ba4b5ffb8bbe515de60263c720e5f4402690894bbd6102c61f37c00438c52b7840fb61f8b7b0c898405773f4c08140e6505c5a8ee212bb15c951a47add4ac680473e2991f3e706a5248d1f7092b2da312b5c1792cd156093ad6b6ff40f24a91cf98331b6e885c080bb81831b6a1802ae6380c2285d3eab5035c03587f257ec99ce0ccb58c4dd125201e6b9b966feec5d20dcf809c48e4641243dee6cac6ec30330c17e5b914e4ed157054ccdff70f3281470c65ce14cd4938ba754dc06e9fb6fb73327126a62301e03c41455896c7c80a02f17a2769b7da4a450c6d25736025236810cce3982be31bf0490975a174cae693b63f20a067608576af8dc5b992f177a4fea048e31b5d14139fa8cee981b141e3385cdcf47f27dec5de188454b10e856302f0a9cf9ef0fc4eafe16e824b4eb1257ec6482482366a274b3be184785bf0f475462ee80dbfc479e217acfa1e7d388730075d99198627632753bf31d5f6b6304e22c8ffeed61d06e52ebe625a99a2cb6e65e86b1a8953648bb62fbdbf2dec8f0ebc8970c9373ccb3b9e71776df66d28f137b7d8a1aed349eab8bd8878e29b9c077353bd73aa7af123a3e37ab334f30e9af6a28e9de3444a47a5fb43b5633069d6404f08deaa50aff9354fa884587a0e29b29aa27b4b4dd0f4587303e8f51bb903e06b2a207e0f36711cee458c49980f6448bbd683feca04fefb3e71b63d4c0a3b927d1c4acc005eb1e3699d3cb237e10b19f704ce478761666789041479349caab0804a6df7b8678d16cea859a2c76e05319f29111004f2c0e2db67e4440c1091e2c513f3eebd13eee5365d022eda0437f22f25726f95930f4601937615adac73b0108871df2e40a441fb3e2ad1d6557d1c61e1e97d288edee5ca16be23fb9330d194495649d2b20a3eb94f1470c0800e8804ea5fbae1363f9f51fb10ed9e60a0e80ac9afd55f15bd52dc453beaa6875a00d12a5791ab6c468719364114c9a8e2de93f50841ef697710bca92a750e2a9f8f2d760371c5ad0193da5a7c79c1974cfc6d4b105ab275c34e889c6a31295c53e2673181b2264ace2d2ba4f391816f0e7aee7bd36159e969c915fa3388b31b04f4d6904d6bd93fa3b13924adbba41b0517c849f24f04c958c5f66822876617e091018fdac4f851f989227dac5eef216b8b86f5b4ea00a069b8fca5e40411491046aea3983d528c080ecb7aff873404d3041ff8b9946a714c00635202facbcf8aa4b62cd81c934afb6167fa5d2e40664a9b7b96cce5708495acbfed4f992ab104abf6218c23b55b2481f653a2c7297babf8d00af641cb0f1be30a1bd7100a50f2a6a85c70192de089650ca1de21ae8b6e3f0b4bce7b21b3009fbc2250e460c923e2778de09feff1c1462acbdb72feeb80f4cca65e3c9b52810f42bea60285ed0609c8849e898cc0a78a66278e8044a9c2d79c08a9da7f9258911726b5820468763d0aa903292056b6aadab94171416ee4c53d5b1108a3074217808304eedaca86bc2b7203883b0d7302c7e47ec23e7d27192a1003dfd2641ed3be077eaee98d7abd8b2f919514988a45eb93f2680e84c3a2137d942ce005ce4697e2da1d4c45f0a5d0b3091771f616ac1c1be2be753d9fd42e8bb89fba8f6aa78df44efbbda317db5fd8a0972efcf6f78a79f41f8fa6c499b6ee7a716afcce62fcf5d49b3552d8c7ca333d25aa6d8621ea1984aae9b3fa239a6a5aadc09b18319781cee228a234aaa6225be4d829fc201081e3600a8525b9c1a06a4e3781136940a87a26a49e4cfcaf0a335f0dd4acecc7a074e78c296674002176c16980b67bfa7bbb7de10100cb2cca5b9c8083ae25021e82ae00d6f8715d34f60d39182d101395e3d08a001828bf42ba504a86661f7fe83ce1bc5e63694bce0a730a258ebd2122c9e06691d62b102de9262b4cb9fe6348b8b6ec9ad6a5728cd7305b5078eb06a3f961d7c77598c78d9f4e078982a165e495f1504bf0542dae3128962099e55a1b62e964e318441dd1ffac79eff154fcf5c929e3a200f03a0637e58d8f047098f64e254da5afa5efe02f92f211a83f9b33240fe96b213ba95f60db4e156791bf04b41fe63de5f1fce326926404ad893a1e9364fbe364bd4af52c57af8d21759adeec8171168efd005e1ff4d3c009a38b6e38e603f62bb00b5af7bfabe5ea39605bd5ebf90845685b0580b61da689a5b322e04ec7e5529401aeb4bb0f8718267bf79afad9eeeba4d96068efc6bc2f7a8a1760d2c873f2958c015da90473ddbcfc0f25a7cac5c450ec29b31c600a14bbee26786a4ffbb95aa0432ad723814b754e011040279455412c58082fc26d2b542e13a4ccc4422b9d148445355059ca9933f4f96553a3c5a9dca66f50ad6babc5d81f8c9766da67208284abab49c98d57101c9595f01c7e5b0ca17e9f9df580cc3d8f49e0ba163dae7781dc1f79b0499fa1998cf6c258739797d9ba1bf49ac45d0cf79b6d4e70f5356b19013aae370b7d8706ff1a9e428b7de911b7caa622cf77d9e4bc0acda79a86b2136feb97ed8e661042eb7da4ef8d37a29fb1b9bc04eb915196459184ac7452197ce9647b003c024689f06f8e7fa51084e2f9b9c35d4e60309da9b5ec4d0e3a276035dbfbb8791043145d042f1f7ec529de6df8ed7c3fabd485d86d503f8701d33dbdecb01e46285078581d5d1227fd91da7cf4957bb33bf7663233c8eed4a45fcb3dd02691572f91e00f3017c9383d3eb03d87ac39a3a62aa02c38118c364dbfad5f74562d6a3c05003d3fe51805160eb3f379459001a12ef6a6d7369ea3883512122351a6f8c67f77dc3bf837b7cd4c5ec85dc28b1882afbeff82e32706e51f499a11223e2989e146f3454f262bbb78e37bb5d49ea8944acdcb44a32820995b131ef477e328af6c2794afd279ec281e45d5b8433e5caab676e4360aa0803feb13902769b70bae3a8593a6c11337f41002b8a5966c2ef6bc66df43e672672e04151a71b82a0a4080a490eba80a88618cefb0cde4104eb1bb380c1b14a239de27d8f31d2539b7d3bcca3328b5967a4be7bb4d40768f395f9ad13e21b21ef46ccb1510753bc1711df5e1d4cb8225f155259abc7ed116f6e49cf224b55e03d80f430cdb618de2b935ea40118e02d3de93304a2a97807902a6aeada2ec3167661aafb776d8117a6b4bed72f74e9d4fb732c5bbc451dbbd06cf3b8bb4264e3a564c52ac30087815da1fde2f34a4e5dbcfd4f34a68b213ee2b87430e4827a10609f94890bc56c43edd82f48b8b70dbb67bf7546dd87a73380f94861013320f6a4a6281a4abd66e85115b68329efc43c569488d585603a339b5e07477ae47782da196bc5fe13df8a811734b598e4231022b7ac4074b6843fa763644799758ee71b75f91ea824d5d9cc6db19e6ff4e250bc377670af7753deb7d82bb052e691720af6c33f475bfadb4badf6ca2a083f0da000778af756334719c67339faaa7c2a11ba7bb5e83698138bdcac38af4506a285ce7b598ba741c1b904e1240bf5fa7581eec6ab8384b7043c6309b34c8b2a7ed1290641b7bcbb5b7cd761112d6615f75101fc634daca4637bc370039319ed4e4ad135ae465d638475ae9bd5b1581e1b2748f16c5f492c17c89fe6184c63df1a785f9a2537644f9744a6094091b9a6256bb27072e16085005f6a46bde08a3a4fc1044965721cd8db515e7fbb3183b9d8087838db472c136d31d4885499b2dacd16187dacd115d3401d523837afec9fca4f181d817a521f7c75e4744b7f0f1a2d71c8ac450690f029dc766d0ae62540446c3d5f8a6d3befc866af7d8b44e1f7ae6dcc81d9e9e6733e0b7b8fbc0acf9e0b993b27d4240c960c8dc415dd54899f970158409d62e52e69b3bcb29c99f2883921a959235a2c9c1539c6c18b8df6dab90f89346ebe35e2a0f46ef72339a7a43eb505c0b4d8a1102d2929d0d68b959766230bf4cd70225cfb864cbf89ecb214f0cd3c0a699873383ef17fe684b98ec9bd824d88695afd5ed75089897a8d46623d62a293028bb0f7894c87feb14fc60c31d14bb78bc4654f1323a11a5f74293557d027ed05968d60e6f28eacf662b14217a3dd51be495d77eb22f4d068f60f02bd27b433ccfc79bd22fb8004e61c52d38207f70242ebcb2361ff60e2663a8f97ffe15ef78827167fb544f00f5b1515e030d37eb44a76f76f8dfbababa11ec694b85604081548d612bb0896684815da24ed2622f2b295a40fc572d826ab10c7d1ed9aad32f5eb9140ebae560618ac474c2e6a2e42b3d07a5828009077ea98e0fe6ba23508f241a55ad4e42bf38e0231c37092203585827cdb1c5581295fa04cf8fce4fb3ff0f500f94d10faa33f22297af5e16f8c6939457fc54be37fa2b802d267dc663dc79cb9dc6a913d7d007fee414bace71eb0eeac4b0adde0dc036f50d60beb5b38808948aef1d40f73ba3f37f1e0a0a5928b9ccaaab4dd2607c4a40847b42e0549c9679980958148d25de999a55d9602cfec44f1e68faeb652e757fbffa7feac898f6add76af757dfd33ec2c064914efa00b2083e6fdf5a313cc5b75e6fb1f2fbd25a60be86de8d271c74905fe072ca4d62d96335ec750eb1b34438a9672047e803d21fa9242017aee6af801a17a2623c48f97465a26839b5d6d44538582d640e4f6c24b615cb9f306fda9a02628507615c9c90c2c4e85a6efd565722a62f923bc23ee3fa7babc3cb4db8963ca1d166411fc4e1a38783e90eb6ad34145ed8d0f1c1ff53c80b0394dd7c22e061c3e1cea1dc60ef87c44cf4c54f421c6dadcd27042f37a4a294476f13ef91f1588d330dcc82fbbe6e89bd9a4034a4a4931b921acd2a06726317b863fd0779ad77e911b76148382746516b105e850b074a51cb98d9810885f22913b1667ea81df488a3911f1735927373b0c2f754c1e34f1f9d19bc02e8d58afb1853c2042ea662cf151cd3125e670511cc7a221600e33f9fd39fff786ae15e6a14adec15fc0db14e57ca38cf8e10f7e25326c1436748778edb44bd2a226b141fb96606a62272e3602c6ee4acdc6301e5129552b7afdf8fe31585dae48f20042437826a525a679af889a85a3b328e9c8674fee2bd0239344a6dea8e23dae5932dcc8655d51901e21894b0c380a37d6d6543b25525b5156556119e4e9b460f3f0722d095b0c5abb070658fbc8c66682bd5dfd0855061f5db4c9362922bb588bbfb07d3bd5d8ecaf2906264d71dd3c4f2b193592628c22b26ba707e87904209440d00036e2c0eebe9534f81dab95710fe4d6210535836b233c7494ab8da1158264d09452d1612e306b08a65fa18a2a3ba9d1be437720cea5da3f4afc596300240ab43b80c6a9fc9964682bb50fb8061d8b9d754eb1b2490a531df93a4ba8bc0309ba8173943e2dec68ff0f881fdb1d9d9f5befb8a0118662a448d9801a508e235e5ed6c69ad019e991a7743304181ad88382fd50acdaa4c7d273185087cba6a012569b0a21185807857bae43a0d63c402f08b3c644ba7f6ba0da783fd635d25b6cf5de45d72e881c1f5670ffdc36de17bc7c84da0aadb2c702f01ab755568f55f0d052536bed429470f22866380dfd27613385eaafe084b9e496175f5cfe89d2927c2c3da4a4643a566c8a691f0b963490437b6f14f17ac435ad75dca2714b605915a8291e6a80402ab60198f887024fa5e984e4ba6f124e34111d956c9520dbefaf6c0a4a656a2dda778b01395b8a692022132a108105d56b53032a58a9bbc5ad780b0bf7c1cc2927763ae3ac40d930a43b914341b02280bae272423bd9b562e3b394e6d45db01e7f36c7963e96fe4d71321286d2a63032e16be4be616e9a34c6a6a0f5a7c5aa741190c835d6d5ce4700f6871de7fc93e19db20a13f31791cb01bf83467fbd98e60bf50d5016d227857ea7daddbc3c83c18ff8f7def9776b4e0debcc522f0b20dffd654762f92e09feba8948a464edeb21c113eab1eeb6d6b553989ec22a46e418e5c36539e9ca66d3dd4c57c868a152a830e87072b721576021185f44548641699d002b3b5596e5eeee8e9a9ba03d0ccfdf17312495d240e5ee95dffa41cd36c0b77f0000600cf9559cafea224401f69b9f9df45073a262dd6e43da82b393a8436be9ca15281c1794c38ab7abf4e94402e1600dfeee16f0196c0c18e86ce99ca8a7bb4e9d75d789cb459ca92956ca9e667f48cd62d33bf74b3579afbd8a4bb1a0f9b13fe08940551a070d8e91d5c1e80b32ac93188aa8c03c27961ffb673ba0d94a0447e98d1304a824d3512dde8b9819d9162f3d327b2ec20713dda476a8f434c6604d5d02c4696da77628e88b9dc0bef04648bb5c527b381c75b0640b584bce25fc18d1ae33f45c167c602046ff17f78a28488cd2f352a59ef0d48476ba4ec4f38854422c65945d785063122700063b0ae554bcd04521f496e0f76df58125c0228b927ea1be7a1f75e6a757ad4ff9e1390526c0e569893b217b40b672db43095e71a3a1c603b290ea2debc7dc655444354111d4819bb87efeff11958b007b1a50eb3fef47e0822c005a2d07b7e91f2e35f0ec73bf67e14feae0d8761b955fd1e96b6b1c75adee9dfbbc964c973c10d6261d149df18abf004da551f7597ae52f48b52ba5fa41bdee6a4350c0d5293b7552e6c5104f610cda5bca391bfd024ab451e9509c62408410e1803e2433b883472e676f12cbbab0cb3f99361ea38120cc6023ae7acd1b63c1d05243dc2820cd5798ad320c1fac96dd4b71ccb0bcb082484097a56f658a882ebabafc22063e3e0c8121a39eef488c9de067b30c0ea3ea00ea36db12396f685742d79baab06241f9f1bc576c992a5660bfe03734ac71c5c2a527e3e24a9658acec020ca3aabca755d669caf41d4f51d3161138d1e572153fd5a6e8b4c92989104915108255ea849f16178f1900cb7f11084c59c3ade325ea5915befc5bb45deb7252c6b30f99a4f1b96dc16e93a424dd38a3781b351c4c84fc0b1bbfc96da10af2897ec3a578bbebbdf9b5ad48ab7d7a3822ba88d9b5d15dab8b40e9160f8c9ca95e7893309fc9c3541fb2942d73b1cdb839dd52dbb55a1019305d6d5796c95239219d3693a2f9f308b456fd34fbcdf91283f4ae6beb45068b2a142d185da46635ef9174e13a2988213b7ec94a08c77948c1816a10b26acbf25da31bd282fc280d5b1e641c8f71172facaeeb535b6303eab2983fd893156b5bf31ce6a81e469a5d81b3dbaa8e1d515f2cfad3f167ac2f9c495918799625f3c980970d5c00518b6e235f407b12889a9eee597cb63365c534649dde4c4e834c60acd05aff8412f6ddbea0e7facb2b814aa73731027b6ade017b6f9b5e1e5a8b25fba095ab17d9a64a4ad33ff78fe8d80e5361af22856cb6234915bb37501cff9c0725b5402ef6aeaf31ce20113876e51de6ee982e87ecf7a54d49f446a5be8c4aaadc04dad06c584f364edcb41ce6cf07d024391f465e535c01b00d2383a9dfcbf65a5474b19327d1380679dea10ebc4d2184982d642c0ebe2d86591ab552b210ebd428fbe1a4a868cc96f062831edaecde815d4ed63c87dd01a80bb2e3b8a587ff50c990669d55b57442c6bf421a9cd00bb17316caffe3b86454e0875ad2e6b511b5d4c872dda5c09cbbe5b99e3bc95c11449ebeab9b8e7098a85ba4ceaa1f9abefd09cefabdc6eb4f4c027d7f862d2a7d6c9e5c1378439db9a98e1ccecd3745a487ce741712b49ebab04435a8d4d2935f4d859e7acd8e6a18943a3c53b15a133def7867c32fc2bea4ef39830190f9478ddc2dec487949ef844be519fedce0293db6382e7b839855ce9ef81e653f8d06959972a60a6165fe4bdef39a9e48b904301c512644ee0238d849630935c6253550aeb86e1975b823a458f99db2058ce399f280cdb6bc24a1d3ae09453339ae9638dba673b47b99e35f942499647ff9dfc57c3a791f0dedf71933ec71335a0e41f68f8f6bb4f5fc3aa1739ed51c2857a312b29e84c6e6c99b3b0b97c357d5278463f8814a41c83b8fe124ca0fa6a6a313798a77817f8da327ca0b0d14953c249c2e7ef5b98e51c14601ddaa82f992c09452f3a25c53d4cd707b3a10bed6e304ec103ac8bd4d4d8785a6a060a6e47b9eae8e46a426a2321c420d69e1ea3445fa49a8e13d45e8a22a1644f624b9f4b2af51b6569987aace67da8b0ef45f28582b181c055924b2bc99695ac8a2d664b8d312e9ff0b8e48530c4e31e5e254e6fcb85a937f5ecf1f9b3aa197e18b113edbcf24d51523be482b54b42b864ce355cb41f982139052df0382672d0cbc9d8f398b81b4e344344036beeca2236a086a8b8470b5203505dd4b366ae0b0c854d3d287d228aa49d57e1518b063ba108b0812c8571a38d8460bddf399b6506f2f671711c750e86f6734c7e0a6fcf9ac9a5e390d246e83b170fb37ceb482cac22165fb9844c1263ca3f0c74be6b5a321b242b7bf52204597fb7494a19895db02f4256da7b08d2f9e7a61a4b4da247ec40084689f4984afa5975754e2d75a6b5a1db0f5c3f2cf0d6f640e61e38ed550a2a27fbb17c518cd1e913d58f0823097dcf95ffd9e87232513198dd663883ba5c478dee5efe4cf14aaa89a772fd27784a2311a227dde4d19ed8241354f4595337f0025b7ea6ac4085776459ede8ef1004e445a0c50ee3c2c9cd270a02441e57ef001652cbbda9f489862b1963a09d2bb87f52afdcd00dc2573fe36c35da5f20e7cf262618e4c864e840c47369766b4c5363d1eff6cf4821ea5ef8fdfaa24cfff086e58aa3460513040de604b45c458765c13f7417e3a45a5fbbbe68d4073cae6fcbddcca7511442ad30a37bdf349b248fdf8c9d1b5103381aee5635488c02276d85a51da9402057141e5dff638c0bc8592f7e389fa21f5cf33c7830c2f0702b54c972e04325a03de45bd245c2c89b89fe8a4953d70624a635f9b1dca26d9457b59c1ce878dfbe1fd064b6465926c0e2def4d549eeda664f547bc57594131c539e0ee84fb143338d75c1caf59965273fea20414dcfd82983a5032adb88e84b1c830212fa964b62344e2688362965a7a376cf0c2763f380567a4b64faa955d107124da63fc12b38b6b70642a4e0d0e6111791c58d9215ae68c79b44f1366261ae373321135e1ba649434c40bf33d1c164cdc9a0a590520e417d7266b1147cd8c188eadf7f943d66e7ff19dde3d19d08ef2f3d1ccd3badacee1d49a17164b7051526fb04795d3ffdbd8277554c4a55aec98c22fc351d5145b6f3fdbf98970a7408b251362cadae226410d05179285f0e9e05ddd955c382697cd936177d11398b6b67a1ee273c12ab2eb1fa1f2aa2ea6340ba73c5621fb2618a41339e0e3f144015c269ed783b50ca318e160ab23c116572051314bd21407e9f4fa7c781ad99f2007b323049aa8ffb6b0c9429398d70a155a6c25c5719fb0e4e74482c56ea348c80c2aaf7c7e9d0b3302e201108500254163b1202f9e2e6592a7000d3b526afce72b2e3a264dec8ad5fb89d458f861d5def178d34e6185059a716c3f694ae296eea38632add4ddd3b42cccffc63651bf5d5f95c9d382493697b226fa22ce30fb61d5bf9af04d3aab9bc7157de6e2258d5ba03eeff22cf90eeb4c72c15f2833c7a8f691695dbb404d04ca4804543c89666547ad4fe49c5790e0123c8f1c6e05e939726a34573e3fc7e9843aaec0dc2b452449c57228c16b7959102ea13c7802080b0fbec78c31fa473858f0fd704d6211a3fc318cb2db6e23f9976f9c82f238e4000c3f02ab5119e6fa92fcf5319ec6a9b4a8c744c63fc8d51304f5ce6b252e07fc5370ae050438ff609ab60b02d322c1e9b06fad808c898376aebe189d9cd24293f1fd8390f9399363f6ace247a8de30bc2c857eb1aa9a75b0d98edc50372745a971376db157d087c843ee92c5afbd5f726611cc97b3d4e882c4cdca9c5f9fdb52ea617c39fa8c1bbc08cff508f71bde314a237312055f6898ea8d2768902bebf3997e95622de7f61cd92e04bbd9fc629aca7e8e314a13de51ae8413224e3812b6f05f0cbcc99d9526ddb60f96f3dde0c0618927b10e7447719fd7dd0d7ad7d5514889f53c228b0d2edd278cd1108bf090128d21915e4548d53f04958b96264a0c5ccc040e0444b10c4f108855a30e50340cd771fc7cc7755c7c6d0f56c18ad8ddea910f01640e5614883ef73df4eb4ba335f4405541bf3ad789cc79884a61708212dabd244a25e0f9fb266af66fd964efdd646fb965925206ac0cc70c830c9f14d8c278f493026b309e7f52e00ae3d54f0aec309ef64981298c673f29f084f1368ed349a2bd88258cc51c2d05963023cb51dafb8f348e6af958e32f6250b5613005045f13e01b050ea1c061097048021c8e007744803b3f70c707eeac3018020c820083355ef2ff0006575ef2f700965e22c0770073004b2f09e03780a5976afc13587a89c6f7c04e60e9a597d700965e327d063006f005b005b0f4d2f815c014c0d24b427c137802587a89f44cc8780960e9a5fc3c2280a597fe97c0d24b315e092cbd04c4278191c0d24ba387008c77003e024b2f89be0178073602ebc045e018cc00bc000c8335ce81bf996bf87305e07d1380f723006ff0a5fd0f803738d3fe38f0eeacb4ff0dbc3b35da9f086c03a3f00e6b76f8d2fe06c03b9c69ff02e02d2200de4e3300bcbd2500bcbda606deaeda3e1300bc7df582378d99f0a6b21978d3d91078d39b12ded435e24d5f00c09bd20881376d058137ad21e14d5532f0a633196fbac278cfd8e33d657376e382f774cd170d0cbc678b05ef59a30ae13d67e66a056f19bb784b19086f39bb912ebdbf99f4e03deafdcd6aec6f160547ef9115c554c133e860a3edcff44ea27d922d735ea2d26f04f0593edc3db2f4136d7f647935be0c5281887068f47cc9394a7caae78bfc6b386a7b0eeb058c991c96a346968837ace1adc64bf347d6c644cff7ad899e9fe7e6b6c306e0cd98d14f94a1259bbd28dadc22961587358a79c99fbb57b439200882a098f208f0d12377935cda3d37dcd02be203858e1e931f987cf9bc441951d579098aa9cfcb4b30fea318c7dd2b127da398f69a2a02c67671c37f271446cb9f9797dc9472d475cd98f935c9c49854d694922ffe134c02c9484347e7bc0495a03033665ef2e75cdf9a319bd1d1f7b766faf3f26fd1717bcc8976d8dc23cb5fdffa25f4e4bdff3ba1a7efb9f9fb7abf3fadb9bff57aa2fd7b28dafda368ffb0a4687f0f8f48e8e8dfe189b95189f6e75870b8f6a7de624aa6a9bb8c24009829074080cf009fa4a70d5c8203b3e591e5257f9b07961253a5f79dd8eb94003084103382209964bcd0a821800154cd3a9da3e4389d1776460f8513da070d98f6afd8b30fa9559c8604a08a398453c5a49ecff4614ad905146c38794344c7aa454b486ac4f35870e77f7216062f8cb1b1a9ad9606c65816eb0677fb8c9ef23730e6f5d292b2282b166bcd66df0dae94937a670fd1f4a7965ee83737f245bed502b5c28aedce97a22e8c40446b6fbf8507fd2d491666301474c3ad50ae7d39677306865c6b8e42034e32b12b2afb219968fb9c562513edd9877d6d4e1a3d655b587047e82d964c40242417fa2199d00abbd83a16eecd73cac0f09270b587f19fbfcff2559f5c7ebe3bb953ef99073dfff33012595676d5dd76b5b2ac6c47a3b7d55a6dd6c9156f6a85903f68f13d2f65ad75a62ba8fe0de7ba2f5b236ad1e8ca92a5fabe12cde8aad295abef842cd50fd56a57b756afaeeabf2cd5f77e03633a3fc11851f415c3781187efd99b675fdbce567ad6e8f9d239a8088f805aa1c351b671c3f7260c3c5d381ca5417cbb729436f3b006e2f784d9887e4fd64cc1f82d61d2a65304abe2f95d5369d0b28a61e689421fc2f743bc61e09ada1236532d784f16101e1cc5e4b45fd121f58b737139a43d28149a53cb1e088f70129a5b6aee3aff11d6a2c4462b1f72f79750f8ef219a7b77f7af98cbbb0a1b6db9d073a1d7f05ec9a1d09ee1a7a20252113d205145d3a64b73cdcc17e7c4e596fa6ace9cea7c62d36aa9a675d244cf0f31d1f3576ca636858eb9a6beaaecbb8aa6ecaface02a43c7a9f2535a69557255d5145745ba6e355561e66f9ccb498a9eb4ac6933b7299ba2e36c5a973e63a3cd66409e95cf2221cb859eaf444fbb44cf19c7875bdfba9c70aeb9e2de57736616993373c56d3e5fda6cba6c8a9e4e61cbca801e18b12c6e1617a5e5146652dab2383fdc9526b399e3e44cca621266236fa44bbefec7b1860dd1fb105e790f2311fa158e0b59316f277455c149b49826fbb4d8f7a1cf41b528f414ca5368dae46cb5a08eefb30fed3df41a4caf7c45a2d6cd091dd25e82a1398596a626aaa4e86925ef1972bbb2b2b2f22b2b9f834e97a3ecca4bd343d9da22aa766c573ebfcc89af22522a8aa11f54bcf7acfd2b519cb75796ea6f98c3529656f21ee27934c4bdaf78d953f90f6f15199f837a32b00c2c6154b0cb256691852e76208324aaa7a5193d697945825a5e394288ae4ab851a442d0e319c1c82819df0264841a60d619df43aaced4d41188bcde9a4bc641e838ab3542862170312cce759d96757032dabea77630b3812c0631cb02d80a6c60708385b69f85b6bfe5cb8a7fc158036d5f0775876581f642218c8415b55a1ff6a5be2fc111502bb497b7903fe81cf493a7eaf31289cf5b197ab2798aaaf2cf5f287450f0c1f734ad6a1988a63f3a3effc9997ecde2ba6856538916d332730ab5c2091d41fb74767ebee8c993f7f4bc7dcf83e76bbaca70a7f6fc9e2e2bf49c99b9332e2f722e6c204f59ccd31179d27ede40ce605617c871fec402060c1ff5b99f17a43f2cbf29e8e5e83f2f258eb0a634ad2d09fdccb345c7a9d51417eac0c0515416bc6b0c2a165507516c3d984188628af07eed849e4640add0b5566a05cc162d47a87cfdcae5a9923f3ad2712e6122a74da58116a3a728f4f45d2784586892e1dae73ea46b0866be479e6a0a0d4cd8411c72b0032d60c10e30f53989925f2c79a2853c00410b5e88c1d4bf12c77ca541d757913768e81ad275be13d6565bdd661fa1af9bfbd0f76fb1bf8691b0efa1b7d8477da95f82f5cbdb09cd7136945bac9d5999e9868083c4e838b528749c3359dc504b2f7ee0025db3b89f965e1cc143ad4666e838658c784c39090f93e72dfe61f253fd6d592d9ac9cdf75676d52af7dd8f688f2a0a74e8a596e08e1010aa575e7bc7506c3a14dabc70432f3512a129a8c60163b41a7a0dd411aa02b79e9082496d3102fbf5abd86204f65b76f8575b821f81ae2d3f43f94d30448fa0d32d5f3b4b90d0715a1a8e0e775b24dd1dee9e3392f63c3591bf36fb18a8ba92f70d650e4dcd9f537c77dc767092ed3dce92e6739c7b69959f626d0a2dcdf7606d46c7af6f53df4a67c5b3025a5979494f3f4cdad3663bb8de4fc9412b9e39e8763e9bedca5fcfb429241d1a85425f6928f41c1813ca36aee9ebe44d531f959e7925cf603c14f46c5752aecdb916d11f8c95bc5fafbc578bd49abf12b1b816b17199a94558f434ab44cdd967eb7f6f7f93b4adabefb7c8c8f7f57b4f828e7dd4dca2b5687987a463688aa9fd7bc7dfd7982f57565db9e68f72e77e322877769821f7665eeaea70b91f2c59592335b2247508468b962c49edd5b7dacc51f9b5accddee62dca79becc52963e18efe1fdc1f894af386ef49a83c375c9fbd3bb7676b86ee69422f4e4f9f92a5f45b382df7b15f49fa7a991ae2f8505ff6ed11514e377e75fd68faead4963fef6740575b59934e6d72e80f8ce7fefc13b88aeef7530fdf09c75a6f8a8eff92925fcf9327c9cb7f5811ce7c7c05608739cef61bb85b44b6c4d172ea9fbf3676bf4f3a78d8bcfd1db3c5bf5ed8a6aba48fd959f799037a4cd33effa5a1e80c0528e41b4e7bd3c67e8387f056f2ab4e73f784ffd79cfe7f08f8b5d797adbd556d1dbae360b680a69ceea465b8e008d80a43d791601e5cf9dd95427bbb20b2d5a4ea62bb7dcfa1d8cea8131305ab026a3e3b42b79c3ca1b545b9645a2a7a5d9af39bf797dee3918abb0ace42934cdf22cdcd41b6884d42b3a421fca5268ba26a12ef2a1f29c5d79a9433ea386c7243abe268ad91a29c39d2fed6aac1ffaad695a08cf191db53c43efef85b065d9953542c7b9a2277f1b0263dc7fda141d375753b30642c0352c2e80f43c1cdeafe78ce4e6cce7e7cb95cf87f2be9f099aa009fad97e2e0eb7feca4bd03f34c553749c1fca73667f25b7d8d007a0e39c2e516479f52a52f9aaf253e5579cfe7832104db7d49730d6082d4d95dc523fdb151de78b785fcdcdae5d7543a85fb85b8be9f917e76040cc650373d54e9eae8a86abcde4d7795d04c189e72dee76454f46a2dc38a128e945cb22a127d90510a0e839b34baede96656b66174098a2b7b59981deb6c99defb6cea6d013ad839e77c66656a5cd5a3cb66849028ae641c7f91ebb77da70ae705b9a70c2615e0e82127869ce99d8b469b51ea673c3055da22ae690c9cd1ac4400d6a48431a603034a0e10c67e842176400ca810e6c6ca0d0c2021560ac17681002551231c4f4904516aa111568e04455871f28214216c880859625446cb0e1c00c4aac40060c4b98834d199a6086910c9a20e1e2092b50b2037f527f52936854abfee8e83014089ebc9132bdb8a158a8a9cf55bf5948f9a7291daeb6c9c2cba6c98afbca50868fb39d4d0b6f8e36463e14d1f44d07204d3e3899770a290a7a8ff494ee3688c1dda39e77b05e6bad558b81c872370ac74e6ddb58203261b3b58b226da8ffa91566aad5bb5a76514409760c39798f4a28922b84e338eef319695210852704db408e33a4ccd071061d7401f29e211bad30472a481c232633f2e884896374334e61ec42de60e1a28363d464d2009f2344de231482c87b5c22236fd198849c5966586c308a8d984c1c5fe466d464e2f8184ce868d444fb7ba28f880bbe88e545600c8bbbfb74f7e96ead75798b1ff4b47c8f658a293b7309915ef4b4bdef5c7effd85c1d26bd48ae24d77baa3b4cb1083697b6f9c7e6d2a32739a9f2049e587efe274f9d9fbfb9e48d4ecf0f85ac237ab80fce231d20800063800063427f84e56f0c8a44ce49dddd6bad9aa669331321a5482c1869382c928a44843443620149453929a5b7cd6a6323eb5b4cb8d6bee8385f8bb9462d1ded8b9eacffe7604afb28e67942cc1782c3814b488a841b3e075c42c2882dcf5bd2aa11957c2d3a7a90397ff84c54222e119780600d1d97d0d1452ee8e8a24843479f1da883ea1c746291255f4419d98d34241727bbf637c9f57948eee6b0e8c441ad70926b8998aeeb1ce64f5e238de779de9e73ce69e79c76cece9b513cd814ee1ec5f6483304228cad3dd6b84d139b7b7167576359c58a0042b3ace848cd70ed9f58482e677f4432d2d81f59236b4442c791869ee6f7f6475407e34fa3d3d3e528edc7206f741976654ea2f9bc3c5c8dea96ee9b687f26b4e4bf3faaed7f5328cab9ef7ee84b77d8c601e8e824d71cbff0ac2ed8ccbd9c38ec6fd1fd3d3a618cc22885d0eff10ada7f8f5c189ddcfc1eb1303241d248821c8d90449684205f7e30477f30ef91dee397c7263c417b4682f61f91d0933fa1a3cfc6251b7e7914aee6fa8b1b6b462ec62adcdfa3179ddfe316b4ff9e31a3a17ad0fe72cf98a2472f681fb5a0fd9505ed2313ed2f250e19b049638f4f9811932f5166b82194f7d84514e6d804498346bef86f7854c2a4c1e53d3e41d2f01f9130762fab85f69f1e1eee17932ffe377aba402a90ca5f1c77afbffcc98a7653caa41283dedfccf5070d72581c180e2bfc9175a3c3df234b1465e8d8b1df0463ac6bfb293afabbfb8b241a2ff98b44e2111cdf6ff107dab78844bba824cc5b6c691797745ce442fb8fa2641747c2a1f966a08a9e4022da7fbafc24bbc0415244adda237d241218f37f24c65bbc4931fec3100000000018e37df7a3aac6118cf1ba6e8e34e00c04bfff66df1490065c02ca8045be19c8029568ffbe4572b5e889e4a2a7f96f4a39cc4bddcddd872055f72048d58d9de7711cf7dd73b87b09769e1dc7118cc9330cc3300c43246108809748eedb2b82aad29e7ddc77796f888f88fb3f44fe21c0986cffad8bcb5f19cee22ccfa269268d7e5d8c206c10f6ebfefb4ea753bbd7baaef3feebbed0833f447b60e88bf17d8cef3381315f27c61763769ef77d20077e9cd7c93bdcf91dc7e3709c8fc3b19f7dce7e67a9fd9bff4741b0c498b2c9f43fe75dfeb30d43132dbd0003134d002dbd008313cda97c23183d3d0d1dfdb590a3bf8cd7a4e12fe3c9a4e12f0386655a466cd2d0424ad13433e8a0fd9fc4c82316b45b618efe325e13c748852a687f8d5dc89729c89726c8177f108f34b7e37ca313268df10892c67d4f823a3c2937ffe7c5127a6f0d57fbed3fafcf930f0c0a3db9c87831e52851c66f904a54618e23b51f0233adf63cb6d772902dec07d17ee6cdf1107f7b310f81997977cf79de17d7fbe7bef3df0fd11d1e6bbe0ef739dc7371e1b819600ce7e232a6bce4b1ca864b7a39c905833b35d52015c9351a8154a3eb257f0d8320087258a0ecceb799f5f29797e6873387317e84a360d9234b24a2fd435b4c65bcb7297a3ea87d218ef112e47039011266457b148c6951427ced99105fcb4c3cf1630dc34d42666b51a2c78bcf448f17b3902d78682fbe90ed7b6426c47f220bd15e0cc3fda4fc66a92778c99f454bf0e9e82db8dc733ed9b5749d06733da1a83a23bd788d3436da5f7be078318620e83d3ad1ded9c939f917da5f6e8e12ed0d9b1b6672003bef4d22ee88c47a5dd775efe1fda3cb239251091d471645e2d5e1cef7e870c3e7c494a3260c117a92505a3366f2869437a4d420d537a3a7181fc2e1d5514c6d391fe3b518cf3199c0981f2630a6b3de5bcf04ea9823dde1743ef0bdf03d30260439ef819cffc0981f3ed32acdd9a7ad6b3f875b9f1171c307c19898cec7bdb5d65aceda202b6ddf86ff853e04ff5296953f0b9672b499650552396ac65d4c75884724a1560d5844d5e08dbe78ea2d057ae472f41e047754cdbd473924271dd20bcc24570f2e0789bd4278b1d4e04813c329c2dd2cabd17a60e7939ad3f21f5be312d6684393a4c7833889f81e076a1623f4047e20f875c2af83e4daf7428a840b8e34fa088f827b1742e54b187e78ca9790fb0e47ca9730b3ace8e82c4666c85a5aec21750f3c41aa0ecbcab7103da2f2c5fb0e18c3f5004350090e8c983f6a84bb5956774adab1b40a3d7aef4130e6df0b633ccbeaf31ea247ef1f0373c098d1b3ac4635da7f091ddded77afc5ecc7e8f8cda68c64f464ed7fbf398ef3c17df7cde8c865e7b87bb9bc47323a8e62a3284e8c62a32823d9105e97f76b9bc1940df6ad65b81acc5120d5b764c95f24a3bfe51cb749349bec8833a2aaf3491004df73036739163d852fb5981267447afac422e28a834599108b4444953823161157626a64b1fc07c6b08037248e2d1f693c954f8261de54cc74f89e1b3c8fb35ccd68434f9cf791454f54533db2e8495e7afac625f4742f1e918c4ae8e83fb6e8b8848e3574f49fb2bb41aa0efc0bc684f94755e9ce7f339a00ede770412a2ff92734a29d0048d8e88b2f02e3f3701434a5815cdd79cde5a8918b9660f43482d1f10b791a7d2147ead2fe5b8b159938bec82da2fd39ab89e3579386bf3fc7c8c4e115993848aed5c4c161bd1131c531728b684efe9511ed1c8ee779de7374f438d9b3d67e88a710e9f05fc018eb79debf5c0de21108ae89e35913877d926be27824e30f3848e829644d1c177c0fc9c4e1bdbf8c2713c7cd32a04c1ab089c3cb32629cfc4840284fbc2ce54becc350188f8c401893e091868e6313c61aedcf8d4bc696f69701657482e642fb9804ed9b7cf1f7e470b798fa78214f32a27c6e64cc414c915c3d98e20e240e1952268ded82c5c42163a603310b7983e5f747ac81f8028943c69449c3e90994a1278e9812539e9611859e48293ace419e482c90a3cb903271905493468c7791a2fd65cca6905294c402971fe54dfdf314926a9288c450b98ca04c1c2422326213070984a29dbae84da2210d41d2f0ef30490b39fa3f261941bef8c79882cdc7b69668ff1126112175a167484dd0fe4cb43f4822a29df404edefcde4196e902752113a23266f784fca8137c9f3c4fd1ea3a0fdc727481c242393867fe9b7cbd8047923e40479830509130789a5643c82bcd179ff7108120709c9266f7c7f0a7f8384f8207e7b9a46dec8ef305ec652d7d5ed3e8aa937892607cd78eaed3d998df3a422a3f727e540085ac6938cb8bc3f8915e3fd4948fefd65c9488c1782a53d081292f978836a00ca0204041011445d989a8506f28615b9e48b3f87412c18f403f9e21fc2a023f2c53fc4201ec8d1bf83413a902ffe178356f2c5ffc3a019f9e2cfc12022a022dadf5f1c87315ddf0c08ed4cb8de935c628a9e7014b5a34eb89be422b9e8c9ebde9fe42405e33740e80e88e9a22378472420153d42e3eb343d72f7c8a2d1fe236bcbda9307b8d20b2414d1d28b23d0e821b4f4e208357a3c224723b868bc604d61d584992368570d413b47db3c434cd1a0d1fd14ff42f6edfe04da6b78f4e270378725a638358efac0fb7358f2864dc1ef10054ff2607ebffe3dfeaef1b1719413ef2fa64495a338f0fee28ca33af0ee81f7176d44984a4a85a5a2e24979588e32c1fb7b6c3c3047a9e0fd3f294751f1fe1f96a38208c953e43dee1a4ffcb621c56f796381dfd2b5e52b8adf32b6a56ccb59097e4fd59e337baef6a4d9b3f580dfb34604bfe74d11bfa76bcf978fdf33b6a76ccfd9a6aa4d67365d6d4ab3696bd39a4d6f36756dfada34b6a96cd3d976d5f699edabed345b4c05c14e057615600a045313600a05a624c01336023c7fe0c9c233041804d803b803f87a693e079c9819c0f32b80e753003781e74f004f09e079c4fc06e01dd808ac03cff781a5cf29022cbdf48008e0257009b0f41206661458fa9c5260e9b3071e492e9fe2519037a751f02920b906408f5c0dc5fcc337036b1c55c4fb77588e12c15be0fd6fca5140de1f4c390a04ef0fb21c1582f7076d1cb5df1f8439cac7fb8332473de0fd3b2947fd78ff0e8da378bc7fc7c6512378ff0ecc512478ff30e5a812bc7fc8721414ef1fda382a8af70f5d8e7ae2fd4398a34c10f30af802bc74d4023e012f1d65c4837fc437e0c3978edaf10878e92808fc7de92807fc0192f8ce4b4721f1385e3a2a02cff2d2514bfc8d978e9ac0bbbc7414131278225e3aaa02ff2f1d458126dec64b4761e0657c7ee928275e880c3ceaa5a336f0a5978eeaf1a7978ef2c09b5e3aaa033fe30df0f4c815535ef24741dee109f214d913b1142fa63cd4dcef500abcc17833df8015087872f89cd7de83414780debe8a4a6e015fb3b805546901f3e73d9b0aedf39de72568c4d42bf641b9a3c5b5d9937dac3c987ddcf77cb0b6926baee011fe9e7770c7cd124606e23af4f63d79b3e42acaf629f800319445bcabf8bce73d0ffee0e9759fa7d3c2ffbc27573ae62da4d33e9e0f352b5a8958f444352d6fcbc2a295c8081de96b4e80dfe142761c8ce9bc98f79015dcd102f4397ce541f8f322be2b180402e5bdbd4ad6e18ece27fc8e47e5617494a86c130cd1a00fbff39f4f067de7f7b70afd41f03d2b335ae53f1ff16174b4105f057794dcaad2625651f9fdad5470c7fb95cf07e4f9cdf3a03fe879f0f3f97cdee3f91cf4fe07dce0877fd01ecf87b80383ebf95d552a5bfcef55e61f3a30b8fb0432bdb717c1bfbfddbc8774406c82983e814c6fdfe14dc54c6f2f5ad19335c299738ab903a4fdb718ffaad29ab55a4e52abe7116ba58a39845620fac006cf931f11b7be7cc997fa1e945bf306c2714adf3977bb99aea0bebd864d3293467d538a8eb49aae98346afde828a98602ed269549a54d35a69449655275e179f287bf76e050e8483da6a94f30890e924b7f824a50fa9ebf1c35619ca0b627b4441f4a2c8a6cfb6cab299f5255fae5285a5574a435a82aaf0ddf8cc321643d87f2bd57dfd33c223eb6af9aa51d962012dbdbd7bed6bc87486d5ffeaa567fe5cb5aad2b2b5f7ffb4bd70770c45b69cdb57aff813ab8ff5ed64a4ff56dad608c972b1d6dee645c67f33624c8e755fbdf1e82c866f176fdad0cd19ec5bb6a5b7fdbf21e4266fbea63fb70e5bfcf41bfbea42710b57625dc8648e9fa368740ea06526ddd9cb5d9c7f661ad478435b784afbdf75fd73d60c7cfd257ffcb5ead9af7813a425fb38ffa2bef85bcaeab36e4596f8f373aecfbf842cfb15ee77939d4dab66ddb56365c9a326978cf69e2e3ff60f03db8f339dc72a56eb35df6e8a7bdca738ea2af92372f6bfeb2af79bf79787bedc34ec6d26e5fdb40ea1e6f74983b5a5c4e78a3b5dfbeec71faf3ef80b8d2f1cb9a67bfd39ef3a559c90f1cf6171d37ab375b35f9b263a3a50cd0415878d2adac1b5739cee9e434ae6a9623b7ce7e72fb24c7e93cc9e9bc8ffb24e62cd1f2bb56e719f16cb4fc8f0b96960f823aa69650a6cc5ce532312830aa84898dab096d512594460a25425574458bcca4c8b870e2823db1e1a266ca4c23733569904cd5949929d984c2a84b59132d6f3ef2e948dd8696788b744c2d3bae23e73431f18c90da0b5b76cc97af63fe7cf975824b4cba04755fc26bad4b544dd3b425346badb54bd86ddbb66d5b6283a9ef85bef2150c4669288d4c5653335333c5d1dc89c15d8283a9ef71347da73949cd9e7578963f444b90b6ecd04334e58c1c3972e4c89123478e1c3972e4c89123473c3e1c3952df538324d5292908850705d91f3410ffa91d3c42a43d4b7ac3b089d71b86b7ebbccee3cc393ff4dfd7797faf83c1ff384e7fdfe44cce825e97f5cc1c56942b3b9ced58ce825ed7795dc779f60339576ad6eb3acee3b88ffbace51c44c4eb3acf5a0e12d08aa304a41a97789de582a60322528403a9be59874363bbef588b39341c5677934c891a592310a494278de472942863af8d177e2c4b74b50d37071636ce71f73aab099b8474a95439dc4a0e8b7e31b81ba4b22025f434bddff7e3d1b496689f202e40361ac484cb1f1dca4db43f48c7226e8773671c39e79ca32854cb9c8aa3eaa6f44e8a333328a37d24c5d416d062d651bf84969c0bedb26fc1404c7d2fe8bc29153e104e470184d3f7bb197a9038bcffbed063ee3b6cf5e57e3ec8bde7614d6359b957cde1303b4cc663520053ebb0eb103b4cbeccbf780a4e8359d2b182f8899eef7919f4f4318438c9f69ced39ecb0977c99ffc9d89f2c787b19f41e59a6194d7aa2fd7bc1dd9ce92d93b3a40383aa6adfa7b26f7fcec99993b37df47ab1394950e6b4d33e21c1da602de945475b437291c419ed826bdf654499ef8a6bfffb7ef40446c7cf4bbef873fe952e27e4ee7b0e65307bf76bc1f57e8b298fe300e1680eb74da1e3e4527484394a668b7f209cce2cefff79424f514031ffa0633c104ecb78ffcfebc61457775e88ff8c41e2e8bc6797972e41fc6396b7d86a192c6f3f064b8c182cdf5bd008a959b247a1e3a749c9617d8f3d8a1c339e82d39f3d26c7ef452ce3322980ef5950450a467ccf1f7b4c069e82d331b24391e347750cec50e4cbf79d2ff4f79e0649e37b4ffbacf6597b96ec312f7d2f7a76eb384cbe48ea1fd83da7c78c1e786481e073381c6debd1c323b9484e3820c945477f9293578bd57e7b269ec83db2c3bcf4fd96bfd732f8db6332f7fb0f0c43ce26858ef31302ef4f19b47f1033b0cb1d95f0febed92439a116d86eae1458e38873a4195920de4334387dce0fb2f1105f7b2d07d15ef41f02e361c8e170600cc7e138525a26c4eff13db2104d0ae9f1e2afb6558fdcc2637bf1b717f3c6f252cb96b5df8634a1e5edc5f9ba4f7a8c0e38e79c1ff86115afd3eee1ee9135b398d29e33678dd0e6e1bee08e3420d593bb412a571eeea41f1210f4017ee7bd17c1981f158cf1cc414247d9790ffc192ea3d06f2ffe1e5933a6985226197aba390cc36d7b4dd3389c7b5542ed61148cf12e788437a7437954b2c9401ce3ff072746e61071ad0db9900b6db4dd36bceb7537e7eb79934adae1720b47c4b54de8e8fe445c1bd65a8b55c0afb35dd7a97893fbacb5b6b3d676d67e3f7c16c3759df75d4a6696fc396e9c5e55612127f85df61adccef3d904636cf762aa03bf1755a2cc8c0acc624a5afcfa414468c9cb20150beed41a166568c9cb49342d7b72ceef3298922f9476be6b83471657733787056a4e185b1529622466a3a2a2525373bf0d86ea88e8d9753f3617a7a22337a367900de6a5f91b11b7d34237b26292cc4993f288dcf07d9c0b4b1d82327ceff3c5e69c5ee775ddc8b22f69c62535d4c3a3155c1ff33510094dcf69525d31698012943a76b7896664bfb3f675b098ae30a54c32269567bac29432c9985430c018cbc2624a99ae1081313634c5e54da9d09b64260ea94326f0594c35a694e98a9a02c2315d614a99aea829f05df0e652f4b382869a9ad053f74a4c2dce64e2c26463ba713961f96d7aa2dd0433416179a95d7e9ba274bf4d31a54c57ac9854dac353bab7293d432cb3a4a38747df619697a0cb87ffa5ae0ffb9ade232ba4638b9ec021521a44127ef8fe63c90f1c284bb4bfd786bb4d3317dbe760ef3dbcc9b66d36f3e8d761fb36833b5c77deeb9ee3bc34fb8648e9ee3dcff33aefcb1bdb2f795f9a32847d1730c6e6700fdbff7087da18cb81cfc1e06f327a0a738c2fcd385f9a327148cd1922454f9c077fe49b66f30652b5fdd181545c4c974b333a76dde7a02f90eaf3cae11d061ffc18786f523e3031f5876b9a31155969df2696098989a6b34dad1a2e3cce6f1313d38da9490be7a50efd3639d1fe729381200b18035abcc96808ec3208e848477fcfc340e8e82590ed21daf3c3ed1efcb6e7a1fd96836cf1491f02e3756f83d0d1514047f7fa70378735d3293a65fa7037c9355b1c1b0e6b769d4dc6f197a2274c46b5f626c94572424ff75f97e422c5b4775b4bcfb71b8d9ebfb11cd5c2a34710f17be48d35b2383498a384b6b4bf0b87c56171387ff11e02524db95b4c8944ee773fb23ccec77d9ccfe1323d5e8a1e59c8163cb67fe28568dfe36d16b2fd136f5ffb1e5f01ed7be40a6cff44965e1a599deffe875933663e43664a8d348efad3e584a66a0d57fc96fcc4ac86690f0e7788962015c9652d0eab4aff1653f7091803d3fe2aaf24aecb4b53e808a6c0d437dbdccce3c355018b00424fd74d93cde5a89616263621a296379788376ca3bd868edf22b948aeaeebbaee33a33d07fd1a47499877e50fcc5f9fcfe3c3ddfeb25594dc9cef597c5f472e4745fbcd5f2ed7bdd14c346c0a6016df6f1007456ca08bdc009481f6df600d62fc06b1d0ddaf88b040fbcbada2f7370365c2e7e40dbe608356fc4f5083695f68b128cc13f79c229386ff0805cde118019f33b2bed66bb0196335929173fe2ca654f2c5bfc322112ace8835902f3790220b16b3107b303f37f2c59feb38ce0bc16ecee0a9a99b33d8814bdda0c1069cd78929161ac8316887a2f7b7c5176c110b71071f2ff4c78b1d885888a9df9f4c915cfb1ff088ad0d14868c7c33d6e4249c607246b149c3bfc531122bb2a4868e631397f69f3794d2f115333e7127634dccc8c5b8446a55d39c4e8deb789fc7967c113261469ad023e20af1128c09e2657c0e7aeffd7bef28363ff62d1219e698c7a0fd496e08e50d43e74edea2ceef4f8a42fa4292da206fc4e48d3248121ae48dd173de9fe485490a83bcf1ef4f12833cd9bf798fe090b747e7df2435687f9b0419e2910b3a3219b52047ff20f028c44b4ee91d19797442474e922d7f0e3ac5d5dcc7c05388a610e9ee470fc37482bb43a3e5edc0e4edc0e4edc03ab0fb1dd8fd4d8383518189a20a4c5481892a30510526aac0c4df353618cfeafb56dfea5b7dab6ff5bd85f1b81cc571f78a442aaff21acc47e5f1a83c2a8fcaa3f2a83c6fbf8a2bccc7e663f3b1f9d87c6c3e369f7798cf8ce3ee1589fe67dc57318501b5628eea625ea25fa3c638fe8b44f70a20168b050014d32fbf69e80de2b8cece495e8eba00019e16e0e987358ec2c0d30f5f8eca80069efe5d39ca89a77f6b1cd5e3e9df97a39e78fa77e6a80d3c7d71e5280e3c7db1c6511d78fae2cb511e78fae2cc511f78fa2a2b4781e0e9abd4382a046f80dfa2d3ef11f5bb860d22de245d387ecbd70c04fc96b20428e08798337355f2d48cf3a532657306003a435742b46a82a0ae08bc4892cd6484abecaded3521c00e02ec1fc0d403987600530e60ba013c634fe0d9034f1a2fc977024f9597e46b0083c04bf233808df0927c0ce0d14bf22f80fdc64bf22d80e55740fe64420232027809990412f2010e902323b4d7518464c00260248b02b0f452023002b0f4d201b0f4128e1b587a89082cbd640385a5974e587ac90005c0d24b04c0d24b1573311f40de9c00f2be35f216ad3c8dbc7fe50390f7a857fe256f1a7a7731d30e5743e07d59fbdaec0b136287ab2dc2347d12de2a2915151b4d1f7f0c0c847c173cc22d180666c1221c92e18a9b7976b8da624ad31777b8e2e81daec2955803ee70b5290b6f4ad381b0dbb2635bc9178a049537666e3962b6e848432eb6f7fc0b8dbc27b5aee3395cc917faf641d8ddeeb261b824648536731e31ffa0b77fcb11f375cb119a8f99b567e5251817bb32919d7d4ad3d5cae525dbaab1b971795c2f9597649c36bb299555a9542a1b2fd57036f746e4fad708b389d5688d349aceb4d567a6cd68aacfcc4bb4e5a51bce755f22d8c7dc15aebc44fd6bd88c94158e357e14fd15b1aa5583b7e27c667a5cdb8baa2c6569185b357c669ad6cfacce16d5402d9fd18d65c385ab70c54990a55154eba10698f3a0ef39093a8e26da4412d46ad6da2692e0e14a82471393da6882879cf2c60847c99f2f92281b36f48c695ddccdd5251ea363143a52191d47d08abb3d1673193dc9daa2635511a9a127fbd4d65655d570dc951eab35746cd525b5555bf4546b4dadaddaa2a75a97d0d3ae345ca0aac760559b15ca94293636536aab3585c59af24d89c566b3a92518f34db99be3389f56f024697f29ed9cdfdc8b9ea0d093b7bd27da2b9753985355991066735bd0dff77e21f48586c2f5f6a23d00401505c60b6cf05b68162d68d40bd8a0310f34149bde1e0483287c58a8f440b7d8975ec4a0d562ffa3b98e89f6ec37b1955c8793912ffe5c0be48b3fc5a09e587a11832d689b92725f8ee2bc37d3eedb8b69f7a734b728512bad3c6ab5bf719ad428ddfe037f88b678acd1e0569a7dc90f73d70dc60d8bd5043682e5a8da721ef434ad76aad596a6bdd6dceca0f2268923e40d07d09343a1e37cff1d1287a741d298be439ea61c294dc20879636a37c2e973b0e42ae6521e11cdc9685b6d1e2e1bae3f575f13c91b9c15f245a2b8154c1dd4c042fbef120703edbff1be5c8afee6525cbd5fcaaba043a6d6f982ca7396e3381f5ee5386b1d0ad71b106adfe903a1ba52edbdbbe771f901f5bdcf414d29eeb5c9e53d3ff0884e6ff93d5047e7b99726993ae71633b90e8cd97c568704996fe75b5311eca3fb2af4c4dbf5e66d75fb6a22c2591ff53bcf74854867f8336f4a350eb3addf717f449739eeb76ddb7ebec9ceb799730ed4a1e27da7c26d9603ead8de87dd388edb54b49a5a6bad35cfaffe22d6fee2ef430c4aedf9e73edfbe7bf4eb60a92738b3294547f76461cc936d9f6d5be6681fdbdbed277884fd9a2d365d3169ccdcd2bd7f18d3743e108eb6f56bdebfcd7c862b1de7bbcddb04434c579852a62b260e3046ebba29a5e85d6534fd5d7de625eab556277a87fd5a70b9946f58b35673cf94325d21e57b609b7f521e88454ca708d725a8e3fbee8d49a552a99a9a989b9b7ba5be370646e9e6034f92bccae13ea253f7d20d52baa59672db577aeabed6180ed58ee5dc9ffafb9bfef33bfcd191e33657030e9e24d597375a528f7aeed58fe24d7bdb4731a73dce27dfe370389d24f3a1987fd05a9eb1e0ef6da67b79c9abaa88227474cfbf0dd431b58a148e8a4cbe7ceff2521c6ee7256fd0f7efc81ce5e36b08f91d06f9cde998ceebf58c97fc3b2f79635301aa01ef3f6928cb511a40c1fb73a3a344f0fe468000058e52e2fda7aa89f79f3733465552bc3fbd71d414ef4f5f27f805d8805111411f2dcad1022302af800458e0310248070000077e88273ef02f1dd85fe3a5a342f0345e3a0a044fc4d323d73f9c7194874648de6190ac024cc57b68eef5d0dcdfa13fc54952f01e1554504105155450615f0558c250ccd1546009e3b17194bd71540a5c9e97bf0a52803914603f01f629b04be14e5313366d266ba69cc8f1587a09f521c0d24ba70701fe00965e2a801158072e02c76006602fb987348eb2ef300bc03058fbe7c00ac07bb2a6cd84d114b5a1304f899cc65b5ee3aa99158d5119a537ae174dab4635139381f79ced79e37ad1b46a54332c78cb9894c91bd74bc4d763a3fdc3cecb1fec5c2a523c445466dbb3d2fed63d368620e082c1932429256792e8e87973f2654a701ef1cddddddddddddddddddddddddddddde6c6f582c162355a23cdb344ab3b43575ebae15cf725827d6c94cd461b5f43e49c367adacc9417566366b562b168685aad9a1a1bb7f11b182c169369293da5a594d2c6e6e6c6a5652c9552a966b494524a989c49299bc564303d6f606c380a16bb366636dc4b4059345cebd688e6cb5c52a6abd3384ac6cd6e4aa4fa9971a54d1a0d66c266ab86b3b9372217ec3561300d43578e4a71aa3b235a3d6b9c349b5397a3643562a353d7e544f745e3d718a7739d2d27b1d97d6a02f08327497b4aedaddb973728205ffcfd8990a80acc92bfeb0d5e48a906edf4c422bf36d1f28b5b003a7e12d1acb5d26fc255663820a36d489171d79e292d6f6050c4456f09db603038827fa536e869d7d805d0350a4069c581f6e17886128341b9fe430455d5d2d2f24fc1229ac8cd655ab402762fca1e9106bf0384bbfd73d0edc651df6b322f691fcf1d253bd9f376d9f5e47bf583e1adc1093d69afbdc7a5f987324785ee87211ccabca4793c0fc27b88a386c0d0efbde7f1bd97836cd17d10efbf2ef308fdf75f0ef20d8109374fd33c9e07c578409af71ffd3c948552c259d8e9743a20a803adcc2464421fe34359c8163cbe0fbd102fb774ef3d100f448c2ce4cb2d5d6e510288f79e0920f233110a7de73da0f7c5057f7bfbeace7718dc3a1b2849c8a3a1ec1ff7d7a745b8c5730fca2603ad875b4db9455ae3565154d0b3c936d9262535e39b6c93755893753c1e8f56dd652ec5673e859ee67b5fdc6e0504573a1d7f4abb0e7f2875ea9a264bdd19af83393a6aa1147af2d764b476555a7ba745807987ef511a3ecdbbaae8cb0e92cbd1a1df0e93da6f9fc9178ceba5b58f69ed3d30566705ef217ac5d324c6e3027758edb9912fda7b506ed7e5af05b7fb1dcabacec7e3f97c749cd7e382c1227aed3d4d462eafbde746dea0afb5bcca7bbc90385aa47b2fbecb6060d1536cb50b9e82d3f447a2f738d148f4147c51f62874d43ef03d11f81a4871d5221618e07ba0f79ec3c01e73198114533d02bf0504dfd33e9ae47b16d1973d0682147c7dd8c33217fc1dca3cd8df33e9a781312d4a84fe7b1ea12cbd947938cc4be077efe974b2f7c5ed3cf894d2f73ce85786e88e7a3e8753ceabe0edc982d65ebc78bbec07e72918b349b9affe78dbe7c5ee6fcf4ab920a59d0f65f4d4bde74ef47699e7466b9d1c45d5db93edafcbdc8a5b7146389a6e734abe0e7ff0d5d39369aaeda16c7374d4fe4347cd73b33d2ead85323a6a9e4ca6b5f7649e942fa5fd37434f2d94fb7832ad7d57b753edcfc175a39aac0a3ac4da21b4188177b8fe969ea8e6d95a6bf305ef702b8b9e3c4fdff3e0d07b7e9460b5f12a8da33e345ea29cf8b1b9a21f55c397c99d5afbefd2718b569e99973ea90f8da368f862de377c50fe7c6c3c78d7161ca4becbe32d78d41fe520a3afef8283b4bccba75ca647c41519a1a38835612812d10aa4bdcd27f591f98c7058691c455f70edfb53edf7b79a302e9f844b9d39cac57236a12c9c396af494459437a73f2f1d357ee75bddcc897905e2561ecd256bd9f330f0fea8b47fab4feaf3ad385d4428572474a494d31ed4a8c8e6d1d428899e44230d5badaa3c79c3c8dbf3e1c78755f178b4bcb718f0ed1153fb7ff68ffa9a36394e0ee072be8245ecd07009aa4a73a295c848e741dcd13ea4bde8eff1fcd55ef4bc4d7b4d7ccd93378cb79a67e559de93b7e86d16adc4d7b2967d78debee7c31d2aafe5ad7974cc3fe8cf7b3efc64ed3d39dc833dbf05a9d9a8b46c53d7992065a84640000000004314000030140c070583c18048286782940f14000d8bb85672581e88419052c818430c000110000000000000001800c95febe77904d55aedaf0581959be8970ab04f2d3bde81684dd230d2d6b6e98fe73c939ca94c4d1a57ffcb80da3707e008783b8a2aa4fd6e56813d3a96c82c64553397b0ca67712cb5f162958085bed73d90294af24ef1046f62304a0bb3577372ac0e8e33958ccb7094bc4f2e469f854fe522a40188a4deef153921c6e2b302bec827d21ff103e13da249f2aa01df4e14f0bd78da084787c99d7f2b95769f3ccb9f8af5d7f3622a3973b9fc0ad2756f3f203f7384d14c6cb49ead63555bd81c862e319fd6477952c5b73fab47da3e23d464d486ccff42a64c34e3da6bcdf037144d87b7b37862e4310adb66af60425e0dda753dce24205a04ad655d22203898036e35767b131ce233d9f632897831c97ce9b48249aba09d65a3e36c023e780519c50037ba5ee6d89a27379abf14e6e63c610c112f1e1c7175e5c9280c7075e124ec24d3ba25ffa8ccb77806f2588115b1d928aca3b0a5103816d876c4db38aab7794daea5b11fb36d2e4965bccdf064cd92ad586f9b92e45e6f3394bc9264c342da6624bb216d4625bf8c6ce6dc3629c99cdb8c4c1ee7b6a4abb24900dc4f9e90e6b96dcc1089dc3618c1566e1b5a709bf6c96db29991dc6695f8b5b755dc6152f8399fe9c4391cd7b23b3a465da58a0ea3d5b4c79fb70d769c9cb9b48c211935a79b6f232176336eb64311ecd97d9b177b1bac925ff1980b6dbf2d33e52655de5d11e6e6fedbac65cc9d7c5e2b129cd468fc1743c1e5260b6e247af309d4e3cea2638d873226dc5cd082392815fc5dd13df5e9f3bd95fe9fadfd1bd915ca99d7d60715fb90e396d09afd90991fa6ce72d6ae55f53d46fa464806d153582f42af2d4834e81d636483defc1037e8a55dbc144f88651575f76cee96e62ef09167f26465289e298aa57324d41b9ccdb00ea486e54895920aa6e54ef782d10807bb96ef674387e657614b9c2354387d8a3b5b26328bbfcb997acc1872de0e256723d5f9b77e0a4e1e3040fdb2810733f6dd7f9e402ca560517376e4bea564dca6fac62242c7533556715948f2619466edf17b86bb044531351378a50468d257d0282f0e9c7cc4732ed22549a04541942f1b4696f599cb212f465555742568d7e7c098d1d9e297151280701ebefc3a0129b24a9d54c143fae34eb98ef5114ae8543959d80c774bee7bf9bc7f70f287b2a9186d588d85053932a30b2e013aff5e983442854c2eac1c7633089b7937a2d309a5deb6e3234b5f0c5541f7b70f16ceee1918e326b7945c9e3f03be9cebd5f67faa2f24ee774f225d8ced770204a2d09bafde6ecfeecbe24292b66175e6a6d4e1b87d36b79232315fc8bcd83a12c87f3658713e8af9c36fb648105edd9b659cdce2f334514bd232234cf164481eee735a338737ca2082406792456b8b096ea4795095cfbb1c1f71c088423ea056459feaf0585e7bc58f57ec92bd3f04c07f72b8c2a85bd0c8468c49e02152c818b1ec9a14181d8ecd1bb4d86524a1cddacf3ad2582ecfd5e2b8b16b3e362d9ef317c6325279b8c5a9030f30bf93a31423a2759f2adb55953ff86216b9e6ef2857aeb21e2a47cac32ce1006746b37a3f578253ba0d95350490bce4b2f3499f217964d20846e076d90c9ee24b5b2dbea1c9cb4897c6405c2a2406531c5c50136712887fbb16dc50647b0abe313962f4f4dd73d3323e383d99d67b9a273f9aa4da5b93e4e455ea7eccaf83c934a9e7da6a9231fc97cf9d0b53ce7cf5b1ceaea38dbb72acdd3c87d7c8fa8aa48b6a19a84b00a28f800847cba43fed38de19d11fd633c2aeba7235630bf3afa0a35834a3d6b49bab35d6b79eb04d7c445660ea67370b555b4df870f020b146a56841b9f8629c99f3b04d267224f8b53756b3d0b0a0e60bde35673c20507c5c48f2ff16e7503492aeb57bf01b6c6b812bc67ea1ecbbf0b031e875ed0a32913bc9854db194bdf5d12b7dd52334b2f6783fd6f2f82cac6b417d3098545131f1c3c84e889ac4e0292a056ee284f2d67898a82d1fbbd002436109e98b5ce7bdef329c68e62e908ef786eb1438360b19057bcc21141432a20026640cb36c56de4f61876b7f6d35a35de253916ac59cbc1fa4f02a7a1af041808b790a0856dc80023e85dc3498d705b42f440dc0a2eebb0c9dcd82b899f146409bc9a1fabdf3bb316c6034916ace17a211613939ca3e8d3c390cad36329d70cae2cb3767319dd4d79162c91c54d2a85e2da1cc0a2801ef5cf3fb0d97ce24cb1cba6af2263c8d6c991b1fa2fe3dc3787660cbdcc11701f4826def2520edbf7deb62f2afface23bd8b0095b9805375f9b0ed7f6c4ee6b005d967b250df3ef63d4fe246e6ba92cc7922cef88eff1dc74bf65c60f27083cda96d050883034ea7598a01c11b2802dc8cab5cfc27b35da1d73833576e8557a822400b5bd585af5812ca8a08d98f2019897bb5a117181e7f038055f935c095d3078fbfc0267e070e1c80a2585f5e19b2922cd341d83f28490e640fc385ab1c414a26dc38280981339731c4559d3439a330cf3c47126173c427e9baa3cb8412951e26bba876310f8f54f486c3fba11da3364caa37a284430b62e10b408ec703f9c888e4349601774eec887f79440c7abae78e530430465b7d5741118970eb1b23b0241e5eabdbabf76a1ac9b2fe72b7bd75351a193c6e088ffd4f06fbe1ed41a73950c41a5baef65e42558c42a522ca9038e7377772142ad6253bf93362e763232364570142b6e9233cbe9b85e523c902ed995b748d96c946c3e974a51e59461ffcf583e342a71e3a852a4928038a38b9687d4733ae18ee24d633c027a8188c34e0f304f0b5f68ac504140b4a04d4211e49c83dce9ce7f2a37b73e53c526dac652e641a165c2c18164ca7a08440f8083889818183723a460321a42c05ba41bc3406e3bf9615fb28a5075b4704ba182225100e0f3e1e7492713e49f50010c3499fb0660c41323cab9fe9091e5c25dd27d9a74dd093885cf2a2e957123b2b1ffb447e7a7d3665d295b8b15632f69b893257597d6ee683e8bc2f230d42262053746ae437cc8f1b353d6c19e9cfaca2227085e9848ce59b19124fb6028bf096dfec72307c2c3134dfdbcd8cdd2e70046be2db8fa612ba8dfd670472722dbbab669f9b704995bd0f57e58460547b7a27350b9e704c6d2c50c4c773ebd728c4208947a7bc0079d5c680a90136f918cffcab72e0cd9e553311457efff015d06cdf4b0ff355049198d9b7f50ae4c17d393c879601846367b7bf5a92bdd1e834fd64d04c9d37841865cdf63cdd306d22fccd493d78b3bafd22c09256d494c052a1ff4a7bccc4f9175640cfb8267fd263ef3345293258c333d7cabaa113c694648d7fb556c9b32b6069996f98c3140faf7247916239e5e7d33fd8388654016eec15c13f123d99a70f72d1f00ae5718ef14ce197bafe24e23fabb61c3aa369374f72352c6ae5e7cbaaf46f4bd8612748c40987ce46c6612433b5301e15703f6546ec611503d4e09c9c67c0908f3ad70b4fe730fd0841a684024ef4f4aea9a40bec0b4152c37406a963e52d9270445c502b3c6e85bb3d1cd558dee777414296561926b44aa3e0569f5fa303ff5444ef4c369964662cd8a1aaf8237967f267f25df7fb290c8ee68e5c1f65aa6404c916792ec377a0e8e1396ab7191c8c00c5b7f833d76e9437a2d95ed44aa40c6845c1c18e8d3314e294f5783da9c66a89e45c9c61cbceb7bb467caee89b4153c3e36f86b6574adcf1d66031fd25ba54d90fd47180a6176bc17e272deb7ae68de67f00434e0e957dc47d11e8ccede298db7ea34eb479f32ccdc15dfa4098f393cb92d8a80433ca18fe9004fd8750615f4f52eac04f5ae2c8dc94ed6afc5cf095fbee44e1ceef8f88f84950311765c3a78c4eb94611f08b540e5a1d95b374290a81c66004ad89cc9923847fdef2706d424cdf6405374062db1935ba5c55232c3efd4021f941026fcbb67860e5b59de05e8896cfdac1c959b4c89c89c0c59a67af80eb33d816882b9effdfe1f738e33a3a8bd9beda9b81e27975d9c7d144309a5635acc883de2983a1a3dc4130cbd7418c90e684ad9e2d41766e728a08d9f8a5184cea67a0adf4400e03ccb8f6a24389eb4fdcb430900cabc8db1c36a9f6928adbfbced07c0a561c933491b827d0752bb5c814d04b69dfba629ed81784ac3381d7855dc660cbe606f6e6ff39a3f6398ad056aa0f21f4bd2ce913fb027387f5ec18dec6be97e06d0f8f89c0ed23bbc7614244e0b6d924b726664be9bff86ee0b925a7343621c2bf552afb6e9a5e46b40062376c4398ace533bb64a6daf5b115fe4c8ccd94ddc51bee3cce66673f1d5983ad4511aeb8475a77f61b9a206c354a2bb390954205b6e49df6cc1efe1285da2b296ba93367abfab716ed7f9fd53b82fc1fb8022873ef1ecbe30ee6accfaaa4d62bea1dca5d75e54e5bd192898142bd450da102530c222c5477fda1f5ceaa45bb3499b50cf8ca2105236837339b463287829b001412f9ecdbd51d06eb03d3b72ea343bba6ab7cd1887bcc897fc97a42b2aa7dcac4c9c85816182da17cd8d6be9db504dbaeeee62a8a9622ccccac0ef9d6587c72f1c70743aba85eebe46e73489b923860104acf1de7e077c33960fb20387a381a5c41dc1533c2dd721c9d0ac47777ba24013a167b6931297bcb7128ca49c40c8bf6981edb212f2dcf61172cda1cbe9d434861a1a2c522e0cbbeed5643c0df6f978a6481a8f9ddfa4f6ab776848f070663ee2896993f6763355a9ac3183f4ab37a017f4364b82c2ef33394c475302dd230928c3aa3d5259575a2e10ea99065fac2348986f178b582239b7c441cdcab02dd0a0c9c7edf817e10a139591ab1a8c96ca23f3078a85ec61f09ea40e43f1dc505ea74c7f28faef9872c5bd211d1333e5ddee39faf6974e2ab9f24be6a4356ea1cba278fbf3ebae36ddc817fb7839caea35bbaa369dda180d831c5ad73cad4f906ba137fbb935454c795c5a11164ed4f6df6ce55adfd79cbcd89e3fa13096cedcfb60a5b225c4c3f66befa73fe855d12a6822e71731107e3e697dcbbb5febc33597a7ce4ef60cbb06afd699efd7f5bdecc7ba267c299acda0e785cf9412cdd1cc9060c08d3d4d9553216efe18f3fb6903fef237f620161f2ded7a7647669f97312ec8a627bf4c33639da7fc6bcdab2345fe860db39ecc689effc8d5de48c58621e9d6cc5cbd962faa9df8ffa9c39c66e08fcc9cb93b021f88360e18fb6c41fe18d3f14227f6c54fe5c9ef9f34fe74fccd09f2ca53f52527fa85b7f0c8ffdb9b9f6e7cffd897cc4b99b8ff1c13ff504078f56154376f38fcde89f2bd53faf64ff4477ff241efea3b9fc874effb10126a49cf81f62b52d8f0b80e65600916500595203742c037a99dd7d60598280ea06770469962e955ae4fceb783e49983b5458a4bc9b71594a4ef00f3c380e4b534b8cb5b0ecec63dae4a12e8a4dc14af412b4949242497d461de1aed3ff94cb65f278c143d0ac9222e041c6a072caa2a35cb4de0c83adcef46f725fc4baae6b4fd648dfe8c26f0b2a4e5687e6a8e97f0ac27b31e93f071d741039335446ebc58f96013e340d51c4243ab18921348adcf9d10ffee08f7c4bf9a55d9a522c6d694b1cff522f4d299676a92bbfa4a0072f9358042cb309eb3a080149852f2646e955a0a0acfb0f13286f7bddcf182013db059d8946a4e3807181911c2be80377edf7bf8806af396cf0bd11cc84a58255383b0541f388f05f46b619fd385e7142681196229de033a0af219072e49282cf9691b483855ac209e826bfd30badfd140641e22c62cfee806071fadc417caf47ee6af436b1969451b96af439d23899591bc7019b71cb0de558b5e1fa322f91df4cb16c9cdc221a710172461ac1dac7836a44d9e1576929d9c94ef6d3f67c3fd35e472c708d98a7695f8b0db80b04e6fa68e49a14dd40c0f4b0766d9020054f96b3c5498cd466e013865e7b632f87606dcbf4e7b193defee3f2e11ed5e7edc7c40c8c9ac1545c873ae3af31df8eacead034154872dc4c0dee8351f401769209db7906c424275133812ac33fb330f0269505961fb83db7524a47809c22257a73993919514ab04892d0ce0acb0def418bfc7e150aa3ed0c18d277d3a24e79438ca91524ae9ec1dad65da2c47cd03e18c9fb58bb7dff7681ebb1db2bb60b4003ec5f3358904da0481382854037da8c6ef9bdec16758737151bbdb73bf18da9b962cffca6199a1b959231fc83a2b83326e363a7a82c5a6ce658ef972d9f2998a3da475566a971227420610e3e7e0c9812f99ef6841f1ecb7b9975a1fa0107a53a9ac017d8a272982747476a3aab7ff53524e12727477e6b5ff8ea0f1e394aacfd013953fe6825414f06eba110a8fc95fe080c949970f901a94f603af3ec080fe773472dcab0fc040f5b264409a05f78dc4bc79438256dd1a7790b633d90e6adb25249349ce62c2dbef2d9027797758c9a0085477f8deb637066045e435201e5ab892918a60e31be62e4b6d0189ee85e7d01893fce4651f4280c701051133169005614107d048f963d6c5cf65837c37385e4c8a06a378202defa1227169cdd1f56405611d9649e1a86d6c29470b6bd1cebf99387fa13532c6434888c3362fca0fd077330c425800956d1c388789c42bf660645fec50e75949b781e0d9c447ad100e76cd770e49c690926df4e1d1df02d2ef999580aed7fc3a6caf53a950a1746769bb479aac988e45ab81429672c24f6e9340da0512e4d54ad627173b7622e4aa00e992946344c4c1e407c0e361ce62918d150088b627124faeea0ac626e736f1fbd0b513f73df69e85b4d730f3b6029ca68920ad8a1f6b1862333247301c352309f570dc69329968b0fd7e7fa7e2e20834092a9a586a928d48ef7a2d4bff78173a077b38bb4e25c41e2640af07c4f08ada608252560debef1e1e66df9d1037e5b3e18de348a058b10cd14597f6bb3a187521a4182a345f1284d5d25d4fca9208ad9a27c0bd2b0471a04884b8089a2c10048ee6f6111d14381e5abfac854c53c1e0aa72610c98c9cb0fdc71969cee249a5f95bf6fb0cad2e095a8af2d6a8b5d535b800bc84205331151216a8459de51fee01db4f2d2d8f3900908a4ef6eece43f7546bc373cb77560d76a76315921ac5b364e9d9c079d4d4625db1acc0581045d61b87298d406dcd666953f7236846921b8059d0c91cebf6058188c0733fe127024d3beb34b24f5feffaf5ca2e7fbe9c5d0ebbfe2fd903798968c4adce4e14e71395b8726cd40754d4d68163fc75a42987ff3732110ccd4edf5df0964d2b2f7e20d040bf72af6f29c44daad7b770a08faa492ed3fd502e7704b6410e1badcf539880120d5384cdf4f0bf7f08f335867228e4f9411a875407a560d167bc300c05ef43e91fe00afa1b1bcf43700344765d3f625bc0af1804f63ead4a36fab30dcda79c9afab9d4d086bba937fc738902d4682420c830c1c6ffcbc954cf9f0198c5c7ba99302337ff0f7327046e096aad279d1f02e4f555f5c994203e6fee8637aaae1d9945bea72114413b81a3067158ea5824bda3545e7314b1d3f58c8cbc5dcea4816ed26a1339db110d4f27985d739afc4a9115226d35155da4d67541781357312990b14cce4df7f1859ea22c0fe69f80e97931c5fb13cccd483a86d147d2ac5afda61a8f7a03271eb95044e482c08a6279d890cbe1285274598a053d82f8d6a81ce151a050b0ce2897b6d018258974445f4b27255e85e242e9dd4686eda3550b018a5ec81a2c812d8404434b88992f841a502904e3284ee2f64b322911674e49e26955bc348dce2bfbc9c5ad028c8a507847bbea908a91fc9ba94b15337a621354f4fb55272364bb7707b32a761abb8a41fe6709cc3ffeaf324229d0a8498059d08f97a7ed29646a384fc3893493211db29c196b0e53793da356ac4887727f8fd41309061c5a1544409e0080691914eaca5917e682c11e6ba7c2c2e7fb106e394f8ac04d6ae8d0aaaf85a962f27fe1f1d6ec29b06694f62887e1408351e5bd7708751a76425c45895898f81e8728620e19ca2225ee43e25f7cf07354a23065c39bbd218bdcc4443c87e960aff357c96319b16cf4453ce912882166ee57f11ed3478bd7f4b0d862dc1a33a6a7d29a58f86925c4d8876d46d6def64bafa072d6237c575c237a26959dfc1ae580ed8be267ea5987b6f320c4d78ec33eb6b1d318419fbad900307154ee31013ac64e3863bbee85463fd490029e1051b38831e1e5534df925c6577d1d160f95a385aaf94914e3881fa96b11a48651a593088806a418af826f563c9fb6d881bf98c87f6baa728f996314639432d6d4390bc8a36bf7d56ae1f68ee4898f83356a6d39834c532554e4873203916c0714bfee07f3c80b050427915b3f56e54d1b9048119dae93e4ebfea530522292f8cfd7c2337a197cd31c4d6ad8ae8cf6693e58088800d74864a7521f7cc1572b3e0ad7f3359ca276d4cf338bee3517e8256cc86c4e284353541f8a183d3df669228f2592d69be4351d540383c41a8c90b0c97e440b04c0156fcc5a6d7c3d84b5cb071a3120d54411763369f3ce5e4960f6a62a363cfe7ca6aa60a677473bec569ca69a2f5db13dedba389537b4418f8a434b3d7a1736401eea2ba49ef4511bfc8092f792132ac142fc7683dccaf718233ec07287c2e49abf54a5f98223f591ac04ed8bd225fc6bbf7f5aa5961880c43062234a22f05324dca22293481aba0e18519c04a2065139137f082161cb8fd498e102bcfac44f33889910c6524596dc2cc4e9f0bab44ddc5cd54c25a8f532cb6ef62c04ffbceedbbb2324a13ffbccce21a5964a0a7fa93c77e138f125ba3ef4862255943a7df6245aa30213642f8259d42047c09da0e3a30daaef0127fa454f900e9048e93bbabdff18a2cf79d0ba145d0c7435390532697066c37ec91604136b3c31a69507066b9e0cea91bfc49827597f428163476b1e3feb79f47792549f1a1f7243bb51ac5fba50cbc49eb8079231bf2663712eb5de80c1c995fb8943b1e5210bbca614ba1682d2c03e93007ae1104d272890db7dd0068e601e0d453faa008bd0484e0db2c4267b0925abb59dcd64e20fed5e9b435b91bee5b16a5ea1a3aee2ce512aa4171293b8d1b2f176e84e154926f21630c024aa5c653567bcf2abc51d8b9a0c95d25009f5a5e52755a6a73c720a2f3712dbf291f6d6c94738d0371d6d985e2720feab7d563f4875650bea033892e4eeee1dd92a4e269531dad10858e4089aeea98e7c302e95b92d7946319d153bd9b3cb568356020b167aa94e3b7cef30f673d39a1df178bfcabe252c543b6c5b41469363864b0827f2e589156e7d320fba9ce6c3198c53b7b6e53ad4da9ca374483221bc1620668193b943f00ad0b5db58d2761d5d4942b5ebdd0a35ea323a3f4512d395014e04f5955ddaa5d2a8e5c7722ad141298b8d1c2909306b50986809705c370c372de652646ec96b3bd806b3d9926b10ad05f222dadd7df5fe7adab69403a161065d3603172c01c7d5eb6073df62e4232aaf49fb99910262062fb53661f424bc75e6b4811b682704d92934e9bf252ca458f61e514fa9527e6e49532c58c8f38b9d62c76013660bc5dd98601e0afd3ba91e666aab874c81ffa42a601b9d65fe556c375743aa3fdb240b633d221269785d64192ef8cde39c925063f0d3e2911be2c70546552148a5afdb6465f57482f531646f93debad3acc871a6bda7ec8c6daf0d91fd6a21c24728ee44a999bbe1f6852ac8874970c103470ab3bb6c0abff1543283e83be73e0b1584f7f04e5aabaa7920a07c8870a3fa29ee20ad62b36e1cb0e24b01a0c682a109dd3cefbf00777a17bae608d92e285e933d9da72f66e89140a2d7baf78b04867b2b1c7192c78f5bdb8fd5e7a9a9052d71e02d788c62cb316ad66b18c321a34071eb17231416a14fa65d12cea78bb89c488ba8ab1749eeb51e1c008a2ac1b17c20aff8d8d81ef90d366a376638ad184d9d81f5b8c9715e32e15c39ebc5f56fad1bcb1024008d4bb4ed3d048a220cb92c254bf99c6d858b469ec3e7fd6bdec4c4d521226e4915b2e6231c2305661d2294b42ed9f710d8eca84a8d158e3127ac709a1619ba97e965a90721fb5c13eebc0f87575f4bab0c0c21a2511e34a3dc22200eb7533397eaed31b89e41a436f8331c22b5c22aaf2d60610206c36f1db81829aa9785cee0a9fb01865a419aaf4b8f8ce8078c1da127c0e27659ba4d5d5cd2b4b080eb4f04cae72cc726ca095849396d1eb780139fc848a8cd2eee2f3c5b7ceab849844d96926fcd82c2659d573e384f48d96994f86fbdd02532190a5dc51ce21c0995b811717bb3d2c57c7021f31e6877cf9dc9ae25b3bb235f380e6ab440a84cc162896b0f873942fb446dd4b16ffce9330fc872842a16c6eecda34683650129adc45634300dcdb3909af0bc15b9a3a41492d50673a0093cc448196a4c2656630243f24506bb3aa9a1520ec642195180263640c8d77b2f83562a21f82a62c8daf6b528f3b34002ec60600a312d31c3aceca348ad01b8a103789874bf901cfae26f6516cfc0637ca8b8c12448ba773cd292c1ecef4e2f33a3eb6a65dff0ef70ea1fb5a8deda3d3f5d5ba2b9f4157fbf5a353cfa6998a21838509130d4397c79e7ef0704ef9d51010dd1643ac9ad5d8e04adacfaeed9336bf517b5880b62789594b92ebac5075f641d986d19ca1f5fe94183290744443a6b43a6df534f31c385aa0e6c4a78c92b3bf9f71f38f9b7f86c95d96304ffb153d37e8abe250c2af8b585f663b627f19a3f93b6a6c87f082905c7197970e231679c6d934743edc676a9dadff7afeed031d2f9f737e0d6f70ae43f463f9cf34e769ed0e12c281d985a902be7a809f4a5bdf7a57a6e004e1553ab2e208655258dd9f046bdf8fd2eee521a6dfacd19814dbc5ab0cdd99c31f8f2546500a79cb17c02ef278950343c495504d70c75056d83a3f56fa6167e54504724230602caffb5f1f6bb7116475a414edae0d352b64294b13ef7d01dd405356b17c87b47441557467fab57bb58318cef9c9da983caa8222368312c985d2dcb301f112ba5deccec60cafd4273c82c1b874b0e1146270ea0fa33c2392c275b6db64d56300f23c9d8b7a3c2d2073181f3e55d295a75a796a12234a5beaf834a30032a0452d24d759928c1830b7d53ee95ede5a2cb9c643bb37d4bb3fe016acc5c9487d14f208d946124e7efa1d2f653f9b8ef79852d7fed03902537b92d42d8e2191b72e70b5d7dbc9710175bcca85ea309040e7928f36242daf62a64c5dd5629ec5d7764546cc0a808b698f90e5d161fcc03474a1b174e65d873730fa7253e594f0b2e20b09f283d5916a1a57377ba1b2600eb0cc9f1ed15d2f887e415c8ce2299153e5fe0c9cb7c471e05744d3d562c3631d185e4bd598a9a885ac003e5e7fb161433714418aaa9b0e98ab96c16e72e5fb2dfa70d4490c7e0be19f8f87ebfe094a0bd23aea20de12e5029fd04e91e545003170aae048d43c5ebf7f200c53ef6fd8f99dbd6f6a99eabb0ab18c9eb0abc2c762422925c858d7c1a2c3d373527c0931363bf9b52dbeefb3460ab61a4eed71df7c7ee0d88c5bb59ae5009c4d5a770c7309bde5a0bf10e1c9213cfe23d9900d33a5c33db926d0965b5169cf7c64542b828fd8f32dbee4e7907e4084f0daccc1a0e52dcab8bb614d9425d86f03424bc6c61e156d960c476cd92c4550e1955756f6fa929c2c16c1477a3a1cb664e3d98b7de12a3a4ccd49cb63a6aebb68c4e30261a3c7f0723c082f8c530df20fc1d8d1c796d3d571ae978316f3564db5100d44e8aa3db4cfea6986080fdd83492f135945ec8e927c32281ff54104ebb4eebb550ebd7725cb9b2260d6cf2b8899731546e5525a4383c77fab010934c1f840c5a06289fe7d28ac89a8a1ccc79c85ad2582dcb3395d4fec9335962864d009737509735777ed85ac170097431f6148c25cbe837470025605ff6b0b031d0196658b61638434940460c2468a1a4fc90216ae88591589e361f5096360d52b9abfadff95817fa3e476cdabe940b6c91d63532d859c23814f48508a7c4e3f136da1166cc527623dabb4eedeb33d04e207837f38b5247783aa356d0776870a6d123a4a1f234c350c75ed7dc302b18b248d079e21f4657bd2f8d95c3eeb5c5b2b2d3299070f340d73d94a56de3bc98b46af74c344bedcf63b53b6a16075c512efc22ac37c7b4d57d7d4f29a1aaa878e68845434c50341190dcdbf6db8ee7b0a6cf24046cf20c98363a1da0f8173acbe629361c3375ff72426bcdbaf4f25021123c16170cd9b82b0e1590b2070f0edb40b1e21c07a4f04d187bd195f157c0990ca3e0728db094153c5ba6ad5242e56438781875ea0e3af5f4b2a8b8feae0b177325405c6af638483d9519829871581adde2e52b8db3004674a7eb6837641941dc2e4ef009cc5846f8705313135586b3a0eb880e62268e8a4463e692d1c51a5715aa51e967392da5770033b8050ead990b21ddcb45c59078f245d647279319bbda766a1134526c3e3f06bcacc8718515249bd3b965096eadb2bbdcf839bdda97bb94903a8e4e76fc8992da1f5f436c3bd495d177e3aeb5fa9acd3c52ec6cc68734f151cad1a61972a623d51a48214ba0c9d63af7fd7c7a7ca89a90e6ede0ce39d3a7fbdaa2e4ad3faa39f4f2c7ebcb07c46d647e7824f3d33326121495b790b2a738b915483b94835bfa3bbe8d19a125da201d725321387b7d62f216803965903071e9527cf78da59e0ecaec74a7dbee9106f06a1e8829585da03e8341aebe4f0bb0a88349d5cd9d0e63dd82bd13a96337bb19d3001c5d3bd13a74b31bbbc3e7ff2dcc78823abba99bbbb13b4ffbafa89193aeb3dbbad1eddd18dd753fd5fdbb9b8591df568bf3b3a395754c6fa0903e7421ff68db49bb076a325193bda9626370fedea9c1ec9349711a47b01402195d981f58c4f2e05e52e66b2321dd944021132311072c99ba41c7f14b3ad178eefbc81b6ed80054467d067f5bbd3ffbbd3f91ea7fffe2d54f84fabcbf5e2fdfb7460bbafe60ef4a69af208365435c364e78f602ddc6c22cd02ccc2e81cbff4d42e9dc18091ead09cff43ff752a478f12c627babc5d1c18efcc06f68159fa7cc0c3ad2fbc4f63330f6eec84e7d5a16ee74a1ac680d3354d10009ad8c17a8664ee3df85c65765321c5539cfb8a181aefd48bb571c26fb5305aef3dce5b0ed117e8af91db50762154361b5822469a6d3543e0249493a1e5bb4eef31f62e3f6c5cf8a0afa35b18357a30ac675cab0b10184fbecd0f0251659d61444793ef8750f36ba1adaca994626c819197b0a0830b07cf60e42cd8fbf7a545b86129909aaae6699c84ac50a214aa5a10e1c5289ad19dac0805f587f18fff03ece7218441026bbe1c91a8a041b87575787a7d70078f337e6764a64d1913c900ec183f172a7da0921dc461ed1ae1cdac809e12a78087c4d3f43c98d99fddfce7dbf1a905ade24aefb84d831d7b29de80e3cb72401e8719b8ad58af7c74b7e1eae8767fbfb8b97caa12883fcdf120c616c7b1bd98c933cf2b76082dd4a3571e4c678bea0b5f9218651844e3181d18c370e55eca21fb9c77c63e4667ea0a9f8d1cb9c61a447d017ed58f5084a9bcec40c7a366424ddb37507b2c50750a92dd3fa05d8dc5aef442013453395356588c77286193f5dce76db51cc48efb4d4bc91a92464fa4ff8a32035519bcc17e6f22aa39e5aee71a059f78c228f6102949698f45b2181167030eb7abf4f60b3d2b32359815245dd81f747bd92ea9c03a3c209fc30c700f219f53b338a3bd8eff91aa4505a282c87dc86b9b7a88b09e43717179f11ba05aacd6317d09001e008c8b2bbf9ebd07893c2492ee7efbb8c972bf4fbd744203d53d1195516f4a343d85abca8c4f2a0677bd6c3afd5a61a45cb4bfa9498aa861201a56c60bd9a06902c68f23bb321a3633db7affc4cb8dba039f15bb10baec7195e4b832cc44300dd0082f2faafc091207a5987299e69d282829186777195304dc4803ac32983a34c50aeab78f7bb1155a10f7670fe927a0444aeb6770778970b3af6ad63312ea889955206f1488b51bbed4549cb8453312c6600575d054ce57c2e6b7853660fed82499028dca22d82f667fe9ea0ed948b110419c8935b803f0066dc03aeb808d7652d59a80011ae321154954bc99c000e5286c7356aebb035e5f5800d61ffb7091d82755b31dd0b22095ef1ddfd2bf906f1b4b4aa62208606a1b38207400cce402d19f41fa205abe334ba89182ea3180815f4a9d8f9904e28d5ad03a2de77d1abdde0b0ab23810b085c19baf5b07eff93abd10b802a6a36bd1a3e0022118b8f1ef49ac1e83e05d0ff9031133efe66fce299d7642c5e996b34df85805c0ace2204c80e750a46379a2bc6e8b63bd9c9ae7fce49aa45ec360688904f82d8333c58e292cadb18f744ee3ee6d6027f2f747dd8e922ff5df5a384005d5c021e1d49e4dc713f80531860fc23ae1c918e6bafdd51d89385f93175e4ba73d3bfd43873ddaeaaaa30217860e14bc23fdd29b207dc30fcbc63b835f6f79fa7f401fe9e0d537ce8ec38926c83f6a579c6bcbcb2879e7490f5b92b04625e16dff01dda7890ffb24fafa8b2f5bef2c622c5cbae4388b86bee7a7c74b9e6ab70427066039de9658764d288fd55a455066cbaefc9239687a559ec0c2a053bd33ed6cb5cc5a8fa436da14ee5b784a0dd63e938a31fecbd6583bb0a9e1b83c984976e2232bed087b7822e7366bf8bea7e7bc1f64fe6a3ab10e17396a4a9889f836f172ac8bf0a87aabe028a56b681058ba520a5272bfc88e8758866ebbd7477e0f2dcce48fd590ea834ab1535b0aa411cf6a86e6fe4c33b1adf1ba97173d5a62bcebb11d7a63c34fd330071ac291b23ad72fc131c5f00048c7dd198bc6e05d9b42494527351133b3baa8c5a1e983dccdb5d5ae92688314809e3dfed9e054601d4500f49d2abce258df80c7428272e9d2e6144c8fe7a66a98e83031eb0c80201d08e762f82e659bc6b8354711965056d2026df588cf8361f19a324c7398bce23e83bbb18a22e1e81c60c9706ff3b0b60d08b0406ec67d8c8b1c3da711c88d770375bc90f1247ad226c5d06bb416da62206ab00e8c2486412ebd152586de0706f93590a8da5534878a1b4f1ff81d6a811798d359c118531c6c7b88b751a8f66c45ee54a1fae67980cf0e46845468ddf7029ca677eea9a880601a008fe160218f3b7872f624ba61f45efa68206a2dc42da99c66e260c0844e7d8652c21f5378debfe6a55071c689f04409fbdcdbbd2b890371457f79e68712008fa778bd2a609b955e7ff26df343b87210c4e9b92349f489cd11ad84f369e3d17464b1f4dc189303fd83d5803c2d13d3156db4ba4e8e881494b9b1bb7a50781990de5ab9ac1fcda14a38fd4c82486a26ec01ed6182b1661bac00a24fe6798385ea09eee933b87fe3db4630cc4dcd8cb0031a46d045ce891b97eb61ce2449d5afd9b13d579d3c03e55acaf82be27d6e3e90dac1a00e0ec79579016e7051662368e0865bacb3296f1acb0e3ed2b830543b47c35842548152009d6563350b89a2f454030c5d3abc6e06174114e2c57176bf72e7be7b8d15a5900891ac860bb7c3b35aa6a0790d49bb70363e2260d59bd24b7555135efd03a3baaf9c3994e69b8570429e8fdf7caa8c9c570c8c6c5e68b06249d4bcbeb9a8c1b1285f4af6ef9efe3e720d9c6acd59b6dd4cacad2e7d71b01c1628e69b7c446ca454809d04a084d61f0e6ae4619be7a8d39a06d48dc28189876f299aa41d8958c6a6efa55adbd8364ba600ca512c072139ad7cd05ef7245387331302cef8b6eef38960578566d71b1462f53eecec5bdde43074826439daf4c77edb3e431272a098bf2fb43ccf07877a0be11637fc22e158df007a2a09fc9583dcc8eb50094306498c0fecd742f2af6ae393d42c395aa988b85af874d8f1aaa8d24a3a92339f6295596510e62e8c95243732f7c079594ef739080aca1a007208877fd6cd6d06284f89a93cf86b1e0c6f014e324ad30da66913e52083982b4cedd3d75670d678cf5cd600da746805c74e1cb6ffa787fb42570f82cc31a7e83ad3828df361a5964171d0c73f8591f0d4382845493eb577a908a8b81f5bb19749619dba7ab3bca8b7d05c63c7f5b0a35569578a9f3d20c127ecfca0ed7fbd9a42c10c17cea33469ccd88707700bd10fdda0fc6e7cf079dde757eddd2cab5c0f96f6a0212c1d8263a801cdb1774e08639d36eeca3664c3fd3e158626a93e4e3367417f5cdff3983f78ac81c668e22a1bd1ace888cc68b9b5b4394db094b1d8e2faa61188450fd3a19391f3e4193326cb2764a40a8f94c81af7f9d3048e1ece3ce8f54e7f94a0b01ed3a0524d9aae40f56a311e323c538879ab321dca3b638dd6952758c8121eac54d38e1c95d67b51ea870dea952942334bad77724f52c6d62de9afed4c6de0ede67466380ea0a06fe42452a6afb863d86cbf13192eeef9ff2bdc5730a01063b1867921cd55847aac597283b7f7c0016170aee0e6c91a1f00067879b1e1337125c68667c41809906efb6540fde7031c3e215d90fae24c8593323cdbb4a9956d9124965e916d2567c4462d031be935e76a497093bc16167c8ea82f98ca6c88e5189415bd6d10b239158ff604d9e9eed6418afcdd2cc49fc937ec54906a72e25f30e3f43122f39ee4db8b1d729fe13362ef42111520f999da0c3e72affa78565e8d6a8d2552982bb8be4fd08c49e3c020dff16a4c3212aefa8f97c4807ff12ccb0dbe646fc29fce419d71808cbd93026eb0d8634b700e4e589cdd75f2d025163fb325a35fc02c5120e249e245445c6147b23df724c67819e862dc086a980c2450f5bfbc909b4deed914738d805e3678e7180a15abf5f46bbd3f230e98767a3c5ce6f8ffaffcc36708b3e4af95585915fc8c759822e4d24cfb6fa92ca9669b0717cceff6bcc01f7a926c1e72a3ec7003e919fdd6da04012c4f009b297f6e353959dacb48be73798a095f143de648148efb950a1c3f9cd2a2758e7746ce22e3f34776d24876606ec3b849e7025be97293b863efc5de7670763186417d596537f1d12aa1be9a197e3182f02ad44dfc53860fe3d291445dacb8dc1df8df6d04071980e7d2e42491e55a865c51c9b763f5244525203ad5a50514a7946e049aa30c8f7419884b26fb22f85971d6e32213b8d6a6094b618b0ab43da7f1af50953ee65f1818d71ed7b71745f0dc87578a2e79171632213a452487d684a4e8a684541acd73ac052f7e0ff0fd39d72cfa5e1e5c6cf59e9ee0c00fe2890d4303dea09826072b58a81e0a38cdddd757625fabf660c76c4429191120af68b83237e30ae8c676a4258d71bc778090846a2e6c1061397b824833a6ba9f96d6adc98ee25513ec3f7f52189e6b44d1b88fd87f7a94a89a6625814d6934f992095042852a22569c0c47049fd8bb5680a81cd8c4919a80f32745910262290516f9600ea329447d5d4288b5737c13dc71a4ca66e62dd46478cab5198a7e7019d6aa1d4d6e65ad91009a02685944db6b6deb952cb4b762e690bfdf0cc2aac8f6d25adc789546afc7fe9940a238e874c300b9b8187aa56962d576cf2907f87e1b9a3969684ba45693ec62a4c1d12656ec53930f77107593342e0c9dc2d53d83665b68eb225f4dea4c6ce6ef13167ab4c8ab27bd461d5004c8dd8cf3a5397480084bfc72d66e431263b9be99c40bf6d6d35bdbe879b7938631ea04729fb76b85438250752dc624177c7d2ce7ac3ccf560321a227ffb73a1c91bc7ef530fd78408ee7ad2a6040a017057f2a0f855d5d863630113ac8034587324e502b8dd459bbbc619c4fc7f837543ba52a4f4717c096eb207500c255b7880e9626e146581db1b4b5b3bc00f813e2c2cf8642a3bebcc1526b71b299f9c2e2862a1b0292c97d209c03b429f6dae7cac4b236147f09def799011789681a68d2508fc3e9982a9f8543a8bdff8d49ee6b9c0f100ef39341a1bff302ad8062e96e4480860afa8720be26662c3b8576a472439c004818c72454313152eb8eb416c5beadb0b882e34ba7f5ece099b386ccc0510efbaa17065b85dec5abc924e84ba7afc5d546c2da84f7d08e83cc7a989c7a3fe9319b1f312ee803d717dc4e6eeea09eab1243497ddb816721dfe77a87600665f90af65c0b19b590224e7de79a0b33e3eae3219c26e9d729600db21ad8e74f457f15e225a33ba9e400d12e9c6ca908c9add373c0487151568f4dfff276802af99d33d054322c8ca52c25404140e32d4852c73dbf771d094582509bf25cf99c7c76cd2875509bfc7aad1e0f3023a84cec1c3ed1c2ea6ed49135eb9746054e37f8a6d44d146dea831dc97bdfe2bd3be33b942115712472aa5b6f9442d78a0ee5be189199d92cd13e51bf414e632e616add713f9844b50f4f6351c98dac7803ebade5ac7d93e1d16649cf41ad8f938c31c3e1fe66f35846ea3cc05c85c78ae215e283ab481c31b2a4d1dfaed976aefc7c440b8433761fe4d82857e8ebe02be576de1a48002238e8ed83cb8e2148388bac8901c709ff35b09dc4530e5442349e0f398c3620101d7022276d28f180217db20591bda3b8340414e8b33aefef1d55dc5b8d077c25712c2c92bb760c6546fd2fe48c28dd334d6cad69eba6529efa3699f054065ed1e2e8c0904f8508126594ba6062c9752da2d3f9c11efbc1d6366a9c2a6fb259b64fecbf84c845de38146d71393265b5a9ae672ab6306282b357bdb79b21e99cdeeff42a1480f39ce3d3146857d146b468ba112b4ecfd97334fb1800f36b73e800a326fa57acf8c0140f4d9129c095245c1556609fc0cd909b80773e4fb40a241e79fb0d4962c3b1634190cbc3ba0a6bf9adb1907f08ba6bf41416516e971a330bc6403c8e53e967321748b57546bf1d4b2a236e5f97a31e2e29e8a4556a07ee0bfb0e09e15899705b369e8fde797b24aa5cb09154d914a7e7526b6bd9e3c534ea96fd740b3c57498c2c93dffa4546c7a158d284933b581b5f24a7b48b2b57776cfd99d534c1df4f4c7ffec22d0b014d806281c5749c17695daa2a32a6a411d5fa58417342405a4cfcb210696e4c6ee07b8232f14c20f0eac08fbde5f9858fc9d3e586051fe58393902734252e2ab0bf9a175c9ea0bb2d4d0aabb3ab0c656f185582cb2435430f8689dc8c3f0697840348f33baff9181c8f10794a90e2349812fcf81920d58b45bd17740d13ce0b6447836a05e1914fdca83fce8f0eb9c03c8ef3a601721782b63b82f5501d1312593630e989b3110824676f45260ece7c9edc63ca6762fd4d31e64bbff35b48f7c81034fba49f7bdf57a2e01656efcd698a2ed6b4ad182e62304b124d9414e6af5fc6276647627a9a75b77ee839ddab7b6241f9a96c45e697aaf7e8db6b2eb0ee88f11d95b0493470d7a79ac28c7e7d5ca416ace7ba62134d124ed593310dd29407868a965bb305163d39a785a439bcbff51e35f3bf76cb3a739e85c1d183f338a7a2bfd9f64a3247a630cad6f8428715b59d51dca74ad4ac99b1cbf835de56c5b7a2974f446453b126e654cc4b2ed5a66e692c876096799534679ea8a3bfc752b63d56d6a93f8c20da42d9bf782b70f39f27a5fb107e76a189c75e1f5efbdc324fd930b3c4542b5758eba45481158a45264c4f9795b7eeb22c7cda212bad2162fd6473d869cc7dfe0a6c6e683652314be418246a2849454fa2e10781ab0a89e7ef1c54ccf93fd6eecf5291a02a01c00f8f444403a09233b06d642018489b3fa5592d1047ea22eef2c3a9a38699680059f4e48464983277f8a27db794b9d483436f28b2fcb8a25cbd00ef943995ff39842f4db014b3c0bfab25380191e252701e732f5136395eb4d58ce352e35a33ed3b1a7c2b8c71c8164b13396a499aeae6b698b9b08d44c9b9dd2728b380e4ba6d0222b6b7faf2f414e0014bcccee84a494504a9d16b2d5e1d35e3271518fb2c6bb523e9d0b67eddce645d248b1b50fa7f6c17ca176cf761471b5ede876fc5aeb0c8d6866f92776f136b3fbcb5a0dc5df5a1b7b2dd36739011606729c1ccccd916cb547eefa9f6c1e2277d350e714f1aefa1e244f293b260a895a52375c102464725ba66be5bcdbfa4a49e489a6ca8e38618fa97213adc2331e111d576116aeea332ee91c7515fe8194cd1c868ac7455d1dd4e17cc34b2a47b68e501a7cb7c9e1c8fca8fa565bab77ec1ce09a9ef4b2b48b29a08f677daec5dfd843f47ca1c60986b5999147fe0d75c1ff8d35f9adf4c31415ec2fb20dfdf2b0e8e1b62bbe43b5bd18a7b3bc025e431e7f5a392e41076dc90d9168eca1fc19be3409c63a16a0ad8794c4d805e2f84523d8511626d5a0b6a480a34e5709b40b9952655687a20f881a453399660649090a2091916f44b207dd3dadc9736f8261c9d17c22c6f061edaf04be4a4961319c3916a4f785abe6ad96d47bb5fc829f5b2949e3845ca274e9d81f8ffecc1e6ee660bfaf41e5e58403625fc7fff879cd03059b3d291546dd09fcf1b469eb68f30097b8afdcd9f2e7ceb41d894b9d5f0178bdd3b2537f48b8719df1f47a3e415393b096024f46999f3d8864606fa8d05e9f1f2f57e14219ad127be7163ca8940359631f3ca4f0718dad08ac6e589d46efaff27687113bea2406e43dd9aa40e5d7b9149cb4d7df8853565e8131aa2a2789e0f377aa6f227de1ee729159ad8fb52b76cb6f5fd9d0dc1abffa5209429302f071c487253cf20b060b336009bf6f43f4fd2e523ff8aeacce5aff00aa151a3465b7aaeb09b9f965520c95b0da2561aa07c03188440a6c37f25c07c251ed5f2244a5df02d204f5089bc349389d771cc01f34001da0b140b15bf48bdd31f209f18b2e6095c0799a30a80a65b60b844a6b423e56418ed79af0f6370eca090869420c70648e2771cd894984bc14878626edbb249b4564f7a17a485c4532d837fec041ea69860cd6e15a1a640cc09484181a803d23e936060be1c058af92b40e2d4602ca16ca16b3414055f94108c6423756d4f5761f11d4dd3fe211fbc02a11cfe4879569f1f11d88e64adbeac3e22b58ba1bab0c02255cbabf24ea75f0fbf7efdcbf44efed96c4d469db3d02742d40f2a444dfea5279cd4f0e34c451b702d88060d84c84dcc7084d993ec78388b0056215c18d11833a74c816ec9d4a33d29117eb62f292ba6448b9441686e3132212ff945aca685991e84c3d5a1a75b3ca5f958b00fec9763a3d706e483170f605f394d141c96d4c35a517ce89acdf4cc584d0d5ddcd728382c71a8e7742d5151ca56a5978e3ba5127e8595ecebf95ece1c1ee21500971859cab5a28c36693bd14dcfc39bc647d9309f9ef2a2e2dfa1d3d8750ac1bded6c2fe3734cfa8018cd7dc5ece04c010f297059e36f36460a3a134b908f156eb0d3f757273e4c728003a7000c721b330c090564201fbfa98eb89333eca477ea3beb8a300271d358c23e668a373a6b892442feaf94e79f5fc4d261f7ae7d4b8ad255b960811490393ea4f9526eca4cabd38ab185677df17e192d9a7f591c9ea9b09fb0120b189038f5f5292f3eeebe9652427f4467d49392d34c825e992287fb005c63307fe980db860356e33e77d239be703326c0c3bfcdaa8a5c16d6b6824dd7227b3ab065d293b7798520cb41382d44415f195b83aae92601784fdd3c7a84797a8223d2a27b95fc716d89813fafe315649c95ec9b9b6e955fa1aad78dd15d34e0c01ae63ebdf67fdab1e3ec8b9558599915e31c0f49d1fc1d4d2d9c2771f3fa4588d939ed49be1d0f652d7f2cd288a704bdf7230ba604f3f225ec051b56f3806c0dc029039a727d581c148beffe323213cf54149b4d2d03938a11f33d59280d3efc9a6b07f948cdc18cb7f1254288001b9b8a31de3fb37711dd3f8af443dda11b8a9d67b4c9614a7334499efdef0bcea61759135e47c23c20919f26000e0fb615d224c6e4c1fe72f07fb441ffbfc1ea721d9534e360ed1ab28367fa111903a911d416639eab0876ae0489c1e5c985eee080ed64e9ec8b5f251b9820ffc1504d421a828586c6bbdabc95dc1db285e87a29eed11cb2cda9f95d8d02c33788dbef65758afc7efd960a4d1aa9ec916024f55fd9e9193e375b6f72cdc68567355029a474c6f8cf18c0a0f6928029ee23d309637e81c71d19cb99c897ca6b60c03a00ec734845733f4f876b2a1d2466eb261c7be3c71e5c58140bea69413d2089d2d9d153ac543cb621d1ada95f770148641150977d2818b88fda6280f00f801c0141f80cf9c880e60e61c77d9453777d39380244f1c53d74e1c0bed4b71ae452faf0235b976fa0641af1426f0e68b7aa6d151ca60d81904257a057d913bc2bdcb86583e79499ac765465ecd82940faff1c42b376eb0a2e41c44adb66dbe96bd92fb118ac819f74c8fd0503857a55183bc91fdc56b1853c50a966874273144961c70cfbcebb38563dac17a7a33391112f5d1d0d91ac40d76919f0961a85f97de2a40d3224904e624fb000a0bcbd3383a46bba76b36bddca118f83997e7f4998390e014ae7e3e54aa791daa074451380d731d205cd88ccc3b5d8a80c6e28d4326f623e3c76b1df90ce0703edbf1ae2ac0daa8654916dc42503ef4f1060e6fb8750cbc674a681f8bb4c7461cb9e67d6b32325a038786c655ce448b4e0370bde04b0122012687dc49e6035b58709b0524dbad9e34d81b91f337e10629f981d3adfc1d52574a3ee59860daa8b94dd41a123d7d5e13e3287a163a9e10844ca24897b8973785dd79c0f0b3ecb5573ced6c301e21346fb6dce7dfd1fa2bbb8051d1b0d274ea570b833d8e0591fac3192349f762d952934369673518c5d3ae3d6e46c5ef70c3801b16ef720115a7caa8855c5b0efd190d32e5400f343be0e5d31aaf0f80e138154526aa43ce27e8f6db9737831ad10386964d800f8f4f48b212e94800c162c8de73834f6bc207389989bcb35253a2e0d55c693751f3f907983963aa83bdf4d70df34c32cbab2ddc5e67bb990d76b304aaf9ea3083dcca081007bf29df33a1cd582446e110687fc8d2faeb7f8300540743f5b922e541fa813bcdeb63485352ebcbcb2739a5d63f7876bd6ed00048a21bd40c6ca36ea914373a34174b56dda049290d65129d91621d6a77836220a17dfd5f6cc7b3841f75ea07cee4bd87ed1cc1edb9495e01226354d8e7ffbffc93e6f9173e9f344e168313bd02597ef1ed4781e8cfeb602828ab2d5f98acfde48c0ba10cc6d2a0266349399584552ca18734478bd42aae0921a83d6a2d8030b17c14c43bf46c9e747aa54fe2ee3c54c0c1c3df8c0cfa37978359976f8071ab96e1dae3b1d5a7bf40f900496b73cf7d6806dc45b3d2ff01798192672401fc7f6e7dd34a92a05fffc98ffd6c2102ea1d1173be12161468b96b59552c892f9b478556228622dd4fe7a242b69e2980ca90f43ea253955c786941b1d25ef96e470e6481bef67af3e1fded0396e587581001c8f70144a540d607d032cc3d701e539587d12f48adff222fdc93f9bcc275661ccef5573b41e62e3d53bfa97bd7667dc42237713fac52ab08d9c205e842ecb3646f412c072ddd83672a849b104935070f3d99113483ed1220b946a06462cc59f21013989fc09068b8c6abe27770135262c34473c5127cdab96fbe43d0dcec672f1173d12f5cc27b319ced6ddf14c18856c38380074040b97b6172fcd30cacf1590541338102e61b744ed2a3a0d9eba7d1dc0a9a0cc7c97e7f056371d484fea045a1cb5f4374b5b4840e301e96ecc22bf747c08d6d4e0bcb92c262c9ba43fcdddf315da1390ec11e3acc64dca00cdafc89118d388006ed08bab34f0590863095699e7a881ab9b98185085660c5694d1aa1c0cd8c638b1894f1ea2ce2c469dd6e4d087fb38e7bc37a25d0180e515bfb6267a2022dc26a97fce4cb181ed63ef460eb6c08c5ca58e1e11e2c3138eb8a053d0e0e82d193462a3d10ccb26a001e0a8b07b2ba89fe674c495fc8a232290164c594f89e8706df7b504005892cfcab9cdf48822ded8cbcdb9bf1d303fc2571b2b48a3641b75d405585fb5adb8c2d6d0963b27c7d9f05730a734b0081f552c3c776a068871891850bbbda47d66189140f141aca0ffdd1216ae217d7ec50a7bdfebf8ee3f2deaf182a28e2268bbe3ad5231af0f2956a23b2546bf55badb5111355f46da1c0441d9c56d7e51a7f89174890652077aef41cf0251c8321d05267f5864bbd71a33ef074af4d577ff4fa26a447becfda08cb4d58a0b87f338dad32c107618d4752e294219acefa0a88984bc0fb8a7813084253fe2913e9f56f22ebf5414e4a3096ac2226bea500428befac985a943afbd5c6d721447c8fca1fa67267b83fe40a8a349c5d3a66bd22ae195afcfa82619461ba5cc46904717997edde599819c78557037e6655ae874414dd9d870cfda15302de772dbcb39e274a3c7ba60df06fa92bcf63cc72542564ad17bcbebc04601a2fa9813f101a0816cc7d4860d27dfb1a83f10a25d321e1096b184c6641e48480c4159ed64fb13747aa83ae13f6bd5d4a702bf07a861f74e096ca59a8723b88b13330a53d2cdfa8cbe6692ed69d52719ec662d9726d1683f73fc86eac1d18e221ac52c0e423ebff7f3bb082c6044aaf46a5d4ba201e3c65a26c0e4289bba7d062140bfc557462ea4292d93b5e54234aa797dbd91bd58cd9e71d906b1eda55f5625b0870c36cc77be4f7fb98bd49beaa1a3bd589c11043526687e1cbffa11d0fce6276948117a1af79a17d775d14c8f5aa70243a33b4208f466eba008c954fa8b42bf030fca9b99d244fef5a2e30a0b5435ca8a80b9799e659b863a6ce1a333d494c56946b33788dc679d6931b40a24eb06fc519ce8d848844b7e5f834c4e279aa08a23ced63ee979b9f02f72f744734110a4904b337a62240edd3f8fbb3bce9af373221adddeededafd0b5e17fd9a29b0c8f2c6ae2e15cad0eea231023b3cd3cffa9a82da4a582996a98876f012b866759846d1ef46fd549b91e61b86b406a2ee5c28eb782d5f8aa790ff1ea7081b3be8c11f17042b449985ae0c41a21f29b354a06bccb5bf5aba78b216cc2141d4042c15442c5d52fdfdbb198018fe5b9708ef7488786c090247d7e3cbb09bac345fc5f482d69af8fa5c5e411262a128ec38d48e2aa007a589d9f2625556637abe98a1ea080e2837c612bc6a7bf6dfacb0b2a31600ffd9be05a866913ab869b91dfdcc533e5ee4fcec3376b2f9a21c2abd2ae1932d1edbf0716d4a1b36ff9848d799efbd4ebd5bbefc207a60eed5a8040a0bf1947160ea94cc4239665a0309f4aecdd49fe6d496d340829a7fe3b40f5d97fa3da34b7c1804f06e6e35105fb71026c972a8a434fdb74468cac14378e4fd26cb98b45990811295bd3d02230a123e8f5df0f8e2eb1ed818f0e44478389198696de852e2f7cc24cfc99f51743c8fbc15cbe0874aacb93e4aeee8219bc96aae19e32d11112b6bbe51a522a2d96d84d60bdad14d1034c9b28045c44f506a1f01cddbb5a866ead9f9331cbf1903cd732603cdab91a2cdc3f2ea6ca47bad6baa626d69dd2339ba1f34cf2ffc563227935024779e906653ed762d3c32002bb21c90467bcf53568471a01b298642debd96051a2ece7ff58cab23c00df7ba11d7a541da92d073c9ea3918c80918c97c20f40c2bee7d20295344285b28df2a43b5f32b9b41959b93966af081f8e855ce056939987e4cce18ad06b6c239e0c012cf815ef857da11671239742247297b653e98cc2390fd7bcb118fbef9f23ab0d96b707603b179da87dba500b09d011db02eac62e8ed172279dc6c188a0b958412fdfda4e3858fa170fc377f79939202ccdcb1cd4acee2389dc03f23a3c2b0366b514daf77984f5e7b0f10777159bf7a622258b449e912d93fdfbcf83c7f215461a0d2bc15a1e94046833698579294c8699f100bb18ee14721bfdacb441442f3400d48980cc9b946980bf118ff89fdc8e07a408248253ea5e86659db71f2a0a81a82d6eac70d2124671fffc3fbcca6a761e37af9646ed6e6bd71fac6b192f92a259f7bd7ffaccb4da95d098e0499c4d734bdf5596f13d33f349301795aa380ff0f8395e519756dfeaeb3432e731d3ac769f560294e4cfa48b43fff2af894c8bd017a037b60c7da4428edd9d106e98f3868d81906e8698c89f7b6df80ff6dcce7f46f8784038d97c698cf0a4eb3fe29d162d40996286ef4b18861db7446acd6b69b98d680c392aa1c9af697b791376d3c29d637a7094809f696186f8f529b096dfb0ca8f97e61ad82813a2c07873413ade7b8ff11f113d061af0bb896ba1771ecd7233adac6dd6a45c1ec218ed9ef7a8236def1a03dc4060b46e65aa6ae61c18b5d0618a918527ee6f39d45979a3ecdb59c8f5a7c0bdda1ebc7a1eab4e0793abb0232547c7a47227c12adcb43350fc4acbb4f41b36ebbb641641a35f3e3932f02f7a1572f574f0bc287379dd9ad00078e1249c0f1174daba398008d64dccb480e04bd20bcda8b0055a840b3b1ea48ae15a752c0c70f63576a1ea935dec979367902ff0eb0a5699585ec9470bba6f4b2d1dcf3828e0da8771667be237a5ad58047f7676eb5e7f406c107db24ea65b7892ca22d0043ba327e036c65114383d60b000491d09f5eed0e60107c1d3b4ffaff7f1739ae8324680427fa3cb0f9905d28367c93ab064e60496d6e434c74c40eb4aa932810f21dce468a8bc5dbed422b62a6fcb15775cf0ed15e46837faa11b09f0cf76e8aed9d251aede9965938f7e878ba5b595cde82c57807ca0cec04fec2fc3a2bdc41db0b64bfecb00475b56f2e0e3aafbc3ddc4c4409c676b24f1085c90b585321653801cd49f7ea0cb281cc49f86c0c37f048892a00d78bf7b38334b4ffb40806b2bb9c87dfcd8f893534db157af542577de837965617994f43e2c07d4e21ca38a69726979804da53dce09dec35dc547e01724be7d743901aa6303af641af499ae6777fd6865cb47174c45ed25d6c686979b510a7c672b5034acf0ed0c0981563b26a253bc5b297f402f3fbd4d8e3d65921135144b7292a818eab0fc648b212d843d290b11c848a972b2037e3b0e75204c8cf0c84ac7441c03006ee260538292601fb4a071a93f1776cc98039b27d9f90e03789040b1064a42d7b343e7f6406adb12998d15d941c3ca7761ad655cb40a0b7f8105a96a034d8807ac386d6bd40dc3ead929a44e6897ab2749ba20ddec86229a4a890cb525472c982de68520a234a5394cf64bb238e579198620e2845b21a3be2a941d1822238252d919c87e12bb5be11cc6bb6889ace7cdcd311147377e2c9f0c7d8e23457a05c1cfdc0577c7eb7ef46f316fdc1fe44293f2ab27595401187b7ce3279a28c70bc5adc903cf5c2a58845dbfd86ff806ff55517403c6f37762504eb361201f4e70516004aa84228a0113f6f9f0614abf9457bfd9b034965ead61a08e1a1a72bb3f0f3cae9283db0201c845b10fe30f3ec4a8e98a08b7c7710674803e83f3f2472391f6452763073b31e0a24a51c2707a4f9221b077cb50922a87db6fde8ff6afba116e7d0b3c2b77d4d2b07c084ed596ea43af9283a3640b5b15924794687c8ff9edc8c7208f1ce3b7e59b7901fca49f7238fce6b24a19ecc0f17b02feda80b15f7424d13da1c91a3f2bfc7016fa4b3b948f7d2d591cc0367d545c0d3c8103b89c35ff1bf93df6d7e285be22f0a143f798037b75e8dde57c4d244d77ca81b411736e72f2a9fa50ceb527527c8d7627dcbbb00be456bc3d629d510f37081e28aa8f9c1703381d86b1666916c55b4331e679f19c8df50fb5244061bf36cb50e027d45755372338a6fa7ce1ab13f467f7513fe562fd139e6f695d225ea275e845ed645e3744bd723cbe99cc822d6348a00b69171ec41a6432153412fd00f082d9ef609aa0c9233bab23f17b9fb318a079f31a85488b3159f9dbc50edaa79a800cae46bc0a69f933e3103b4781d112f1eb2514f413fb420d4afa17bd2b9432ca7a8e582b0c3cf63f6a96af7097385890b4bb08810001598ba042505f8e79e0ec9184c611fd6fe0959824cb2507d4e3a951685b3124202d397dd2cdaa1625a85542efe6120f8c3f8ace201e23daeece762cd48b2e51318861ca18e2213939e63e3f45a460b0b4df1551236b8f1a6fb9647075c45e194d3d57de9cca34553b80a07f1abc6e33fcd9f51db3fe3c3475843a36c5d881ce649c57f60b5f710f95d748470bbed0a875016837be0ea425fc0a4f9cc84fae5acf933b6abb447c39fba315cb1040b9ac729420dfca75b20557737c5248e18a500188c6b438866f0b98fe53400634ce03b9178bdeb8fe190ea3728ef0c7d2d4a64f28b9fff41d01d6c117ee487fda9348422e3e5d11ac0c7952bea4d8d203092e1359c06439d06d50fb55d9376937ef433296e5bfd4467e75b47b6fbd8190de88de3b862b24394dd1224eda4dd30711521a89c4290853471a0a36e552fdad50ec7184f70370b241c44dd611915dabc9ab3f90faba354897c8c70583efc9b66ffcd810c7ad5df977cabae4483fb84d18995d87549bc8142db13d40d521b8f7ba9826eef0d29926457dcf4dfb75ab68ae532a9800305f875235806e9da7d9b32c15b3b8a00b866473f22ff21ad06d10f18b5e2820e120598d54cc1b9125ce0e9bb7f5be882cab7a6657863cdc79a4284b9d2ed4d2da19d246318aa5df05d8815b60333f6a9c397ef2eeeb1ddc4e051574c211e3f20eae661929fb4a8239e81b7846580beaa3f98038e38f9fb56d68e08e3a11bf3d9fe904881a2a01914c43999409178a6b923a38e6cb2d368d365f7a05ecd6e0de8a84882af6a866dd68588fe82639c4aa367d764a70c18d49ebea6f75e3cd416915a7f217c70227a01606f87bfb64fe4f9f8b39f11db0f6aa371f72c5deeae805ba627362aee59d94b3e10620dd961b64ed430a6fdddf213b8847622bc881b05711661282147052f62fb411b8956fa5839c51fb3a0358153112dd55f4b22fa1a44a3ba7059c78177a84976eabd853184c6e4466170441ad8e4efc2e07b552cf52fda262cd2bb1b2cb7b27d19ef07e3fc69db774210da6fb13826c409d89e817d2bbc917ff3bf23325eda6608d3fe41734b10ebcbf9f5d921012bcc3e3ef12a546e3631e5a4e279554be05080bb03d9e9c5c83bf3b4828e7b70b12ce6a35c857c68dbb152cd6dbb86665a55bd2f0b686344df10838a6a13d0086f801647aa98a0ae87f10da2fd8e5b829c91d8645287a0307177fc93cdd3511a07de95c6c552517d49af02f61f51f0326a63240d3af901cc8ff01ad043e5748706bc3a422c2d54406ed27ea996018cc8b26d8e669fca70843b255ba2bdc9c23b5b909d1080085992c1b8017d60aaaf13d57ea1d8489903c01b177e3a94d00a59ecbd0b945afe7e1ae9544832051b46dab2869a238af6f119818e2e421516bfe6ff632666f89eaa3767f72c7cd07016d15ca86bb3d53b0ab5e35a9c91bfc5d35538ac67353f0f8f69527775cf2c7b29537ad0d83e0109d7537f3ffad3d08b86c67c6f80486ffa24a03952adcd4ed3e6ad788732a046f11e39648146fee3e064d8769247c5e10b219267e85432289dcaa379c3591758255396c0acaf2898cbbe191a35dddc0a92bf343b7a1e801784ec51125e33f50cc03f09688a892e4118dcc0bcb3b96c95a46c87da4a59254724887fc9df63dec6e7ab02182a96b018e559c069555f0d2471ff3dc28070a80d98eac0e35c960e85cb86a1fd1605ed4b4f720726adb0cfe5f511846ac4fc5cdcfb1970806903440787f74a2cb7f1d910810407062dcd3a38b81e57f0570c1d5c99de5d87887163019916f44fe047218b33d100a5d0fff44308be39d54317bc16ba68d2ac682aa8e049f8b2b3f7af6b5266c50a6ebbeb722568637ce9ea5f3786e0a3fec9380638a67f23e3242a06e6aac7d15df918477737c7cf667bae45b8c4a94113e3a0f4137ae64309f94801cd80f0e4b6454510b8501822e4e326c7e760f2544646c19fe109adeccec1f154cb9daae279cc9d2f24b25cf8f4c3b294e9562975920cf1aa6fa59b21bb2ae897294276c7a057e664d36c63fb93792ba4c3aa8673374a09fa3bc6c3faa36b066d449cbac4e552bd1f75130a8f863d803f9a9b0090c38c4f50881fa42623e3f274ea7867f11e34b46489193cbb2497e0d607a4165ef9c5b9407e4530d7201af60989efb1ec278a0e2bfc324687030673978606dffdf59d5c19e2cbc917110d614bbc0eade6ebd468486bf6aad52bc8446f72e24a601e62572cb571305d947dab0eaec75d44a3c4e60cb52a92f9248ffc9ed5f4c3abb1e01791be32686ec0f83376a8f1ff9277cab7c84439a84bf4955048125fc5072fa4e6e0e26508f299057977ee6beb1ac5439ac71eed0ff5518919df570d44e0d3736165789ef329be936aab2ed133d788102b9229850aab0fc5bb98c3fcee0832c5236ebf388290279e3ac7ebce98b23a88be77c6b12f248cdf4bad82b9512e9377f0f8162f89e269a352ac225c5b78ee37d4b61163de9bfe16d542a01b87f7172402e9e27fa3fac0f57bff7b99a8c4e6f0c9f8bc0964aa6c55137f6f0a3a5ff372a875a5c08571614847509048803bb734cd43f77d155a1f0e39e70f5579cf064b1a070f4b1522734c24e2fd2cf9976b47a8981b57aaa90ddc7b091f9148efdecf13596136f8ee6df56fa30224639fd58f163165a418603304f3a3c823dcccfefe7817f91050c84da2f606b122581785954184dfbf386715ef639ba1035b68e73278ce01afc03f9765cbaf51739e0eac65bda5420605f64fdb503b5eae5d367a8d62834baf9b706768dc74c49af8eb89b8fae21ac8b46a48aa986f828ae91e2534bdb79bef3b5931f764235234e7f48ee051323608759249171f7bad7991a8d59ad7b2696e1abbc8fb06d57bf051ca778c2c7823f3f3ad9be403f6dcc8d28a854fe0e3d9c83c0dab04a0400f844deb3ed08dcaca31104b62dd71824b0f9e2edf6b3b3106ed9c479bae95e1059b0dea9f687025feb04b223d4c26f12db7b97245c2e9b9836478df41051b6f5a01176db25b5749a738daad44e82f70560c3cd7aec98f6ff5862e339448bd737460651c9e78e486c13f34f92cacc4c8f220f0ef741772040e80981deec5aa05ec113e7ab339428f925a4a915005bb34ffad7e3aac4f6e3a4068df091b896f34dafdef399cf5a621a9830e8777d038589dc1053bcb5e5a25b3bd59ea6eb8b2fce6040205dd5659c5493e82f1c2171967eaaff559eaaba6a9fa0c0c18447418e5b7a08adcbf6a8170b4336cc00a0461ee750367042edaa3f7e6d71253b0f334153d977d45c321558f222e0ddfb58210f9304904884d234f9440081351775f7664c11a031f10266acf0706f64f591fc91ec96cc2738918875455c91bcd2a7195a3722f10424b82626880e1f7bbd90a54dc9a41212dcbb1bcf14671ce029a89ca150bfeffd032c0b2427446d6ee6018287784da9887804e5c87d8512935af248ef1cc6c84008f1449e6af8e49208f12d031328abc5187445ec01a735abdb28c1f6e3fc12b20ec8a54a4cde5d881833c6b2371216eb94712a8cbc8390458d839d54891af1704d3763d24ae85cbe0483e70470601ead1e5580a8f63168e4919eb82a42413016e48f9c2a0621a224aea93dde434a49b9abd28eb2ee7622ec35fcda7d338c1a99bef4a5a8177c1336000bc70935b7a121fd2a3a501ae5ebda2bd039ec61ee829bc839354f775ee0dbe2ad9d3601b55a506df1f77ace925c66e40e4072001308774ad8ab261c5bf4867db1a22dfa68082aa460a1df64b9d68fd2d026192c8949c6de69b49fd749c9bab50df65a661d60e3a01878a3842ca8e8e6c66788d917ab182f8eb95f3fb951b5c0fbcc5696b684a3acc4fdb962ca7f994dd0d9226f2028812cecface0a6690a93361282a167eaee0af4a7a325db6ec45ecac9fa14560522d5c925b084199b40450cba8debdf335bfa9e82d2369132aecd504b4e5ae85a23c5c4390c2561941044b3c9207549813687b1aefc436430dc27ba2824aa50b2a12eb05fda64be0ac9467d7b63fdb8ccc590fbc68b75c531fd5e938a5df17c602ebff3697520023362e542406a9aa8283c46ab6686e0c35004ec6fd65508f4a4f6064a1f8a04057e3170c05735543d6314c9385283c2ff01368f760eb324e2b11247203f135048b82c4b0786af49c56b3a4841b80e917b79bdd739408f81480bd3538f89369f301d0681157a7b5c697bf3d03c50e89167f9fcfc1dbe6ed6bbef1cca16d249d26f7b6d8a8f00cff1f56627ef9c9ccd38b132ecd171f1285be9d5c15b858f0422224f01b112dd8682f214e7fe2ea64e808e3dd1cdec9d6826cf60d716086906798274797816b0d6aa49119560403e34a3b019a2f580cfbe1d8c79f4d48b9b090463674a735d480f9e02e75d25042737e0ade17784af89fa5fee7321cd84b3683a39cc8d9d2b33a497b4bbcade9630c594cb147c41ecbb2e82a7134747a7222f6ae2fea0c33bd52ca51faa8cef40f6963ce1c100b52ecc5167f342d98b30f089f92102572a0e3154e2880e6f7676991171f68e2a961751713f5e95d2ad1b4acefc009944f8ddce3319f04034af5cb64815c8ee7060f18e87e9d0f84d6da088a198ae8c4c4e010022dc409468d4447fa7c041473cac015f3b6702e436d17405179e6b5e09c989772006a1b2baf2929625a8c47b7b68e419e0400a206d903af9eb60c9d0e48db11259455eaaaacba40232e8472bc58ff3037369a1266f2110eed95a16c0b4477aa82e989670d3170308b9485502619a38f711aebd71a137b19ada17440011b77336e2eec9442b41aa8f565581a68ab10663bc6d4c2da5635d8b1a4a56e1a00f348c5a56da02dc1fc44978c228d49dfced83d6dbccf4cfd0c38d3712e5d2fcc294c14aca97709c5dab64757f7d0ef1fc7ef12aefc575ddc5ed076a0e0266e2466d3bf1bc9bd95c4b32c6ad1945c81e1329eb7f8c453136d72d2a7b116b0add8087c4715f5b51c3dd11d07da8bffc6a87c16aa085761dafb2fa5bd59a94034c74e2d7b82cee0e4ca84eecdc8eb38a25b4b13451269910632e208fb56199a968b489cdc0d85451af341114a1e97de79a1124a026ff9955c6fb029215be571478b7eeb54eb1aec804c56839529d67518d446155c08a20814f95216fa1c5b18aa1b4a846538b1a14b0b4ead61947399454d249e8f945b04c5ecc25359d0c888505802190c828b3b94281362d5943cb40ccdf5104dccbf0ec61ea95eee89906277b03bbb28f57cebde66c758eb601fc4eb4c8e5816c3503ea7c50b856c56738aa56ae81fe3156dc5ccf68a4fbe7a0edd07abef69b254a6a50a9d34e123d0d4a90d0d849f735c33462cc49c378f40ded8358f4eb5cbb3a522e08588a6ffebc51ac48849a901d4467cc59ad69e598f29ec6eb69633c248572bd833e829e4cb02054973140a8e7dab720feda238bea182a5f210c2906f5bd6da18c7db337ae3a87ef1f53ba80135e0095c3483a525f5cdc9aa6efcdc3bb3fc6b10ca73140302825a55ac4c3a7082a2d68ccc54279036ff711adbb1dc5dd1402e86e03142bbd25e12ae91824766a851e08958a68e5852e818add56bc87815984331e98f41b364c45840ddbb5c16b4c19aa43ba08c458854a9a5034653e7e0d2c4d1339864f80e432aaa27423581911ce00d620b8ba89e6b391d7b9606e09bb74976746720f3db7e24a3b48512d88bda4f80e222431c70eb021459080622255d9f35fe6f1322a05739d66a9845121a14b850b5050bc0b6480a0b75088963bf5f80bc3acc2ae1038f9851bab4132e8ff2eea8cf45c39302d0c2d137861dbb5692b8e1d1fff7f5262c831b0769f96597a9ae0302c6b98b5b29f14305add628ff447a101a2ee3f4a55966f8c8eb3f546eb294f7b6acfd4d638e129ac551e7bb7d01bf5a63be7d10c68f4060d594600b3232387e6d426108c0039e3ec064f6b71e21743abbbb06e77e491257e6f6fa59c80a9dfb3ff87377b585aa04a758e76f7765727b13e23b16c1e398005f8ce53a0cf11ba4e597ce99d57cf7df7af9cb40e28fc13711c180d101c51965cd98b3a17176a86176306a4b828a841a93c86fcd3fcc52e32fa9f0c43f275dca34614f27c4350e2efc05b3504268c7703c6a69e516d3be040c06c0e71c865a7592f28379fcb299c93e2f7b3c0b97bd87fa881c3d23461d7fa6feafa0c4416e342efc0764e66954e2fb774bd19da1add7affc60c6af1ce62a0f8997d6c90aa116723baa9b668d387b7e067a00cf417db7d76f203ac4e494688e94e0f5f821198d23a0ce1530406a8afaf796e08954ed0320cc8592ce32bc32c5f0709da6f69f531276488a11ad8407bd90db3747e46599e51595229c2554842cef61fdc056a87521886b4975e806694327c906ac8e97a7e84cc93efdfc8da7280b9d4ec1239176c3c3a92f85631da95b87ee10b912b8297c38e2338500da02ec95c0e056e30500eb04f16d88586dac579f0d59b2e849b348843bb63d72b9c736d29401ca2ae575c5a72e4e5f2dff03bb01c6424826420e81fed6577a9794289ac81ba5bdf7c4801697622179e418b3471aa16d2bff14f24238dbdc53e8ea91a94d64f2c61a602b825a0d99a93519b3d7eb957ca048d96178594613b43273f0a72e4d868d72403f244583841f493fcd75353bb7bc43ca8b31e63504cbb3dd6bb8785b421a3eb90ff698ee0e8545b963a2ea3a8123b73fbb4a50a6c1632062a49a1914d3533763432d40c7809a0bd50c4ba9b6eb4705ba7d6340a07c9ed4c3d6edd01b91d6b391698b397200e8239d9ad0102f145d0e4232317af9ff4e690effc0f430cc8af0e3a3030c433381df4d4cbb69eaea4180b713166bc41e28e12e034794b1ee8094900cd521bf7106caa139cafcda10cb6e1d6b75c72e9d562263e8c45e9d94ef500e08e6337dbc08d777550f25323d86980201810911329e8619c4090fc26fe49e3d709817fbff6e861cd1c0152a4031be5f99ac50d2a58c41b49802602225bd3d09d2f2fd52d923ce94de419647cb0f1feed47b230a6f1400c9c27fe4f929b72ac37ea2de39ecbb70aae78f20ba126c3a6edf2db819e3b741a1e009e19c797b406c13105553ab61f6d35594a473e2ccdf7413094a5511f38caf86ad7c82043da969063faa55a13c9643e9abe48e12c1545630a04fe5b88252be90b7dde27b14dd4b054c0950fb707e370e80d945be407c0470479ce52566283a9fd5702b947a84e47b25aa07c994e28bb25861e44197d240dcf33cc5c40e04006f099e3628e6abad2bbd0ae4bd8a05657e77eb9cc1500ac16716b18bd21f34e9a990f713a5b96220035f5c1ac9d90cbe01dac83185994c7d61999e5811a7931b5d3710ee228fc305d9eb0565230bc3044886d3b585f6de06d18300a477ef7cd8bf59edc2fe4a984823383029e4aea16283e54f2a90fb3daf7f1124976a116dd6930ef01cde22cd641b03ebda63fa3a60013bbf5ac1b63cb8d8706d78bed5bac098b7bc49eff62dd9cf056aa3d802f896363674f619cfb6e818e838a62104891d6e9bf9c3b8df6d3fe806662a88c4167fb39e24b387467c15fa27bcbee3e420641a2dd39d3fa6110dfb623e0bac03e07627027f7aa437a5c2c2668ebeb7b6b16baf9686609ee5b372119c7c4f438c6da2865ddd4f124f59c09ccd7a4aca6641b5b1e65d06db24b3920f9bd1ae4ca354d401cf53f307c224809a2c16d4a9511682fff531467ca06161bbb9d6da1c039988c12864468de5b56d7d74dec08413af3ef96d521ad8c4ceb0cf5ca0ecdce7aef1962826af0b9cca40d0a3fcdae88dea402346592735b25fef7cfa19baf0d8067fb96c43034108a4743ede6f504797f0ced9bf9a34032ba06d575422b88aa39ada3e89596097133b74f9f21ec8dcc4c676f4fea6adcebe9ead79d4782e8d3c173560cf1775968bc8349f7830bee868ed58645a13367019958d23b89eb6523b4563cd687019087e090bcc703601788d6e62252fe5c119f12d46de285d5d3af808d6b2380e3421197df1386c1037a053c38acf0a998279afd1d3449a76a069a33644da63ab179b23e71f897758d92a8473cf2ac8f73d7e42eb06f758dd0058c5a0f6620afee1cc4200d058e5c88ad8297d5fb7ad1be0ffa7170a76004f0dd1c502f4a697ff84c9a4f9056f5d01f4220557b990d0b8c65069e502e3c5e2788fffb0b869f92d1d25da2adfadc02e178038dac7cdee8f2fb0691cf1bfd64cb4a4cec94417da8f0c3bd7fa66a8c51ff1e4a4c57d3698ee0bdfc7c0cbdf867c558c8a0d71fa3ae036e4a9430a78fd63b884cef7a753c2e806c7405ad0347a657cf15e041dedd0b3f4e38519470e09532bd472eba7a152eab8bcfc2bbf317fa7eb4a85c67dab0e03475ef5fd92bff2b863379a5897a5bbfa01ee48a50be39efbe84e20020b953f3a0e8ab90a6f803150ac9a6fee6015a27a7604380c2857480757773b1b1babf4dc7375a9b36a36aebb48a76afe61e6c50ea0dc3bdd6fd86f5fecd18b03ef68977752155ece005b22ad7893701918a59bf1818d3ddf989b9b079deb2e3b9cfa8f10a8f7246c84e4c5528f7f80b30b0c7eca9f70003a3132438b57f10e786379d8543f036af3f92ddf98623ab84d663dd06c50e4dc122ed39b0ef81e680be7d5081cc9f9fc9a581cf3542ebfe92608ca45972a09b42170af0f04137d19add19f30e08c5e9e2cef4cc1b504899fab2749e3240697118e053bad91546ddd4739cf02934ddb0708f9bc8a4494b1bffb0f0aa147d01281a8d9a38bb6997b5477ec568eb83ceb5a0c17153b0e4aa2b0c7032056e9e9cb52d905da5ea67cb1b5e5f8629db8d30edcca5076cd48a0390d31f4af78ef85e7725400bb359dfa0340396425a03357b55b7cb121a743df4c5b42a9036cf567fcd391d15a2511d60a28b3ffabbf01c29459f54f14114d7bcf68abc12848d03eacc9a8c51205e91690e89fb19a1efc7537a896e8c779816a73b476032f34ed5146e778de47e6522ed6c387a9cdb7e1337017a63bba3cbb891e9efffcefeb7c629e1fd232543304a83a2ad8d3649125ada44ca94a40c93087008cb0856ae2928660a0a2f54416a27cb52a99475ed64d9ff726df6ccd4cad36efd2cfbba23571c6e77a676e0ade0a826a0999a3d966559d6fca92734bbb3279fdc26660e51b046bf2fc9e7635fd2973453b3a76b509065eba7cc33c996b3593bd90debb3853d497a519745db542a346a7e9122468c1c39e24832126bfe7892067fba24ec45ee2b4f72a33cdff21b535e5eabb8ea3cb794a7833ecd2e2d0e9a7f3e96ea1a191792245de3f7e4a3112fbc56d72acacc4aa4c1ba4583d3f3d51581afb28575d42275cbb22cab263fe99692b223d7a7d7dff18de7705a3dd7937ba227d9d3ce5a9c3d3dc1619665d9955deb4faec95469bd28f49e4e7f72723a9dfce92d9b733aa9d2e2a8d9b71024d27d49956254128e9aadfe94984d6e13337f445470f839cad76bd5e0f6e319b16612bd518bd4a20ec548b6beced057d96dd422b816659eb35b67dd22cf5a94e79fe49c684fdf2f755f852a38b4ac9bd1d72ccbb2db532464d656ae7dccf5c4feb4394bf82a739fc2fdc9d6853bf59fabd426afd59584f964f34a9267aa7688516a6df8774f2d0e5f95c057b9337dbd269514ed94a2f2b55e5eaa6b52de5b54fef4d4e4599ee270e52ddc25615fe9a0bfbd67efd4043267f4666f7fa326147bfef4a2a0843b8072385ed9deadbbb27df6d69fac6c78cb41f6f44fc2ec4ba889f7d1e630798a7598fc86759c9e2ee12b0be3797afb271c5b58f05c4949794fa92959469d6e5e3f7b9ae29ed1af9b53f7525de3a969253169269a3dbda6474179f7554e49c1214fcae5a238c1a73fb928bf5d93d3cd81b799de7e0a8e2647c9fea6a9cac9abf80ae5b337fdb661943765dad7faf451fef42727bf6d29afc24591f227970be2f92aa7e09393373dca8d79bbe1c997feb4fdf6284b58aa7dfdfadb67d96f77cb8197f1987c76971840aed9adf54dc093b7cf6ea537dc0194038fbeb436b63fd96ecca690fef727377462cb8117aa602887f6295ec257ab6cf2d6c47463bef17a35a26cbf7443150ced00caf6bba4d97598afb49f1687498e66af17bdc1d370287d4790708750765cb3f94d066f05877ff6d91c6a70166970bef6376d556b565187f88d6ba11be5f05a0dc9f5ce9ff9e3365f92a3e66398e79d4e455d93fd1c81afdca86ba4cc5ee4365796b3ec2f9b936136013cd9c240b0c7ac13bec29162058765026a703e4faebed53724257549350f5e6cd0d4a3c1f9d7ed4a94e7b56a70fe4d7f49799ab6c8f3e77f495f12934fd7b8ff7c1310fd942acf9f3c7d8bae995813a07f5eabd9f85a396afe1cae158a8913cde3ce001f424d2deb72b72c27b27fc8d357ca8fd66f77aa6734e233b6f77429638cddcf3524cf6be8a24215790ac9b36e3f332379fe76bdc825d6b2cf328a65d8a5283ee4d0d9a0175d435c0941b3ca9827aeebbabebbb2ebeaacebf234ab7479da755d57e96a5ec4ba46ebef702873f79af6a5cf6e38a7f7737a8fbd4ac97b314fc4a4629e28c999f3a741e751ba1368061e7d5fc51af35ad99174cdf4bee4fd881f556dce8b727666574396bf7917b38ba3d0673f87e58a43e7226b31aa189f9827628cf1e91af9968c73065e8c8fb4d3931a1222a39292ebc2a1ed2e776d8e9aaf9292dbaf852091d735db3b86bd79ad2dbd94a5cf4a1e731bee4b4abe9e4afe2ae150e6122d97b8bd51f2d697dc98b192eb47eedb13deecdfae8c1e9048460ac50739e38f4a422591416dce854ab26c8ec41adc9ef064a4429e19edac6e3de17aeb95a03f2f6cc5970175d40d195f5afd37a87b37e6c4ba18b9c8d1df8bb0174599ca064f3a3179bafd089c1ee6100c099e3bfd8e324d4303aabc7350789262349128295769ede05bb672f0426c7ab8c4fcfeebcae08af1a131a9981e9ac5f85c988b62a676324dc3e14e76b38cc63c11f304969a73a8f125347d4572bf945f5196b367f678a906b72db5a552d24b7929bac200edfd95c81efb06449c1e1968be924186619e2ced0d297bdee876cca737ed8d39291739f4525cd81b34d39503649efcd6f3704bf0362356e4a8458b726583e7a5b694cfe6c9d4960a92e5f4d952a6548e3f38e1726667384a92c12db210ca01c8110b2f20b98672f69675639557865e6f98fc4625491d4c786e19a928f14edb9c7e69375383b14390486e1c5eef8f3d8761dc67ef6138dc992a5c9025bca8db30967986fd86c32d7bbf5c145ec5fed3de0879b2fc0bebd0f0957db833257dc7b08e0b235133c5579d960f6a7ca99dc417911be9801aac4335d6a13a54871a9446bc2971542ea2dc4f1ba703ea9a8ece062fec803aa006bb0e35d8f4ad3ae4471d909c1fd6a1b0039a3cb27c2c0c5ee8477528f60e1e1c29df537e07954aa552a9542a954aa552a9542a954aa552a9542a954aa552a9542a954aa52222a40624cae1cecc345cc28b9af6cf9e48e6a494ce961dfdfb7f4ed1852bf2cd118b2e04e5a2a03a844a722c23d5a094510613e236da37b5e894d193c3f914bb20912c3fcb249e5e7415e59e6f499c45ee8be812720dc96d24439ede812395734e0a042fbc72ff55a46b28166bc4ad0ee5f8c3b4eca0fae28b2fbef8e28b2fbef0e163c3c176031f3e7cf8d8543e7c385266871cb1d0021ff2a9db020ea40ca828ca118b290090231654fcc8dd0f62aca1e34dd2405484052251209a624812729b08c9ddf9c797f0242877d670a7e34d86dca66298e79d4effe08caf45524a29a5dc7edcdd7d2372543f8679dee9f47fa51cd58f619e773afd83608ad2d080e0ffe9e459218eeab78e1cd58f619e773afd83200d0d08febb50360382ffa793e771465eac21f3f1db8757bfca5c2dfc9b9e7163ae4518e679a7d33f086298e79d4eff2088619e773afdd3d06098e79d4eff2048430382ffa793e70dc130cf3b9dfe41b04d686840f0ff74f2bc21210cf3bcd3e91fc764a5e36a3fe3ca2c738104e06b500daa4135a806d5a05ad4d5a2ae1675b5a8ab45dd873479fbd97eb69fed67fbd9886c6adb88b68d68db88b68d68db88b68da8942aa54aa952aa942aa572bf15628f686840f0ff74f23c7b648fec913db247f628f773429c1127c40971429c502effe2a2f068db1c17b65d13d59e6c307f7714413a1fb54f8e8e2e31442ceb84ba209d501704e32242e79cb81b9a5a180952ba8884627c378598d7edd3dd7376b523471179f6d715020a0aa225e921fae9951666c9d3749f74ce49a997271095968ccefdcc18e3ac3c725755832559e5fa699b4bc8512d24547db4245a5283ddfd24e5feaec70f8faeb15ee2b7309b2f1fcbb2aca022933b6271ab243823475555835d7f6a10cf3a62f9b21fe5adfa382a2897b295d436b157a9231f4ffa4901e5e933311785e742399c4159f865dd2e9bb2f4bc662cded492d78c1817bb20ffe250e34b587f727b110e2b53e1cdc9c52778f27dc3b08fd6c7182351945b8f14be3dbdd5e8e461f0c28b2889688bea466e23571876250e8ab637659ed22717aaa0fe383179dc2f2a88106128e2f661c42a92a5a745165a0cd16228d31cb1d02209b94f5868d1239fba47bd11b36c9f31c618236663bc2eff3192524a0c2b5a83bb7b967590114a29d5b4951bea765dd755eb2acbb26cdb92bca8b5566be3907c6ad0da1c24f9d4a0b539f686951fafcc323e17b168c21016579043b7c51366f251b72364d69c19965dd99433a3d9cc3ccb3acb6476f2ccfa0c29cbb2ce32cf664633ebcab20c935916bda78c19473f43c3f4cc7d3ae6eeeed37d4eb7dca7bbbbfb749feeeeeeeeeeeed37dbabbbbbbbbbbbbbbbbbbfb749feeeeeeeeeeeeeeeeeed3dddddddddda7fb9c2edde7e6ee5a16a38cf7835aa7cfee6ed9b1636cea6048cd69a9d575f7e439aa09d773b42fdfe2585d66eb0011bfd069ffa9b44f6d1339f3b9cb7ec8f22f1f56252060842903119c29f225327d89bf39e4fe3e3988a0542ac561042525254748e0791e1c4ad0759d174c701cd74513d6da9509b66d7bc34eadd50d27d034ad0d28c8b2cc480a300c63830aaeeb5ac30a2ccb52030b68f4972d981998738763c0dd057d81eedc18750bc41a7e71968ef96ed999d92bf37580982706c1697157522cafbeb0cef3ba4b43a3655d7761340131c3b44a7fb339f337eb745a560242b0c0951d4b0008db4b0c4da704045c4220d6c08012d2080bc4a2933a9c8e94422d1649c0e22c6e2bc2db9eb34de4d4cf5e5afb12e81a0e87d6c26ae6b9f696d5a73aeacf97f5298e558593c2abdc56eb731647c51b67b1c9d19757b59c6c6e3ab52e2cd3e84f99b27d8283fcd1dce3b380c0513483a0c1ad47adf45a39d7aebed1793d90590d18593fe7534bb316a096b5128845b15eb106a675253687d2a9c4944994b4cfbac18820e2d34c35e8c768329927967f2929c983171b4c49d968d0d098984c6c3bf93beae42822a8a8d81810bc329f9cd82672fc2f947e016368e2aa64150210e44aafe7eadb25b3f52bf3579c3359d4f3a6476b72d6a33486659af5da8fd55e1fa698628a29a69842ca29629489b27d4e1a343402684b84e52fff3120685d268fe56404afa9bf1b6152e7a2568bce183bc6eeeeeedabbbdebeee983b67c4e896199cda1d7ec29fc793cda9dc49aee53fec3a03e1dc32e779fee337ee8eeefeed37dd218638c9647f7ebfac165d19e0b4be11f629645e7f7132519925772244a6284fc829e1c898cf8e4308621f7c3e488051980728e58837e7f357d36877f38be7c9313942c2b49c18387423fbe4fff10d36666441939d35d76ffbc54e2759cddaa9661735ed4a2ff2198c3cb1283f29dce534a122f3698a2725db8fbe0c50655562e0c0382390ac88a75596f519f385237ada1c665d383fd138f8361299c6a536bcc324f0db6a433f41c7fa2fabd5f767f4c4a0ec11cb32000700810d4366d5ef5416d03ab66790cc13b4c19c1d64324800f86837dfc0804c3fd85975d0cc84d5b4ea817477fd269f93545dd82b620c438639c34c619e39c963f11e38c71c68f779a4c1fcbc92dbfb01e1e4f3e28bdc7934daf4d4a29b1cbe6f1c0062396bebd4c3c7d4edffc069e7cff19e39cd865d199755ad46f10a4a17979910c700cf3bcd9a61c4acb12ddde701b32cac4247a6420036bdb9a091b36647b9c94e5468e0d4f5a1b36b08c8b3252664a8b0bac1a35d82f65e046d7df881104fb6d036244cd772ee65bd7d7b951cb2d81e6cbe6704bf02eb08d6037727db5aebf5a7ec7ec33dcf9eaaf7df5f45c78fa602f55d2b9686262a936cc57e2a2d3a22dbda7d369d1cbc2542a954aa5ba70fa72aa4c95a93255a6ca54992a53655a7fbf734bf0fa6fd89cb639ee96cd9973da1c4aa9cdb12ccbb2ae2db339d7755dd7856d9acdd9921c1d091182550ce36edc2839ca32cffa31779f4dbf7d76cfee9f3f674caadbbddbbbe5c45a5a43b811b34c92644b22936c495229214292080925d992c87c74244488949209d586ecc38dad850d073ebef0e1e38bed06b5084fe5c506674e3736e726a7a5d4b2bceb3235182f0cc32c3a2b8fcb6d0fedee1e7da6b01f47b951ac717d1399453557438ece861c5f0b03f6e336d3c7c7cad965c2098acd4b3fc37ede2676bc88f2ef33c46814511e7d1501e04faf11378aa0e5464c38914da71503a9d7a299d7a49765398e49f98da18931f3c6f8b8cf9823e24b6b1e068f885f1896615846314a2d47253d75cb08b5546059d79ceed28330efbca8f125442112e7572fbc95c5a30b2ff47a783dba1a377a278f062790855de1f164ba8223fb9a65d7cbea7b5e8f06279d3e6e19d0d5a4fa93e2114c1fa06b25bbbf7b0587fb5dc1e1e146850da8c1e9d66f5468707e8f06bbf0c2adc7d623ab18112fac4935a9c1d980c6a9431c8581c10bebd6a36b92d0700b92da7cf254e5f9932750d08f3ce756459e34dca88065357aa6150c3c1d9995759685313e98d62bf2fc5887e4f9ab06673de23a1cd7a38aa4c1b9f1f0c26bb56dd64df99bfe2ccb687db72a0e298fbbbbd3eb5fdd9f6617e5e44f9e883939a1965533cb7ab77edb7878ab2333439267a72c8bbeddc928f74cec48e59d0c8a1414a9143541d9c976b29d6c274bcdd44c4181a552a0f076b29dec04873b190e77322c954f7e9ba91dcf3b590a8a99da09342f555ebe2cface7ed7edf755d9523a87fab656fbbe4fd3b44e72a81bf26414f79db6f23d8d1c8d641a39d3d9ef6d0e21e44cf75cd771341aec2cf7dd985158101c52bdb55cb0e55b3ea5e563b4fc8b6f2d71c6d8f2dc8c1929315e66fcccd799193340f053c08f01fe4b6fe08df993dbd222e363622ef8dc3d99e166be193b33f3d2e6ccc4c43c17f31f0ebd98b7336ecc33356e1bccad733bb9a18489b9a0a6e11524b8d7fe06f73c5993893cd9ee74defec661ba987bfa93ee6f1abce1e79897d6868c8f89b9a7e7c2d357cefe0a876d74e6fe3319c9f26f12d03695a56be2902e8a64f9e189e6a70b3c780124a57ceeb330b00d974a7363c62a2ab77b706f7fb3f7bfa0aea1796bada579fc15df066a5036907d1a9a2bb3bdd25a6bb9fb616d87ca9599c602750d7ef9dd23462d6e8e928fbf6d0ef664d44ebfe1f094b5ff2e87c369afff7057541ec6ab7cc95d51f98853f241dc959494f7ee4aca479cd2772d259a5778fe700b40e60f7f4f83693468431a59fbafe5bf0fe37f38a4912df751fb2f94f19f4ccc832fed0d1ddbcf2c8375c0e050e6989769c13b1d46bcd319e6411c4e1a8375c0bccc6bdf1609192c849cd164e09dce3058c7f634bbcd41f38685903316471cd2c81fe6ba18197fd3d5dee88e1185b26f31f837fd7d1f6fc8c384e728639f461ad1bda591616070b8d3424823be0ec3e09027c37c77adb5d6be6573ec8d77d73ecc05431e6b6bbc8d4329f3ddd3c8c83c8daee95ee6a9cd91c14478d188cceda21072e60bbf17421af1c5cf6221fabbdda36eccd2dab03d120773577bef469cefded09efbba71f66a9bf76120de7337e6bddb38dd0b218d88b97bcd7ecc4b1a59c6ed98db40adc1c40d87335b1bb5e730d620f7f6f67f37768fffa6b98f3607675b603a1cf264fc2d1ff1bfbcb4393fbc44dd98bb161ad3e680bf5dd0be0cfb32f839ee51f665eccbb07fea1a8ba5cc5b9aefdeb20a90f1a8ff627ee63f1ccef80e7b5907f7dd73fff5db98a37b2ec7f6379cf98b18c7f6da6f58c3f16f9cbbdcf70db56f7904c4fcb6000ebf7c3030e18e1c16af686f7f5bd13e7e8743d3f08e6c9f0bb58fc1c5fc4d7737ec1e067351781ddee9978f3647cc6f5807eab9dfe90eef748ef90f4f8b04c681c29106ef7896f1dd73389cc17386cc77326f65c8bc95b11cf7d9cf6acffd2763bf530087b5ce7e9dfd9b3e9d6ac0b716775fbbeb7df7d407cffea941691bdc1ea442d4fe0b77e4fe1af335e6cac0116360aeb436220e7972fc4fe66130d620cc73b73f5e14cc479b4306c70661c06f790ec7066370047f03b7bf71193794f131be23a8813bddaf3df8dc7318d4f06fdb7f61c7cb7dec1a99e7601e068713e665647038612e18139fbba18c07e21bfcbe45dbf06f1beab7d7beac7d5f1c1173d2daf81ee66f3c83a18c0fe2616ee80417b6bc0cbcd3e0b7a070c8933799c1ede20fe2863bb9e581b8a10a72cbc7b8e18edcf25ed774d8d43611e70513e1fdf003666247de911967fcd2c6dc415d83712873dfef58584e2793c9f3b68d25474dbb39bee7c299ed8d7f5787fdf86f2d66e2c228e81cb14b07754d74d93013eef2f21ba883ee0ded3f5ed91ec6f615b3392d980817dfc29b2d7766af6bb4ff70288bf0ecbb19bc976cbf08affbb76fadfccce6744559e8a1808fe5b9ff6ecc38dcb1df7777892d5b018031d6e415f1a4fd5ebb2b1c46e27bfb1fdeec7317897e96152458debec53afa593e668ce5ba5083b1c3404c7ee59a1ab57259f1dfdb2eaa50a272bd3078dcd7592a6cb7791b16b6dbec73ff7552ae8cf0424ffe7b261e2b992493ac528eb48ffc56d922291d9645b228870df459c31f1d7f58bbe99386f2376e5140f3e964eda3e01d9a4f4e4cf08ac59ea951f2b33a78310ac9a22fbdf72156f27d38b42537dadfb40ca38066ad6ed77f1a8c3463d7a2f2a75f21abc8d28a56963f5eae222aa2e4afbc08937255d44639fec0b3d2d10a6051e3cbcd31058b369fdf6d1ceb7c3fcab87fcae9af1f1e983fdac48979f8046629b7f0238734d93fc63dd8c1e37f20da44199fc63bea002c353a36ac06040dfad3eb4570be025cc7743be4395fde2279fe014c3f3f66b210e5f973e295f931873b57a68f21413110175cdf3f25d0bf438a89a98540ff05020b8720f053c61a9447331b428d2f21cdceb6bd34d8d95bdf98272f767766be2e6bcb2eac02f1791ceec37f0173a4a1912316aa206f11b4d87bb7cdd1beb312b45887773b9b63adf6716ef102e15e9bf255302db33918267fe2fa37ed2f36c7c29f81a00df711ecbf5e7a382c05f616fb8d8bc2c3b4af98080fd3301c1836e1e96911d4b0c5312f7b7d6b3bf342c195dd9e4e79deb69840b3b996052b1ce5991cada88251aed22717b410946772e4c215aa5cad6db64d8f143b569ebfe3397e949809d9873ef421295b177602cfd64f8a5d58c63131c5b30f976c38987660862ffc000a247ca1072958e193051a644108d918321d5c008a226ba0820f55dc60880e57d861e8c7068415b12ccb4ab9f404e184ec13ab01128200c100098810f230861a2b8c1cd9b460c51d2e2d6401065bd080a3431f0186a2210cd9c10b48f880139e86c8e14b6f4f2aa1f2c8a20c4450e8c21678b0028ea7ae588316ae88c39b4e286bc829395ab1450f0a8623237421074eb04111d86083211cb9c1e2419fe029c2143d98c112cc4085902de0f81c828080c120658a286c47b082860b5b900391316871862852a2d0fedf35fe062bc6a0058d3f11910b552043f63f22126d5bdca17b88b2685012215a1d699fae69493b2557ed332351248a44447dbba741d92d8f1a949dea54fb744df7744dd8a92c91b42a098944d2fd53857b4164c513393c0dd9227eefa037eded4bcb6b0d7bf19e22b6d5c7a28d7fc5db3569da6fb8b57bf2b4379d347cc29e77caa1d1a0c561fcfae1b66dbfd5ad6edb562fd6a076a7a6691a113428391261010d9e673a5d9628237f665a90831ce210872347e000072fbce8a28bd5ea3232c1ca070f88dc20040d44de30ed511228daeaeeee9ffa82206830447323412b72f6063c582c5a0f53c8598e447a18031893e35b5af04c2550f1200965c0031c7c4081d36ec802d0c190109ab00514bee0049c6e03667dccb014f2e5075da3c5e8bcccc7949c34184545990d01249ef9b07a1f3d2f062548a552299c02bc7781082b921b320321c2b7182d9d629ccedf34e6e33612a78989f97c42b9df4728d6c8320124d6975b4273c6871f153ea158c3f337943fa12f099f12bea26f482ec0871f1191027cf86591fb13f205f984745ee64a9c5a146be87c7fe522d6f0bebf9a411a51c4a51d081c6ea97a94bb63e0baca9d51ed8c628d2c4bacafec16a5d3e771643eec90bce5b9338a353af7776a883580f8fe6e0dd28820bebf33328a0238e2c36f02f83cce111f7a3db9bdce48d7c4f8fece28d690b981b8415c4dcec88f7173ee11170332373aca751065e4b7dc17f9d8fd916f819b22649090902142cd459491cf72db0c7246fe0f57952557245f0adc00dc09e43e40ed63e576117007fdc8f28db83897c66d1f22d94594f142cec8bfb747943992e50be05ee00e713f703da98192e41451467eca9554c819f97f2b706986ac8a8c562b8832f24f970572463e8c1b43803b813b73bda8284719f9281747cec87791af33a400170077861311c5769f93526b52cbba2e0ccb2e2ccb34add64dabdb662dc77596eb3acf2b29297925a5d2f7994c2626272828a7534a8acaca5c59f1962b3ad764d3b9214bd6f9137b43d61314944de79eec0d9975be9e361d9daf5165aaa8784b158cc3746e88615ca4c2d3f90f5cf7c07d47e97c07ee8da3749e0357031bb852035766e04a0c5c7981db16b85d81db431ca5f314b86de4289d9fc0f594a3745e02d7831ca5f311b83a0f81abf30fd0792574de0157e71ba0f30cd0f924743e87ce2fe0eabc02743e013a8fc4d57904e83c8eabf307d0f91b3a3a9fa3f3475c9d3780cee3e87cd6f91b9d2fc0d57902e8fc00745e003a6f84ced7d0f922aece13a1f3363a5fa3f343e83c0d9d0f80ce0ba1f300d0f9b639fc752e1512c7aec19b42620d22ccc76d64be679ee6fb3121b7f14007be1f5b653e99504694addc0603dfaff968426e6301b7a9c03705bebffab8cd04bebf0ab98d04be7d60208052e241077c1040bcfc80efc370696159514939c200387f6272f311e04b259e11df7176ab1fdda6e6351a8f7d749b00fcf5d1a24f733dc766c8dc74cc8d19e6fa1011892291581457f12826f9fc001111290ae5ea74437984724399d43efdd340610b853d24a4899a4851d8ab2dc4c24ef2f11f20171aa221e6136e40b9898ae081f196021f9c264623be9a92d7d57061574f720c515aac0f5da2dca28cff776d9cf12fdd2e7a57ce7027d9dfaa64ff6d25fb573913e2172c267bfe4c7108f33060c880e1e282726969015b5858826059590162454525864a4aca4bcae9f4c3090505a39c9cdc1313933731996098becfe52b955a4a25252c259eb7e2759d4ac771299cb527bb6d285bad2755d34cb42c336518f661d755ba2cabc4cafd98d7cdecfd1cbd1e65e4f7dbce5146b6cde1b9b18c32f2dbe6d0fecde6d029add7392179a46b49a8f12504626a3dfa87d70179115ec7434a201e3d7eba79fc0071418686ba1f0dd22041ed2af71f158f39735c9e85e52d211616dcf13075410d763dbaa006bb1e0d763f3a2096af9655afad7f60a5d275958ee452c9b239b28424a794543a4aa2b472145083291f6df76373607cbdb8ea7265ae2c57668f355858deba2c5791d0f5af3ddef231d6b87ce8f9c95594e9872a3d3d997e8571ad1c1bc33cef74fa07f389269ffe0463214751141720972bb3d52db7470a18ff441532b46ddb1d82becb75f96910068c7771c12eb8fbc1405c5731171877622c376618976695920f4f8a5cee7511e228170cf34a2e2e3e0dd2182e3e997e8c245de3f2473190c448ea1a0b772a18b7fb69904783a6144cba002525657a8fb8b0b0b0b0bccb0d979817491227441c454f291fba00651a6219c3b20f4f8a32f5ae90a360dc98658c2ce8c7184439c61047d17ba4417a8f32bd4777a5f22d37e2dc1b7160dc6bf6e4d2df2fc851f45dee5d25f10139eac3bbcaf2ca0ce3ca5cb10dc6f5ace2bdcbed80ba96db55d9935af1f28b0b4d903b9f2843bff3c9148b3294e2951b622a29d7a7b46a62e2a1d0b3f8dc48e9ae32fd12172053d7859f4fa62d4719cca10b50a6af51a11c763e5e24872a3d99e28d621d40a44e1495a4563d40512bd00a0eed2ee58fa3a2cbeee9a3034ffeecf66e9739f09eeeeef64ede74faac749bee712332814eeeeeeefd9e039f241d2479ddb3372b2a168320202121212121212121212121212121212121212121212121212121212121212121212121a1811552cce10b770042e2424f0dbceec1e20a7bc89653772cb67024bb3ff63c09258824a1c410a0889e6a0b0b59665dee8e611da1631d129bc6e0852cb9814c161c1b25bf638de8ad3284851796a4fcd290aec122d630795922cab29445962522a5a22c4b4659e29e93efbe069d5c294cdfdd271e478a127754dbe7b4b0e0c9252e2253478d314a29e5d6bd5d5578ce94796e43434bb49037ffc6af3b240b7973ce79cd39af39aff7ae1f38a75e3fb07071575094e9bf32576bc3bce44a717de9625fbd4a258dce853c5966eecaee5e5534eab314e36e049205054929ed9cb32e71d91c93f73c21326236092254a89a667396d0baaf261fce39e7bce69cd79c265e69082d29a9f0e8211acba1ca8fca4f17bc5025482548d784415df34345a86b4caac80d12290dc9eee48e72d76cba403e477d5f66c27235d9ae6c0a62722f1f51a6af2524f7975c4358a8b12ccb4e40baff6eec214215a1dc5f2a51f9d143f4579b33b14a5017bcb0a41294fb4b434a5794884a596cf6866661c10b4b1b2e0db9611744c486ccf3bd7bfd68b04f54ac93133abdb12b939163e1aeb73257152e887785213721afa058e3fa7679b14be185a5212a43d2629707465906e1bd098d0665834b6c341a949d2c40119e26ed4bd6944822010738a24169b1b4f67690b5f80688b7d13408bee4d0cb1ae8a0aee94ea71843acfbaefbeed1dd0eba3bb48f781d3e3590d720cec71a4dd33496ef9a95977fc401129084125d63d9c82247c9fad9cb3fd1e89a1f5ee2f0254b22b2fc3e0e112ab2f2e1ee1ba86b7a6cd13f7a486791a550965564f95f67c3e5c1aec1e16344ca95a3e4c720bead6d6be37ef7372e8fba46d3645aaee44ad31a4806c676df2757f208ccb66d5b03c9081376417c63eeb5efeed775fff1d622bc9970c6d3bca4b9d2085f5934e36966bc0e9a57f99b96465d13a145a8448c986a83d8299a81000000007315002020140c094542914812669aaec90714800d8a9c507a5299675998c320658c41841000082040008c88c8c88c8c0900e07d906e37a2d359a2c6b8155bc4940ba35e003817b861ef1fa8de8d2e22751a9f689d9291fd7da8c221e3922bfdc548d2f411061022138b62508da232463b0ea8907c54ba49c8ee7fc3f35c2d7e2e79d2f56e9c08fe97e7f77b1fd2ff6c4bb10a4e089261791c87f54c6958098c5b96d46c364649da29632b60f2d70406f828fe6730285d77e31bbc6e4fb3281ea070ba83b0a7d3f650f0396bd9ecce95bf6673b9c73a90651044e2220f7cc7820627dcfaf124445c02bda9710563ef071b8716ef550ac6a28dbe81cf9f3eac583df3900258efb5cb33b57b777af63c87accfad8f32cb71583565dfbbd7ee78b0c41edc4f2e9a43d9086bb9bb8d682b6a282f4f8aae518158af7c80564b33b54d91489ce8828cc3a1a6935f1579f1f0b9e243447c9ac8a0b3a5d2e506c4ef4e3ddc5cff43d5810f0c0755f94f0a378fe24ac425dbba7928bb89cc0a55be79ec5eaa2fb3c90dfeefc875d4dee88b2381ccdc6eae4a7b86a8e6e640f753f2e910cc6f944b66a96fbfe7b4bdca69f08e05485c3be05c1f5eb035743b2aab182fbc6995d03458dc928968bc006473dae96f949d08fa30f1e5b6e1fb113a586e87510f7896f06aac9c921b0416f948f805e7dc9e4b1bb2e4bca425aa97448d7209f19b4b3e102ff9783f8155703ca090c3bc3e5049c05099c931a5d9cb4bf86695f2222665bed2debb92e5f1da099b7f986bcafe2441a382a12b682d0afaa937cd0045182129f292259e97d0d27109f8572e61fa2e99223402e629c3edfd4d6db419d8246f729918ce0e45b34b3284a3d2e92e21991aa6ac7957da553b5380c0d73062812e3e350e620d04e9e219309676faa3c1778b3c64e0964590e2929b72c9b206cbc20cb7b54cf50b18faebd1843c529daac92368faa921115b8f85862433bc841fa64b3e8bb58c67a2ded3714be68834524c5598cbf30ce8bba0c3ce110f34e0c945c4674e65e4fb4b960ddf9dc374848b6ebae4df493c8dd54530ca88cb66baccdf4b3c8caa137dca880b6d9adcd791380c4a076c728f40c0d0cdbfbe899111bb529363444a163dfee74b8a0fa79b6872474068d220ff4f4261c07d2616ac5bfe70d9fc48d7953a3ea54b2406794c2683006a429c142b93a30a0096fbc1bfd9010ad77ed6b8cbda6f84ef162a1c520d42e007c7448d954c4272eb2aee4dadde40355c75b618ed1fe5d1a41cf8069aba0b71968117bb81c7cad31d90d8c081e16a6070b822f431340008700688f1b2c8a32219d8d82591d3b0d0dd7030401cf80560a6fa5c76e987bcb16f81bd50e71eac658101011620c79f21e0c22ac0af50817f2499bb1b8d0267425060e54821d4e42600708c09b00c2af72f9e04664827f7da5e72b7212340043a1100a10226eaf5ab6bf85246563b3d5621ba4987ebfa19c4159f5332e252c80bf7740c106afeed5ec07fc34d7b7e6d02a300d0db04e06612e0db691160d1ed019ccafe771cb84601b17721f5a5312ec90ac8ee860cdb6403bb95d1183612400623000f563b34583068fc49071879034c703cf71971c0db5eaf00b596011ae75609a7bfd3f6ec230fa0c1b1338032c00048b2530238340420890370cd7301d8c800201ee570a2da21c471f1f6e82c2948f6475a1f1eaca768a899cf84ee13814e4c53e4990824df4822e012a788c0abdd2002acb28308b4daec21d03a9e1c0207fc73235deedc888b9b1b16dccc8db779b9c18caddc28a3931b41f0c88d0528b8dbdc35dc6bc5fb8957bd923a9c0a020231a10d10c84329e8d527616c4ad2ff0fb081ff3fe0c8a6ff00425286a565ade01f5aea2539ae918fac3881b95ebc12f86a4fc14a35dd3aaa5780f5981432f38b5faa910358d0dde8220ddcf244719a6aa3dac212b0cf1455997120e0df3d2a94978180eee9f6a1cba5026493e1299e33e45626fd8351c00e068f4a13550189afa0c1ebe7a28612610c8c5221383ec945dc0a9fd21c2f4f04c0c130fd0e1c345ee4367fd89fccbd056078a725477fa9695fb1b3587fed0d3761a7203b8cfd88be398eccbf808abf5796b12bb53a67a1931351b614c634b72557598e6038d99e49fda29242baa8f83d7132ece6fd8cde5c37d3ca68a7825563fd6ccd4b40ce3915d7a8fc01b5a95bf1cda019c86f4e92cbcfdee7dbd533ff52452f560db9e2d756d607f08c533a96621f16dd58b55f1ac7829a206f04081aef71d6cc04387655aebfe60f61b5223f78d9134bfcb89a209ebbbb41ca7337ddf29a97296f2ec0e1a7340f1b5c5049694ea90a9f6d4da57b055fcfb55a05c201e13a8fa300b74f1d53d01850992e1ec97eb447f447da186c1ae18aae5ecace28fcf937f0d4b8f0c485d8efb34d7f01760a978befbc1f9ef377c4ec7a48eff7dcf99c6ad16a14dde72ebd25404e30bb4d5451e06c5a615d646b6c9209d2a19c8be24784ff38d987eed86d975814fdf108a2178b37334ad7365fe86cfa7d35043b41e3e82314a15982637a95bd5f2b17dfb691714d0f9bf3660d5a534198121b1023c2ae3e1c120d91aef4fd9dda2b89b818c042add988875cb3f813c850e2d08dbf85c6332a100fc9178ddb04a8e106a45e9c9641dd75710adca2fb89ff62b1277d51fbe1a943a5773e13436ac93d8895a7311082ee34789f6c7fe7579d059633b3d008535c0d9f5725d48a936e43839804b6629cc9c141b5ecc2777a0c22936ea97a824130c67488588a4f77e807042e18fb502caf349b23ae5e84d712de0a57402942b1361282c3165576cc92b3d54fba4fa839fe7a9bef475a929da6c0455e78441384f0eca075da869f0a3a90f239c6c27e34ca059e1f8c09155132b831d06c6d064766eed67c4a86003a08ec5cf805ce7c71fbc3d667657957dc7e91f209f2ecb8e28add9428a24aefc4bc1408ed2a0728c3fc849752f0c2643360b18d06e17b41fa1d3c48bcf5370ac4130e1d6f4984a74f3cb7f2c4762fcf94cd035f92481968699192fd4a435acdb79f31e85cc02c3759b77dc2a7a9ffcd098d15189cda2219b8ad961da8d9b787a115649c4031893e297e541e8a46a8a5dc520e8760e0080b5189f40e6c2ec90fc90e7cb698305e4835232b43a387c026a0dc98af9e804c431ec021699217d1d08c6a2e62a760cc56dedb845c081dd7c517ca83a933da9c061617cc30aabcdbed71198c6ca0203641933452b9bd29204cb6f93a347bcc2130db716d3098c0a1a1c519f728228ebd87df5224819b7e96520b3e723d6d842cfd8af2855af4c1b6b106ce57d88103e84574f16b39353cc312c30d0542ec05a603bcbfc7f236156729000711f1e0b9aa9f1eaddd8ca17e123d6db05f66812a3480b750c458bcfb95860f8913aed12233262400c80c9d6169819a920dbed942012fcb6b6a9a644ea06e0199b533872a654a7f90ab16a64b8c7228520868f4faedcd5cf03499e99a1722870d3b4c0b13954f68288bc740121def173e302d7a1a35e346f3d9b44ea178ad26b8e291a3acd0f884f83022b7569aa6a9f10a0edfc29a35651f6078ec52812189c2168bc031f53581505a0f9b8458edf410ad30d371c146355eb46440db6232a2b0edb07347f277be607ba18a3d9ef36f8e8127893c8eeb3b1a89043ed4235f0a5637e9ad9c8dd3f47bd95de5bd09e8c06da0b971536a141f0dad0c6c864c445560914986cf4077bd517afa57c4f1109ab41a8307238c351f63bb23c3c9978349fbe2fcaa7bbe09f03f446361d0cfe6f37108a26c64a5108a7998a463f97af651a7b2a3c9e48896681b3171953cf13080699738ed1bdd480f89672939cd8be852ca12d3e206ac9033e0c71d4a5b3ab1d8e415e4047cd4b9343b078b81bc790c889d1e37a03c90c0195d2ad948e418a70e1f90f5a533cc44d6e79c300059b773c000e5ca79fc204d0f376c1e48ff8ce294d80272bc54879fc83ace092620eb754e1881d4f578c2480fbda03c90c419552ad948e438a7021f90f59d130c51aecce303727ab8c9e681e467344ec13620c73a353c81d47b3c604e0fbd503e90e28cea14d98a72653c7e90d2c38d2a1f2439d135166cfa8778fa1832bfde14ae9c1c8f9232693702690c410b1aefa2bc8b9155980a91d78e190671758c6c19766619b502b0c626549860723c1a2b803e96044a64594950fb728f5ce9e14ae9d3077178d0df618e43342bf429106c0371571638310220bf5fae92b4439ef6658a35f7e9c1f4d3df465ba1f6edd3743a65032ec0374a6491d22deb53289cc7c08fae875eb986ca594ad98af91181c6b6ebb4861b1d10c8ece0a3de630803d1da9859ce517388b1679c92f7320d3f3c3144521e6112e3b55b5b853bf23eeaa8fd605c9b33fef2e68010d2cf3c488f1bf686e5c4dc1726d55030109a22a82b21da604734293278627be0cdaea84aabc20866c1f163427bb8494d98dc14452100289ca8442cedd2f4b94f0813714241ce48eba0bc5d913d4ed26a7a1d222b5f68e9b1b93ed9625f4e4d7e1bbb8d1b438c50e410389f0a0e4ba66f0fb05c3e9cb8ac907bb483c9962de0a8cd6978ade63583459988c3668a07f9593e3711d218bfc021d48e38341c26460e044e1f1664403dc2bb3e050a0c3c96c09bf357b99a4addfdc31465e400af128a311364559b53bc515cc238c3c6aa4bc7e04d98edacfd33e2957e83d9d95eef80a89c602b1eb98cd3eb59bb054d643a06647943ce784412a535a1e24f77028e84a4b270760e6b6ead89da65d1818317415462c8c63e34640f566e67de4e05431a4e1a727e7dd419fb829de4ef52639a268ddb6bf55699039635837f66d7facde09efcd94f47167075ca1d3c9f29e281449f6fecbcae213221f4f29d4d6d48f5f26500ebd446ea8920606ec7a97c8c24ccf1391706fb452e7ec98d1c903e055c0312ca612eb6502f726ebbc8b6fbe10a068150f59ed32c2b454443e2b003941ef767e21d754ef678c22780b1f84e5824c3f3d18d075107689661788577743f029ea7825ad54c35713de719a7e1b757126cb9cf98b5833f6a9aa14a3ac4647cd1d7b87916d6d1234b8889ad0c7797db1d0c972c87f3c411845917d0576654d054e5a07f3fd318c1e526df2cdb46c145522f5583767de8547dbcd1e20009a2dc6d60d0e76d5f4c285c752badcfd3d43d60fe4de8e260974d0aadab4a6f3c7b546ab2873ebbf811aff36ab2ea414ab7f02ed6719daba4018aaaffb522982f677e970f71cfbcc00c466b34e707f456a594f0b118d43dea2e7b40540774b8b14c2888922f6a4587d92cf663b2af7fe27a5c7a0524b44b63ae8b7a9a7c39f36df8e087a2007a22d2199adb43a5a8d0975e915620803a1bbade13f5777b87236a260109da6078fb55f20a1f8cb65ec90d9b9563a439c60e8004e9760dcb26ba138146f3d118b63c0158895efb741556d62a885a309947b52565365739e36f6252b18722c3db31db960a7c5829f64967fe1978e30c70307ca5a7a9c00e36b8f8a5a283b0223e3411bc9c928b4f932df2a8bad154af87054da21369087ddd2496c8712cbd2098ea38dc1f8faa3d3daa69c0edc631fafe230cd35c9afce123f911f940d3c72c263f23b0d3d5729a6cb2a1a5f7e09e18549c87284aa01e1c1e5faf76f4284f39b35a4b828e88493f4602dd576443ea157198099ec88a8e1014404110d7e308d2cc63c65a83f4ff55bb4f28b20bca780a9a89bc9f1ef6cb3bb22ea9b21d568a89d3d26d415175782e167b912e75af8964cd9ce224196fe1df1bb59ebf0754c5a334fcef280962e0556a4239075e057b2b0fbc9ad42c58fc95c6bafec8f02a021b017791f2c61231025e3b51606d6cf136aaa33c7cb1f74367a1da90e13f27352132b7eaa21244603d1f30c8b3ee3c0a8eb4263a1a4a3ea7d374a54f97450b35a2a174b97af23b3f034068a46b066d7bba0a58fcb814cecf24b9330615a93c54e7c26df06db168b2d0c2e2ffd3f44052776064bef545362c9f9c9ef5eab97b1aaf2c6662e3b8686dcc290763bbd4b8fac39c6cc424f56a9163e54d2c25d54896f49c0d2139654a0691cf894c7b3df1cbc0509757738a3d9644cf654ce75b00b2a0cdbf9306ca315fc3fba7ec22a6c77039431cf3c32915a6e3f39b1923995c41809d1631c66a0d24a8a29270abdf403e4b18debc376bed62b2bd30709306b2923642f50d05fa00a16aa668d69eb6d9e9e58403b64614a27d33f5ae23d5754d27ce0e7f32562a57193ba47947588f4c416ec1723332a104f34ea2c7c2ccc7a6a0a826949d76d152946e314fb0f49722c6e953d8db31816305a09b2b812e843df070473a15a8444fe3b7fc5276175ea5db65e8d4b763778a2e84011187ce340f934230f39beef6dd7653007f48242837fd76dada150fef6331ddd59eca6a070b30d2372fdbab8645b612d37d7bf6f17f58a32b388136c270e3de21495bfcc141c0b81e4680ff63eadc22c76a47e174ec4d4a45e98d448c06d966592eaeb7fc21c2a9f023eea591cb15166bee30a4a51288eb6961b84dda81e5a334bb9e125926da7aad1f2c70726e01e81ed401fcf543b27f505fae7a39f651956b29480c003ec91818b55fb29110f6a98fdfc5077e999ccd4f37e6573adaa17cc7c77f4553d0f2431b475be0f07e6ecc6e07e352c438c89734a72d39c6689e03d4c7ebfd404ffbc8c9c980279276cec1f3b64fd09d2cd406571d8894145cbe4c4138949af5de8229abe748093074e80c13089b8e217c09c448731d87d8a6cc93afd45ff489c01345eaa48b7bdded499f502ffe75c3f1c7d38f5f34674d59abf40a6b6eafdce0b9b57d8feb683087b5f6682db7087a7e2814e6334011ddb4f3a21b6c3369e3b8897a2a8df9ba42f51a50d3fab8fba6b2e29b091a06df0b911b40064a5002fa5d9d8d55c0fae5eae7195637fe341a902314f5fd742ec32525394152f75e39cab6c2ebf4cbdb800ecc472429a9303a36897a73ade004e03771050c2757e2d3993d34c419245a54cd1a40d96f471dc4340d665a7e18ba40a32f8b1146b963df52c8870558e13af83ae793940642c15c2f84e649c5c2c74ed582b82a636bf8ad56bcc85906fee3de15ae5a917420889d4a0cb22ca167134bde65a3de61f7ee26bf2c864ab7d6e4af7eb268071fbf9ba3f1cf9088a61ed4f2da3efd69ebaac7c26516b07260d4bc67b79dabe22295ba21c0d8bc51c2aa311c3a0bfd30b633bd05469bcb3381c743c8353cba76fa3eeb4e37ad29b386b7e38278e3654013dde513d0f4c4b4e0f8f4a002442d893758bf8dab7972aa454d0d02b5d8a358889c7d9bb898b2ba2d8203f22628642a9a6c5b9037c6031d653b12673ba222412f08664b60f3b4db1017384cfe2dc6ef7092a707259266e61480230e88b90ea2010488e7adde19de8a93e289025ae8a26829a3c11e1d17e30882ec5eee204019f5d8d7cd786a0a2a2fd5438607861b00f597d23e394cde1f76941e84ecc4758c6faec0a424ffb7f2c63f212d0a422d8cda5635acb3f8d33104c85235146390a2bf0ff710ad52418b06ee9cf80591816de5ebb8fba6f4a696e397da806f3b49fd2693e1d12de495a37a9cb85fa3db4374c2c44a19d8b9ded3f02f4242b7e0a4e20192c8c72547ac51ff470458cf0405397374c147055033c2ddc2389e80d02298c70e400bd1ff899b656de0a400f3b13c897eaa60049c50e5416568d7e05fba16a41110f75664fff5c8b4897f063c963c19a0efe2453925c4e6f96809990cbe3e2502f7b6d0eb513eed6240831d361461efdbaecf8de29c302f09648976c0e8962485ad9610d2f4f06817b4b4b0ff25b5904df62fd53ee06d4b6b0564bb3436d9f9d75cae98c223a3e20a0840b01f37dffa38aaf46f3a47620bc61dba7fa31c42c473735077eaf009020bbe720cf287cc82790bcc683c8bf517ad98321d447e1a2052e41c25d352ac3da589fbe8436a296b0bccc6ca069c2654d0b185f586aaed395ad2cdcbb742f703fdff69a379738207249830df9fb6828e05bd5b026dff606103e0f71af4168f16dc1d1088da4787b19f41037f15eb26819c88a24752e3423b46c8edac8191ea046342ffffde6e2497e1f2aee13a90159943e98bb4a746a1a8d181b83442df8e86a95e96fe953fdbe7c94b897faab88118ec87f6be31fe03e450640ed90ac6bf5191f63c3f3a10ee8172d906f667e893c098272cbf9ed10472ca969383198424d6a1415354d171c8ff70973710c5565d2a75be81989ad2054b1c46813f0ececdca589add4a09ecf840e2fd80f2d9c9ed003d29f071addb0e8bddd1983b15746f81c780d377c1ff972bb3ff22446b81eb3b89caf29ffd64dbb97d61aa934a6d39f58c440d05ed0a87695d5325fe9e96f2912a935cce571c2a98fad74332914b0e84faffaf7b380b197032c13617f7b42fa2ffb8fabf6337cab228a7359db0b495835fe0230152e05d0ffcf94b4273549cec488f536cbb1f34866476fe393e0265c172107acb32c5bf1525c81ea1b38dce33bca53a4fd5b9588dabd916a89d6e07c25fa7f3407b5e1a38b9d5ecded4f399563ed159802905e41e8afaa394dc389b601c37eac1706c714f8d1f18f7813cc0105109580d585c6115eac48e882f888a23ca4d6e0fe3a9f02dc8871e3ad7d28b204cd24893f3d1cd6325656a02160d56d7436d1cc1f6b9d0da35bf3601b1cff06d4770426c44aeda059b77c33cce6033548d7f78cff3b6800b285e521fc49944eaff4dfea959df63982ceac9cc2e96ac5cd302395740225dc70059b4dde6389ca64be1610b6a532cf05a9191039c15a7f9276df342157f64cb7aa828611b127d2c172ef36d6c39fbe455b4e543c54e644b04245b2a260d7277bd284569ad41a5c996cd76a3d3d62dd062f488ad30186a4b75cdc28e1f469a4384fe07c13087e89079a57fe4de43f213c6b211e8d8dfe297672715966a6e48268621e4694dac52877876bf45e88513efb5604c855fc5cdc54dd4a446fab790ce03675353d10fa0338fbcf8271f0f1545e422220d91924487e6fc4cba95c9d4c3c06275203183bbff369ad93f038584a0ff727c840c5b7eed3450f840ed8d486d48280b33ec6500814c691ed491deff871ca151418b109d18cf026a04e58aaa6f84c5cdd65c3245798e1a1ccf5de4c725d446d1cc8f73f8e9cb1b56a92a0ad510d36bda2be82138e8041cc882b7770104bcce274953c6f93224f32b2e48733234f73c2162dc987f74ef55b8caf40a5e02b6411485c867c1d93f123116502300256f33bdf9cd315a789ea0169d4afec5a65fb5f8df3f03c077b3766d1fafd63b60cec6406e214015ce8d11f5538b5a6c9eca1faa27eccd1b7aece91641eff9a2038af46c6f2783688d5ef9453d5e466b41f28c1bc488cd4ec19597448d376365dbf57d772638fce9ea4033111ba4e0d7b6768a28d97aba314975a42574491fbcbdd3633611a8d573106665bc0869fa4164e4c351fb062c5165d7f274347bbcac2ee23859330285dd012f0f2235d6242c348e457e1d378f89cff896d67af3b2dd3f29148190b569bcbf9c69661fa83bb747611b86653aa88ea5c595ce669cfaf940616bc70090cbd609193a61d33986730a6a8a96a054cd82975a3f9633f11832acf2599de006ed6d88bfe10e6d760821b788649f6702a1926df8704d2b4792f3e08d02863cc3117797c404a864d19227410866b8197c6abd351ed068cf39ca2448e61767e52b2149cb98cb4aac91ccdc42163e78feda5e3b9e940837bad2743533572b2256f545648b648ccd547f7cb5c318e5c2ed81443b1e96b769a44e250f217cf85ccd929e91a21a8c4add1e41ecae2b65b020b96a76c40e1e660d1315004803c5a96cd0a8ef64383df93aa5548a7624c6a1a47326b2cd25393a78cf713767d54365639f674cc6d436174673be8fec44196c36ec774348055b524f7fb7c0f7a30d3ba6bd60167d1513ccf3e0b7b1a02ce0bbdc4ec590dd4d4d4e25284f62c7a931d71f2ad687246d70f39759c56b1a74b5f90b2a71918ac025f6850aa3e706ae1ea3eb13327f52225df91f5de3b123202211f23b766b16ffba07b2eb8b0b502658eeaa500579a4e0f4bdc281a299c298acbf022c3921c00ca54d3ad3dfc521c01bf014822d5c4155ab589cf3ccb925384d0d8f09674b088202188b2de730fe0cf9e1e2271731e450e33f7dcc1ee853140a4272da7c2afd3b9d61da5f79db6dad0131453d1e7213d2fd42c3df83371bd52b296ec0e225094c10b6ceb8129b0529378449e1cd0e5f26faacd7b3f33e18b6fe03cb5a6dd9d478737aca161bfd4bc5ab9169f5a3f84b746271d6ec463f46417b02eae91d81e6b9ea4033b4021f208bd444c42108ab954de4bbc8d8e91f4849132acb8358ee425211ee783b91bd1739def44b184726e7772cfb741abf57eb59e517d3e40b383c7256790b1114ad0cc04a7dbd4160f44c12b12a430d61961e528cb7e4ce49fb73e6c141d7c7034c7319052f3836d445043539410f02e7c77940fd673bad800f8c39b3611ee63d6452834253e15d17adabc50ec0823ce720b9750efdbe39a63cea0ad9ab701f4656815c9740d285e5ca78971f02cdb38cce4ea2efa41e60544f8ab95d6696556a653ef9de538ad191fc5872a4514039b52b186903f8f25a69108691487c418bacb062436d7f041d0904bdf8759f680d980d02d2266405b8d6cc91590b2da58b570932ecc4f3adca97bb5412377f5591f1803cb593fc56b1d13f6ae80952a5424450572631fca66f74c55ec1ddacd52078ab1254cfcdbb78f23298defe13ae474bf3dca30dc6bd67ee33cba3f52fd7e8dd1441f87e8080a8df6167074335af9acb2c77d109a5b2d8adacded3d1ec9527ebc6dae368d35e78ae99df89367b22c5cefba5c31fe4c350ecf9a1f9cae959d9f1a5ff480085466ef44f54c90d1941f0a74a4d544189283adbc6bd9f255feaadbbec18bb21d90ee3bba90e47bcef9df2d9164a7be49d88e4ded6cf3c278dd1c8649ea4365608f7011bd84db0999c0f8f62b769a8663738836bac00d7caac27ce3cc54b6d371b3600f7204be8ad98667006021500e3e6e8d23128b1eff1808280771adffd77ed641eaec564579560cb8822991a1a47e3f94d82d1dc0956fcefb3e76c397dcac38e5a1846e4ef66788c6bd2617f8b0fec57fc296e79f32e5b64d9811b47316e924dce8f3d1e79182081911cebb183cfadc67f445ad973b64aadb126d9074f816615bc0cff5c82e28b089b5386cf5e6b51273a25eedbc1f06c0a24397075ca16610be2ee692a403d84e497651206e3b495e7d19f9036eff7d926285396993a4d850ed8b49073cd4b274607226afbb747d85f5b464aca7451d02bc2fe42e3ff7fefdee7ab5dbd12bc2d7607c9c209546bb9b8b95b72e32740d294182a1ad8200d14017df52d2c60f4608ae0ed968021ddf3b8cb847432750f2d4c7f2f50440bb08aed90b82110b4196b3e4bd6b483a95cc4082449aac1b9dcc62075af1315635b6ddf08cd6db635f096baeb1366e831f16d5b19b8e3b33fcf00b2a9f21bcaff127ca27d9b653458dcd30602b135fd0a79cc67704928251b81acea08a915c8e97cabc81df72af02b0572baca67a1ac7cd01e790e3181dc53c515088f401f0c240a96307d025d26505565a818cfdbca874100a19e17e6546a5fa7197c7a2ff9c4d0956f679d7c2e3070f835ca955ef1c183401613465f6f344ae46ae68d0f84b50b5f270a6d60adcfc1724d46ccb943d86f29b53a53fa3a776564eaf061a5ab434a5d674aadce5252908cfa6a337586fff88f729398c3266aebee4fbb8fe9b161261f83210fe397d22b2b1e65c5f5f2cc3eeae2df6e2812d1f407bc04fc4d4fa4d6647a0d649c00d36357e6858b509e297bda079de60e92ac64bad74a8aa362fffae52e3fb52d84abca66bcd890eb0b0d6a8560c10bf15461f19cbd7e75569075f8ed10c67b01e56b99caf71cf7a7f7833bf8a22464f544fbbfe3575f12cbff77f5d6009e563dc1f89eb08fa6ab12a4845261e18b7b3ca664619e5a9552f5fae427a5314a80553ad7a242cfa69640c0222fd37b68ef01dbe9c1abf84c9030935176eaf5a19c860963e67dfd8f4a4fb6b53d63a66c800fbe1d11cb2981f89506276ad5859adced0018e6b8c99bef7265be47b120ae482f4d1b862403ddb0448b9bd0403c72edc1334e0980ad9e91cfb0497ad8e5f1de88bfc9c77e09dbc0d561e717566c5122d30e28a5b51428a16598b24201ffa38551606758fb4acf4ec234212518c3ac87ee053b5ecf1254c38861020f8fea4703e0fdb615c65eba50efb43e5cc7799f09ee142245bd48ff8ec859b2ffb49c77b48c970749e486d44a025b5e09c8ab5348ad2b0498b4ffb3ec1e1cce65f2c112cc8b3d37b71e6c33fe87bc11459dc0e1598519e098f32bcf8eb8f6e6e68801d301b77612915c3cbab9e0d0bd0d5beb186c53b12e11d4fd07ce625fc4c04fd5d7bd649945a5d8458185ec4085c1e0bfd1c46a45b3f79a9b835252e1ba0d5368ae8815bda10c7a87724a6dce0ab8737eaa4fbaa2fead82bc3e392e6201933eb1956d9c3d4b898e43380f75541cf218e46cb462047330e1bc07ab43ff59e5867ce5762e48e720b3725e065aa46e06afb6f055d01d534913e4e8dda2fc257aa9b31d368b709bd32081d22f82ef2d7be0d9fd14d2e5ef097cf9b470f5c9189efb7daa1ecbd080e9f434b01e847ae7311a2b06cf3e5e16a31efff0dfab051f024092c0623e8358c88148bfb74b313c27eb7f110649c73c848d0b809a0248fb69c9db06c30285c402335bb3a15b9480734100e211e6604cf32d24cb28a389763fb7a8107025b017cd9724e1dce5a97d3685e54e596df995cb66e3e44270193bae3f9d9c55bf3c14741590bfe0726310843b07bddf2dab2e41b9d433f52600ff8ba1fd77da09284c47b504f84e66681340f4b831fbc8e48c93c4e9263c75a61bf2c47da715adc645eb6ca8f419abaf04a87c9f066e415ac01824ddde05ec6e17ed54470efe67f7f57e59035d8220c03aeb3501346c863db36cabde11af8f7c50cc13c1bee6b10e52c40455c3b4a9089badd7d6502907ba4c61e34e26e376954800396bbad0af94ff518676dc77546ac5062e5fb3616b9923289170df6b6b4cf69421b60dc1a0b5d1e57d91a9edfb484f7348863b383503f1cb60007a9464bd4bef5a39fa00b51005f41aa09a1ae10a8161286cb01f84afb54fc8cdde4869eae423746ac4312e96363da92f7616829c9a8a17a987280307d80a0614eaf2830c82139046730684a9a988e410145656ece41745f90e6f72988e7a652e939085a319e9785e762d0d19de15ba1826ec770ffc945e1f9344b862a307137d6f1ba4e2cf43266c96945f7e39801621cb150220b081d13345ff524a16809302e978883261b8600edb5c21cdab86e6248be22e88b5e9fd3b362156e6b25a204d50e4f00d891a4ad5499b1cf70aa712c579a2510e7e94007691972e982a834cd3a2636f663549800a9142006399e92481178feca195bf77276d0fc91e63a8a39320090474e591ce216ae83310072206767cfb29e0e43daf2dcd8bd7c81695de8b9419805e337a44c749ad7c9e90f50bf8945da4038df893f1db5e7fbf4248ae4eb7ac4b8fb071a36609ee5608c9d5c7319f255992d690a625df59a9255227dac8a5118845a39dda223175f4955b6d4070883d057e5571dca7a625a9be30eda52f95da8cf706dbab2692bfba5276ee2a2e410040e3d31ba6b590b1c3cfab08d77ffebbdc1e13fdef4d7c6449f92f053f7947f0c77b05d3d95db404cb851c30d52f23ff93e23ba2a53246c9a022fb093af0dcc79bdbe35c314b91ddea9441678d9f9d030d5836bae1ff74e7fd6c9e2bbf1ad9a876fbe8e780869a7433f7ad584f94395b5afcd9536277ed65092d5dd64792e4c02b7e5e8c984e2d15cf4a00fd6bcbc08c7484387ad4c0947ce8eb67d0ab1f1cd6a1a1e8a0c38d5f7a6db9574f499dac99b8b2b4a289b565edac068949dd2266e50b79a8e56739fbee82b99d6786746b024bed02766df01147934789558083d52b62f8fe47f6229dd7758a7b5dc3b9ce311647f84533073596473f04112d1e3ec519ef4c25f423fb055d3fde4df304b931c13e61ab37bc495f97ebadebc470013d08eb17a9a7d6f71dcf6a60830719619b40ae36360a1ba8189e262bd318c0e2fff613a29943c93df7ef0c96eabfda93eb97146283e2b4d2d7eac71ae3b2ebea7769d696db3a231634a853ff6d2f25e228c0430ab258ae0b6e883206b0a1fb42804fb911ff914d4897e6b63eab839a34d3b1eda6dff559b5cfd942be848123e14bd846ad54517e5653273dea3d4c51bc34018a366ae306dbef5304ea297ad295ed045e6dea878522449fb53dc26234b3816a29475cfe26c5b7ca57a66d21bc75161525ce0a82f1828d29b90528c211185f8e068df5afecdc3ab0ed0ae3f005c5981471f6b91a74e9114f4a0e178373f158eefc243ef997d30d10efaf6d309f42942a2a6d7fd236d706fca6463ea5a4646205a655dc5ff1fe24611b682ab44f7e6762b000bc6a9d3bff959a2f80cd45d3c57f274577205bb9bbe2bc93d92ef0a4681fb85ee2bc057483f26e5d888f9fbfe316a4b46e203b248396311e8c90b74bca160701039d6b1bc2f7bf74ac63907b17553e0df6a9bb9b243976ea6988210db9ffc27e85a0d37a1c738c56d41992647491a8e285d285b33a521877133014b124bfae559d39dca381f4df59c0ac6a282618a53b93cf7dd1a94f04f8e202bb33f21b7bbb9f7c10da1b136c7014673453d0cd60226b0848415ecf5c739500f98bc7a82542174bad4358c78a22fc1fa422aaa0355cb01e2ca8e0c0ba1346fee9cf17aca244c6c21e74400567f0649dca60dd4258545694a18894019c201bd70b4cfea44327cb8d471e5740a440af0a8e15a7258c6f905d0050404973092d7059ed95fddb5169da96733467e25e35988f6dfb40b9453a15fcf348db6e5f1cdb3692dd470d0e6d44d1e36519bcf575bc986721ce0586963ba1c7b60de478654e9c16700c0c4d663c1ac4fae43f9510760d6205255293d1add996a168e5c9701cc6aee9d3969ea05baa9ae69f5e17bcf258cad64a2aa61f50a5c6c21b6b5e244906629c10bfe52c6c9d0acee7c7732534f88f7c0c89524fc5c60e53c4203f7c0bd8a43e18d36a5a220bcd508304079d649ffb96d8e136d4537d64a45f59c70bab85f0ff4038f9ebf38110bedf033aeef65ed6f629dd29701f3e9ab5fd4213d38afcd4a66a04902a40585bd1d038055579dc2f2c46de6ee2bf8e6a083baf2a9f3a648a8b858cdb28ca666457c11ad5ccfdc94dd6a0a0920624e5cc207742537fd9141c3bf6973ff8eccc40d9ceca842ce1ec946d1a60966d766d1cd0a644e26243bffaa1dd967a78978e6782dc7c4ef5740a971a30dcd9e9a4ad5b3afd5c737187b4c76774e642d448297911604b1b23004c335f3abc485bbc3a904f52725395a93c4a8f4858b7a51f12338ff8feb4a55100bd20d780c970f9707855c51e31b25db4605209374ac6a05fdad1da9f0da0ca37855de1cbe4b6e21620c4492084919ecdc92a90f98991f5f296c9a41645109a6e6759f4eb8c5d932a9deec344abe54d38dd536b8685f6b40260e109040307f5056e8fa98835020049ff4f1f357c0bcc61fbf9bc2349703e2554fa0351e31a1f854bcf0d71c401b63d042a7619a0f03dbe9c53d746899c4376faeecfcafa7c7644de1aeffff7312273836f1c5778323b22b77c8666cc9dc503467701d9f5cb7de4db57797a2eda60645cc475ea5b154751a451be6480ffbc7d288ab4ffd6b3d0b48beed955255bacc0b959e7cf882b2ec5acea0764b5dcc40adf98b845aace1e33964e0b7c887d3420909a3ce978c0ec0023c72f7a937189799328d69baf2c1a2b19825f1532d9eaebf0b672d0c3bb5b11d0e29f79db2bb0b7b6b759c081d79686a6970205822a55a206a93b09a6daf7006fd263224a9b3da2d8f782e86ae6e3155eb0a89e8b0a9e6b1e1fa96b3e2a431128d0bea62200987a702f6b5d6e0fdcca184cd36534c23b1ea984016a2161f29b7c918fdbde35a98148ae3cf90fd03f7e8e31313a4db1ec449a22bebfd79424fd3649507be005eb7159004fd6121cc70891fea003724c8c4bb43094a6e063beebc94c06c6f297c6eccdd747fe35d739962991be5e0c6c23f48da09b077885b7cf00760036a88551c5d04a5ef5569840e47c2905d71873a60553ba1225f528a32f02a425f9fa71ee2d37eaf30037986c4cea7f65e430bfa2362c8b2cf156b3f5c0e5871628f888b5fb1ff124974920d24da755ed50b4aa20ac61058834d49e68b5cd75df3c26cc5c215b4d80b47835f98ee5a2e2358436ad7d87f9fe41158df599e9f837a002ff172c8a731521c3edc246e3cfe2f4550c968104346ebf8b14afe8c613ccb036f3f9119e83f831b7ef93d8deade4c3209a6cf41652fa9941b2e358dec46df5b2a7e05e56b36d95f66e41da61d012db0a1ea8bf2b8e1e5d27390ee1d29bdbaba327d67380db4bd3bfc6a192c899ffed7e7d3457ec01360dffcdae6e24a8f09604e4b92720e9434faeda834b4b9802ed56d1d5e3a901e6ff19bfedd14ae10d3084c94f2e3d235140099bd2a749493137d2f763041a41424c0b475f196cdfe381d7f66c704e946c798bc56075f27bdd39d000b0134f260181e65944171718ee0fd847ee03f681ffc03fe03eb21f4aec286162f2147bc84ef2f741c8a025983c55a58cc5380df7ae8ccf67efada7299c73e1b6881c36d1ddf31960d0beb6a5fe9fb93323fd28d244dcfd9d8443e6fa8c9a1161037a43d18544599e8fac54cd1fa14d26a8670124080ac4b3b2a6f07d41c47de82ad04ac630397d7acb6e47b97c3d625b289cfc6e3b12cdb63ee6907528fa44a6fde35c46e85cee277c49f8232b13af2e579d146fe17af22a66c413f4e9907b8a2aa15d17c86e466b2e97d8f6cf7714975226e448d200678b84c822c9e64945d5ae9a5bbb9dd5b79de7d06c7e3116e424950047adae786a2908f9b2363000e6b7eca2fa88fce0e569c0a5779c6619515951a38545bf627e1707e2d0c541e5622ff5aab9916f34162897487464676303d52ac824feea69ddde536d64d137f858440f8ea5962b8b7f69245dfad0decc3583837335f86b143b5afdf7ffc11b85d15ca96a730a2a7ce6cb8b90978325767ccaf56bbe5f761067ca8c6fa82071fa1531a255ef543b05b19a2e57e7ecaa0dc27d333221f72dcd43a043aa467dfa1e04c93298c4ee06ddaf70c91a1d5adc4cc6df156f377db0411cdbfa8f6a7341ee916defb37f609b66848d18ac744990047e6f1d4c50e189ff4852602579bd15b9ab3982a10b004a1599589a27aa0a7bde08af7ce37da099a607dae36dd8c53e9da29ad8362ea185bf60a78866988087209e691fefb883f75c1ba5f9e02a22daa19669edb33bd677afc387a705e76f0f7cc9dfc88a24fb3850d51d422bfac59e59800ffc1fc6a75de57800966298974f1f9e9bdedb2070ccb04f929bab553ce52a71c6932e8de891b115591478080ff5281c4558b4cbb56e5d8a22bf1467fb097f4abbb1f33b045ee6660d0bacf50d3d526b10eff15e98fd1f1fca60ed815054a0754d6167f61a957a024ca759b0ee47df91cf917101db20b83ca3e6f841ddf9e78ed1fdc036f2dbcd38dde2ea924976db2de6d49c2da4df9cc68b0cf2ee228aab6b7ec73999e8e1803f384ed079623b05220546f28966303ed6d0775629e0708c56a3bff0fc901a66021e0c1595a8dd69cd5de6a6fdc01a9424561616db67aaa264994d80d31d5f7f6e5449a0d5bc5d81b4851299579e22c87aa89afcbca5d5701f14be35374aef6b4f0d086cdb44def6cd0648dee29b5ddff1f2ed7d386dedc6c1986941c3bf939226721e403d0242af81332c388aa762dca4121937212943481f9c3428326afc4ba08a400014ab154ca9a4afc84dd2af0a25c1864a03e446a76ee411fb09bd6a22c3162fe9e524ed080cbed1450905aa694ea8484e07bd5d9403a2f6d2ffa2b6ebc676b29c44fc69759adbef0acad5d7f28ede65d39848181320ee0afa04507ad937c8be7ce4d523c2a57c35098ebd040b3429efd6f39c9a8b28d7717fb6f0a884281878a06a021bc72cf9448751fda9202d27fbe994a5f37290e209868c10307be76d99be25de323a8d20b4767e6dadc9fa1646518d7aa8b956bceb5ccbc93a8cf3d1920a891aac411f69bc7631877dab5974d15e19410c8844d39224f35d4e05bba08e2fbe3771acddbc1386c16df0fed309a17f58d769c6d7f4df9ad9a3b87f5bee417ac9c81df672f32462afe9c176b6b87224730c5cff075f80b82f4dd7bb790691a4cf29cf4ca7657bc80858cd3960facac5f4e374e8c20bf876e5e28d52d5aee1b7d8b54047ca2d0e16034ace162fd53425b7163b43a9129b1687a5f96f9984d6438bc6797cdfa0bd47d094d8e7f2000329e9da04772a00f3cde9fa5aa4d44c3fdcf236756d968597c13e1f963a08615d0f9b71583bc273a8e4fb40bfaeab11fe6109f4ef67b911358427f72676bd2a4d90679a716932e1b852eeec628b6af758777e86c4ce4ad8f79728183c2b619f6b9c0b38ea5cd08909ce454ba3be7092bdfae67ab90db5f88ca6a394f8b510b21e26ba2083a104129ed221e8947955ee99754a1190cdfbae4ff872f15f924e669e6851c9958e48da3ff21ab8f1c31eeab63eccedc407e36f3df794c4cca6a78ddbc13923b4985f9577b9ced20e1ecfe9468e475e83cd9b714da186768ba2cb53c51aa670db5b713b237cd73eeb22fbfe7b19b5aba069cc4a2f261fa017083d5a85ba5797541e5e896e86d4bb43fbbd8f92e463936057496d5425798a18d907ead26037d0090621a6e3233961435f2a0db0685e09c45f9d6709986da16a221d60d1406eb01e661ea63aa62ab8dc08946af721f296b3569a53154918f3cb145b77fb9b942dca9d0ee5b9b0b42f92b5da078498a7831e0b29f5768d99497bd9fa1804a9976e77b8be66e4d60f64b87e36f55c1bae4b1cae84f551f5ff866b4a9c7f6d7884305c6939ffd586f388d6db55b8e66d55a303487d2a0fae3d98f683c5d837bcfce080cfc0954920b81276a5ac552d4b5b9453f8510988451594559414cf4b5dcf46ea01fe37fa87bff52470c0408c932ea165c5c5e9a890e8cb637a76e4f260c5296aebc4098ad354e5a760bfc4a911ef23544cc40923d4e774db879356c78770040ea7dac075a335194eae75b4c0395a38a55b8b870be3e1f539e1547bc254fd8f84937643420608a77a42cdbb0fde94d2cb472c18c78fec9bef475d4a4d638ea68c4e1c9867d34db130b8587ef3c5a31d170622b55b54bce26ce820f7ef099e8adb141df6ab479620b42a16cd410d3ebd17127df469c42f86c42dc8f322797dd5e8b00284c0cc1a94428cae312c4f0586a76ee1a7f224fba5688cccc152a7e59885416d5454634acebe5e3b7a54a4acf57661f0b51f3822cf477d7a16b437286220548f14defadde4023d80726e471908cb51aa92b6fe5634073ab4fbba52dffe2b1476b44239edb50163db9f3a6534bd65f711189fa0971d7e544e3c92ff8096433759e66a521f9d27cd86b0f88b577b513692cc0a31dbb35881b3384c56ef1468c4172348dd3a5edd9ea4dcbc6c57b1be382d33439050ea12a2c9fba9310ab0e98d8c517ed64be03e614b42ef844c7d2d03e725e15557cb56f62f2080fd19e7fa7da6fd3ce4cbb98c093eff955eb310f059e8dcfcf0e3a2552baeb7bdb55b096b9c3b66f842c79a3e6acea25d74426b9ceccaec6dd0db9843001316908432f8f567c0efac146d24ff8dd78adc8e98eccfd5e183585e30783168ac2df379a94e5b7a560eb4bb621c36f05eeee3d6b134d74a0cf9ab19642dbb59e1345570df37037050c538f5133d87ab52cb7a82d721287e2d232ca347e7896759d10c3d18844dec4a7d55262ad0c9796764a9f8c63873c805f2115c17512cb26a8db14ca8a8e774113f0c912a602422dd59deb702f4173bf894c616d50342afa4f20f22c3f77b1bf369fc4ce8254b6cc9ab4b3c5cf656f1d17ba6608b648b87f9cc80f85fea0119b823e9e7386533ce8ede279000bc660d1d9c0c71935c191cb0ba68ea58f72e725f936eb3d35a0a16cf7e9dbd134e1205aadecec2a6b43a0689bcfa3f1e1b3358dfe5039b3a45cdbe6c5100f8bc1ea7a705ed4679b942ffa890a30fbb4c2d387b3785ff10d9b0475fac20b41e9537d85a38d44aaf9264b87d32b6d1f6b86c854eb6f7705f26f47cf95abba30a2f0aa86359b1767f8c466c446577c3079c5c77042cf938304ddcc9aba4e529b1b5123d8434da254d51be4afea0bf9488ea393199b6e7fe8777e62e8120e20505ed625573961db68452498d8ac2c360d1d89dc8bc6e897322f941058ff3aae7455915e27a379ff2f8611cf0fa466deb2d51894d09d1bb2005797f18f8c2a8186c83ca8efc516f3e93728a6dd6aa22f4b01b8aa0182c1154f902457584b2ed32fbbe0b0b1731d4053b922f532c106c9f0a43c981def5215751a7944a63354ede652c60ee16bcf89b8b0703e209441869dad7d5d39f78764ddf5b8315d2706275b40711825027f2c6215e490a231ce3dd2714997cba924c22771ed884421af573eae402dddee8150d25961b5bb38e88022ccc654e0e6c345288d21f2e355cfca177f2f048f4bf433afc6ab458841ee6204c1a18b880230fc0aab6e8c359181436e6bb55f1974ff581dd78c8101cd2428e5d1aee710b98c17b08a804e177d63f1a69a391bee710357e63476a7b4a933c390b3f03cbd338a435f7e47f28695b925724976f927ab86ba34919c6c9cc5b7c8dec8d71d53d924994c29d85e22a391285a01f80213d031661e54c745a79ce62c94463876ee86a1b40277a811452204ec765541813702387350ab68fdc53854d01875f3609f5db1eff612caf0702d285e539ad03161512e812d59896eb5f11869c9c06a178d0c6a9ab2db082b3f7f7774da0c0ceb8184088adcc6b2de7dd24fc1d2a75de45c881d76eb60889855a458e0ab79a7ee72dab35eab8d838fc8197bb96fe6d9cf3e8b9da4cc271f2b667b41caa7ea02cd2a734ce4a41b3bf6a421840aaa25676ed789c4c0c39999a6298191cee145227ae0b26e54cd856e26e224b9ccc129f9509d23d2dcd293962e12ad04abd9282595c63312d895285bd34cf8aa7962cce962cac5b520b94b503f746c9c89af9653949b262877f804b6d0c29394ae0ce265ac1572e7129af4b029b2a2bea5db2f06332e62533b2ec5add4b7be9c0a94509fe699620403d5912030bd41cff1a7431e000a2979a09d1a5fa09379164760946d3285e9bd1e50c9efabc64b84be83c3e5c2c81c0d0972c57d7beee994141a014525b8f46f2d4a5c9341be9981d62c6d67a376cdf1415042795ba32aaaa83657761ec15b8a49a2657d1d94db288864f38c5408fbb1f6b86d425e4cd5bd98c2af12a3c227c812a79f9b626d89f60b8f6384f4ec857c22b90d043b2c2d11af7a42b8275fca08fd28c813f3228ee8e583afb2e8693d1cfa3cfe5af58fa52f40bcdc2bd28a82a6e54bc7c78bf503d6585428dd6c9e8838eb4caa1229f0c05b6d76ba153c9181d8846fd998955da05cf85e043fa07783f81f52199da6a6f239c4bafc994b7c816b0b0fb3d15caf99ae8397075983894213f003cfd59f6561165f25e64667b540e60c3008b92110a46563b2ebcde24b07f0582e0ca4840a33cd55501e4531dd89f80ee1174e15adb32ef0f012cf8a590a228411a25ac6dba896de5afd09cf2f7679072095c61b713e2a1f354c46c61779ec6a0850950e2cbaa158b5b201e1e007029d08fcf3ea2ba3086897bc13b72c8d2350efaec09bec348fd33db4184d2442b83b4c75984cab15cb5bc86011e2c6b88b75bff8a92e8211ce4385407a18bd73c2ca5ca210fc88d81c41da51da1d77fe197021b308eff072bce40d29002cd65c530f6174fa5792b4b148531f5fdbbaf80169adc8c7a7c3b08f457a4a29dd217c7af21822383776b1c85b4b441506a5934f03aef5cc586e60fac680187534fd657c14915c3c60cac229f5852bf959484fd9996cf9e1a7aad84cdf5ba8c82d455587af1812eee29c576ebe54c9cc2a1802cb944296193869fc2117426fd285ecfc7947e13bac464385f65380cb2884d6c2a934e9b2e31a4590199a4d95fad67e261b13bd76d5ebb04965bd5cfb25d3a215981a340d896fdd5b85844ce72f8c28b190d88a8aecadef0fdf26691e16df9ed1ec18c9b39acd785934ab1e7010bfeda8dfa5d4dab749fd4f63fdbab64f4f820c498d797830f8a54a3bd94a0cf958ec6a7890ad70ed958c51d05f0dce55f49f440c22b09570cf0fc4f4caead332c4b87275f910936131320db1649af51ab474053877c471f8d8cfb4dad60b4c2d9415cb576d3bda74f454d0502180c34f460c7c772b122c99baeecb5f916bf450f10996c59e9f5840faf7b905c43a0e4b70f2d4250dcb1c7efbfcd39f61d56246f9d8a1afa44edf5c1efb2c2e3f217a90f9f45f6b59e44fe56ceccaf924fc73c367d3e816ff31824727638cb64c2e27aef647a0ee1fe0c387fbbea79d588294ae644986741c97de4f9f93397876025ec4ae90be80ad19c04cda7e307c0307813f61f092f248a5f51b065cfec783c7d0a653cead106e720c3a68939540c2296351a0c4a2b289d26db8ef17a8172e394ede0d17b524563080ff8aa2d2ce3ecbf47ee258041e5e841b248168fec838fd80496a7607c3cf416ccdfdcbb7c9421c29c1f4dd871823ef47a0d8527ee4d7e50875efce1e0875e110b697077ac8c476e91122a451f96551bc1b499b5cfc6dfc98cd5b246d21b419d85d0dbe53724bdc42dc8564493fa88b237ba6550593df061094e8297cbc55fcd7bb734084d2fbb93cf893cca17ac5152d719215b4191dca00ce010b7d643a0632aaebf1e834b5c7e997fec24d1d720bf4a0969f5cb9a5e302ff317f6d9223542d2a01fa5441659efc89b16be16d11c4d02f3bbc28c6834bdc147dc38a24f5e6b26b1091c4d10b102344822ab659042862c7931ed90b2b5335d3436f820f980c723ada605b9b45b77424f143c380bca460a1c9c3cbb0a81d1cfae1428d071be60232158d121374de848964e2141ffea215791d0857d80881f6ec43aa7ca61a56f97bad97e9189b443d5672dd63b24745a7042e2c0423af8a0fc41ecd42b127b12ba7e30886407ac664c5d09d16da7de664e78d6eb23469b205361d0cf886c2b3877f66c524efa0715b249a7909fb8b333c8f14d2789437dc6fdfa93064aa92804fad92e28e853aff20fb7da2039d42ff42291506481e7317db41cbd2c50f575ac0ee8343d99fe4a9aed02bef9c38526083a0179107acefbf2660c5aa867cf87c77bc7142dfc443b07b407f9600cfcdc5667b8185253ecd7388aa7a6afd87a0999d99d5c11c30d7ab3132dfa894916db7a35a917b9af0e1681eec43117eaad71f73fc5d6fb25a558bcdfb4c1973feae10aa05a2c6284032c2042907113d0d3210a1327eed3192ae32fdfbe1821ced422d08b21b59dcde8784f28f9ff28680d3ba6ea4d9b1b5baa63f10dbc30b1cac3050683b13d7a4891d7cd8168da0813647e7056d48062339a88ac4dba282a67233265e3f0d296541490960eb7447d70db6187f235900b99d1e9299688ffcabe6a06b051f3014e0fce628490cff508e3ed318093147b3424ab745cd544aa82f4b598057f6d2bb10db9f362b1b83dc38fe8e169d81568888262cbf30b7e79a62658b532f3af90933c7f69e801f2e562a75c64782e089f0629fa0151066e7bb4eb872e3263ed030953a658de06d2996174c265649d63b3fed15fbcf2995604e1e1080902cd0e694b24b8ea10a1c9f12df8c2b0029cbd817463ca954dee2429120d94acb3e41e4ed32347f8507797725be4e852f34f6b67ccc8ef544803202cec26719a544185fa06f0c6770befd61703d7a2cafa2e61fa038b0f28d63fe5e9f8fb0b58f495b996be46bed2089e377a77f42a192a6313fe0766132c42bbcaac83b3414fe9a9a95b5470e55d718de74c051c8963f257446f8f7ec2e245d7619f5e94a25adb2c7473b0dad406d30617eb8c229d212be5ca501ee46245774daaa1a4f9e91c0709dcd98cb0eb09c698ab1d82841a8579e1cb63defcd523de51744145e1f68f78da496f0c838aba5054e1ba7d3fc48074e0c024c4d1777609f1d70dd4d108df5b7cfe6c83acc92f67cf4f0b411ea4f3e107e5f2520b734255e1445d3929496c0c203168c775047ece4521a9c98691c630dd1a86bf16e4291d44cbd73ecbddc2417969e52d2c495081322f0651400f766abb2411c9096beb24ee80e877f6fc191952e31ddbd41876cfb374344438d1790534983cdbeb89e5b99010ecf96fd38568b2c1085e24328b6a662e2386030dd01f8f7500d72f7a191611e25a94b3755cf78c7070137540826b83565cbfeede2a0dbd5c9cec1a1c611f6a75f2e62d6ab5a682f44ba79b4d702db76b4a45d057b03665a042c5ac3d415e206f51c62bb5f88bba7ccbe5e9ecd42ccf27a7cc9e4df0efa68166291cbfd1ebfa990a14b2b1c85cf7bfd0312f4a2bb751c4dffdf5207dfb26d0517c31e9c7a850979d42f7a110dfdeba0e79108ec35665a6e26f58813a15c10c05c7e6bdb67802d45c97106de0ee3c3804527dd924e8174bb2c5730b4e2c7f3611ce4cffa8fc03cc8186e44df1229f527bf1d5b90fcd2d6294f721ccf75ca4946672080116e3077fc5f8e68d9e9fcf30e583bdf3f44d88e97267a710cd19e3e2c5caed41c4ff594beeeb04506e01c8bca8415472f380300aae8cf33e756793f93d04abb6778baee0032d49ed8a51582c4a15d8b28d3da869741817966504fa55b82b333bd887641e732108d3cb6dab6bbf79b62358ebca781a69a4b0244658f52bc12bdfb085ff84edc6d3460b461c2f6b666a86881657a816da2196e3e7301b557af9f200b51d0abfada0ed114010a5da484653d0732de6dab0eb8aeb00769d0082474cd3003f939c6253c7cdd670ff32041e0782c7ced2f641a3a1aa7d985da3c59296028ef258d2cadc292581c19122dfd0201085540fd2b89d905fd992720f7f81346fe05c1e07c8aabf436069ef71585cb9c72d40cf221980243bca5ef102d72b86256e7ff2b6dc8722fddc441c32c93fb6014265b68255dcaa8d0512ecd0aea0a6cd1c0ef3c81f58a3dee3f73cef951e937be090350169e778325703e04cb3efdf9f7377382dc04ce1cd8a8e836197b4ed1e0a6075db290222a5ca51e41398c5f17a99fb55b21c1b29babf0de402cdcdb7d4b109225b63b35aff87502d097241cc8e47a173815701fed3aa43ec7d4086b418bfe6b89f7f923cfaaa06de17e1a1ef558698e94ccc6444360da3bdf1a07da7acb60a657f2907598869b2a9e9952d34e2caa8362c818613196ea4c90eac80f3b3815a39dd0be749e09290af5131680b85011794613c3e0c2aa7752f40e07537a39f44a31d6daec51eb64763d096385b2439dfce4fb9aa1f6fa047ab96797646eee15c092c78462f6ea83634a39673fdc938d6340613f746cd74c21bba12b675a1e657d367b473d39acbbae6349331a61deba6ad7bda1fec3db7d8271db1fee4ef9331b7bce5fea396ed70e7ef00c7e0dc125662e0f685e3bd69621066014ce6c8f28175ddfb893eeb6802a032910c68f4ec271b12c743deb5f87d53a9828dcae3369247e69a55f32036ffa00d7659e1f963fd372be4a14763f3aa44f5a04eb636b40066ece6ff2f4b9a835f3253921bd4008fb2ce363b1a9c3ada45fca90d0b1716adc261b21e5a4e24b4224e86faac82f50f5ff691dc4a3fcf53ea91b04f6151ab9a4d5ee28a88732b04c029abf4b5438fdda56241bdcb8989f5c048561d4d0bf70c18ae47ca13a3690f0857a36a125d5e66435ac25869ecb7b166496420e95bde10230f4720f46dab64258524859bb08cfa5bc659ab36536bd3e59a39c628c6a6e056244e9d84365a47e97265f456a096107083fcbc5d2189dcb2b1c8b761f1b86e0b221e82353a23ae9e613e6a109ae3d6b884eab8984cdadee56107ff17e02b7e5842eda29ec9ce448a1d57db1c35696c21e4c4875b1db090ecfc9e65e1dc33aaea7558c88878a4996dbd0247968aa1de8d627ec9dbc4867ac5df91b9b0271485eca390fcb16c91f449dfabe1b5ac962f14b2cfc9c616e88fd7a0316c46485c4b44f9167ad7d6d00c4614714997e899d8a48fdaa4c5b594dc2105424b41338ef8838be81a1d6b71cabeb6d84fec11144462181c923b4124f0c5897ed8e35c996678959ca4a0bb9e668ac29be62679934c25b81a28bd887601ceb6bd04ed15e6c50485cbf08309804661e5a4cc72ee0e47a121b678b90042aeb28339c3669e51f931f71011810f489c6a98abed56dd0f902e0b7147fd2d24b64a05fad01317fd181156bd838bf7c4e4b83b4a6fb9a24cc8e656189afc1519587c3527ecb76c610c0f4937af630d2d57c138f90c7f68197638ad1e15b7f02b5ab2d12b58862e2ad24b791ac6b501838c16c8f1e0186383423eb0c369efa985fc3896a41426b6547bdd19180eae7fc13043e54a0f2fd7600eb891c618bae5e377b19814e7c90c01372d86ce32e21f6950037cf62be7fae1ee80c83fd8fdf8ba393e2da032799cb48162e2b16932d9ae6348c3e431d2069aa9c7a79d89e3d30614d38f499309e3a73dd396ed98ac3c238eed98662ba550d1d40de08774fb80fd60b207144de75af41121c8bd91da775b100548857e45ba15b5f48a2e0e8f7793d5c4641c6ac9cbac88ddf83900a2d69e16aa2d2f15c43e2111db32686a6e3aa3dc71be6c7c3db2259290144a0cb0e1db6f7f9d3eea2f985dd7006b0f5fabb7c67fd55a6b40c478ea4541ef134baa352775e802619978313894474c416011b7a87265a89cce939f3aa81712350e42615e288de8f3d396e789198deaafdc37826663ff0ea136093f3b6e13bbda5e760ca232f14a0d435ff358c74581dd5fe6d1907f44789ece44e44113a29e9721fc134ef7c96d1f0efc6be7e13ae7c7e6e253cabea0814c483e908c86b906c5508816511cee0fa2d2b2ab7eac5dc4f556ad94073bf0039207e8ef593e19a0ca3c8069eecc88b7dba75783b3aad3325bae01f48035c4c22ef0026aa2b50a89ec0f47dc710b73907424ec3f76fd6ac9fef8db5cc94d037f0799f7aa15e2744e4390327aa4af33b53ca0ad8586e5c1b43d9630c6083318d361098cbf41455d0cc76b29f46fe8e22eee8a4071a277d3a74b56e57fe807913baf7af944bbf6b6095aa8457a81969d016262a9866465ef97e7a64a897d180b4272c1f02a5769cc16db5d8777ec609f999697ca856f1c358eb942286ba158fa1e4ff9c3f004ccbc4a90455b299e31aad1574697acfeed17e150f2a1fafa74b7773e8a3968293cf495f354ffee653f3f6bfc9b2a10fec11806b3e5f83622bc2db2890d15c632bca08dbfb76f70fa087acb9afcbad2d779549e524987a1ab37509868e52b7a22e1940f5e8110fdb5b95ad4609fbb2ef46e920e6f29bd1d1471c54c85b926edfb33f2f9919bfaa86cda9b60b4c683e04b0ae3e52d6cbf28df9c8cfffbe2fe002af2d9e3231a9a91d090eb0a5d5194c6ed031a9526ba1417b5202152cfa6c9cd905cfb168d912d78aba3a3ffc6fc001130a4637eaa1f3242fdf4507a221d177b282aef1f9820819ae608cb1090595b0d56aa59ac527f357635719ca999588bded5e113d17aaa339c71a401c2dc96b13de11559a917dbab2e67ecae569a6ac6e40c14a9ddd51d2e67fb195e23b3837acb2102952883cded2c787e5d9c5dc31811e9c8bc852ce979dec2154e8017a38de1bcab3f0d82e6a5341005fd04db133a2702a21a5a7d106b6b7ec622fa7478467860d635ca58bf40b459eca57175b7ec10791d8ae10f0dcb8c495efe825c53befdf0bc5d1f23c07c2df7a02a14e59d87637621b52e564126a213068c2aa355ac3eded8ea9ff02dd81860eb206b345702e4a9d52fad8771504d1f12865e43f06caa5a7967c95cab5b4eb173a0743f4bea34d9f6a94c6355f557d7eee1f651f271fb29d90f94ebd9daac3355dfc6b1cd380950794bb9620ef6dfaa66780c01024b3f3954422285a8585747102da7f83944b8c40eacb22e0385038ca347a2df4838fca5c17158101c8732e0388ebf40ef4901bc4103fa9d3a8a5b20d6596d0ec602f966ca1674dbbfd36e0a3a6455768b5ef5816bef5e3ff5fb96baa114b2a1c357e5ed7ba8bdf0b13ff0d01d001ab63afbcc3e65d90e06962627e46691a8fccfa36cdb6ee21d9ff779b5b5b5ddddbd724b296592320c0961083a08a7b9a2edfa66126bbe62a691354da2d344ba44a6d12b6612ed0a0468fb7819d592aa20a46513a273a842f2668311ae9b9f5e42c47f6a4d5955ebd700548a929cad8d65273012592788c13e696cacda78b5f15f6b6f92131ead3e28a595ba68b99599525a624aeb755debcee38e9f5e9a6bce814a65551c579ef9ef7b38e7c75bf6f25a14ea5a5fa2a43b01a034f64315d03f986dbd6c91cfdaeee509b49dd31943b141d8f65b77b35f16529042165944210a1d93912688e766b4bd4b82249b595a92a529591aada8a9a88b157543451d51515754d4191575473749b693663729e92629dd24da4daadd24a6212b33a489c42295d11fb1920c21b5b818abe99954359126db4ab2a4ed4d56a6481b8947aa268d849b66db7f3bb266ae5919a73b2d22d6d0ab9a44a6243bd736a55cdb8c726d33cab5cd28d736a35cdb8c72928d8631b658b61d9fb869fbe39c24d73279e624db1fe323f62bd55adf22d186aa2bccda59c724ca80033e48daf96e3849ce99030c38c20e46784194224346be45121cb06cea8449111f1240c0b9e0072620e104329045a1c94ee9610241ac00092dc0228b2349f80f7a2041104c402004a9490b4650c50f48e4a00a2834f1610440501b5c22760c88897befbd3d720868d83abe9c4e4116193b57f6d082263c30e17e9bce68306892b114f7de7befbd394901321f7a0003191358d4b04801b677dfd7f73e100f6e76d224045788c089278860f7094fc8b8867befbdf7deab05131738fe0106454c92b8077c0a30c0c06cab6cea8489117010def744b744a44f3729864851040e5471051324579ca0089dc20b9ab678220a267a30c25a61877042032a9e35d35261d326362862779b36b1c1d10a3c4a775a9881124a43f769b77fa53c2dcc00095a43b76f879d77d3d3ee7121b52ec0b34716c91659229a2b55776befc5f65e8c73de70cedba675fe36ad39aeebbccb759de77d1fe87d1f0886219dc9be0f0c994e600b75f3204f1b5ba190667ee4461e7322a6da4c09a926a944d5a8c69aaa2b59fbf1204f5a5b611e258fa7e08d93a887f4108ac745ba487487db55fb6633d2bd4ff623d11dbb2fd23d82eeccbcff45a2f2d8f7bf481709e9f779912e942bbb4adcc5e3fd2fd28ce551d39281a244b5e66beb2da967de92db571e7586a64606cd8c0c1934d6e2199a9a960c9a53edc4b4b9c5ef5fd36ac9a099e161f14cf694744d6bdb82707c82361f9f20adb92d08e7c62768c3f109d2dc867373e313b4696ec3b9f109b238cfd4b464d078de98f2b9f94ae6191e15cbf069c9c0ad968c6de3b00c9f9b960cecd392b171d8e7e6a625037f447b66e3b0977d6eac8c1af415e733097e5f797c3e4085599aa01a1a5b534393b3b6344138353436a88626ebf70fc2c1a9a1b159dbaea8080cc2f9683e1b570e9b2f470e1b100c3f1b974e0e9bcf95c3060c3f978e4e0e9b0f0c3f974e0e9b8df3b0cf4d4b46d69d0dc2a9a1292a4aa9e4c8f94ce26cf3d6ca81d3da70705a5d076ead1c3938ad2d074eab03b71c393938adcdda0edc449c2307a7a56d745e937846671b9fece3c3715fb6d1f1c9363e9b739f8d8e8e4fe6be7cc2363a3e5abb5e93a3be41697c13848382b4f6b02b08df0469effd6f5cae20ac3d1c8e372e146ac60feae7671c53a819af1fd48c9f31859af17afda0c6146ac6eba703c52d470e0ef79db28d8e8ff6427ce30a1a5259c9c93873413936419c8d4d1008a2b8a01cd32688cbb10902515c8e69da04711883286e25c7b409ca59e7f539db964eabf57d624be7d5d2697da2ceeb653f516546e7d5eaba19df91b97375dd56e3c2a9d970706a3cefb4d5b866e0d4b87036f74eae19337036efb4a5b26b064ed7fd7c47b6743958ba9cc327fbf8745d9873fcf8e41c3e5d989b72fc34fdf8e42ecc6353534b8e1f16161a3a5874e8686951b1d0e0d1c14243478b8a85060f8f0e9616150b0d1e1d206a85cb316d3e5145ebbc6ebc536a73cdc0e9c231e7f8f1696a5a6179793b5ef67c5e2e1fcfe5f211c515cfe7b5e3f2f15e2e1f71c57bedecb87cbc9cc515cfc56bc7e533a3e3e970d08ca0a0d3492568064fd08ca093ca0c1e1e7c527199c1b36d347e2367b69f6ddb5a3fad5618a65a3f345a3fad30f54383860d53aa991f1aadefd3f11fb97d39dfa7736ef4cd0d088e3a47c78dceb90147dd94a3a349c78d0647ddd2d4b4e5e8b8f93ef33f12e6d379f9361d9c0d07e7fb509b8e89b3e9e07ca8ada663d64c9ced436d2cb51a8c8ef9f26263c7cb8e1d3030312f366aec78b1b10326e6c5468d1a3b5e60625e6cd4d821aeb8f05e3bae2315976e064f8e30a5e27e68d880638bced171f3a158361d13a7566369a101b2006e200e8d1c1c302707279572017168b0908303d2c8c149b980345860210707dcb6940b0883060b39383a2c39933da54f87cea7a3338eaa4f470d9d4f87cee6a3aa460d1d9f2f67d5f742c7c75a4bce586b719019148442b504993682cc20548b69c34610c6a89618d386d63b5e9333faa5b57e8922cb6bc74b64697aed68da61451698a6a699d78e5618ee7c48ea70461872336c381b9bd369859bb163c3cdb039ad70b5193bb51d1beeb4c2bdd46a7ac68e4d18f27c4892e18ffe90fc50ffdce89b9b3054d13f3c37fae72654d14a3f3c4a3c373a54d12e9494c81f9e7f180d4f030d24593e6cd3f0301ac8f2617bd3f064f9b04d43ca05064883859c23d58b4f470d1d544b8c67da70b1c074af1d394e2b2fdc8c1d9b50c585fee1b9a14c5e84787e44fb23a2578697ece8794c5a7246579c3aba4856c637dabdf9f374c5a976428248746aeaf9538c9de250cf8c13d349eb211efa5962de3fe529284747e5994ada919a953cc8baedcef320eb01b6fd421e64dddbf778dd1f110ff2001516e2ecfce0843f3f382b2b3021cecefec109777e705660de7f67ef1f9c70db566042158a6ed1cefec1b116f6d6f2641e16f4e1c9f10173727c54545e401f1e588e0fc893e3f3670a69739597f7e781c1727cc09c555ec072e80ef1c0727caca5e12d3963697c6fb1fd8268e8047d3a3a41a9948b2f88060d3a411f0d9da0948baf89060d4d34e8047d18a75c7c6453d30c0d1a7482388e85e7c8194e47b59cd7d2e16a792e576b1c5dbc960e165c2d4f87ab35ba78351d2cd45870b53c6b4717ef6bb5191d2cb85a355e2439b37b91ac335f611fd147d4d598396aba1c396a5028555763d6c851d399396a50aa4ec9aca15423470d1101b70c62fd865adf3ae1dd2bcb0016241091ce902c1d19fa2620d095f3c093c1f3a8bbfc7154fa9e10b1fee72c9c33c565adb7f4ea7ef2bc3b6449a77e956037c0c2134752c0831b4421f6e4c692404aa2e85eeb197042079efc70c4d01494c07cca7677920329dbddad779b3a614244a44410d707210f001183224320d0028add42091e9448a22fd0b681249e889b3a5162468591cd072346361f9a50ebe72d446befc5d8af23dd22dbb4dd1d609b9c09790bd1a35a775a8713aa147a990125f432c3f8a94f95423c3b2842061b5f080c550a09a15e28f539d4082189184c0809cc2351bd10d8e63f92de1044fab60991ee8f81534cb14f93280826309f9849e3480ad521444190c1504410f177971342bd942bc6dab55d0bc4cec5ad3a1688e7f82bdad2aa86bf2b4d22b3c85d58777f6a6d12e957cc595a6badcd2293080893887bce243281308bb449140093e8158b2ddd1d4428c4d3fc6e088e08881711ccdd8b4b1ff7574baf58f727c6f8cf150dff3589708757f884bbe7deebb80b635faebb77c82cbaff8ac504f04f9c666cb7c45b3d40b463007899afff8ac562ee6a21fa5e0178af7c8d5aa462eea2efd11ddf7706cf503a738eac510b67d517fa91f68dadf2d4abf2549eaa6abf4ce334a6b019d206bc01400a803cc5009032e479ed2a06915d9f45bee0a8b31da3cb423c4dd94ab6e48992bbec14767d130adda1a7b835a62eedc22e17cd66ec158b7185b35620daf569389663d745032fc67fdebf8f5fa54291434e1e3824deb72ad5f738267da81ee357bda722b54a455524ddfa6294b78308824c7461d77d0703f32aad332e57356b561890b3c691fbf35e8e1c2f8733fe9b7bd8534b0d14f8a96c3a53a2497f8fd564f7a796203688dd30aa87513dcc7b30303014a65375424239d023bc80480c86fa1c5025929817b5c73dd308e5a190e4479d2ffe458ffb887918dfe3a87185f2d47b85fffc76fcbba2e97b57b5156db5b4a2e5152d63b385e6c11088e72a13c194993367cd7c0bcd8ac95d32fe46ae274b9e3541ecae790ae2d06f6fd4e8b7b2251c6dfdf9a945bd70f8575adc156db5a4b4c35d3f462cc650fd18443180a81f430837298dce8490b4ebaf982c872f90bb5c560bb007f15cf1209e2bda2d410d88e78ab669abd577abe7567fb52d4f1511c4fbf83e2e817ab80bbfea4f8e5391660f77712a8ee3be7b4f45f600aaa17b0ea8861ef79a356719a9f027fefbf702620db406ea4f5cf600babb867b9ff5de12235c267f8f751047ebf37b75cb20f3b77c8b3c5bbe86f461dfbefe0ac2903599cbb3a5c6feb541ecd62dafcb150db95a6a21690b19e3675af03d53ae4020e63765ce3267eecafacf7beffd3cd2cc99f66e7903509e2a17cdca983353964973890c7fddf966bb92e22ef24f5486559e7a83200056f81ebb02f9e263ac481baa0a6449de7d9ab4fc2f82d81df33d0e0306181ff35e0c797fc77cce3167dd37d87de2b05f04b11bc658bee4a7b0d592bf209366ab18fa1110b2f37b3b88b11793e84d2326224ca6c480c3778c2b9c553f86528fa740f214b79dc245733159d37c395d4d2e4a33e6a2994466ac07d9c6d974d6c306b657bf71aca30a6694b2555f2ebd711c6b74e7eefa291e524420d0783520a27e7c4bfaae423cc71f9784a8b9eb7c0121c55da7296372d7f922bac25da7191b9bdc75be8ab6bbf06333e62e5cbebcb3eabf8078153991a26807f10dc4c68ec06ffb2272d7b5e6f8f5cdd94b0877b90ea265f9aea4cf955497a78aa5a42eb302a35d2635b3f39397ccd9e6ecac1a69e7a8845ddf53fdf714bca1fa1e6f215d4bceaa9eeaeb7b2af2c4df5253e4f8993c5f3bff99c3c198a6914a0d94e8f2f94d235bdf54e235c6af97e557be3e0e40d6447deaed8f24cbe5c5bdd8eac122fe5851e160554a20d405116035500f6b52180ed6a4b0d5d625a534277e90d21cf0da2dffbd8af401fe797a0f7ecb7bf55379ae9a8b5602d1cbef5a72572e21f0dad9557317dddf9751a83287170c89f7b2254646684bb22546466aac12017256add97359e9b35c9249ac4d674e1c6d53664d73a9e5b535479449b3a629b332952b69a74bd004a27e17dd9bb2255beac7f74995424866181fc592419542dccb9c2cadeb0134579a51288d13459bce94a0ecd3dc74e64406b64973179d31a1b45d5c02443a7382b6f5c6f6f15b13f5b705f4ee831e8afcc8ef552ad547762001e8d6651e1ff53e6379bbd22748de66144a83a36e93960211bf2d290d04526db81bfc161244e517ad397efeba357d5999fa28d286bb33fe8bc47510f1a37eac7bcc8fca41f20652a76cfce748c365fe1ecf40eeca3566546595e6aefcd965eeca25851131b2a42e11a1d14e4a4b8294a454996a135151122c7e7d294cb42567d503582cc49567f991664d95af230b9922b232f55780aca952fea754aab1a4568676a68a469a959982789a26cd5cf2faa614b3c95da61674a772d6d4d9bcd9ccd9a4bd6279a6840e22aa69e372a4d97f8246674c34db94c7714577c05d9f967f5c25a69d4485077638abbe0f55225d3467d51bf79d68a22cba09e0041395a15b972bdad2b7ad0ffbb85c2dad6aeeb2656b7b9724f5d26f4fdf537be5aab6a2692d72236da459192bc2ea48b3e62a0a95a9af845dbf0aa65da3b02bcd9a14c63436ad689b11a31c2c810a33972f2ee4b74a3b9742761896a799c43651628818cc9b216a23ab9ab3aa3ba133c718ac7e1d635b93a6912933979847da7bef4fd3c887f7dcf738489a326779a0e7799e0792e69169641a318df4f7b869641a318f40aee3b8d29c9932d3c845338d5c2e9abb34d51c1d63636c6544ecbe2b4f9369d78d6c594294186cb5e4acba83c87d57ae68cea2396b89fbef4f10e41ee4de07f8dd485bd57e7f26cda4ad6abea275e46a6945e3deebaa775c39d67e4573d749693577ad966852767d2053b6652613ad89b6eb27e9a7e00bf475e983ae68ceaaa4f70426192c93a7de360bf177dffa38ad41bd6dfbe2dffa2db77ffa5bbfe516effae6f6bbebbbac7d1db77fc19c0bdea03018f2acfa73dd2fe4497ff0fb6cc1d867ebc53e5b2ffb6cb55af6d952d967eb44edb37582fb6c75fb6c7161cbdb676bdc67cb65af64eea22b875150d7dffefc8d889aeb7824ea9c47994c8be378f472d73fca564c2e2a460087b02ab02af022bc88279e78024481174102d739c3ca3155493e6eeae40418d8dea64e8cb2d8278b0605151595eb5effa5d6fdf282def6f5b6e5cb0bf6bdbc80bfb675ddc26bdf7fb9f66582fb724b1cbb3ecdd76621d6cf658fb3cefad9b3678b2434baf4b76d7bb91befcdf3966d5b6e434110bb245bef8d2d9343c4b3fb2ea96ba253aaf40b8daadd4155c2488920dc89124877ebedf6089e01c4fa77c549124af7de774b8a589f15a340b4ef3f7874f5b9abf32db4eb475ff438ee6de5084016206719dcada5b30238cb3e7929abd3db0bb97077f511c4ee4c8002c8e0eef9fdfd7397eb0f0bc1f3403ffae83b11eefade939c6e8423b91297f9927dbacca3501e4f526bfc93e04b5ea341d8f4bd08d4d51181f2b811ee047520501e47eac1a637e0c1a64f2b8f2ba935fea73fd19485face203bbc94857a0ac260b788fa53886b4cae949a915dbb3567dd24f8021b0f49b2a9b8586cff6e0adb5f6322d8882c90eab562df80eedc26b892ca73a5d41a7f2dfc3ee1d6f0f6ea568ff4df9a776be569f546deb79465bf0a6d44a8aa4790645b3f22721610b6c859f62d91ca5a2355ad96082377592396c8be05c2ba947daa5ce62cfb1f1079b0eea23649111e5d9d35b6ad0572967da65fe56cfb42f6edff08025483d6a2a852fdb358de6aed25c4932aed1d5e63454aec56da491c2531447dc2fb56717305c65d3194551fd30c56caaafbf4b1f159818d4f211b534af34db8b6bcd9bfe6fbb90cfe985cd58adeead687ab22c2a8569f73bef6576bbdaa958dc1cccc4c9321c8ec5b4badc5f75a6cedb5d6be1396aece16a93f2adb2ebae8a268dd9dc96cb7fc8a01d0a794c6ebdbb2a7fae74c9758c13ec5ed4450dd2177c8d5e1ea8034233724217caf2f5212ee0643df3b2489bb2149f162cb485a7431404714e1608058dbb61d61f492b79c733e42062c2eb6bc6ddb760413a04bde72cef908a54fb5e56ddbb62396c696bce59cf311589c58b6bc6ddb860406b695bce59c33123ca454b6bc6ddb868409c254de72ce1909242be396b76ddb904842a3f2965b9c464207e31531c69c2e8231c6f8091b6724a0acd853de90a862252cc2813f841f095c783440753317ae06515c740db2506d1d58c9474eb807ad06202533485d9a1227296b730f5a0d404aa0803420254ad0403d683500e5c0889ba14b4e9b3a5182c5c69b3a5152450c21bc676d31d8acad015f1f3007b27d727219683e49331809114107a400c2148e7e38021418bec0c6494cb0f196f1125272067256bd25c633cec218638cb78c31c618638cef8cded44993214d84e7514b6f3672edadde813ba4123f675177eb2af6b5b3dc5a6bed7556692da5714a43dfab3b8e4a69a8638ceb0f627d7a800ad35686d28035e7216707421476be39e79c73ce99879c4b908409f83271aee421e76c47b0734e126567a01a6816b5a913263b08c248d2b7456c88eed4bf3b6c4d7a05e2e9d56a9ea64110cf1bbbfb3c319d62dbdfbbf703ef5732443a75b53b8ea3a58994d2dcb037ee95c930c639e77c63dbb6ed92d6c81ad53c8927696a92c9ea501dea946ccd59383aa58ee62cbcfd6dc0fbec942cad36acdfc28582e34271d6f5ed6f83d76e08940688ddf595280dcdd2ca43b73f92bbc6f70f95b80b159ee109b6ff191a79451e10db1bea94ac4944e543256b0575854f50967752b63f2dcf8ea9bba2d362bb47a406feb38b0205feb393627ba784dd2d2174b1c5ac19d2ec163158110d4b7d1111b6b211591925776d46e113d4b50d41592edbd1ee5a481f509765b256d826b6279da72dc6c2b9b2fd69aa46eafd65fbbb509efb5beca5daab3dd3da395798481ec17fc923431a866fd0fb4ba57ee8612b3fe4945364b704b5f157214329ce6202c9500b2b28cff7fe6193d7d84a2243b62953a6c090dc2fa282216982cafb87522a8f4a7983dee1fb87545017f8fedd12d524b2bd7fc703ba236a5159407283de82d24072832a9c4277c2570162a74cd9dfa7523f24f5dfe3f55736226b764da88cbb2b94396b08ea0a95a02c7f77d9c2506665fc75490e6958ea43adcf50b6ebd066a13090f45d49bdf1919557218fe0711cc7f1b5b3c6a76025b23daee38feff9a742fa6629a282a51e93431a4664c869ca942d6230fc451eb67224550e3d2cf53d8ec9221a867f851c52c17039844e51298fa44a4bb34b24eb54c1fc6a66489d024342a9cd79c239419d93dbf56faae644edfa9dcc3ad955e924dbfe31cbc5c8c07b67d5d5cab6e0fe56a5420085b540776dc186165a6881d65a2b75e2e1f04e38bc3f91a047ce707ab0d494d6ad4fdf7b1efdb1b9fc1dc995a73e491ffafd4fa568653ccfd356c6d35f3791a4d59ae15fef4f3f60c995670ea707df2bc3927ed7755c05bf12477dadbfbe0b9b5a99ba3b12733a93270efba41fc49e38fc50e570e3613c84b6d65a70868cdfd2b7f9efcf56522b737349adcc0cd4ca589925b6e7de3b79ef7924c59f479d0596de83fe5e0c6279e47bd159dd53eaa67699ee3bedac6e0bffe43d0e9be31e7cabcbd3027b7b4ab9a7200c5e79247cea2c7d2acf1cf6f674fbc2122ce973ffd1b7e00d20756baeac200e30bf47e2a8bf6ddd6bf27481dbfe6e2edcec7a2d79f6e8f08d52ff9e28adf5561beaf6b79f3f08b8b30bf5adbeb7f4f1e2427d5c02d9ca1b1a700ad9f585ec5c46007f10bc711901fc37a0362e23503f0858df99704f9e77dff3aa3bf50cc6d0e31ec37d772f83605c7ebea4d3766d1285f418c018eadfa7f4f1dffa3720074e435c87ed2b35d8aa21622a9b3d037eb29a8488820d7e40a349324001071bbf6cbc512519501023834fd20c32cca000822f29498619509bcea080012ca250e44ae0eef3cb3a5bfb5ab4322e26600a910cfcc04914391002764b6a778ff7b8b7ad75263692c2665608b1edebedb5109219b8c7a5107eae14e29e0522104adbfa29ecf35f1829b4b7984d675668416115b4b11d04dfe07b7b6f8658ff46ce9bd6e449ed8bb55e4bdb3ec770247caf86e4d0c342ea35c25208897e2124f9c3e71e8330d0dfded3e00b9ef79aa4ce3a9d4a1ffefaf30b362429cce90bf73daefbfcb4cb4fc9108998a9efedb79717acc581147f2ba06c3aab42b64f5dc5d0e69ee2d7ffc40a259bceaa48b2559bceaa28dade897e15d256c6d22e0848411870e9833a4b5b5348084c839496362c8008751d2b63e9024ee5b995a28f737bea2cec63fb4a5dad9de5f7f04ff77e5fa93f8331e4a7a7fdef371439f430d4bb5029445d87be10ea73a0ae233e751d0c837f7e0cc270faf07bac778f490f259e60389567f8f73e489e3a886ffb1de7dd4f08e54018e853ac5fc8e2cf35bfb0cbd0ef0d3ceaaeaa77d1b68f5ac2d0c60fe32e3a45d3b6fff242f8f6c34f05ffe6e9dfc018ecdb4f88a77ffb7e037108d9fa3bf58b7afb948f9717f0778fbfebde1f24cfeeaffe903cc5df40d4534a33befef0d4bf7dbf9127eafdfffe07c6601f558231e018f49f3429962f2f9cbefb5309e3ac7a6eeff8b721153644a9cda9df7d744ff747fae01e575d9e42f6897f2b359ee9effb54dc7583dd7a7fe5e9a44ffaa9560109405bd8bedcb892d4babb90b0fa141ebd119962b158cc964188f5bd62fa821bbcc3b55609f8c64f2570ab2fe13d60b53d0f57953743d45814dff3bc73b5b5b3f08ba4035adb2b31273e16c907acb657fad0e7b7ebbee76a7bb8ec3aaeeba8589eff7a814688dc13c05de2e9c5f71f00ea457f14e99d48ef43d27b90f49ee5bdbff75fe925fe1efb1cb991b8d462c52538c2b576ad32b4ce95035a3b7b4736d2fe46daf7babf64579e2d6fcb9ffbe37204a2eec81c84f8d6f1df3f59fbfcd63d83e08dacafb27de8611c0cc4fcb47e7903dedb7fded66d361ed0dab8f4f1d1b68b87a8944e3134c5052e6ad3991298a628ba804783443a5bc2d1dede92a7f561ff7acf99ffbe0b208efcf7eb007a3e1c5e4877eaae174400850da15364b118f899d42f2edc58cc6e0aba20c636c616c44197c4621b67d206fc3600a14cb1d80e326eef83e4cdbd87bfefdbde734c1bdb10247724101b9b529aeebfef3a1b82e4edbd508fb0710904c6066263574ac36d20754a01e80cb76d600184e060533a73dadfb6eff18fee44a0f6d88fd2dca760059144fb4236f9c29a92375cf03c2bc1d80636814aa572b7ce025d90c3aee5a5342aa2a852f96aecded5ae55b4d61db0ba2fd47d0ad91a05de18eb8fee5f0abce10055751755dbbfaaacb08037c416f08688afcabaaaaab8f014b2f5d735d14dd9c1a7e22c5aebbde2c91e81249e7a5b7b6445af7a579a5db6904b75292f954aa53e30954a85271135a6525e63c25208524091226aebae648918d45aad5d028a93259e5c4aef12575c29f812a1380a4829a54e9a143521aa4d8edc48adb5d65a6badb5d65a6badb5d65ac9242c694eeb277a89169b70778e7b829484ceebba3cd494a9b89d0ebc24c872cedf7765a0b5d620784f2a701188a7131449502c213222499418882851dc66990abd447f4750230a7569b328211853e3784593d8b2e92c4a2ca5924a35cda0987297a4b09d6685ca8a8aca8da968b415969515a628ba22178a25dd044b0b0bcb12149a4e820f2d5f2a954ab5b44441c44ec20554332460b1552e2e5c5c38263213ad645c72f1e2c2c52c0a26b6ff97f2c10bcccbcbb7e92c8aa52f0ab1091d0551144c5c9060626062a43892020552f0a08a420b269d24e6454c8cd1dd740605ed55847801e3c50b2888bc4d67511835652aee0f30be870103bc81290dfd2ea925854c0aa4d9d293d9d2128d041dbcff62626262fe59a4901f0c18306090e4caa6b32842283f9224c9b25c6a8aa203fae2c265fcbc8e8309650ca1e926449bcd39df9c73ce79b3475c52920c333481c1ed80b54adb5a6bad6d596badb576cbd9629b955842b7c9a08414529c0c349fa4197c740f304708d1030fa42003529c5c2246c8c10ab66dcb3e885703f57056ce447e60821545a6a820081b2c01c33750daf8053dd8f8723facc9952c6f2d29014bde7e18917bc04d58f00f1a0e4c41f00b80707fdc2545485dccd48356c3863340b58082089a5004881e8c408a1536c6f7c712a6d0fea0e1c014e4c7922d3ca61f4c76b03f70600af283090f9789e947902076ec650a2a0e31dadb653f20b2dd9f6cff6f07fc2ec2169cf8297e4c33ddca725b5b69b0be96af9e97d37867e1b2ec295fcef297ebdb044f496f195feb9586e0e7759c56498d28f1e4a26a615989817971f1305e94e48e0a9bbe0a600bdbf6f7565e3d3c29b0fdbd18195f1b9e15d8fede0a5ec7e91b9e42dbdf03004a3c85200e4f0b6c7f8fa56a61595149e5f0cc61fb7b320fe3450ccc8b8b2df40220c302c00a31562a943af4f70410d63f7d24c1524b1f75c6849117d6df6e451e5d9d2b264a3b586b7b0f52cb3fc74725fee3d148c4012c8cfb1e87bdc356cf911636ce469995f10ac6b0da2bd91893c17c25ef8afc93b57a15fe7ccdc85d55d835e6898b5d615c2ffe64d9aba45ae3d415f39567d5c4ca094ae37f86bb7ed5ab59e559293da93c2b28499567456ba2f2ac965651501aff15664f7685c52049320695b1af028dce0bbbfe4aa9f2ac6a502acf4a0aadf28c48b5260aba33b260a9f28c47b5c6bf548281b2ddfdaf8e9301656dcbe005f01b35aa4959fe230b56523ef0fdc7a3f0bf875949d90e3e1e915e858701e305c68b17e48b9818173130db5d605eb67dd58b0b17312e5c5c605c54aa16554b8b8b1696eddedffa2db7cfb2a2627f45259562498de3cae82a28514cd56ff9dffa2db79ffa5bbfe5f647f0fb4e9fe7855eb71df5b706a07ca8d42a1d6a6ad4299a01000000287317000020100a08234190e44014a7927c14800d5f8c545854548fc6a3c11c85511cc731c828638c21c600638ca9219a6d000aa36aeac3ed72126f9296bc5b19cd6e33f317e0a5ae911a92d16c1488ca868686a66c4d71f0eb14c2581de117208256d05c715f09f641848c0607bf3253d78f8e17142750b2760c8281742cd581702e1eaebef5eb065042bd582467f3dafcdb07807e0d883503d66dc8bce8ccd12c508c04d7b0ca2c6f741b4dc8a7a58eefccbf8ceaa07ba0f9bba601656756b9191d7af8d49ab51ad8bd679b8a9fa045ffe9dc8c49a9d894f2dd8a846375dea35a2e89cea6397a4ed0524349786037e473770cb2e5aa8df634ad187c275fff1262cd525fb76390508f0b1685584f2428ff70f36a7e1688cc2c57f0a0ed6d98cbd098e73eddd0cf959ac40afcf1896e72bdd43814f7a928c25e5b3aec7dc077427553142590a3ab99e9a9777aab3e2efa5b4e8158763a4fa60fc6eea7d920ffa87734fd07f1a48db71e004e663652570223f9763d9da0e79cd88b6218b22bdc08d0701e0f32e79b700ae7e2c69df3519c02464970015c4506eb1d11841354ea523ab56758484f11cf13d8606ecaf350c2485619a8852cb05a975256256271ce7ab407d42a99ee424b951705c36042013d76d57345e18880ab9697e3d953f65ffd4509d705aa9015093b39ce98a6766a81951b23c682ce88379c3a1d49f77ea74cca5bfb87ee0d29112472672031a79f07612e57254975ccffc165d6ad96d9aba842ee28eb9ef63c2503a0eaafb82d953b613080130ff3064f92756db62a9b1ba02078d62b0bb4a7558c339b123a4305318be51ebd632b702011af94111b52612b298100280f145ac86b8fe9f84569602cb8aa840af5600c54ad3394cecb4d60e09dd2e33dbf341519ae134b4915390d316cf17066069af72ecc895492639325ac3b536ab358642b9b0005e2f4af456d1c6187de8cc23341bacd401ce5d417dba345557c0042fea54caa4eca9e6b6fd0341cf6fc06187e764206f31acbc28738a123cfe91ff7220769c81197f92a2a7ed0c837885621f11d558d193f6027182df366438933ad43da486b661da583d092df9a48d2c24f098a52228d1603b020b8318849be453a20f95067e2af35132c60410611b4eaa35ae266f7c81fea9aafc6b9fb5c30ae04383bcf33b536267e598b3e3036f7c0a739ecdfc1b7612921e25f4853ee9501e3d08fe20b6a9576e6088032225d9c4df065cf220230cf48cfdfe4f7761d73ed854f8f546f7ec89432afe09b9b92c9295cd77c2d17f4bcacdd73ccae66efe034861959ebb584985f20d5850370a4b3813628e9e3a00c835158d590bce73df457c34030a8943dc81a8ea651cc622b4a196b55099f2939e7383381c733014aea73b60c69ca551f4174ba90ae4840cd6b894f6ef4ba8b434a92579899449412dbc6697731c8459e5e0311ab6c41c0e672302ad5b26c000cdf34ee1c8070110e9b024778b036d4166deeb96e45760570326e4fc10b81cc4247521501c1bb6e84644f534eb0617da2855ac10031a07b3aab51528f4dd8bbfac5e6eadc0483ec0ba8a54e1493bc17c2a58585e5115f67c9227539a492c50a4772f0827de3f50c26e0d30ffd225b4c12e347d0581c123de0516c2686e44520aa3bb629135d0292ca1e6762dde0825f3073111ebb1fe4fb3b5140f6d52a7ffa3ef015e8e156ceac201d44f3fbdd630f9c3db1528cad84cf4c7e99fd11193da9565f1bb99cbff8152e901494fa23d4db208656e98a657fbc87e994abdd3ec08341b399e04f75c9637d2c5b0e25b082f970af344fcb79aa0ed9cd87fde5db313b309dd5d50c8ec25034ff957598709db54cb80f45dd4fab0959b774c3c9c4d40a6b272a9fa328913271b6367164635111ba5197ba19e91436dde374b798de605cff57f6b4f3ffd111f29d30217ff010f77a1d8908395d51343b86774d53dc3d838a14be64e649f1c9cdffc0f0c9056233526a6d9ca3c5b9977d7c397344a29cfb6835bb8ef4446afda1c48fc0f8e1055f0ada46aa83c76189f73eca087693d61ca9efac7a7cec0938ae0501efca7cc069ef42314f8edce630c3456556eb622b4d49df351e66a719037d3bd1e6c98e1a6015f84a3fa9b8c78941e890a7e37cb2721ecab8e5c92315a52b4f41f4f2fe6ef915a3e93aef78f48f44d17ecaa585c6caad74b20d5b08089dc405def1ff812d89a55956286c14295d5b7fb9fa9ff941d6b13015fc492f2bdbc3dc9b020efd8062fd1d9062a22c6e17699ffd32a7a0eb83e191defcf17b09508a046cf9b07a269a6a30157a3968892b1df576a7fb980e93d3c57f56c406fdbc50430424fa0f86c2cf5a48fa3e092e6088c8b14bd03d6ffcace00ecaf7f7f15eeb39696c5b807ee64520a1439628860acc658b3f41a12d81a8989c76b12449a03a053aff1a95ad4b5dc2e583a480c4743cd12fa504db7d2df7bb76bf9e0fb13a383f00a3498c1732ef902d19dce08a43e581d20c476b94cbde856cf9aba2935056d1a3319405eec4cecf97946273b178b3d8a620449e53c34f3dd486a65c00fee68fd49f1a1a67aa6ae25f51342011de295fc58552edeb1ae18ba5f3fd7e0280bd83945450fbc565ce1f626b8addcb7845d8714bc63f7cc277df1d6c9714f056d1fcb52505663a682f66862fff7bd41db64dc59088dab3ae533ad6a32ac5ec5be8e9297a65ea11fd33c51b9e1499cb5e3330cee7238f319a921df8ccb0fe147b3573deb055bbed519e43c83be2e8138e164052776736c708cbb3857e0ca5f06b7dac2311e905f15d1e62c3dfb673ccb1e06cd9f396260bc27b4628aed658f393653bfbc8bb2e1a3e808c46a4be8eaa5bda33de87362b5eab8d6db1650c3f367c5729ebecdbdc0d6cfe2cdd6216fdbe4c13e3d327c7040ee8e1178a8b454d9d6b584bff058a0c7c270f4bebe9ff3d8c97e63ec5c46ab85cb61e032a4e586a4cf828c3bb5941a29728340183d11c68a611334918182dd9675a1724098d8f8d3579f9f21d7c6048e3d1d595f4fec83544b103eb7aa388d39c001a452c36ce506ad35b0f3494ed728ac82ea943d04b8d625c6d1ba4d6b72fbf58ff0af2051551e98ec1069a4076e0028900ba4083b0839a7193217e5c8acb3153133eeb84b5cdb36e27863c1629d6856961e59a6eb2807bd7cae3bc0995071929d072bec5563a9995844710899711a8c99e8a0d570962f809618c26f4e1eee184b2148d16b08c720537ad4ac54c9471872bad6318de8331709bcd83df5954fd9a5ae1a0a7e1c7eb8c45a3eaadaa6ae0a04ffdb45f1d6426d24d375152919987ac13bbfa63aa644b4c50b1b13b6e5c7432e1f683f1a84efcbaf4229dc15d5bd902de069c9c2b9cca1ba9f4d79489922fa28b0d650fb6f982af173fef1d76b6cd7a8de5b77bd8ce4cc2d842f99a256a4943646f270ec98f945d76d489a7aaf2b781f4b40a4789047342bb020bd83227cfe02b6f70418d6ce24fec0acb145f83577e77b10c5c272182a4322a080fe0d9381cafae9eae0737c72ad229bf7f576a500df458bd90de82208fc52b8d30c98e364ef56eb5b6aa1e4e0251a1820f8759b7ca55a0b4dc06a69af2da4a3df70aebe349c0c57f532d24941e593433055af73e5e18d5d9e56e035fc80d12984b2eafc4f5fd7305b5cabdab1e6fda9aae3b83fe4dc4de5acede95954e013f5ff6fb254231a543b2ba3a8025f6d4e2479857a6f43b4df5d84a41cdd241e12f1d462e6ee0a3fda90c4a2d7dfb06f6ca61158fef33122fbe0b010a01ccd23a2150b967ba20241fd15feafb1c1988e345913f65d3e90fee8e10bd008bdfcda9beea7543fbcb09a0fd16b18c9f63406ce33f7882a240371e5d45783afacc7af5d17c9f81ab9e2048faa1698b6e42a9c1dcc112b06062fc8e5e885502455f99fe715606b6c1ecc7e236a5eb0ab4c9c9af52b452a346bf1e4fe45d1d702d134dcccafa3e5206a058e94cdb86ebeca812db4b1ae146333c9cd0c313ea40460c6494c18c1a98d04348ec53f1c8ab6d1f62a6fc6a0a2e52768cd9355c1432c191f1cf212a693cd36704043d8977527ac00b2bd2d753f2a83ab5a28508e08d83d0308941388d06e2ead115a3a3d906c9336ca07e730658a374c5a1d0adee0572ceb1a8caf4b4667c628be9ad06129dd2abd12295b82af739fa349f605c0554137d7cbd0d389f75dc57318d11e3111834f3791f6393b67abca35fceefd449041521602050e304a358d6f0378bec9dd9c71de5ac597357a72091647be3cfe6bdd587deb1aa91aceb1cca30a2e6aea78c2321a93144524de632803984fdf393de29a5de72335d4da922675e6606f8ca0e66ade6ff4eb76b1841742540c310c288bbcbfccbd56c0716d953c47d6d3855711c811a23d2b1aa19ebedd9c3b1405bff2af6502d018801c0601a0a277068264e1c14bca0663b2b20c1c04d0d9da51f79dc878ac6289e7f9a271cc54286dbda32ecbd65a00465871ff56a0a35c2e321493419c1be990ec282e65c4f390a2b11b98e613f2e5440eaf1ab2c0fc3d71c7ded8a1ee8183982bd852da2beee755b462e76bddc679ff2786d80621a271ca1d4a3d0b99b7b3c3b3f0615d518511d763deb613d87fc780b14bfe61b7dafa726315ee7ec55b26991deb6df720989d7aa449da90e6fa2cfd3ee2dbc4a9484139d59fd97b503cd3a16b51cf5ff6ab04cc364ea6e4f91f6741978d6b350ab1e5c7a6ae092212cdd4d61f2fe5f92181c54ec42d22de2f797fc42d1fb429a6a1d50e5bcd058a4782349502af39a358edbd00b320f733d65dd8fa95274dd3fe6a7fc0ffd1a748eabd10ca5f13c2f029d584d158546900418b2549a62347b7047ae2f3a4eabc11008988d07d55168ef7ff0811b674beff978877a5616a83ac3ba1dcc4d806b3041cacf51cb0466ec7c9c37e6e8eae7be7602c2122182e9bd88259eaeba55e4aa5745e89cb1e2b338dd38f0fd1a631246e2de253e59443f26db0c350fd61327930c2be31e66fa2e737b21877233fc0557f2ba0a99b4583b887530564c47bc45391f80c265188faa21902dd2e480d087d4df52df3c64b63b99e100ff589c1eac50613ca605b7b400220c6ee4125843d3b2ce8d9b88030e78a1ae1bb53ede682e2ef83a3df02764c9d72828c78e48a439accf971f12099d738ede314e280ae1e27da3b5e3f501798d7bc4d7863047119a8883be8030ffde4b949588d5a5066fedced02b213e981aaef747e03ca0e0707c60d34ea94e49a8bc398678bcdb077defa9da44e36f8f814e6b5edc0e863c94b4f8ecacbc5b0260e712d1452c2040a465503daab08bc502dc33c06922a0e9427f10b4f2b53ead1326f72be186a734ff88b27a66a95f38e52927240ee1dc350b19a9b7f3492cfd2733d75fb99b1b69334c7a6efc51033574caa790bd5749b2732f99c7a7914889edc0c54512d1278605ad0120b788b4d5c541621c22d81372938abdbcf97a23163a58ce746065a721c5d82e3a8a50d60bce169f45f509ff661d5fb96214ba03b0311c34869c65d881c24f3683943ce268b01dd9649326a8e9d6568d5458c1a65197f88e1ff7321afcbe9ed09732045e4a304b133af72f6054324414c706088e7cd439c8784edf2efc19844320c20ae7564ea51706a7d94106af1ad3710a90a3779da93815f8f845d724920a64fca2378da008327cc3daa09931a50383d9c231c27ce63ea42733df1e933d9ab7e21ebe556f26a2d792170c27ccbcb4b897984e81a0c18c8788fff27d838c0825ef551745d400b570c82af8f72c9b51d4cd17e60a278afb1a37fc349116a6a0472f83269ce6f8b58c5e0270d19ca639cee2afe5ca1f4f4ee3dd7fd6a5894382132c269b3048fc2bdc8169544c54e2d0769d342eb38846d79105f7e0e8ec625581635be0c8255c75e248a125f945055272f0c24078ce0bc5ded7b68f31b7339088be6028ec01f5b08440c82d2317a51fc16daa7c05192006c9283c7ffeb33ea3d5b6907bd512a798d50793bbe59e19287b42da7ba209ca61b269c22c779c515545842771439c693d8611a33d086a4cb5050d547bc7bb6401dc8c29791375b2765ba89814b1d31514a140711bd7a9d62d05d7af7b4f5047c7076a39e4337c148dfc64f4deb7d4bf47a062b3c18e002be145662655ae37d70648d5e478922654372059aacc4043822d2799d1362366d3c6e926767bed331f7664acfc0c293b5160339c87a43f1b9ea8e2de333575ba0fa4f34f6131f4fb139832bff27321e5165a574f14161baff6732658af8e08c2e9f587389baff6f884ac4ee9d9629f4b79af9e68695c7040668337a2921f144d9250214c883346563ef425f174a90f7b85d302fb4a0199c195640164352112643e0e40cb079914f78868a176f58590cdd333a23d8df57cf309eea88ddfb6a34b9f38251e2ccab87e26b4e620a242a63fa5420d99410747278d8b06683d9d214cae6ae25c847d7995613fa3d02a64020c1c8d06b0a828d2e25eb38d237f69d8001dafed271f0853fcc10d579285c990cc307c4c3f73abc52e29666041954483aa9295ce2a29d15c2531c2de8969c84aa2355ac99aa34293b68c868626456184d2308557b29eafa4242b467f0c758525ff4bdcb2828c255f8dc60d06ed53dcc36196c89ed03a050a0802fc4ab8846f4fa60dea69ad1d58cd104568d1983ca807440dbb0588064256c83a209a1aecaccb187fc6b216fa7d4407ab7fa128f1969306c99dd596e7e3947d558ea29aece77ee10c5b47ffc7df12442b90907ddbc220bae01c6ea0efaf121a88fa4f278967a80e2b5352aa9709b501ebb19c418affa7c377040a0d324768254d2973ebb0155e1cb370e9ba5d603a44ecc146fb6bac8f0b12ee4ecd0786be92edd805f4b8f59ae93dd39b087db11e10019a9676c06af21fe3ed90f8b5a9c2ed0d7ee37461ed01c933563867cbf567e8904e0582f653a25fa6808cd7be9dbbf428cd98dc4d314486a0f43c2b5585a46707a9901ce64c99ea3f61232627c9d006681104a122036883ac3306d82c133ea08502e693032cb1224c9c4a12e34eec6673b600c686d559505e08122f0ffc6a1722198737b91eb00dce2b445c7f3266d30ce23b771e1aafb589382710a8fe02c5230a4c9de8a6f99cbaba5787b221a2f82d886371c1943d764151dbe66650947d9588c2f844dc2c952ef637bb2900320ed805029aa7352637639694214f06ebf68e65e0003d03086cc4fa61529f69135c14fa7d70659966ff192854c6e16f172efd901a8b6cac8ef6f0c0f9513ce7ca752838039b64ffface76f6e260a55eb125de515b09ce85aca81f864811ecd7b35e0adb4760a0b3b004b4b0f9154c10e54b96a230936638d0a0e21c3cb7d83c0f71f306c5ced8bda910106ebe1ad810afab515c264bb1bff48d50808307af187c9c3e20885429a55fdbfd70af34ff81935f5e1c441e593f1470aa1b6c5c344019b2958b5a54bb606c05c676a53201ac270255bf34883606a71e1a8f3400fab2400014a3cee416900a147cca51e49ca434d84300aeadea7935b3855459c47d9b44adc23ffcd69c506737949e52d198dbae1ca1ce1fc8518727d91a6cf154948e7b310c224165f6daf9a189590fe373a7444ee7e33315d004c67af131826624b1dec9553b0809142036e6265ab38dda816176cf1eb3ebd7d150e8e8c316a0bd0c9bb69309c1bd1258ada5beb492588b9b7b372b74e417e388529e76f63a84b6819699f61e09a03240fd28a65166f12f3ed3f1b14cbbb8bc34b9b569f0d2613c179fe9e3bf7ecf9ef7681700befc4a94f01cccf47138c8e50b2d84a81a2692a06c8dcf577c9a234d191019ab15edc432899c2b0599f0c700bddf00a9af9f2c6d9f718a702bcdff8190b33e8e7f1b482cb026035ed836b0fc6a1f4caea9fa82571fa1520f0bd52a88161056ab80e8d823190c48823118a0ff535c45ed5944a9523c514af415630d8aa498d1436e02584fb0ccf70002f7fc1b93890d700381f7036e7f7235a8442f8d0909e6575624f8c9c07efffca91c74810f6c2f8a574f855290520f5618a8475f573aca7de085228005a571d62b5aa40261ea58ed5d3bfbd6b725b900c987a97499270bd42cf1f702507acb5e9d64fb5e3a61cbfad9c3828513f421e7ce80749ef2d5919ef45ad5891b819ea8a91bbee387af77b864c7e2df015fcae0e1d95fcfa38371f365573a8deb4ea7e7ea679f807864ddc3173e662b3075959bf9375b57956b2b17e4420cebadc9ab33adee9ea7500b8aeed8064abf3537bdd874f627c88859a5d2e2ae03b444df97516626fdf0d28f07f61f24bcb4dcd544552d22b59c23a0c8ede90000bea71cc5306004ee5ced58814dadab013f5f9b4808c304ee0fbf150ea06832f774f2b4aa0b014f0c3b87eb264334d16e234b0f939d9ea1bc61fba894eb688d2dd60257a92ac2cc2814f10d44c721350e34ab3932bb3d996fb424c17a1466a7fb2a0c6ccb5628e2267032b94789a343f7c0b79b3b4e21253246020efbba44f3864cb231dc12566e2cddf0f46c8b7eb390b7a598124a73f0188f3a8b05554bb6f7ab724daa1a05cd232a4a32d1e5936292079ddb1f41beef596fa6904e45d92e5045d90f341398affc91a018f3a4f2c01a854644bf7a53a7e218e07be9e6188a3a74104896340ee48b6e83dea80de509ff1f3f0d239081db6b5b27a78d82f251a218ca38263ea50e09cc964a66741412a9a3ac5d3ba5c1b82cea00db51ba6e8bea42f72f928ccd219fcbe754eb4525243e80989b561c8c5a6b37de4d75a243c9a26a067865a11db2c10622c0c02897b2749c8a3ed06c8c852352a21bcd294561483a8b13060c5facd2a45ba289b6d4e976519c3a9ace14112add918ca300674adebb0f137cf798f260874c57156af2cc6b09e6485795b20a4e9cf11050e3a80f8d2188286a7610142a995376621f64c56638ffb8ff00e8e3f284eda103a0f80328aa51e1a80ddd932a387f1fa96b526c28ada9523f0841d0a9a1e2a2ab21ddd5d98481586c21017d1ad01f5526838ace94c3b65c33e5ad00f9502e89b8d465fa169a260bc8a176ea1a2994db2392d7d9ce40486c13b56020878cf5f535e7818a1b6960ac615bbb30e56b004514e88b50ebc2e6b62c33e96c9b887941b1446909618b3b60e49235741cc53e921b8e8641442b72caa3cf65695350b62ad0d3b92a18164e9114b977bf2474caeaacab294eb241a7e6be006f52995e681837900c3f979242058ebba0a42549e37cb876a2716966c18568416a6fe44e0bdc92c37db9e33e33ed6d614eaa28ce37df4217034ad3dd870b31651423fb1cbb907c17ce893e6dc2096d55a059add926a3d4f3562937e9cc5466b633716f40da36c69bf90957986df6178822807013411c243bb0deca991d287ec2f8af5fe716f4451190e9f8c3c72b4ae44f801644a80432bc8bf2afb80ee173c69584281003ccc9c1224ebe4a20c861f9d4fc472d27365b80c00df89ae49a45573fa00f566c69da692450b232d2d55d787a632ae28d858e7fd426903112750711fee1319e90b43947c817ed6bea4dd4f1af8abd6adadc42a77717169815995ba720fa6210ae10569d03e00f2f0b6a5ce8bb47a9a56ed94c5ac7bd0b4390190915e7007f0b343c1250c61e1cd31bd2282e493891cfcb8890d9e2147503ae29a7ab5596ef60f446abca628d93faadaad58c6be12ab02cdeacd8b9b5f43b02d5963c7d5f0461d4ba1455ea28a029d6020f4a17f82174013f846ee081d6051c90ba78fe60fc9e7b2c3e782074810f32e91e886a8bae9be8dc5e0329b9799e3c65104fb2190ebf791cbd5316230a79bbc1ffe6bdb706bdef47b749d37f19036f23736e9c7f2e650b0158c81682b21eacb64d0e359a8677fe30e5fc6bbf357d88c9b4cdf2c6a32702bcc1f860e21532ec60e68fe571847a13dedb40ddc8249847330da1e958728f3749b5f41b869efafb2ed90b7d27f5e219810c87ba600288c72b2a18316931ec9f1a1006554c36ea77b827957fd40e308bc9799640c491c03478ba5208e8070044b0022f96db92efc75c4513785258781998f1f250e447dc6b38aa8704d60c9c8ae99df4363a227dd3d9add1bcb2904ba1ad22240c80c6ce087a8f69a4450752cf2d276b49bb569c6a816f05c0581159f181d2566112a434c9907277fe3ebf8d381a6bd7d15d0cc54d75662c978b6fd026d59c98d81f17044d455a87c6c92688840e286c333ecdb4f26ec570b49f2ad4c4f6719602e52769498894b4c4a19eab0f5d704ec8e9a4438dd8316b564cb10fe4f22f350683fcdd4eb8f015564b03d3b3979d2ebcaf4f018bc879fb922d3f7c32194c584dd63ff1f996f0fa3073a447e76a893ecd50722791b2e87fdb9004b946207444c821183444f2e3d02c5635b0b3a6ce353e551e87feba52363bb51a130aa20624250aa1c3a103f0a9cd7e0b80a0a40234bc2f8578b474578dcf97ac21bafd30676c1b1db7efb5e654a251a0db5bd50f334a50dc1c2f2f890e96624590ede57cc87b0d2aefcb0900464c06e8562a98a02177383a56d07335bba0f4c4884e3201a0268944dd41859a25d319abd1d7a766c1a675968d91b3278c08dc815108ff7e439ad12ddb6101556b191180e22f45c9f80e59e54574bad84b638f773da4b7fdf832faac3752e32fecc34e05a073b75d12dd2b8a33edbd75435d516c76e4bf17e006463d87e71f51e16815c573517a6dfe183e830a8da07bfc9cbc9670fe84af1e2319bb4efabf20a8e5d98b8d82aa0412c119ea623b6157b35da66fc05d1213027c8083cb23d8e3497bcdfe7eb41bbf3e316413e5142fdf5fdd99e46295c716e50a70727629c67d141c30b0abdb59e61fe8d3a182e736c7c52f01a470aac4e85612674e06f0cec01dc7ae4614d7ad4eae9c6a928fa214a4f6a0cd49bb2c825cde7a943b126e5e80841823b22841400559d76e5169d35f0c6d3d7c04dee96b4c02372b4672ea429dc351e638d445e7274e308a750c3e4d8950260dc05b3aa575cc07820110ba45249f509a12a5103e207ea94bd8ec31076a2f9676ba7b59aa9a71524e09ca040598fd83a14ce04a9b75c2bc3ccc17fc990dd35a3e1c54d0c33bfea67a6210f63c4e2c0abd0a36135dfac6fc2612363be4cb6a8b933234776aef7ab0ee8f34c61e19867514722ec1e2bcfc8eda3743696877f064976ec9e8c897429714f91627d5a684881eb9a90e1b7c472e9fba037dd4924e6f3115bfbd5be3253c2e4c0f5e296d38bf134bc3f7c476010d205c913daa113d82245a74d158230a479e8b6c38d980bb68bf37bed8dbc3286bd183d33657fa53579efe01ab4d8da25b6ab3ae76c5404bb34ab4bc3f42a66c765907837c1fe4cd33d958b4561aecd346912f3c83c04a12fd4c83bf2da1995f2a77e941734e717647cefc1ac323c027cea9661cc6306b6dbf5402e4bac00d4ae08a64673d2bdc7cb510cbd624d8a5cc56f761988620005869d1f5f4456e85e73a5bd849192636cb352497b87d735407b0527fa36adebe6992f838c8455c7da8281553f7ef23692017a30dda4ec8c2b04b9c8bf99f71ae1e58ee2fe1800c2f0564ce071376f90727d853cb78e6b4582a553a8140dde70598ac0ae79f2c5b405cafabb9e3869b2e57b2c92ad6293e7643ffb8fa28d60b2bbe180fe785eecc2eda18ecf9f0bec06eb6312afca40174ad6a12adc97da2526cc97534134003f3462e8e81d3b333788f0bb8fb4987d5b468ea8861a79dc68752aeca259d0756f10aac603a78451c9585728126c85df4283efa60cd7d9954aacee2dfd024e7f18c6fde400afe1678e41bfd93e13faf2eda4206ec4de558ee96fae12e2f696a7664048d8b624c4e68b0836e267067a7829031bfe7fa98425de3ca3daee225763b71b2738c4ba4d98b5fd2c534074e882e13bac5988e13b147c85854b100ad04d0a46d0f2744b02a9b7562e84bed0019e84ab177e2c7c4b75961f8a857fa10aadd8241f782cab1bf943906abe118f56b87182a7548d01320fd05c23f027acef6bffd4545208693a8e4078622d950c9ae090807eba4cd27191424e5ca015482f2502479334ea0a1c8b4fe21410c0457c498fd77a4f2facc7264b3a768aa01a6ac6f7cffda092b8265c66535bf110d9e1fb994d800a045b61ecc1c77655d61a4a6bf5874e9f1093d99f6c68f7f6580015023daf1efe7b8368ed2c211d2aec46a8bd29a158b46d9f41d706a3800cf03eef2b835a6c381f6cf0edd35de35a985b7b699e277a63074c68a788d1c5b4d613360000c9874045ea38ba25609f21ad4df8d770e1955e0b2c91b7e186dad39ea20afe9f3da69cf788dbd32a8a93cf11a5055fc5202e4a1d46b2fd656c66924589c2ffb04d4d3423d118189d7c893a94128cc5d7ffa241332905f7090bf47429de9b51f549701c67ed4f26d7e75d23b7d72fe3fa876bacb49d66883bb5f33dd5eadf50e62aba1eec09174146e97f4a2d011b065be50b7b68b1a63134ce8c4abf8d2be0ab73867484e9b8740e54ce57390449bf65de7a4622d8a1ef622cb942ccca040a07ac7ccb617f63fcfe751a89fe207a6060c8675d960e7a2bcc632779a2c8b76cb4f6da1d982d6c9293c9f74e824a68a51a2255f2c55b999542f0a0fd5dc7784aea3fee2e666c32c53157335d82dcdde5f26bd303a28c04f6dfdcb79b3fa4a54b309fc50d14becd4905e24656ca67124c710700140b8eaac90a7af703ac40ef43b013acba71f858a377df44870e374760b3b7e302d3db6db532bde0c986cd08400376bfb6be5409168bfaa2137a56f47eaa7db08742739e1cb0dc8a795f455b5623b5f1555f7edcbbf18ec9294b6b582d6b601e9d856cd99b536cb445d3daae72fe388929701955c679208f64fb5e415fd9757ed4a2426e9d2e467929374b8ac12c16aa38792d07caa87ffd0357b1ff89e41fbdc0c963dcf19c5346a60ddd42d2e0cfa8d1d62e4314407a7913a7fdf63c38d3cbdd7a4a78b189926b883fc80d9a53c8b8b4f0aca75055f604664022e064765adfcdd01549892a33b927e7604e227b37b97ea3643da86f941f1804acbdcca0e493715a17dcb11fd945a94de7abdc83c0a57772a64a343e76f28382f730a10d976aaff6b2b419330819024623880dd098385e945f61ecf678be69497831830c80ef854eb1afaf8178b3703878e3cb4645e39d1ae1597811d6b569f396bc1c5b0468ea8deb497a740370494a522509fbd65b864a5e7247f2907810524e491c9d86b5105b045b4d7a5e0f30e06472bd3343f935a51088522ef996c491491a200ba33654a99fe1ae79f3dc82625335c6d2cf42abca3d940a3f62b7eeaf1ca3f2f70ca0f2e5930b04a4f6e3cdf5c7d861d087a0947891494b484f3882fd9378ab4bd6c2b693049b97822b03b6576863706384977c7e84c13976e7e17d7a9bd7cb749538853876a0b174925aedc73fe76f090effdaf8c04e6ae31bfb81776b505e5147ca188920cf99f8ee6bd3ffd28041a30fe8369017de4866c24c7d47e37957d727417812347fc271cd39d7b917a383fd36aa804ef9b5f3f51f47cb0af49f539ee6f9ab0a451ddd535260ad494d38fd2db2e6c4e6c3c5114509130603d62d096337211eb221040f1e9013f842c083e9ab7ba94baac661176e9487a7eec6680ec2389c96fc74c071b80d18f9248b0e1fbb14ee3f19ca167f1ea60f2103ff5a678206b72ef09c19a5156d806e4eed65b5df4cf138b00e0341a787078e0b9ae5c043aca64a41ec6ebad27744d775b01b8ec37afa4991aa91b44fe823f790c01afcbbcb9359cec255a36881b8e7fc9967e205047752ff482c70aa361ad86990449e52c17ec022960a72e6b70fccb2f4c87f4d7b4cee61a14fbbcfb03f762c5c6a269a4488fce0f6325edbe087c0b7388d5eea42bbd79dc3934630dfacbc2d11ff656eab51ee54b25437aed62bf04d10fe8b69970e376cb9cf81d6dd520513c3dc4cc51803d49e270c63d55a7ac98a677d0d8678289eee44dac6a830c28747aab2779a348e791590080f76ed96c30370ec1519b5c88f185dfca42ab49a041e2eba64d86c8552ac22c1590e7176d69de8a71fa11afbbb8d567a780c2a02236dffa5ee0468626b3fb8cacfbfe63236318aa0223b54e3c3fa845bfa795d7c085b5d3b6679ee20d565e65b8f52249bef12266129af20db80154e9d019112621e55a47e90d28992d98e93ebaaba5798aa04fbaad442ab5621df27600cfa49e9819cf1963c2eda43401eadcb35bf063b43f185e8b0c1a52c03857b39cb789f99b9bd4ee5ad8e46005bf252537ad87a3c8ba0292140a22cc7518386be92552151da3090acdbd32d2fe57491bebb3a92778ab6161fd7a5453f66245e90b5f8a68f5a4fa5ffb4da554e0530264d74965edc4a20f1f486523fe238352b782bbaf991c5400a3a757f3e8c72c731282500b692e7107d6a9905c8a60d2e9fdad884440c43694177e817264c2de2c230dd97c34eea56544861a4198406192bbeb8db5b4938e3bc41754e45978bfda667a5e9bbd2147583419d2e79c7febb66ac1e129e04cbcdaa17014e9e7fa7746a33b9b6926af96ee3205fa84c5ebcb6162df2cd4f210a4c67cbc08e589eb27e819107e818e47b68f93317ec6642cb10bc5dc8903dad69689098c58a70f1e8b0341bb3cdd9d3eea95f3c2a46aa05e084d2ca9f6a9ff816f7895f7343f30adba16a0c26404bbeb4ff82c5709927c2a7fe03a07b27d2bb0b7871af7c3849085ae94b248fa1274c0cc9c102f9bf0f79193d6c56cc626794f073945d7d827f08da8b67c01a83f208a2615522cce67b2e9bb2cc2b080754970157c6048475c16813394e235c60238fe35da43dbebea98750878dac7c421224d4c2c54453fa9673389d91dc3269c400b2b6801b4c0e6bf7e251cc90f519fe5ed5c5a637c291ad5174337ac955eaf7a8793dfc9c4b5c4b7451f79b9914933811c57aad12ca831c29771e810ec59f728b3c9d4345271035f9998a7716696f54490080f531acbb93bf46419e2867e35be239dd3bc1cc2b57a35a5a8c2f86f651a272b47441d1bd9b89ef576168e2d4c79271f87e161f2e7206acd89c111159bdc9b4d76541fa74022758b64693cc1e984251b57a93978e8a4b59a57fa80756fed2e76bd0850216bf5dc589dd36cb3c0c82727e57b158c3e72c3e3e6bf2062ac78832c3088ab471648d9cc41c6cbcabc0c8ba2a3420c62da8e1cb0477fa1505fb979cbbdefe755f2f49501077e5f3891a07ecb128375a16117281ed0ccf08e50e6527f04377e28c4181df7bbf3103df01393c854932fa085f2d12dee607e4002384f66f1419af9d02a3b3a27a96e6486733e5128c2a14342908b73d40b8ad6d1ad280107871c4bf1e6080f7c23ce74ac830efc6b76b29680496fe1ade042de7f4cce38335c9267ce2a24f67929460a6788a2c201eee3e036a3d74dbb99cf351541cb21c6efd08563daa569e003da4b8729fcaf317107494578e52e25ec4c870f6f5e749e2fa91cefc7787db28e0d72d3e8f91d58d66b37f4ff6ea9dbb33210c20a276097844801ec32bbd478754448640a0ae43592f6749609440e7280840aea8174936682b82f249995f50ded109323aca115404b69de306c01e84dcfb02fe005b46ccb0b7469c96b5043f142cc4cb5dafb023ad62521816fd0b13e3c700615923934282d8e1e8846dfa898d8b017498c98742e6644c3b8db3c4f1e9a026ff849379953ee8681027641e73bbe6af04afbdd09b2fb2580bb81349398218c4c6b966072c1217c002afc808a4842a2232ff725abc569b46c82700c084a05261211aef7e4f00d1fb7178aa92f790bd77502d2d1503aa8d7ada0e6262b972a6f6557ec1239979961bd97a96f08d3883f80ba377040b2c64c459404d3557efc479fab8f66a97b16e50b8c42c17466d4fb91c0946a836973ff636ebe7862d2eb6ec046137dd9b4784cd1f7ce8ac460f35d53ce1eacb1f0a88aae5964935b7e5f4daa39e76daa971dda62e5ccf1c59eaf8e074db4b43b34997f6e46db9255ac7e38308ac0ad0d35eb1ccd01d4b5eb4e91602a7a0176acd2fc6ea6fe239e0a1e6d5d38b57afb8489de1e87eff2676659ecd2cba2c8daa7fd8e41040bb17815487d0c60ba65408ecf9a404800f5b668a5806aec17b58cbb6ae81150b4c19af8ccebd9f25b2ad4487c8cf31950398096dd67304d618964feaf40f5f770d898348f489abd218c72f5c857067adac08ae4a4a4c006249006fc0f7bbeb7beb8e8d13f01ba11f9594f8f7215c77cf168938cc6baee23e18dc7f73a3dd3e01fa0505b6cebc4a2fad7b55b4dd16a667012327c33ccccfdf2080712bb61586ba77d05c99447d658e47bb6ad2e1867251956fea69efc0016033f006941dd0e6e8063fb08ee04ce0c39e5748004c45ddb604544183cf12a352009a1b38ac7b8a9e6b246ce8fc994cb6f42675a518585d77ed4edee615171021280926f75e018273606572a0b6005f914006ffa973b6b43d4b034d34f52ca116ca8d5b89bc159b138b460f2aeb2f1fe276f86fddd8f27c1ef4562a9dd2b050fc30b460aa9316bddba14651484291996a6c6954347abe28d7a2513912bceae5ce264eb959047ca6cb7eb6128509023b6ee4a223bcaef8d0d5163ed580586bf3cced90412cd64cc8f7ee2c7b59685e7802c24a844a34bd5c9b0f7efd6b8b882856bca23a9127c290b9cac4f6b594e2a02cf983024a89eb8ca42a1af47204e902ee4ff1ea89010a4513376f45b43a964c48b68417040165c0c0a922b600f3b3b435aa5b68480ec6a9228acf3f1a3f72a436283f93d93a4f4773b7edd1e4146035b577b236f291c402ea05c74f580f31f79584773b6b17b506448ea829c8d4d03e4604447bc4ba764ca0ed9aacecb2c3698f146c6ccfbba4ac4d536c6e638e48c278a9c8ee4db7da45ddb2dc43572c7e5c16bdcb02e00dc2c36c1c1d7b91995f26d931b3e70efc074480abe1247033c2c0d97b29095827321a703b08996aa22be8aad44196c8a88f0eedaa3be0235cfb845f2e66b1f36d03817944ad95930d4947051f404b4e4f71588b164304c4125a8158c4d783d58cd722e106a78c1258039fb891c34fd5d2a5a6d14ea573ea74ae1fcebd97578e46a59e85efb9e74a705f96102f159343b88a193ee984e39452026fe862591274379bcd0cf6308ee11021239248b7119dac2c912dc3dca0394439889a4e20b922358919e9e1102aefae251bace643e70073851c0970f34f5b0a2033166ef8bd2f8e012d1333951d1cb95c652c8589a3952d5204ada2390b316a1490788d4ac4e1df8121668ede7350edc52f094805b143373fd058c5597605d92af55b0ce9962a1d2e88f081dcfe868b2b848f5ee44bd68deabc4717a3b7d458582e607372689305781726556e6f4f4358bbe9e499f76a8f729c5c13046e2c00827d95a6ee4051da7e41722c4358dfdc6ef28d72acc6b1817a2fff2264dcdccae3f0228104602988ce7f45a0c0239707db0fbb52e49c3b8e98304a487c3ea90f522400f7a9220b4b02ab68292710cbe1a62373b2386fd23b1d4223184badf0ff1ccdcd05e17f4a3495a1334897d2d14ed6cc35774196051d2379b6139800e9c7eaa8f03a3aa2551aa65a36fe2e83d6ff8f71514d0aeb5bbae60c1f12e3da76c18258795526accdeb834fb4d3fcc2325bc4b305296ed802be6746618e6fe27e1d344d4043d52414829db08019faf0d951d3ca6d0fb0db2448de7ea52879901831614dbfce774a03e12e27f9cd5b166e86179acd3a2fb32eee4a5aebe680ec0801fd54475e7c17178ac618dc01413548369d2a3b2f048427b5f6f86dba8674f2c072b0574c7e3c8ccac47c6ddef66fef7b4eb2621feeb68ca78d72a92a9c88680da2e3a4312ae6207112c3f43b57617089f1d23b0307b1055fe98fd4e25446dc87404bd1a734dfeaf7b66ab6e5fb42c3442d2b358bfa04fbb1ab7bd5cac80ccc49d3a39de33829dcbbd19e489937f6ca421be30fa3e77cdaceba666e6c499545cd09a27624fa8630e05d57f24fb103315238f14d798c8d563b5a41843b1ce383d80fc5fdb5fcf6c0228dacad1c2808bb5ce7e1651a7dd77b684e221d6e2faa554bb981b3f3512376f2c0c10663972ed7916568e39952123b4a051936967e19ac05c715b00068bc1c631aa7ebd5ee44190ef4b14e4d7894a2997f7a3058973d31e4b6b14afb3f6a7facb11ce4c548c61c485984d3c1a73882c400cc31497f382590d41a9b074b314f974111b3584c03a99792697067d98e6547d268457971ddc451087d39918567f0b282d39d63f9882b2c212ea439a4a5e90201bd327a888eb383d5ec91dfcf1d7d95cfbde59571f4da0758e688909b616cc2cb0291aeb4a1e44a60564db53758b9a2f0ee143fbefd047a024648fc8c916d78b50e86dac2912e59976058b1aff665374201b123d41338dfd9688ae4a0b7fe4411ea193219848127e4aa78b10548db0a2174526f223759741ece4a53c88a4297d701177ece909e44d770d49cd965579177426476b12ab93204cb17d1d48466fe88968e9a49ca4c3dadd273170f670ca0a3a5e360c453428e18936966214ad5e43f00e75e493a8d0629cc594c073f3fdfe64a1cf1a8f6db844575101bd96b484847ed63b158b22a02635c642beeacbd9b047745e202fa50ca24ce6dac8e212c444691110d7d1314223d82fde8c48e057178d0ac865984883518888dd2599f8450b7e9280b41357910fe397c9985d5a5165362fe03c84826dcffecfcc193eafff38d7ed2dec00c18392566034cb6b1353e5570bca635b620d4c59a2db27c427a0892b1142c4d057df7a06ef540e0993fc08710cc9a7f27066333218da68e63313619810743c1525bd8c1ae2134c86e08e840e66746e1c2c4564b1e2726863133a13b88e158fb5482059edec8c684f48c5412a8e11b48f3f526b9b42ee5124892e44f24319efd28d4afa7d4219345f115d18a734789b0d35848c5122c5f81f37eca75cc4f331201170d3631dd098a083d6debd566a1502a5be9c03abcf0feca328a9cb60ee91da251fa11cf3803679b7fd4e6e809d6d30264ae5a28974fe0a966d15d17827485e9f0931f90a617c1b30f66a02dda7474cf76b5637a631529f7cad542f95b4a77c3541f48efb3eb32ed735c69d65844521c4f04b9063ddaf4ba758b7597a6e83f315f14b36878e0b7bcc642145e556336621dbcf1a906ecfef3278bbdd33986362d5e18774eb1ca1c2a55058759ae7d8f6a722fa1d4ac6ffde6a4fa087410a4b4f8d87b4524bf6e317220c2d86f721ba1c9138e4fc5617439ba399944cca104cc9faba391c30dde2362ba23d200f024da2688ac917c604c7faaeded02259b290ab88ea0b5722b143383217d23c1c331a0c67d7c518642761a2d1e16bddc809ea70e6c248a36299146802b70cab72ae72a29b5a94114aa74c039d7d2bf84fe5732e7777bdce6f35db43f5ef3ff064ef7206a56e0d6be38dfbe19b82eba68bfd23237badd480f54d947b17073977f88c4d22c396684eab919a5fd2605d9ab9993cf93dbe47f075a9a579f9155ac96466387c8279b497dc7cd559eeee6c573c3c36c0c92df16274f1d729ec118c18e9fc1248d869250ee8d36b1a76c0234f2b4839c44bbf5cf40906162177f0c3b4517aa7b939bbb9589a1b5c36c142b52e33a19b2a6e000f5777c77e97b83429d10b7c0d6a4118d244801580aa50fa2496aad82c955006164d56af300d0a9ef43e4500718fdeaa80ab85e39fc21eb63883bb936bde26d2c784c59426cd0f236dddb7b25f6401ad8171e006b4674632cc28fa43d17d10397df3ffa68a2342530f5934d399f252214eacaa142508a8110b16e3419c8dd3dc459d2bcba5c186285087e22dccf25f06dc3af35a3742c863d3a64f018b2628d0ce98d394e9f0fbcc039f1cf09abc19000c54b1e3603bbe5718d45604cc8431ec515552dc8d815fb1fb1d1e0610fd9fd66b8add59b2e5969f9b10412581ce8899f76c6ed6af80b0e6f273adc0920185306a4ed9bc5f2041b00689803aef8de446a73d098af6c1613ee920f9e56a01a11549adb5369652d79d5735765b00d1db855aabfff21373231f667fc92b11ef0010a47622a1fa655ec5d3c8ca97de4e1486531299e93193f52b25413fd413322cfb711580640b6408e89f2894a081b0e64627fb213b8fa252baecc88c55f166c58e67c07abcff9789f49b36c3c34a3dd7162a5928c8af8bc69f9a5ee55582a208bb4115dce23221b285366735120d066d94d5b6b4ad06a98d2442e6033780f0991684b3f999aaa02868082155516c256f2e641966af549bd46e7401f2c27518a6a2a3a94a2ba9e4300c19eb74a0a72312664d2d52055d0b57f003d2e730ec0b583792f405b0f19c2506c3f182531c86dd9374868a884f60c68bbb454a0ec36ea01bdde0954127ec20499fc330687ccfeae5a2e08e0a50c5da076e64fbd86118a8b4bfcb93a8f179e4d80ec3e04efab87ca1b56d5e92c4144986a35b4a9232be554b835b7e2aa8f3593af37f6696c276ddd6ec81a32ae71311e1e40d3b83b4d0e826eabc9046deb4049112f8faef26c01e47e075cc1243681548819fb1a9c4fb5c9f1e8f7437ac460f3a8b230eb8757a8e4a08d93916f3d5c70185e751e7a87789b9fba1704229fd1115da1c356853ad3167d22c7537c15c3e5fb473f586eba73e6f496d186d13177de7a32740859b5ccc12318ac244c5baf1f786ca30e6aec051669e64c601f9578b5eb61ce503ee1764b8bff5ade7a319390405e38cf8941150a3485207abd9f0714fab60ceaa4183ad037b98bf909822d90ac805aabf8d768643582b208ce201888d1bb61398d9b36d9411d5d37103b435c82359bb977334814a76244fe1c0cefc132d48e9cecf11cc0044416cb8f748f6c5a2968d2a3f7e854e683f3dff9d7f3043ab1e47aff091308b6b241c5bac1fa3e3aadab1dd951e38bcbed926a1695fef854f09e5f1d0082dfaef09f7e0198eada01ae185c1e29f40c823898edc777de0911a154bb01f84e97fa69d7783c54f9419cafe02fd4ff69f23d2fd499a93abf3af3d651e3a185f915a83fd42d2555ea3b30b8a9770642753d940bd35f3d85316aba63fa0313ac53f8c105d3647c4ecd55371dc8322e611a01a2eba17e07ac7d5d1da60e932f2151458ad5e285c564929171ff71d5343da584644cb17b6f45aa421bcc0f8d440c1faef0059aa0ad0b2fae3dcb1a48884114459a8092d920a1936093321af0c94559cd2fcccd33ce6aac49781c98ad88f157f24b41d7c86abb5d9689c7adb4febab1d6a7351cabff1f22e0d3f05e022cb4a7ddf76f0560b7af7aceaddae8f636a5baadf2a2bf26b7141a69b3a6a8c83c2e0dc6067f0538a9e3854a6e140a29b0d8ccbc203451b491d8d3439f18beb51d0d4f5ace8aa4905eaef8f5a6c7f0d7f7571f26b84e13315665b1e46f990c4479498ff6d9b74f233e9854c747eeffc8c8ee0fb7c93cc7ac8a3d16754b69f7ac213e71ee79af2e18dcee406edd36484954f6523777e86ef0ab4f0383a49b290f97f789eab61f534efeabfd5c92643fe938ef8f3ead852116565f4b23d63d52b683779f9fffbb9432662f696440d5c930820b26f20dc9bef784718506ef919f79f2f73d93080423ae255c68ba2f8d2946b2a62e89c5d0bb700508c65a0ce81546aa945ef868281fa868887b26af1e603a4642a07890ce642783e148a2f7f4a679414e4aaea2e57b366c0f6455f31c8fe4d47ac511c2d8cbf8c489b8da041ce9ad7ef304d56ffc67cb557032c636fe64243b323f56639eaf6ba0a5ddb5c4513a2c35a5dfbeda1c1afcccb603e11da693cae65c0754068f91a2ab6973176376825a0e24196428e0afc15fdd83aa242087ea1ba77861c8b68e7c165ab54d88352a1416b1fd7e33a03819d30441827d511b6c5fed25b377e94a687dd484728e43f8a48b8f398c7252d8cead971f2882443206473f6244c4753e8fa1277c7964a432e19fc76fc68372e1ed34006a4081bf7abaaf668022ebb01ef5c9585972471528b46f23c842513a475ad2e9a70277b4da0bbc51efc925317e64fdcc804e94ca6187414abcbdb6b8e6eb580f0a832f6c4647f07c902535f8e7fa4c32aa494fca43292a6df8cad4d434b743b6658a389b62183ba5af527eff7142cb2d61320fac35c8b387a7394369c2a9ab43c04a833a5cf4ba68ca2785dcbeaf2dafa3fc9d668f9f85d4ee0948b300955b9f50ea3d750e5088b717c463a2c3953a24fae90247567ac76dfdef5d253b7d9074b876d8b8c52a57fd753854b07982d5814e479197fa35e765a87a5419a0c8cffa9b5c313c64a66d390a6303b4ba755d85eb49d93d03b2645bac6cdc5a3ef09779141ad94f8b0afbb36e2ce99aec13e71bfa1dba7c474868ceff6e5b0f6278ec2c6ac28582e118e58658277a5c312674afac40a41a4eeecd24da34c6439869c6cc12a69e4a39478f2352f7457b152ce5d01838ac2adfcd2a3fc7dfc3efa18723ae42d8dcb048a94c4f44c29496102fc38d2db8c418bdaa50044f8955ab6e989a55642af70c85c837be4e6ea384aaebbd1dac11f54ceace95247a8ab8bb2240cd6cce176a76a02a49dcf977a61ae9882f206e35c7cd9ee130ebe9d29e70800e9719fd9822c272e0a59a4c26a1dd6adbf197fa056da15e67691b8d136b87527a28dab7452c68147314fe64fc9f895bae89a0b17c2a28ce1f122810cb8e180841a6338ed1be6e0cd0e68a81dc32b1f4106dc00ef1840de0e2f9064d3e0a7ae8e9e89ede64a40f21a26f138dd5dbeefcf5fdc237588816be4a792b15099233d40fa4d30cd8e14e767c8f3ab81148a8e9dcc0f182c21de4517ddc7013ac654c6d9a17a79a2e1078af61e9550a7419e2556b505c53ec8ae2ca65234994b20a231c6721eaac377dd2cd4ea5e0ab0cdaead0aa2c3fc8c3c4ce27bcc1381bd789af39f4c28a1247aa0e71399f5692df37ce88bb713b1b7469ed97ac0f0ce3458c54415be5421e4a7c3c547efd5c9a67c8720a8a1809b5577c440e6529f5d822ce77e74a3384d82449d27baf06ae10b2b58c6f42262289e9da809a315e2f6bbdacd8068efebc8a840ea18ebab63512d10286b789243e2a1d11d6bc9e634914d044d99d7cfbfb6877b3752b2759125e5187b14f1caee3409bb6257edb9192359d4aa7e6e2468c09b17a8aaad8a8b2e4e74ee34a424b2555574784a63cf70ea926215ad86633a775a3a3df9b4f699943301d0156a572e46c43353608981961e6985a8a877566fd36a13d90f424eb742198df0c8cc0700fcadf39d9304d0d63dbf977512f29bcc9841814d8a4673f64045678ca27a5483dc5a5aa8d5bc9560927d83644c0bf3093dc1d31fc4a0402de989e4feb302242a1a4a6398669901c9b8be64c60c1a2c6154c6db0211254338e1a11a6c6fe8a256f7a500d7ec1b24a37acceffa014f9621830a2d56a738dfe98613e4a48778d298b567c256e17537d820671003850df0eb980d66700225d370df822c67dde856e067f5158a4920662049856d3c45693f0b899990b5e8aa176cd059d2486104f817dcc61998460869dc0ec1969387c677ac4a36a3513e3534675e3ddfb61ddcba13d9c6559e14e3c8a38827fb9364fc0a5d75cdcd88615190f439912003de540151ad7c692b909eda97fe406705926f6211a2702721a5960f6c42852154e614a4229248166458a2f067a4d5934b6b7f493b25016578ae42de0216da4888cd35f27389b5a9dc935a40fa2d1a66458ab167a479d589c1d87e59b2aa2bb4f3905b70f095594213896dc655176eb79a2a2c1e90862936d9a61bd421daceca1b2c32f5de77ba5a4d0365e7e3cb69b05439ae9e3aebd203352ffa8f562ffca880fabc2d20430acefc4e40c1af8b9641d038a186232ae5e3586c12b6c22198019267f00d4b1b54657c50642c0b27ef056251608aa3b09c3d50d19847398fd5e1abce2c6a55bf1a5eee96c4329ca0813a0174b1f1121a6fd8c69a7552671c5a2b329d01251937f695a06d9e49f48ff92f064ee34f6c281f9b182cc894c8345cf610f6a945abf3251cfc78e5dc9cb9caff9c5a28b1c05da07706646599c822b8ee093af82c69a23c41fc1bbe61064c400b34ae4bd065b8199ad59ca47ec4e22904114a94700fc7dd436be2f0754b3107cafee7cbd650a972d09765a05b11c0acf0040e884be05b0ba993529854121a675878f6b50d2edd59c1d655929463dc23982bbb63227625bb68afc547bd983ab3097d5a81fc557c6915e0fc9c143148befa4a1fa055a5ce5cba385179e709d539452ea376331c752b23be1bea1952e781ccb632eabd57d521769628eb9422df2c92b5eec501ecccbc639f686faec056fc88ef8c116366c7a19dc3d3dad04df931fc758bdc05019031abca0adff4eae6ef5238da4560bf3ebac661383da2b375fa8a2d3269c713450fd4fb2c66cd903123d107d0187c020e2bad25af16e20d14a6f6d75c93bd91deaec3489a8c8ecee7681e8179548b0e1268d3f68e7001f676fa3f33123f70208f9176540abd2d35167741866adb5e95ca57d6419e54eb79aeb1d2d450e75aa38d43ea054fc54e482eb5891db309c0b46c5ad290332258b98835ddc5f0a020c66d64af74cd3a68c2ba70e359eb1c187c1689d0e7abf3b16382f69f3bf3ba2500a8d2f9d0c2547ce80df6b093d2163883fd90e35fa9c29213253eb18824527716d6624ad6aba76a733f428fdab61649f51f0e7992999948323def1229918da65c8d5746dd011673f7bfe1e395aee39d86db9a12f9c99539fe2b2d0c3910f223d64822259f466ace828adb95d5db2da9ad2f301935773a4af11fdc3935a0b3768cba13ec3a653594622c195bd57d935270f83057e9c6c38a674d815108a4f0c51a5245be19b54b75444033e25388d3ad53662b3cb228b99c78760a9de9d0aee01b9463d371b950543a9c5dcc447ab7ac3d51718677a58425674278c4129224feecd69a72464099d131d0a916aa9bc2aa51402193f533fe87a5646c40b21a80f85b992aa5b58871af191f519065d3377811dc9fb0f6cd20c7e29a7948c1dc14f6496f10f52d4e33f9a6d3df6935b812440cdc31042e5d048d0e56106058451de8651b1da6c4431445a16341277f6efe3940e25f0a08b228998b42425cd85e139a484925b239f44bd2e46e4a7031df068854599de6e9918d52e7b2fdfff944c0a26d41a3666059a1f046d2f6de7b6f2953590f4f0fa70d50c4282218f5e64452b1989858462515ab896885e844bc4274225a215e414d9f7845134fb69831a94aa5279e932d2480a24eaef01ee065e13dd982d5841545c97b223e11b3f09c78567859b09a94542c262c2327ac26245115442955056d9258a2a529540a0a0585efbd125ff8b17ccfd279a7500cc11249e5f227d2b3909e8585f42c2e2921d3fb8b4422b9b874a416d29b4e1fe4e2d2f22d2e2cefe2d2123ef87dc7427ad3079d4ea4ea625d89aaa010fcbada52c32c78f0c2e1e5536000e50583272f5ac5cba7bc208a5757e5e5754ffa507fa2ef42dfe5e442df2544a58482c0174fa75348494fc3dff5e5028a5f0af25ea42234e60a4127558d774905a15e4b20a1c4ebf431574e8f72791f3a17fa29a196ef5e2e2fef724a0579af13fd1a2e5f43e54377a24bba17ea7da842a76f7997f7a1d617aa460d5ac3c68d7f5105d508512e3752356abcfc0b4161d08728175afaf05b529e8b3f985e255510f82455107d8930d417bb2a2e3504820bd070419497cdcba7b8c0a8e5bbaeeb545e3d05d197d8bd83424b9078f992eee5e12b88aabc5f0289fa315762d0f01a844314422977558db9128306d5a1f3dedf5d70860b4e203e65115337eaca5f6cc9000a143f683f5885aa2a8892ea5795d7629edef42c26d3b7fc4b8ba9e54d2815a9c5c4720a554230504a9e6885c973048556e8192f4a55a8979b5427f164746a39a55a54412c54e5d515045021952ea67b514451e958fce5009410e9bf575048a5e549ef430dc5130faa846598516f5ac4ef5e3ca962d0a82ca0487ff05e24aa0a4f5057dd7ba9504a484628253c41bdf9c8a8372165f942324e462c9fcaeb0a6c79002a7c0fa5380045cde8ce109fd0a1516f3cfa0a025f07e55356e0a4bb526f82422a21957ae353a6d0a033a3def894159cd1a11173053a03c6a041673ecfc8f75ad251d5279e54a4a76f2aa9c24f0c1fa4625d7566d0d07482015c99d20514efc86de0b585012d0c6861c00e14e9e5f5262886d0f3c0cf13c58e44aad42b752a77d1528b47c32eba2b3ede5702297cdff77d1f151768c21048d082134c61c5023a1f025edff7855dd7c53a1cf0fbbecfa7a3d2f2f2292688c2cab70227983a0a8a2530e3a889134c60099c80578c314504c7888114e1cba78c71868f142bbc0ff409820a50e7755dd781df165f8c4aad0ab992127a474b78b18002484003503ed005110e00c50052700076312ab52a6401be2a9a08412956c00238a9c2f791be2a556224cb2b68d542060c4c1773e3465d553175f46ba5a159ad72e43802d375289428d61b1e4ba7f2c01c31a8fceb0b71d5122fd28b2495a80a697d7f21f5691549de7fbf84c9e4b476ee02c31096fade9358784a2c5d7def3d954a14c2c2e3a5f13275ee995cfc15b204a1b5d4791f0d9d446aa95f496798beefac886698e1f27d20e98580f53b9427869406d117187e1f7eaa2aee32e0c30044fdee81c4f7beaa9c10bdfa9f4a0b2f55539d10f0c30f3b960ffcf0c31628ea97eabacefbbccffb3c9deefbbeaf03411004bf541886611876a9effbbeef6b8182c47244d4e9de54d2a2537917f37d2a21e057598eb84ef75f8aa6f1aa29d7719d25a8c7c2a4aee8535f3910742788baec789f10f00ab4044694d25abb2ab452ea4d198307e2183118c30925702284baa3510229a0c0001538791ff87d52aef0aca0948221942dbaaeeb42910c2952beeffb4452151c8461482a49b922c50a894422954a6338094d472614a5b4d67ac68b7ed799e143453150158beffb401014bd53e82a510c54104a14c5936704f3a258a044315041620925b2780b13284ff52da78a05ea868b0bcb8e5347a15e5e5e7aa06ab0ecd460d9f1cff33caf868d17940d1b366cd870a1c55d86beaa7e48c55fc0f0a640c30c32c400c30b2ec0b4c0028e1b366abc841dc80118647c60dc00047114010c344010043d1034c1f1640a08ba80a92b9a02010e40500608a21086132f614451230c0968208c12d8b061c3060e1c60802186b1021c3870e06081051038f178d042184c80213571a1858a175e80000c2f5fc440860c2e0061862921a0020d380ef02e5aa4bc50d9980280134d8991e34453359c686a8c2729558b8b028eae7c4dc01553c0d842a5ea72e0d2c27232954862156faa1d083e65314299a0381427fc2fc584147e4f4a35c9d1f1c230844154f9789fc445e713c550a5c5f7a53c9559963cea45abe789c00a58bf7082e8538300aa2215b5fe0d980e67890e546182a30c44e00029a042a75201b2e0e5050712644009557c0102230841a77a475d57465d55e970d0c5d44a2bad95d64a6ba5b5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6ba595d64a6ba5b5d25a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb4d25a69adb4565a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6ba595d64a6ba5b5d25a6badb5d65a6badb5d65a6badb5d65a6badb5d64a2bad95d64a6ba5b5d65a6badb5d65a6badb5d65a6ba595d64a6ba5b5d25a6badb5d65a6badb4d25a69adb4565a6ba595d64a6ba5b5d25a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d65a6badb5d64a3fc8f4bc239917984c3d50b57a807aed4ed503a84f0477c2eec3ae7a401445d1d4529fbebf3c5b77e555554274098f561e7c9e6734a50b346e7471461755bc70526bad5e64e105033ccff3ba90224601411014495d3cf1420aa9442a7971c58b27c078f18292a954ea820acc1747a693e9f44516748a1765e4f842012693c9743a7d21e58b282d6298589c7042899ed1abb3f291fec55310ccebf59f8a0a9587920aff94229d5e5a388b0f015c422d48a697d8e174544c21142aa4d77738b5fbd20bca2bc833eaac88aace8c108a68d202fc52caab22bec22e05aa8e50414ee2e96532f296f03cf00c93e708ba61f432a54aa8ae13bbf757bd29557550472ad411a8421d79a8a39391918882d1f9aa8ec9d4a53ca30e47147f8b577dd1a8538146465f754a2a171c70810a421da18eea0de92b4925aac254f65e41a8a320174f75126f88f513c28d90e491625e1896c2522886611886a4cf0b43d21786dee785e0e7795ef879e1f7799e177ae1e7856129f4bcf0ebc2b0147a5ef8d5300c23f4422f2c852552034017ba88f2821a9e17a3f1bab00bbbb00bcd78e97caa0441052808afab127a5e18650ae2573f21846158ba7551aa84ef91c42e9808430a1659d9e2d1176278eb428acf4a170768d141142944108c920093e7799e17e509c98bc205491ce3e8036b105480beeffbbe087dc28f7a54c84f0cc3effba29c007cf99428649428f0011780dde7f3811988950a49fcc00e3efa5f10548048a208450c3f60a57b41c309554005885274a604784fa270f182a92bcff33c101ce3080441300cc52827083f2a3ee0820fccc06ba5555edf0e3e60c5ab4aa0ee355e402ba52f66d4aed628428852c58b3285ceebba2851ba387a75c1441752785ff8c428d605a9ebbaee280a51b24042094250c601743a6f8a57d7051aafae8b03bcbacff3bcae49d70da00a3be042ca117c108510e8749e14afae8b42c6abeb3acf09a90b575e15cff34aa1170c287d37afc8ca2e855e016c80e27d514e5fcc4aad0a098223f8bc9b17525a4050dca0d8848b0b6e5ebce014763151650504412f0a2f9e8082a396ea5325082a40417c32e0a204a0077e9ff785024c21088220088220b87a81a0f7799ff71940000d78820b09c480054718820e142fd00b1dbcc00f38e105821ef88921f84514ef26aaaa5801411ce0e76d2bb73de50b1c7c4145ec60c2308952fc0a146ac6938a83a0cec9113177c400904842095f8252ef090f88f53b18cff35ef5bffad9c0c0e45e616a77f22b4c9ea3bbc9c1fdcc7e19fd39e48f59f2353a6e1f24be743ce962eae30f125faef383502f970f00d4f039de3b9c1bde8695f9446c1f8021ef4008fd4fea290d32c0f095be8004f99d179ec2b070e369950e47c8d320f1d5f3de537e10ea55fb20f185e41d09edc9d90751013cb5f1d485e5bfc33995c40e6788a744bc11ef1d8efdd8572c505414512818987732dc6f8aeaaafe007c55efbb5117535f1c520589289c2a0805b3554130af5541bfcaaaa055fd25aa9ceea6a255f093534a7dd1a60a124d29d58990aa3e0952d5b256513455104a9ca9429c1e3634cfc2a13ea132810a1550e7a6b4e8e16b1d4ead52cde862ea0318b0baa18607c011adf2e9dc94163e7cacc3e98cba2dba982c7cd56141af38591d3d181d948e0abd42af783a37a5054f47a59bd2b520f51566860f7a271d4e67a58bb9e2e4d5e9dc9416477ec8adc311f2c2d747b5d031a17bc2932755e7a6b410e26ba8afefd3e1d47880c70028368260a040a13a37a5c5101feb703ca32ec6f395afc8e870e87b4e56302854ad64dc9416b21fd2e150275d4c51bda1061880dfd0283c880ee7f4b53ea9450bef6f8ab4e32b8faf5fad7438385fbf5ee9707a7cfdcea8c3d1e177f8fa9d930e8787afdf5dd1e1f4f0f5bb271d8e0f5b74383a40be7e07468713e4eb77523a1c21cff3f587af45be1af9fa9d191d8ecfd7efac743847be7e77a5c301fafa9e518793e4eb7b471d8e92afef39f1aee87084f8fa2ea260a8113da24ee815a42a08664cc95236e55d4c4c15e43878512354414ee5458950053919025005f915b782440594f22ee64705842a8842e95111a101500d5109a9b2a30aaa60fc500555282f950f55caa5ca51057557dca878ec50057546352a1a5550f7444615d46df1a2cf4ac5a8823a305ef45737a86a48552baf2e46a54a753134a882ea91773132a86250bde042cabb18185510250347ca86918b2a883aa157ac6872a8b724f612f29ebcea77a9aa72002c61a3a395d20a84ea080d93d32c504e6a57753c12d8a0891980918515a650f19ef02850c597937ae353b238c2eba63ba3a5a5e56505be041840f94115624003285cc100a91e14cc144fb4d429ae204d818518265005e0e7022f07a72e5c054105c8478a219ca8f848c104d127082a403e524c21a442c507680a23b189c92406a802179c723004299820c514c02198a64cf184184698e28abaf2720a01a244c02485c505285fc1d01c3031886198e8cbbd294d54a1ef39825e07d47b2f5255972a4dfe29278cba1b30cf727485295c80024a204204a6f0041d175f4e75e5752c3b9e1427c028804855529cd8e2e5a9603a2adc247ed0f7f4fbbe0a7e9f2a07e57daf9a86bb57bd77b0f3bca7283089b47a8a0a3ca094761e102827830a68a8a8a084cfa3a8c2033c0a98606230759de73221f8795da555803286c9c5538da1bf84151c88410cbed8c1135a00011a36409a810c61a012f002bba8c1110f0e08430320d80110cc40814e6d62819602bc9071c5095f5c11838934a828830c09e804899e13af20949331ba201806a45601bba4cd605ab6636b66e72bc37946e7ab91ccd4b4adb95c3be3db0da761d766f30c9577c635fd18ef9ab6b5775d9defd0cd7f779989487bf3bd3398ced99b5b318a79680bddf3d0bf171aba0bfd58a02d54b4f170bcb3c29b21aca2f8791da55e9d02e1f5403dd4e1f3ea94d2ae0ea134a495d20e3ca2d24ac3cac2114a411a7aa52cadae82e0aaf4d4abd573423d4a6b8942a152927fd4abdda534a8525a452415864a2be8558a844a29582910b4054abb2a9ae0ebc216ca02a538c48e3ea160a5b476305abd1269473d511f22fd72743bb57a355d8ecb0d8562624075cf6b05a8d7adbcafd2cebf04d02050af8e42a19c3af568a54aa062c581d2fad5da51aa83ce50919e6aad15fc416fa8d5ab94a66b995c106da02c355ea80ba05f75817ab4a35e7dea97a8e7b504fd63548ace5326a0fe51570a6a4741ea8594857657d42aba3a9ad3d15abdaf27d28a7e9486345e0f2f34b49640b1524a6948a98bd6ba830ea4a4ea75435455893a194a32552a86b4fa5067a832743274de3975a160ad94c543755e75a1d64a41eacd282907357d957eb40587524a290c3500a08954a94c3c85950241454abb4a3d3a84ca507bd418aaa986f5a31dadb49a6ae8d1eeeb7ad08eae28899e28a53ad0196aa90ba9e8d14aa98b5290857a837a957e26dad51968d7d5ea558ff6a895be504b944445af524a5d54865a0a3bea891ea514e7a90b5197c3473b4aa21e0c25915ca62160988102c0a3b58235bc148583c63484d24a2ba554c643bf391212502b485afe404030830a10164138e3c7028106082054719f940edc081062708da4c480400f16d8488f0db212002c667042101b034d8f14cc4c0e105a3080635972dc6051a237965a8147953422c0e3c9155ca64a15666055d9a2b26216c0393ca1c12187672d61862a7f9ae1490b35fc898d223cf655e1ef11c0bd7377f7e1ee475c89fb0feebe72d46907ae73cb6e4bc24026a51a58601413b274a4307481147e5d87e304c4448f4a5c812531c73bdd38850238ed8ea563117140800618812d3524792c1619723660544a72223d560b1375070c1f128f823b94c0880722405e0850bd924724e60646ee04fd5c3726aaf742275303a31c7c9cc0e1a2e3442784890218b9405272bad100a3202d9ca22e45c12886005448ea583e21cf005130217a2f5d0d0d4c486102241c6cc044bcb280966afa7c78097b783fdc21a03461e35b9582946c88550f87b0471320c042481331a0628689184f9cc0c8849b3980002c362ef40b23176e9828853dc092d8d2e1f008e96428050999e821c38f3804869d2025d290d30fb983142394c7ba29853d6cb08025d38eca080b1895c42133c8a030fa3ad4474120c0d2a70388c3ab07138e748338042c852eb4fc7099c1eb21b5702386243888ab9e23363051125ba10e161d383c3ee1c90b5ff85cdd0de9e4ddf03e84a4b0e4cd7c3f78393ed00f862ef5b1404312c7aec71546628905120e134e8ca86987b8f2727839c00b18e1d0e201f972f86620e5f06270a9e96468c2a83543bb5927e375df00544620009f2dc871600354a440e1c005b2786289248ab4d0ec8e31238810228824487e7c880460882b47c7ca861a00f05e0a50d0838f1a542fb8103e71410bb4b000103b3db864c07132812710230c0d6ca1451614c0e2090490ac6e70400364422c4109307c002aca990f1d4ae1165538c121e500075c6ce1ea71d3c20d53490c6380e10b2f88b8a4919e00f004d989c0140628408d2a3c44c0810d5c60092549706e606e7831a0e284243e78b82185a0042210012a8cf4f8d0e18613ad42a5429d42bde259792554332a10be2a5407f506d506a41a9c68506350c5a8425d10cd21caf0c5c0e2426da1e2a0375e6c7c35ea0b45792dd5f4952a4914ab473b4a416771e960e84660e44961e41101715815a16c4cbc54c0e8fb4ea10d3a60c2c3a2c66be1940506c0278c3c2224164a31c010c08824004f886e06d3064f621031072c753938b0c04804c3e806114c90703a2998742c4a38fdc0e84bc3e83bbd6003a3d396f9801109a6a5863a7c339f1547384c2e2ca0092f0a239714ea3b99971911e6258d26be1cc49c7087cea5db41dc9d8c47a4871458023360d499c0173c96a9a6a3dec96395827c398402005f004b60d0e9c6e906a905138e50009d159a005fe8a034f19161544390677b580d3278ae930bf8e2d14ea6fbe1f9b0e0086ba824447d60f8d2b93e1c2d1434759f77eabaae76612776a4520c5e1722096bb8f8945e4230a45de8edf0663c2abad0553132ad7860c0a825034cbc801e0c229026bc1f34a182bda7718522e4000731a032850c1ced278d2b54e16447a7071e70f0b90425ccdc807211c3218430d293c60bc69042031534572cc08706fce00630500109bee08016332d1b60330ac06d2a74860213acf0a006344041174b28610411420461a44748101a666881052a8811020e6c4089246032c4804f1a5c5a7ee083253616a334ae2085281031440b2cbcdc4005291883045f78d1012aa63000cc08012831d2c3038317a4c00522b862c80e74008317a8000524188105b280c2090230c1ca0d6a40821188e101264697e4d97961b13284327e3005052108230a1755487149253c3b312f2c3078c1140838a00a26973422003c41767470b5b0783e843260f08215a420046144e90017079882491101e0e1410717ce8e9a981a2f9ea73184327cb0822929404108c2e8001707a8620a299804a10b581144f430d342a30a447e7069e9810c313889028a2094d04c400a2872451a20a5d15dc1b3c257854a051103de052a17550b6a536b3a1ada32c954569743f72cd04065a831842f742e5498af05ca02c9468d1a1dca73616941b1dc38b9608aa1f442124530ec40f0fb3aeaee7ee3ee2f78c9dd6b705448c4af29b3fb2cf36de692782c4f1ce8a8700677171d15b2e0ee36380ab412f3faee9c6cf57fc9529fe5ebf277f93ae4b2cdb636befd8dcfd7e58323408161b87b8ba3c00cb8c79e7696e7ad117dccf3b0c3af78d8e1cf92766548b8bbc951e012f7d8cff0ebf2774e5644abd51ac2dd5fdce98bbb03c051608eebdcd23379a3c01740cfc9f36efb1ae5a8af0cf2bc2a477d1ef89e7c6dd3ce6bfe0cff673ccb76ebbfb4d36617e2bbe9dccab5d1766d33772c4ded2210f719dc451ebe1d5edfbdd2e05e67a044e851f33e3e67dc88438f1e393d707adcf4e0d163470f1d3d6c7ad4f4a0e9d12327270727e7268747ce8e1c1d393639353934393d70727070706e7078e0ecc0d181638353834383d3e326e706e7e6e686c7cd8e1b1d373637353734373d78e4f0c0e171c383078f1d3c74f0b0e151c38386478f1d393b7076dcece0b163c70e1d3b6c76d4eca0d9d143478e0e1c1d373a78e8d8a143870e1b1d353a6874f4b0c9b1c1b1b9b1e161b3c346878d8d4d8d0d8d4d8f9a9c1a9c9a9b1a1e353b6a74d4d8d4d4d4d0d4f4a0c9a1c1a1b9a1e141b38346078d0d4d0d0d0d8d8cc6fdba3b0c8eeaa4e0ae73cb863b8b28b156a555129fc40fe09f55629506f0ee34ee9e72f7992e0b9d5b3a5fd22c71b2999bf1f8ffef5e6570af31b85718dcddf37ae3e509aa6ec7dd4f8eea7a7437b8bb0b8eea5ade158bbdabc48ac5deb567d7fc2fc562768d56e6ff3dbbe62af62ef29aa59d69cb030fd50c777f475532dc5f971b27fbd7e5aded7769f2c461d9cff06f1cfea24b768eaa5d4479d60d37fcb64f5ea1b13cedcdbdbe5093a831c41577d7c61521c239631d77af8eaa4adcbdd5caed9b6de734b2313eb2af907ddead4b7de2f1e471af2e649cf3cecd78ff9077df7039e31ffa0ed94b842c4d3b74f2641c648671f639af10bc6fb93cba5cfa0e95bbb495f906cbcdee95854a70388a3ef15d9a37fdb16d63351c45b7bb696f5a7014dde1ee371c45df79c8579fa5bbb3b87f2d4fd0b94562dbcc78875049c82005eece82a31cca79cddfe1afec4913876bfa635e97ab2fbae459fe1dc2b69b61374ba4ddfd73af332867a2736bbc4330229bdd3d06f72ac4dd611ce543b8cead6d9bcd8c59cf8cd834ed4c2edb2c2bcd8c73be7fda27ef9971fbe63f71b9ed3eafed9a375bf9bbb4793fed2cf7b6b68c676fdd2b8cbb53af37dc6b0bee9505f78ac33df77a8364842b4c2ec5c8e8e51dc9082a30690028fcd223c1e4e8753ef0bf47020925ea77af047def9520bd58522181841224d5f7a04a09f045d5d1eb741faa9400559faa7b7f25407ad6a3238fc991a76a22f4bde7edd48e0680fa476be77de02b2c0a430a060882ddf77d5f0722e1bd3ccf5305557f90760f2ef1f2fa0493bfc9f36a2ac8fbee0582aa20cf0b5a8286c0247638b5096de23139d2c0921e5e42ddfb8b7e134fa581253dbcbaa74a44ff144a0b94f7ddd7cff1ed60f21c6287537a3fa5ea9b28d53925a1447d5065549f3e751d53ea88ea985e4c994292f7a49a62e2bde9692a09f169154fae634a2d21a69af4a0d33d29c5e488ea74dfa4071def9d05a8337d29e53aa7d411d5393d29c5a4490f3aa53fa23aa4377d0908d7119998fef4349504e9a9a84a420340a4a79f44e92bea0443f83dbc84bad722e7812726a507534c4e4f4f2aa3eee95315932494e89ea432ea9ef4241593a3d7397dc72244f7a754124a745f521975cf024407d47dad475487f462ea88ea885f4a95de544ddfb1ecc00084f7a717a263222a5942e7a44a420340a5a79f04e96b12a5a7ef435722a59a6860490faff0a94e1aaf5025a445aebe1639efff63810108161f1d1365f1f1de597cbaff96a06017ee3638c3064c30b9bbfb3b8fda7955bcef0c30f43e100c43512481a1289248a592a9643a9d58585a5a5c4e2c2d2d2e2e28d40bad5de779df077a1f0886a128924291442a954ca653c9743ab1b0b4b4b85017971345bdd440d11ad4868d13bd71e34471782ae886a782580ee3c20b37280bb485164e14c66560f2de739cc0eee49df1aaa1955735c365aa938e254875d691cbd477c262329958bc94f7bbbe584ca81758defb20d108cbe94d2696d1e964c5ab3e4b7dd1495d552f6889eaa554a75490f87a89d7e9bd94b7a47b81af93122fd1f4610450412ee213318bfa2e2727502c4fdff3bc0fdf544fa71469899729c562f2f252fe2a85df87a9ee4155a77a72a2e2044c2c5660e9baae3bd5da7dcbf72d153c7d6d696979169396ea52eba9fea9a5e57da82eb5e574fabe6369a9aa93aa09ab09ab09ab890776817af13c8f65c58be7bd3c8bc90b2b0a8f75c46ae29dfec5a3ffe275c5b2c2c5abe1a54ea7671979efc28ae2e5e57da835bc9793c73a226dd20ba4175510757954cae5594d584d584d584d3c230a3641ecc4ee29489dbebfa8fb1248509611137fcab2c2296519b198382b0a5a2ab18e5847a552490cdaa4922a6809518441814f30798e2051caab7bcfe8f38e3ca3d2a909d289943a91b04005794e3c271d8ef8e489e7447ce23991004aa8f4df2b487c72fa276216e2166206c4371dfbd6d6d8fc2bc3d5368d56e67d3e2ebafbc4e3ac3c6f6d7f2c860bba443f2bff6a9c1dafec63312ca1119b3a2e17d02a86d337cff0bd336dc73f4b9b2e4f5b1bafedf3be43d77cbc4b7394d9355a69be26c2a6692ff91a9b3f965b976769cb775f529be66b87bbc73bf436a6a6ed10970be876f3eac7f286f713ed2b7bda59de6eb6c8b7b62ecd8ff900da21a66f6d93f6e6bfe479f7597ebe43f7fc3b9ea57ef29eb8cf99b6bb4bd70e90919e6fe54bda5bcbf6f6589bf659dfd2385c0edd7c6bc5eebe3f4f3bcb2b8bd9e5e3ad6fb859dbeaf5d76eb6082bdfdabe34bc7fe36ea68dd167b91affd6b636edc640df02c293ad891bcb7d96a6899bddecadb9aecdf68cf7f6a3edcde3c983813479ef786f3fa3cdbb68070305b936fc639b383bbb404edcb34f1cfe31bb4770be429cb8e773807f0870f722bc060c3bf09acd6a8dc3e9f22f897b2e8947570d0fda010df7d56ffbae9acb0533cd72a62fcdde60377b6bb07db5866d1cbe241e61fbea1176cbbc617a5f5d54ce6ebec14cb31482d576490413cad676b3bbe77007a3e0ee441ca543d18ccc86470d8dcd0e9b4b33b3c921499b1d3c6a687266333bb3e9415393437343d2e4cc68461de3ccb8352ecfd4194c8b5b72712e87ce1dd3de1f8dd3e7d527fe71b3cfc6f8c82d3390ae3a6c6a2a0d1d8197240747b988b857245e7bb8435866ff9e98fc5cbeb825afcbdaa656503d7cd0e3053d0e108bfddb9fe1c76ddc6de3f053e1a81c33bc877be26bc39a359e397db325957e9cf6e582b95c3b8f7bbcf14deb5dcafe2ced7dedf4476bbbdb4a20d2eab07e866dbbb4d9f09893bdcc9aa51dd2652e6f6d7f4e96f39dddfc2cd96f7db735ef11e50f79f325333e916423404e24f7e620365b9f9bf1ecead04e9c95e44b662333231b6784dc45779ff8c7c9b371cf0fd2bce56c973a27cf2e75f089a4e89227cf0d87b3907236c3e993e79eb4f2e7c7c63d765b20a63df3dd434e1e5d1611cad696efb64a866c9c116d875c12ff48a2cb22a4bd436cb63e4e851a2c515f5b09345af3768fd87d8b68eb63b3f541f128e2ee2d9d5b66b9713366b9712ed78e0c38edc499685fad33be434218035121ef92d7a1a6ed10bc2f69017707e23548407077f2de9dd3c9d7675b20ad9bf1d69fef0dc893a7d5a5bee7a5693c5ed2fe89cba5c53b46c6fede3c8b69e1fd773ced99ef10a63dde7fc3bdbe6197cfda7bf65a7d8bbcfbe67edf70cecac7fa3199b336bb2d694d59a94f7cd337bf2e1f08cf8fb695b169f1dfdaae8df69ef849f3d67e9f386c7b7d4be3bf5922edf3e4cd3747da9bcdd7a5654b0463a04be21f40363e4ffb83bc4223263294afbe4736eec1b35611b17d352c36c4e3fdb736daf1b5d5e5e7f23eafbefa77d13dcdd2ee0be4b3cdb6efcf2eba3d414068caf88cbfdcc1fa083196b332dfa1d7c15f190e36c6f92fcd66bc7fa80c80d015ccec3b54cee0b87b8bb4fdd638dbd69756923d30584b9ba61d9fbc3fc327d6a6697fe44e5b0463202bc3e9dccd24b1cde582c1746ecdccc06c30974b9fb8d4e7dd4537df4bde2c91161ab109bb63c6339d5b19a66db6b713db6c789c99a1b43bba53eb4e63eed4e67669da9d7111996cb3c9ccecb8e9c123a7066706c7da1e36a30e1bd9dd714383438323b32f8db434994b23cb2c93a1e9dc9295a6cb85bb43e5b64365be244c5bd3b4b0dab8adccbce3697fe460ba03808a1c82c8e188bbd32d26c0858f8d109081e3eeb487030c61c48901202086bbd32060200328303fa84115ee4ea19c9e0082810347e071770a05126888c9df0e1870775a826e891904800647d4dcbd160000372420841a56c00277efa09004233c900114302009ee4e79b0f998c0022a8b03ee5e89ecf43004286e80420aeedee1a0828a12167085183270f7af0109b84269e0ba820fee4ecb80421548a0b10021e0b87be78058c8801a0b827ee09ed3aa199291c9ed32db9b8f6d0c225784b34f6e9766b9915c99ed16b943e51eaf69e21ff9d2ec698bccec25926d4572b37b75b2ad0826713ff9de6e362bc124ee476f6cfe9c169b2411ce3f34ee95ed118de46603926fb6d9faecf3e65b3b7934ce1c4f9e9b6ded47db6c7d70b47276e21f67492bb3111f7b234f9b8598762c33deba1ca26f654deff3da72d6479f3603697dc7923c796e36bbb5cceafcccd4967b9561b9d71c708871af2b967bbdc1ddf188479c75eefe30bb575692387bd2b4b5d9de4e6c2bafccca4e9b693140dc024641105ddf5b6ec35646f0221af245de8d7b487b8710dd9e1fd2de21482e897f644c9ee50f19e77bc4cff067accba1927c9b2f79ad891b4d3bde6c776f1b007777392a77e4ee35b8570fb8fb0e7fe981e906a31b74b861e5f9d2b235ff8b481cca062ab6bbcb208eb22117599bb6b73f8970a6dd6cb8bfb57db3e521375baee98b5b728f98f7bc3723375b1e528319eebe7adae764bbb4e57bfbd3d676c6361e1c55c315ee5e9eb89546d530801a8270771f3245f74f7cbe7dbc7f9f57bf2ebf868aca61c6ca86b39545d68669f7cc6185affeffa5093277af71548e1f3952abffdc2e477bb3e39bf73c6d6d2c7749c3f7244d1c26b23e458e0cf95bdb9afc39778c1cd11a676b453b4a769004b91bdbee11d38e988826673323271106423b4bda5992d962d969e49a636ebcb39288cdd607a522c39de67599db37db05a208109504544c7cce3cf1eb12b6c446b29e07182cdfd2e5d23ff29dcd703aaa0fa5f25406346e08224c8bdba3b5e13c7b20ee8e83a35240a472781bb88ea3de8ad893f76f6d5f536663f90e61d81dcba17cb5c67dce342deeb4b6276fbedb9a7f657fdab1655a1c590e95e459fe49de3b16dd7d69244ef6a6bbfbe0a867791144fc3da2d4cf7a96cdf6a6f51d71befd95bd6996444f0e9577bcf90ed9dab5e11f7797c15134a0418394276f2e714b6e7e16ed2ccfd2da6e266f6db437bfb644af4f224c9eb6f63520140d12a0e1560411cf22cb1f8288d6b5e171e3b08ca368a071f719fea1d7270e062e140db555e447106f7b325ba21b1292e7d2acd6b7481159c26e389c69e4590ac176d13d7d00b1c378935c3d9b61d8cd78cce57deeb8fb0e8e9a21e6aeedd3ce923cefedefc68db7e83ede6fb3bdfd0b35c30a9f44f7c471940c669838f2d6468d7b6de1eea4bd351d8e9241c83d4696309bed2df62d9badcf5b4bde7097c423797117b7649fb7bc95e3cd3e6ada0e21edadc1c625fbc4e11146d3b67b44a961b07cc9f3ea4bb330f2da72393bf178bb5997aba66867976369de6c3cfaeefdcaed72df9f5bfb61da219c6fb7d7254f3cde1fda590a8d56873ccb1f76c6b217696fed8585ecf3ea9b7d4e5ceeb1cc5bdf237876f290b7bce1c6d1c8cdf887adb4e60fd2de5cdb365b9fdbcdc2866e370bcb785bd3c4a3cb4533e423e666dcb627adfc79d6c6dd740964b5edd6356d6bb0bb2d5992a71df5cd78849d3e7c649c64bc497c903cfbbcb693566a6d7d903c40723b8c3789ce5d21582edf213cea92d4b7ccfb6697eb2c6d6db4d9de601b9356c8c4b7f192f8870f1f39b81dc69bc49d52b181348d90e74bef4bcb1628a7f32d67e5c63df7e75e9add3fb4b2c8894b9d6f12dbdd3ce48fbb4f1e218e72e1666b6fff2c6d77977f4dda59ea7fb9bb8da35ca0f1163e49182bb83b1247c16c510411ac2188f896695e226d9f453bcbad7339fb19e6f956ce3471b3bffb9a371b1ec9927c7dc99fe1af8ddbeaecf396e3f9aa49a2afb6d7bc472eedb44748981f773fe22818eadedafad26838fdbb462b6d7f6fb96d3f5f990d77fead6d5611440c41c4dfdab6e168d9d6f6df8d7bbef544b7e787e8f618698107ad7bcbedd7fbbc433bee6ec3512d6cc0dd8b38aa05ebee408e6a81c5dd5b4510b1b1a959e4590a0d41444bdf9ab6a6febbed589a371c49de5d6a7cbbe43eefd07d5dd680beb5b1a93f662c67e5786f5a863c4ba11579da8fc14e5c6a7d75ecde6eb6f631f22c85627fdea19236c34fde9df1ede6bfe3796733fca77d5dfecdb706b4b1f9736d25d0c52db13723e459fe00bbddaccbd5a386070f9bac5dae7b96e68961b6f288bee58be8f6b8fb0d8e62c189b7c86bc3e99b5988b9b7c8ab71f6b6cf9b33ee87bbf370140b331441c4be1a360411df226f69de6ef6cf7b65af6dedf7d59fdb65c6b58db34f747bb2cd0683ed6b9af6e6ee34380ac70ddc53b9fbc3589a329ccf0b20c8ce8e0e0d8c06669384064603ab4932eab2c8bd418e3a77f7dc1d47111c3bfcf17e4db3e6ecc94b3b6d6dbce1bfb8b3dc271e1fef276f99f7e3b000dc91f01acc49ee6e84bb07e1a81b47ee362d9a56cdd08e8e9123403f31ea740baa73ebca70de9aa645d3b291394b335fdb8c0e9b9cf1f690913d7ad8dc8ce3ad91b1e1b125c3d57649cbe5ad4bdacd35d41cee1500ee55e5a81b3e4622353262c2a864e46e64e4d5c83b233780914301857bc949ee7ee4fe8491938c8c983082c2c8ddc8e809376ac2dd1dcf4e9e4bda4cbb21d9da12297779f21c519af62c83ece4ccdbed453bcbbc7f5c2ed84defd1de6cf887cb355e128f3eb4b6e608cbf756646d42233665a6dd78c38aaccdc70e272ef7cd4891b58da53ecbbc8b2eec6a2bf361a303b743be3e45d696af8f76b9e805dc3de6a8972cf67873c6e36f7cfecdf635d1e79f954fde3dde5bd17d5dfedf1ad0eb1083650c8b7d6d97444fde9a2ecf72f63a3ab7f42e6da569bb5be7dc6b8ade9b838cbab4b95cfabc4278bb5c5ae3b6dd3f773cad6975768d565e253220d756ee13772497f1b6e4698b9836df9b11d3da32eed1da9a3f6ae3b6375d02d139eba3af00708fcead9ab6b599191c1d3a78581e3d666a6c2c0d8e8e7107a943c78e1c9a8b2373b7cd5bcb707a466f1c161a6f6d9c093586b8e25ca024e0e23379dff2354ddcd533f7aae33f4b746ed90ccd8c59dbc622582da6c86a48ec65ce5227f632dfba67c65f73c5622fc38ac5c414590d7996ceb3866ebead62efb2099da5f9038822afffe4a12677b7f11a3500c149a2dbd3d277089ba5cd26ed9a667996f8b62d2b679ea5cc894b7ceed1cefe9e973cf14de6ca4e5dea12877d7338bc25ef99ef78ead2ce5edb8f216fc6ab7ccfbfb7346fb6f2634e8bcbf3e296dc6c837cebb72e4d1c1e73a7fd6d7333d3d6aeecc46f923766f6b995deb8c766ebd38a11e13316abf91c5ec74c7bc94bf4dbda6bdbb73b8e56b75eff35c773df9f1aad1c823110691aa9628a2a782b5ffd98c41adbf65992acd80cdf6c5fd66e9baf0d77ee5c9bd5db0ae5aed06b32e3913471ed73d99ea5399b61978cad4cc014eeefca6709b38d4509a0f177ed92bc797c57024077779d71b7abad6062c512777be2666f6fd6f636dc796ba3dd69e96bca2c99c3c7489efb43ec0a15dd9e9606d2d2b113c7f2be3a777fb8e16aade4c9b2f6fa965b57110377dac93362ad5fb827777f2075eefe807b704f152d4e9ce00409ee1936f32ef2ce689c79cb380dd3b975b3913333371b098399a6c5309d5b5438f177e5ac4ebed8e5a29da590dd1a76d356e360fb6a9d5b333ae34c92af2318a8455e167973b9751419f0d6357124b6bd2e491e1b913de2d2278f8bb4d8fc76482f28aae8dc82a2055080f13cf8f877414100ad75ee867fe8dc9ab1b95ca4a39e2080b76a861e6f6bdeee89c3b393873c71416ef6c977e8f610214920e44d425e8d6f5a66cb215bbbb2bf1b0fbdbe99b72623f5b768678969277ed6b77659d3b6f6fa967e7bb4802322567ae86356ad2fb2710fed2cb52e8b6c9c246766bb8331902e00140528a2000170f756ccea63564f747b5a26ce5be3fe9a375fa2d73be3190e38fcad6d203caf6ffd0cbf6a5fad8ad1b7dca5598ea50d9f78bc26795a5bbeb58d652b5cdeb16f5dda49d48a616dbb7ad76b9cf5c13f180319c9dd1f5c4c9c70f7d659ce9876c4e66bf2957313ab693b24f6ac58ec4fdb8ab9a919cb5b6eaf9ebcb1b726aed9f3669bb3e62565aeaddc3e45b648cb6ebb3aafd98a595d128fe785e5f0363a622f64f7c732dea30d725e5c0d48e6e6dbdbd8bde580623fc35b9f25cebcbd8d0e9224ede7f2bd5d6d755a64ee0ac56256337c8f2835ae11653ccb15dda18c73634cee0aad3e57646d9675b3d5b46b5ef2b5ade54e5b0487836cdcb371cf3565f64452daf2f5c13de4896466de1fdc0383c1603ab766646c63d18c6d2ccad836165d98cb651b8b12e08312337737f94b15585062c8bb6045d6f6ac77b9f22d73b6b2d7dade7e382a89337ca8b44364cb514964e131ab97c959f37599049984cf69cd8bc98f593d110ecbccf2d059caccf2509023496ada0e097224c9dd78e86a6c8e37d81dd225091b35ec6e7ce648d2e66e5984f34de3b02d77e2d3eef3daf678836e262d6c00ab16795e6d667b1f63a02b1c51867beb339e9556c9b77edb234a700418b923aea8fd492bf51145fea33dc2c7dd853226daf73c8245779cbe72ebca342e88b4af6f696d6bb4b33cb355425a6ce6ac8f69ef1197ab66c8e5d24086dcca9ab6ddcd433bcb13977d74eefea077b4bee7dd9648beb39c84e7e68dcdad6f6966bba36dcde7c4e5d5d8bc65063a89306962fc83bce4798998e64b23d1a6d5f886b38fadb4e62dc93b665c02d1d71c4f24fbfe902590bbedfed93f356d87dcf1b438ad79f0ece421c23d7766f58944e7ee0fda0e29ba3db9c8bd4176d1edd9d8fc1152d376c8c6f8c8cc88be79eb92882679f6b5d18144eb5bea5b6a6d1b83b8337b6d65f6a9ed52c9ce76ff90270e1fd945b7e79ab732036120f29e787681e48a70bec1c61387cff37569a7356fd75602edb46272fb63e3cb7c4d6cf5b131f6f9ee6bb3d9deb49511e168e5ecf17ed3964365de329c6fafcbbfb21d9d978ecc022185c632cb5edad6c853e35bb9b53559337caf8e098d56669a7686c3b9d5b3f49591e62d731b8773f9e280f8d689ff867bf29ef69ae36b6d6faf77696fb627c243bea56fb8bf6769e6ac8d45dedbad14d22cbdb1a9cf7276c99f6fc5e8ac6debb6cad593b7a89ce56e38efd3c4f866af92584f8d4c4f8c455e5cc98ac5fe2c7fc7043992e4edbee1c4e4eabcfa2cad79fb5cb6fac43ded2c6ff8f65766dad1beb635997c6fba8c59e580be95b3429876f74f4c2608234a80be453bcb93e6ccb87d4ffc97e859bab47fc7d3c8b762438084f4ec108101f5ec1411b2f303eb31c203f403c911a09f1e233f60477680f42089d1aeccd67636c397b479bfbd4abe95b73ef1883bd2f32d5d5e594bcf308dbc26113e8564ce128f32f66b234ee7b2b57f9e57e3da389e9675cd9bcd06f9d62d46e6c47fb5799f7696b57d854a7375b3b64f3bb1f9583f2bdfa14b846bcfd2261ef1c6f9f66359bbd94c3b4b01bc8afce6f9962ddffd63695adbdbf1bc38737696bb7c6d4d99cdd23ee31990919e07fa41520437de9f07c0b770d8e7d5fa9e364c9e369be53e714ff3babc39f3d6f6b6b72cbadf75a7ea95276edb4bca7ec78d11365f3d80a2591a9196c6a429b3ba245f975f5f3ab8d7b15a5bb9c7374d4bf4787fce12fd59debcb1a9bd02951f33cd5228f6197fec0ad91dbb44af436dc4b71daf435ab97d6756d7b4cd230d87cfbbe306f7b3f275b827cee359e62c916977dce05e7739ee3e84a3c6213cb6b1f913dbb932ab239383e53a5c8ca3480ff86f7b853e77855c2e1459738f61e5aed0ca3d1e779f396a5c82bbd3d8d8e820b2476cb94d5c1199955d991d3dd915b145852bcee8310d900529471523811a2a365c78a2d5dd34901c3d041d39410171062ff7ea837beda1959f3c2dd1b374c9f32dcde3f3ba61a7c8eb48101cf9fbb465b643bbaced9889b12cf6f673e61d2a7dc4ac627f6b4a5ee7ab439a38fc636b3c0403e15d923bdbc4e97b842c752e699a2ff21ec999a62d77b63e44570979c91fbbb4954474eefed0ca5da1192eb245be482b66da7227f65bdb6bfeb6e659da9def68da9f6fd92bfb9cb5d9b3b4c5a8c813371b677237950c87d5b86d996f38df6e3646f2c4fe9a5768b419e85bd9ce1eebbffde7d296b28c7559c3e59724699fb4354d9eb8d9893f9741b6b644b6b63e270f79eedc8cdbb820274fb641300622cf1dd3b4b61f8c81766ef6072ef3f5b9da5e22d90859eee082e813973f700f100c94232db6dd225797f608d1ed3979b4be9986b3cfc993b3e60532cb49dcfda5074709b13d97efd07df2925746da5bcbd96c3820fbea7b4413fde823e425c9574bcfca678d37c99397bcac21d2400dc1c510b6923c712c7d5e77b78e1ac2e5ff238ec4f9a661329c49192142e00e84e6ac8d366b970b06bbdbde3cde8d9395799f7824b299aced92883c71b39bef9089b52ec95d92175fa1114692f6665a996fd95e737c8200460461455f93b44fde3d2b6b5a094a4919343a8cb0f9535f3377dad7d796ad8f4de7d668d3b29191b9a61db51232dc9d84dd3b5312c51dcfce12f60077bfe3894f981224dcb5be264c492da7c4c75d498ebbefab95c490040d77d7b92b94c40c54121a14dd530c774ff2c461b511df6e9223774f42c24e220ccb5d21581296bb9f38d888874adc920b83edd226c3e92437dcc912b6af8621b9e2fa9638f09c0c8abb36ef79b3e51aac7c006c898d44728467486e1ac9107718ec05bf80e41d96f10ce6ee308e42e230201eb8fb894b32df1b9014770d03da02f6a202308e3c5fa18c8960b319063237ec02b98601e5b8067a777777711490e839f376b33f57ecb6a4ddd7f653e5870c77f7ca1a3eb4e0270a7fbc71befdc6ddcef249abf37384bb679cb39d41f981999971ba699d11ea48cc6356305db6725708463bcb94cead8db3c96e5a36362d1a19192973cbbc3f09007145e7564d8bc6a6452333dea15dca8068011024a8f155770f1d0504187ee25226f3f6ddab0f52ad0182531aec736b6cbbfbb4d9e268972827fbdb9ab9321e9fd75bfbf87cf2baae6ce364323fbe65f55fa2af8d258b089b269ec9f07867b3abf12de3b6c6edd116ddbfac4bb35bff6c459ed79ef7c9d392d7b427ad347124b6ed229c3f775adb13e1da23f916797326027ada5992a73dede3bf27ce387ddec7fbf5ad58be3718acc8da5a318dc3ffbb30d1feab6bbbbc3fc3329a75331e3736afecf70de5df1ad0c6c99eb4e19fd8e7cc32db8c6fb6bb7f7ceb73261e63f7c43db173c7d2d0f0781e9e86c7e3f0658cb4b76685303661b4b37c5de27dbb595beed6f6d7c6b246642bad393eed2c6d78bce17e865fdf12a2a93971f886fb3bb3fa5d33fc76f6fbb46769c33434343532343435cfca9932abf32dbae6addc26cef6369cfeeb224f1cd6f996de57cb709ab477ebb3d43e3fc37f498bb3ec653ea65fb1b1bc198ff734f22dbded95ed6cef907c4b7de4c43f74c89b9b951beb8d93b46618e79b4c2e6f7dc7d3fedf6d83b8571edceb0e789fe5bb571ddcabcbbdf670af39ee15c75142a2400931aa37ee95878b5e77b8db4c922f9ccb3596f99e9746de1349152c41d2f0df9634cbdabfeb88912347766030f21e21af69963f10dd1eadef38e27e82c482e8e0fe19e7bce393c3e3e7a7755eb2b4bf85acedf1fe3f4b2cb34f844f215dfe89b5bd47be35de9b7ef2666b8e97fcdccef786f3ed55393cb456655d3e8f9c9f9f27afd6375c21dfba4278e82cedb624fe9ab643c87be2f2edb7bea489577fbb57c8f64588b4b4d656f62e6dc3bfab76fb1397b5d8bdb9b65fcf4e9ed7f9b3f263c8d55f6dda20df8ad9e8c0c55e971f8b3dd64fe232d0d676863f766df6848d37a055a8644db3a59118754ca19919180900000203150030301c120c4583f1a8ac27add43c14800972a85868521f49435212a3308a52c81004082006180023302333a40d085b37ba7b8aa16b61086c44ec3283c5380e5464df53158343226fa4799a1cd0fafc3d40d9203beafdf62865df26c4938efca5b28085c412c3ecaa8f5adf66b99ecc8693adb30cf43b38603ea448266f05e6a107185580ed531584a60957d5062fff8d60bc614c4f8022fa85350dc55480cfa0d739e272875de281a39481d08ec2f6187000a6c8d790bca5b51612cbcdb0d804ffe669b09a5425bb5881e941d98e6d35e56a0674df36d5a6cc6e021bf10355f884b599d65c35b79e6f18fe1ada471cfc3024796bf4b0fa13f6ac4a32bd6413866b735beb6ba53d9e3da76758784ce817ae904f17fa51979ada26ea94e38d4aa5b27d7a0f963e7209329a4641834d1b94e5567b29e3e5679c719c93c7d6a2b7382818d5402d9b043e0c10f8cff876f9a69e56dd925bbc389a4efbec357052e28d9ee588a68d4c1b28100fe5af31540f3b9b66b6a113cf20c2571851568d72e0475b9e2c6882db06c5731659b48142647be1741122ef109651059f31b20e998066f66bbca7fe4d1f2c23b88ee55dc3498247c41b0d35fa2d800fda6c04923dfdc5909691c703909acb28980a608d9c307c903698d59ad7c2fc0e6c6b6236e894c49f99abf0ee32a0096cb20772da55db90dcf9ae7a9af93acdfb9d7b6d137f33db4bfd31ced2acb44dd63900361a6c645cfbfd40e800b89e45c938856ae1a2abaa812a197ee85c746d7b94b1176719a02212d780934835a2aa3edbf337044b00c296ead3be220d428fc8c3395a3d6781c6e177e86561851ee26cf020b1e8a746db82fee321a1a3f9cd4e6f10cafbd923874162ea8acf677e5d2908d2e47cd3666c3185427a01ddef956c2741a53557cace9197b72c9d5492209be40c93fde986af6b5a2ce2377290ba0af211ee4edd9117839c7ccd6cd0cb0f3a4b57a265b7923b43e0ea9d820ad3fbf74789df0ed7a3f6183b35eaa7aadc794709002417d1249f2a1108dc8f96e9bcbe8e68c14fb19e610ba6a89ba3f7d01580842051c9879be3602675ad0473da4013d5f3af336efabe2f10ed64ae60caaaf2a4db55ce31e4e5784867a7c072fb3007fd82b1d9fa06acc153dd64a09c465098e6f3268d03c6790c44e8a893670767491bf09c072ac744f39a254736ba65c987e1723d2de3a08a2d08f386c7be06a36f7b4924984207435f9d19bc38fa4512848041d17dcca4ac6fb9603501e3e0cdbc037779e43855c493cce1986121de9b898b15b47eb8888a55175cbd9e78422c766a8749a016d622e428c15479e0500d6397760e03c29c63fc07dbdf293e4a0ea8bdc0b45e5821da3611b6cc644c901d9a1820570f63bd81838e5fe870951fb696688c352f68dad6d8eb79ac8c3a08526cd0c8b8dbc6de9d063b1c0562e0a78a98bbb0b896d588e79cd315a45b139ef0f2dc1dd4831cec693bfd039dd1d562716211e66de3a45c2ba680e5ac1b8315dfad403969d40b8a4d378c412b1d79ad04661ee697fe1dcfb46da60f3b5c202559b2188a442e41b6425aa5c218cb4ba52e0186428013f9e730b9780838f985f0ad916d99aa69856eb309293e3efb3395af69f1f3b9740a7e0526740c87b8e9336971e733d273c9e9067d84d30603cf899510e22d131e1eacef29346fc46e3134e9e423e2db07761207661360baee21b49277758c20f21ce494163cb73fa031565bacd6e18c9694e950c63ece0e30c69d1c1b40531fa0d65aaf22ae5a45a30b4ca9692ad1e79de4e699c3a46fc64d1be2cbcce654562c1e67b271c2a8d8f19c714f2c3356d8a62af83dde41d0712b2a9bd9ba08861e84c30dc930ca4cbbd2ca87c2342a6fdd1a261e5ea85ccf42a0235acf38bdffc9b2a8071e2804f18f61222f38c993448dd37e55e1023fb41134fe710d902c44b54b57aa42689eb45fdb3850731c0043f1416d5873210f89785b80cc9a8bf0958f533d27436a5082c7c6e44881292f3c35f83901aa981c8eed3aad8869d0c1b4a455c2ca9ffc5f0ba301f4b625ef1802560a6534f0c534e7df8463bb92165a5bdc64096ffe113b63134ed220b238b6d9404cea788804ee6a4ec3b371b441e6e25397455dc7c6dae300bb93cc4d82d7c4221241684e04287c27cf7286454ad242a483c1ea233890e7cdc321d8d81d8762fe17593c1b3120be0ce90f0fa9b33b21744fcf69e5398b581b08d99bd51cd664295199a7c81df08f31b4bf8e3c800172bb506a35909f1cdf8dd7049351447b2aced7b65a7a3986c466b1e08966f535241900a01a14c414c2b353777f5c0d1d07f38c414fa78e9faac97bf0fad22fd1efee2a8313baf90a079709ebeb9c7ac040a3feb3940fd0e897e913b2cd5a176bd6d70037d7ea75cc6acc62d684cbe000a14010b8d84d73eff81ccdaabd01cf8efee8942ac6f08a6a567471cc1b58a64e927bc446761c13520a0d1b1f9ed3dcc3a68702ffc6f66b7e1a48b801675151c31624a972a7fa319f0b115220dd4a015a5e6b54e66cf7cc88215acba3e92aba04591046f98cab5dec9de231f835a06375a42839eb52d9d35c2c1978cfa93dde576d5eec8ad1f2f68e3e4454543a4e4e4289e63ef4da2c21cea5de5ab584403722a71239beefb07b8d0093e08ea63814261ef9706b72f140ac1880c9b77d503b2c2b3e8faf5f914aeaeda4c2a70691c6478210fa1fa63f1263f6904d6ca14fd76a984929eaf9634bddfc10286ffa2839a7e6836049d97b0dd3d3eedfb49ac726951424e1cda48bef65bdb804a62cfb1280df1d4d3b0d8fcd0356950d30005d79ff70044e49e46b29161947ca869a0890c252dee489ed6d24ddfb699d18b40511f8db1098492a37a4fb95c1153c613062dfcd4516e50dd070eac99e5c85fc2484a09637404134c9ac1cdb325351ff530b5e43853365597597fa18e3743dc3fb8004cde36be19f0e7cf612b61ecfc8080c1f2aff80f03282992138f8d53d9c351bf05ebb69a5d140bed91718d53b8676e5662f0d9d336e6eecf1b03a14367cb7e4f90bd8347506ed6e02efd410458d659ed5199c4c16c42263d6d17de75362ffeebbc17d65305080b26c1fd3b23186eecea224579b3f3cce4009760db6f95b8cd589d2409892b85000fa0008858e19c5b436687222fb523b81723f93977a7609ce1ab4f3e4a4f62199e851f11c38bc24792c8f04fbfae454c2bf09dc0ba23ac238a93de2ce3c97ebad2ca5773ac4db81199cdf4b2f01c7ebd87992d745aa14ea4cca6bfb5b544591e1efd38a3329de931d8d762f199c49291ec7a4a9f4c26ee98de528e2bf3f99596a99a48d089103377c7a8e122490433846526d8671c94d42cb5cd75b4510fb4921ff3993166ae9baad3ab86aa691c1a3c6eb4e28e737b044d5a6525d3d8726dbc48b57af6effe3cba2183292cc4c61e3554bd1003ebd88b4ceaa95dc36032af60573e8620c931f274796261bec97546fb360257f64eeb0e6bf5008b626775a4397e779d280c5d64c3431831febcb43d9e562afd276bcc8016e4eada7e86d361fa58654ae3a1a3d617f5cc1669fd01495bc17a28c7ea84dd251ce194314efc9590745cce05b0526028b29b1b9a7eb1267662720b8631b424ebc1e9eb02a663468e93c118f12ec5242d2cb1bf45ecda1f3710675fe0721f1a018b4e4c4af0cc0c6083f5623c2e65a508335319b301d1b9c0eac277f5df1aa0f25d67b42b6c48b7eb3897b3b40f0c76af6e4bd461c98d3e1ec10c8cfa2cb1a63ddc8cdb181b2156cd568bc387788d0040c91326f7608edad7a02dba0e9329a42009ccb18044addacd933e52a3185f342d2845058c337f6418e84d999ea7a378ec5b70686b46acacc026ac87a9f0eee396e1868a7b3537ae35bf21fd6f89fa7f81ed9fe0471f5b1788d3f512ca958b831d2fa242e28457e7cdc4f3db22ba43ea1eae6034b506017237d421863f9fc044dd69e8ee128dbc591a03348a4f74642655d3af38e201245cdd6695ec089758851b0d0c0b1f9a16d8529a3477c52082e0b24c5339c4b5c8009812d1f7c737bb6d5397edd8de8c0d7879b79b81fa33238fd31b48721cd0220e93b3b83e96cf5622a9b0546db3f80ebb0b0785aa368a6086a601775017d95426e342cd01ff5639d0e39a479796ae9443784bcdd9987754b5d524530a6c3147e0df05d2238e6d3644e24ca908f74b0470fa13de0642defbc542e6557867e02055a3778be04c99d6ad3d8bd3ce973f42e0e58ad2e3e612c8b7757867784810dbe44d6e773a0f59bb96b68a501b406c55e4fe3fd2db23eed252279b17f6f1f42c5b4512cbb454405a1108c7334440533730197deff3ca3a5fd1061d5300118b86fffc04f01f5fd4146ded4148101d228a60e840d92348d4068036c32b3a9e3d3ab7e9e031e2c7556a56de923ea5f7e2c0032fd78aa440d10706a46255b3887cd23c8e5b3b10f2cf8576bfe55b8e440570502a3848838c67cc2d8e39db46553ef63fc1a84be2f095cd1af2dd8a8434f2ef033999e39fe7b15e6e1880f1241994628cd9b431a89363f0f04322d81328721fd4f9444042a9763ae2ee61259f76f94e1932bf278beb3c17f204038a9666049dd487cf86d3a823476ac701785462c5c888daa2cb6e17eaac5a3120523ef74b5b1ba7e3692f0db1d2b5f6206c884e75ba18fdad57ac82468101f668877fe8dd1e82acceebbb9c98e5851cee915e8d45aefc8e42596da111db5995acaddd1d97239c958dd30aa5f91e35793b1281d855544f8590816d6917c65bfe3c776333fc8a536a6297a24f7994cd6eb2c54a2475b7b9c35f005edeb500590db7df0bef2927403630204ea298c0193eb7b87629858bae35379dcbeca631058192b75933d08420b2f6348e0b7019c9f813b4816c75581ebbe205d61b491da0e2b25369695ca80501a33132a732c3004c5405c4f0613c939d2c03deca3a33d5ee340f3944ea4ec300e282e2f4995f456c0be955cea44efa7410323a0391638918851a44924e4510b16a66b31406b3b9812a24cc9ebe6b1dc27718c36b4aa02228eab3b98a2299091c60f7e79ee39f0d5bf87f39005a9b428985884134eadb214ae01e2b877d0c4c356bc31d95088b2b19eee6735593c50dac7ab02e4331a57c8ccd4e1cae789d4ed4f4702186478ca471a4a52ea7cf2997fbb83bff6675389dcc8c63042795d1193d29b650849c0ff186f93577e6071653c80d945d5e42830602c9c2a9046ed00b37a798d9c52d0d2c39f7b9319ff3a0e41e77130a62d398e960a7c46204e1d4d93d7a3fb6da4f43c68ae7855349fa8dba65af03a616fe839a83ba4866ee4873fd8c3e63daf1dc47d191fb9219d235c0419bead86b0b3242432f94f8a0ec7ad42207ecd21392d262ec9a1ae8dc11be6d9a7c8d3727126b46df3df3c783fe45a8f610f21680fdb97d9d1bfbfed6fe101580ab31e43b752627301333de9181d5e6d49a416ff3206af9ed5b50395a3bfb05ab5c2aca8e2515187ae2088e40c70c4daabdbe12ef216595b9b1e1043475eb59d383642f769dc74a9b219bd54b23ea388c3b7039a1442fced1685921df2a12852c8e62d160b1db9155e0fde10b5c664f71cd8ee9583651d5699c61bea24c24dfe636c278cfb94e9fcea133a89bcb0f684238a5b323e714fb43d662298d8b7cae7f2dab67151c0249c0458a5aceca6666f15c2b11adb93f6e6a3e1615ffb5d5195f3c3cecc92282188741631b806014cf1390006dc0234f05ad0d1c4c98de8c27bdb14b651200da7598473678722b433f6e6053350d75455a2cd95222fa10e773354fb5f7a154596da07301ca82ddb15b540a8845ee35c8987a4a0238390068796ed2c8d5a61b345cb2062ef80c860069755ca23e4725520e4744cb76755f5d4a4927a17eb9be7d66be76edebb50c8637fdc5edbbc9db50ffeeb14a0f905ec5f23a6c5a615bdf5e5e3e2187711af257f035e978016d7ab2fd5812da9d9266b566f46f330c6de3b4f3ab9ddc002ea29c99389aaeb3dbf0f8d787af291d76042797276dafb48cc9b9661c738d12a5c31c32e8ea5926988dacb8cee7688e12f107c06c28cb107e8bc70d73d3a8fe579a311473ddad810b8b0ba505453e9772187ba9a4330a8fb2c7e86445bf65aebe55e02baab44c15ef2dfb8e5cf8d897e1f0e6dd7b2d44a7a47aeac860859b49d8b26456342ba9f61674eec5da106ec1249f72568f82b83ac59664238db3deb3fc5b01063ab73fcc18b304a465b93463fa0366098f92f5e19d3196c920321dfd9bdf3dd56f24c1d4aeb5280371221de78515b7b06f72e23c1d6bef17ef4bbec1113fbd3846e332b17e0667eaeccf0579485bbe03444f83eb7609bd05f84ddc2326978d9bebe6bb41e6c6a42c4c2d8a39ca0f35abeccd5a81cef8c2d1b6a10d74e2923f9968a318846fe52a2b37ef8085550c9d35c0c1833012288800cd7a8a2c572c10cb33161323ce76a71ac17940fac176df0a2b70d8a52f9cf0c7354039c8cd4f75cdcb3830b0115c4d2d61e2acfb71a86aa927d35a61971f19d8ef62c60adc219f07ab05a1e8e3d36aa301f72a5a4edfae993da3336af8e13a3ecbfc548c66c63d3616b7eb85eeb108c45afd1c30dd3790ee355cae81aab9c307ef6bcba4ce56f5ad52e8c626d624d69618c25c3906c7959f7d89abbc0ccc37f1c6de9284af5dab063288a49339bdcbd3740b6f8e219153ec1485033cc1eaf36968ab6dcc2496f9c80ca1501c60747ee721a6f679ad94624fe14861f72ddd88c4893b4f08309eb6db524544493af2a54c0f40dd91f24c85a9a43a263f849dd72fff4ae0a37146af3f8ccc3dc65ce8f03306972d47cb48ebb2c588ee07f09675c5101a22f4ba0e2a3d7dd4b9b6a1a194e7721e3c7a88cee0286f51a71b6b6aabad6142715496dfa8d050ec7102f73c4d7bed03a2e96bf61796c1564c9a264873382aade69e857057ca560c3e1556a748eb8dba0918492578676e4f2e31fa231c057a99416ab2859fdc57ccff2417c0b6a4f7c5565335f4c0da3c29b09c1dc543ccf71d7d34189e8a8c9de59b72cfad368cbfa016c700b9a75eea0b214d8a67d0fa8cb8e70b4454333ff962daa6b98a73de25cd354f3ce2e61e4f424f49a86c674b6600551350c26d189f7f9f4e3725f7a3796b68f0c3316597a47be7f876cb81dae986b064f891eabe98280705a6357837423f2f5693b4b0b6c6dd95f48c727671b6b630d5786c45cdf06bc6afa59f16c776976bf0eb7ea8705d88291d6443e2a1fdc4026aefa0fa202cdb1f55a87269361043573ba872788f0fcbbdb781891768429f22b39683eadb4e3c82804ff75204d8b0fa3b2777fa664a04665e40396bc18af8b4c11f1263b2ecc4a52cabb18f06aad5344b7e9f9cdedb71aaba80a924c33160be248e261e07d21020706f4a45fa8349970bc314a1027bfa026ff85a7b2591343caf936906cf83a78388aa0c79fc921588c352482ea770310dd60313dcbf4ea73c4749f79ab076c05d096f45c1d2302a2ed58f2a4837b0085ea7e265ebc0bb111c5269279a4003711c7ec90511b2e8f9240e9c5abb0a2618198454c689f60b10b198ac08d93eb87b486f0f721f232a69cc00f6d317d95c1d5e9720a9b99f7d4e1b4355fe47d706a5a6d164119c14ecbf4b8881439d301102afeb95d97a34d40a98cc87b8e2760c20e2743b5d299380564abec7a785925e0e6f11816c3921a6fc1e39293a0ae50e8853b1fb55caf104bb19d371420bc9e286f7ed557454a69bcc82576e8474b5ab90ac766fa25ab230ab10356133978340e979360e32e681c7ccbe90531ba52e5cd683239e3f7225bac45c3c34138164dc801cc1e2e224e15b91ed392d0042ca27c7054f808ef783e38b484922fab0f4ddc26980ab5a2623d6990800f8d0cccc001af49c8a7bb88372f0d3d3469a6e6eb6112ab378e13b2c44370933f56ac08dc50a84b637a5146b4fd73026b52529014f771578a062c52207106cb92da672cbed0fc8e0b326f7518dfecb1e65c33b74b5b70c5402ec3e7fbc6418a7439fefe69c4d80179eb55f49827400b1132778d65be3d8a96ac6619d9a7145b8c7e6ef099cd8d98a7644dbc48096e90927247b674fd086769d4393fef0cedf6023cc5e71945ca9f5e03a60a381e76893d7df951b90fd4b7f6a3ea1ae413ab145d48ad8883da94259dc37c3f15ed71a1a16b99ef63a4c957c49d4fc4cad49a4d372fdfeb1a77f1359180bf069982825b1a649a77be708ec611813a5a2e0c79abe5070b81a07a58648cb117ad989d94a9772493d0f9ab9bfe92d1f0aabe4f12d4331cf2d481614246d285ff51b5365d5f935496443a7988e293b3bfaa8497f0d19a8b2d7f09c8a7f3b403864d22f04b8e08b98b3a17179ff01ec2d0b288241598662b9b95705b91bc7aadced17af27e61fceec90b9647ee809e92c0411565afc29f2065d1a927f3de4d45c1773534af754c4a0e2ca4f565a80f4748ce4867e1e4c77a350da24eff9a19d3a33f9a47238f4dd6c8b5c95a9f2a79e32358a95fefbc4519fe0bd4c5767e97138fb84ae10032908a332b1b97020dc3dac4a4b8e9547f2780ac7ef85c98e3b8c4d0ca5170c0a891ea7da500a9f35f484f2e680049a0854984436b5fa87a6f3099a1ec4952ee2b11218395582ec199ba52c1675d510413dd067a18dfd6d2de654299f281d36f71c130403ffa565b3a9c9383f4d6c76f731c964d85b922b32f21a1ce1d4b1969fe31cd418a6d9d9c3c95e45c5832662900e98e49a4a998097d338e1b0f171ec877b0dd3b891551bcc8a0dc4eecaac095981c1fdea988b782cd400545965ac0a499268933076e3ea6e5e81aa610a33b1aec40326a0df35bde5e923cd332ac8151a101c4ff291a84718d559a23f8d0c89c50f21c8b5e08bff71a5a6962f6edf33902f1f71ef4cd08a88f0cc06479f3897025024a2b20b8fecd681f39744622ce48610968cee9bda0a913d1d477311a5be3abb88d93237be5268a2da85be9531bb38cbed51ae2a8ebe77f7b13b9e7d8601a078ad07aaa1dd199b77b2cf81963cff3b669df8a593322d291993e53a18e72c7468f84860a7cc97be3d82ead580d5186ebedfe98f99b95b9ac9c5ae7e39b9b8771606224e53a6cea8e5c0feea301bdb15766795c4e047a93e888bb5d504ea2068700297d8e5def8ed32c9025e0ea4f1aa5e91ecbd70d13af5922689889a26d71e3861851e1561b84da3f36f8a2833c32d5c1c9693fc5f88c9a5419db30f0a171d9d0b95f1446d94c38e8c9ec4a2f3d65cc7f0262d181e09db8a2ee02f9c4229e1ca66b0fae4f648cefe2177d5dfe15a7ffecfd1590afaac2c4b4f59cc5be6c077346f7488f72db9a87276dc4187c7450883e0aa8ae10f883e3c4a02ae1a97ae890319c60989765a1c8bf678a77f97db26cb5f017abace88f28f10e373bdf990ed78e7f60ccb6b4cfb0cd8d02652b53a06cbcbe1f2b6072b4c0abf093fff3e526c831a25520d376691a73afc413e1712606e1308af2dc965b000e55c8fb12ec7fae1cdd1a1ef2bd10292efa207a40896da29c6f0b0c0aa0352dc94b6be2e0c01f70ff1ec9a15d7908f8dc299126a7637669b60a8f3ed170a495087d371ca9932ed6cd5b1518a35ed1bdf10aa9ae8d166b0b57aca387d727a87fea09329687246d8164ebe4b1e817697ad8a4cb982dc80febec45673cf7f60fe7f0e4734679bc91b42a4c20965ad63ce7b2d518144c4835e354191d9eaab9a71dd2b935936c8e27fadcb9f4d2c4e5316a78d9f984919e155815c3eda5199c43875af806286b326d3305a13650bcb5ef01e2be99ffff7e38316882eb37bbb6ec31c1a4ca72c2be0426da6c0f2f5977dbbb1968fe6319c907453cafc37161fbf701fe86a21ed5b6cb9823203993b920ada1ff91a6f4f892e9f3affc2ee1b7055bae1734ed058ca109f40a1e84d6ae575edcc0838cc2e11280980480b849d3adff6a4146f81892b19748eb95f4b45e5b5727a05d3a1e440d78859e0d2a68d59917148a8488cde42bbe1799b8cb534564ed047e13444f7c3c2d7c51be508c40ab169f6b75e86a7c19ef159d0d937a7c6881c9e47ad1cc4ee893483eb41e44b98c487a3efe96790ab1255cfe52fcbfee1f00404bff9f5447271288fbf7c6ada7eb891405da172764169a405716689a546c3660c74883b8bbfbfac42ed597b430f935add7e71ad4f0164704c871c49e4acbfd7b6015995de0393d76353fd7050a3881ad424c1393cb34b1352919bc7a73329734036e80f45b938eaef1ee85d66f9540f579995afc1135b3d2e9b50e3f408b8797f56415b7969275d975cdc50f88528f09e0f23413ffe19a0d7b06091b2a16980cb20906da11da234262256881a803f65f2c4c7e2b76b7f30fd4d26b13a9afc7982c59edcd562504f9b0713a9214979ebb570cc942aed8323fd08b1d27e67c582c10dd21dbbb29f6557c740aa467629e7f6befe2ffca0fa0f136364de4d818cde14652fc8b09df3e37981efd9bb8df787f906907baa84fd1a0ea3eaa73040e499d671047bfa64554c04b3eee82dc7027e649020bf8f9978f2643fddf7317a42336996b66463ef9f5e2ce7a3b4254d2134c8ee24deebd5f9171f3cd4a599685de984d40925ad51c4c86f298b5dc9f822d98035b06818c72de886acf9217d04cd4fec312be36db2a01be87fe42d604b83d4eed82984c4bb30140c590701d0468d878a39e51db787cc9f125412d05b3be17ff796a11cc0f23105421580ed765ccc4c86f96ddd3d18d94744f2b5939f8b6de08df7ff19a1f287ad56fc9dbbb0a5e116d76f43c0558ea4aa852bbfae07238821348d236b0464fce927b00008ed1f15c12577097c48c173f5b664813667b2017f27fcfaec4c327902617751be132aa9e173f5d6d30909f4b52a36786dbb1ef84db4d77f5db1eb55c6ab4bb945e1d60a9c2a2a98dd8f5e207679cf0f9d86add7b0ebb907b386829d5cb97869a56f2881b37060aeacecae3787945a1349ba1d310b9ce626b750cc51a047f062d700492ccfd770b3e036a46dc0591b6dd57f36c36eff69b45da7d3c2658e92da2f355bcbff321ca1813c4d60425bc7516741b98d9c47218563ea6662c40166a2905570ac27e26bfd8c168a0c99aa3783dca8ef9ea27f7df8731eb0df4d1c103b46ca670a273b32b16cdc53e5face784253c45e5462936b26a940269c90d0142577f770522412fd892d5a5cb0574e5dfb1f3450fd5d0751e5c03e0dd0b65e69dd5237f601ec911ea05fbbf662ad91b52f997a9a0d6ab0d57a9ed6ffde0930f636062579a11726368000f0034b35e56a0762d6e7c7f156939a1abf223a0c183936dbeb9cac464b9a6ba34cbffec9608e07fcf49fb85e0618633a92069f1ce0f01b5bf4b88f084900ad8759a4cbf1f03b81900806458fa71a76ff92d7dc05b51d09871543224664cdb72ed546a16a46273097bd23b18127d258481961f6bd0750a2580c6ef3349b2310d843bc8653944e48fc489655c7459d43fdca5304baf0156c8c70f58b167521018cd944818c6de640c93e1c9cef0813d9359be576f0bb90026af3410ce78ddadb8ebfc93d400a9bf6394f4e25859b5d3d57daf0f5555dc1f3594ac859da7bbab08b3e03d149f85b8af31cd8e814c06bc53c0665ea77bf763728e31e3de335a4f3315d1224a8c12e322f4d984a7c1465a3cc89ee5d1994edfbf2dde392516c696b18e39e71203a70b93be4d524ae6fc259380f9d9023f2210ae90d847f47d335f5c98969770eb237866c911b4ebb576c9009334923fa4ed6fc7052d1380f4b2a4f4c8c10e46f042f746e98d21ea971fc899f23d846826bd21cae91d9acf4be4960cffe94b541521f407b29046fbb3c107e492ff1fad45470426efac43b803bae77a1d99eff644bea35b0bfb0fbd173647faddc418ce8e4af2426fbef403167a599dcbe7d4e87d9d5a7a6777e34bef46d54462d4408125c38be001351a106b26cb42a71108ad0965179fb226b43d6ec4c37611f910c0b9d1be1166098f73b41df3138ca5ba885ffda1a85c26a770d2134a3736133bd80cac028b195826e0d22f8446b9ec404256b03430e564b09f4ad605f9e00d44dfefd9df974165cedf9c8c9ce6df5194be61f98bc36154ab3b51188507a5fb3f2effac6634f819378cff9606b7af6add2ce709ffa8b8e22f54c81f00e9bd00e81f16f57b9fa15071ef4cd0f355e82f8b55bfdd4bc3b781b5d7cccb868a904cd2fe1d4146f651c1c9f3ff1a18f751ecfe5e704cea377cf21f7a65d3bf0fed18f9fd96f4d4598fc0c675869c04ebeaeed7a643d053b3bd6622e4678900b50cc4164ff2d4fe41866a6ad98286400700e9b1520047e307b8e5106819fdfb07748918027873f00bfd85da5f408748629ea7fd4c0ba19449b0f321eaea5ea86fd45dec8f72a2721cbc7f9a31ea6d8df5158d7db20397dfb8d41956b3c63d177e89fd1d4bd40833d303a047ccb0e3db8fff6c56fe1be7972974ce5f2daaeef4e320d70e1a9f45cf1a2d45d60d35208ad6bee494bec23d73064e730a7c29499188cfbcfcec50416886eb02db6306a80c1ec430dc185e61a2f98ea6c4ee067fe0c9d33ff1143dc99cc4cfbfffffd70bb9069a521821a8ef5a6afd8bd1a215b2a375b4b4cf3a0039356072274ae46e1b026332280a897f2f6dc431d364a39fd125a6069ab01de9a3acd15519abaa0e47961a60fdbdfc24ef7b4c84291633d434c1ef4a02c58e11912d394ec1efdfe441b1eda2dc16dbc7add7505a6ccc0059113744060e493b07522e8eb682e0603daf40f9d129695f89a759edc436f9416b3cbf7b4fd636b2d40651154770978f195a2f0beda0f7e665de1325c5279ae6d4c028c2f5b482c54efa5764de7d01c533ee16203d90da40b3bf84e0a4742d501641c6101288b0897c1e4d71fad52b12426ff42d50ad547f215d8e08fb9e64086bb1e78bb9efc0c18e85d1c7332395011285a2cd97b6ba4aa4b83a64e0591b07a2ef03d452650db26845b414ad5a2136433f69314bca4125326d5598a565a24538b6b35e7164f6e589ffb2b55e70adc08a48340aeec88dc922283ba34ef4dcee4bc1ac3691947a18de01c93780614c6a52f5cf873ccfce327b85be6c3c9af8ed628f95c7753cb5bf38c116e5747905512125c65d07da810805931b2e525e68dab7ad7cd632554c9ffe6354c6a58c6d8e10f308dee6b2e933fb00f0478dbb922e4e02fd1f1b20c1f3f82be80f9af46ab76e4265fc71a967a16196c93b793d2312bf00d10a35d0f11fecee6f0564208845d1415a3b4575027209ceb0009e872a943a5f74fe0ff316f6277a61fb654f70d5ea95e2e32e1598e83886494e177bf86ebb417785008990d5cb41dfd6e8da77922d966b1a8b3725fdfcd03e60a068bc27ada029f73610e41c04f59f39e57c282ab03d3cef232d6117ec858cfae15e110d0067c4f752e3a3b09a5b49bbfb4a0070cef44fe6118a008a28e86a40c62b18c97cfdb7da1cac5fa4b69fada290089f973854e209e3d48b08f65b41cf3bc0f03a9ee84bc98883d786a6e3c484e0c583cc5092a55505fea4b8cc820944b33350718c5618563c685d71d7adf791c015a37616f27cdee7c84074d436df23491ad63e56f8ac536b58095836f9e8504d484a02a88652ee63c865671e2ef5af30016b64ce1c6310945641cff1f07b932c5354274716041d0a71830a68648803b604608a2748016a9f964e206e3e618e4aee6f446ba70a9668512138353d7e522ad8265e72907d5ca7ceea745f6f9e65c9d81fc2918e6e39114ffecacebd8980ce8c07f95b93f1cb08b63e251957b5ae2d3b9b47539864e54351ca49aa8e88f2b71283a87deadc112fe2b3adb87153679cc5d810bf72772ed60e65aae80b06fd65c2bf6510ba1e257a9f3a2766e197fe1b789c62ad8cffac57188b044d043f0dd3015377c831717287dd530886d6d3c1f348752672941753fcd497c3131d57d5da0a38746d45c738baf2afc9bcd3e793267f8df0ff7ddb91fcd43fb2013eec57f23faff969b92108fa7d0b2526572041a2ef73e6fc8a82f18a12038953b08fe27b43e7297a2aa50f97909362ee85a362aa6db78a3790684e546691da1c5633a893d5271b846f1d6bef047f514331b441718133ded5a03a639d064f8d4a19b21a70ba1bcd75b3d207f601817fa311295ae9f3d6f59f807544865296ca22d0982a47f25b2d05799e4739e89288e10e50bece584e1b2694d653a8068f744648bd95f260a8faab3095236d8f6c8db483149ebe801bc3110ce1ab9233d71018fd282d835b8ff247f18fd7b93812a9399519c63652501dbefa6d3545ccaeae3bb14dfbca98449e4bc7bcf0482567c45ac14ac6736c99f2a925a2f15a7ae56bf3936a3ba96e74fe8fdb82a54149d0238efc97f00594abae1b3a0c4eb1009c7c1feb9e128f3a0db4c6b46a5d8bcf281d7cc68ac79e5928d51ba2d53aa23a1d140c33194e578f23aa6b52a6814f7888c516ce415ecfabce99ba338a690c2dee024ba9b885ea51a4fea7ff9d516357999a1eb329c21c9437cdd89956b15f888b38f04b1f58a813345b37f479a40495fefcc7c5a86ce1611dfee76966a47bf4cb5226a1975f741ea3451776a90efa7ca567a02a36ca9029ec99d1adbb45ec2504b81de7d9506b4ed7b2b884a9fdf19a3d924920eff2e5700600397e826ca440909d9a67421c0013e1186da16de806742b6b66f33bc8f06887464955f2723c2fa966280185ec7b8ef27bb7b5b3c5f6690760f1c92064fe716d151933910d75ad318c655ecb303d02ba98e92f22747a107b5aae0ed0ac3e4d6c02c8bfa56b12aff380c87f828dfbc0f30c3a4010dabb6826105be701a060bba9d52e60d44140eab2201a7dee1c393142d9ec93a2d458a7e7389ea314610f1ec40b6a73e1a9973f65fba0b4fb0b014d26501fbcbdfc81e297c9b3f4a97d6003d5eddc554648c74aed2b83fa608b6d3f80a21425d0078a1079dda33962d7bfea1bf6e88370df0e128590f46b526ece7dc0de71c03f3f6fc3f4c186099bc122d4c5d265106ce4ad781fa820a107b51f309384d1feb8340a005a4cfa415a72494e12112e61daad9aa1160f941089a31f5eb35a01384230f017f1eee9553f79563fd563bf15f9bb481b39cb5c261a5258cefc17488409939820ed2c61f0d665329f2d90302d467438e6f1bb55e955df3b810925c587ea3702b6c2440d8cc9901d8d7ed6d0a819dff4fcc6cc7630710b2290c1cb0c2640b895416e9789e331009b550b7286c38facbec73dc41d26f0d82b5f605d157c48ca8d797af7bd024d060a26768c1596a1b62ceb0641189830caf6a49be7d7509820dfdd8289630c2e6a0d0132cfa79ca50aa205d3a30b4798b05465f2a67a0b34e14ffc50e4b15bad29e5dd337b2a60e2b2feb6bf0b2cab58fe385199e69e165984ae9b9caa615932268b8c7151e357951a6cdd2b0aa71b73bee6c9db6dc314179cc50fe361c61e4da03c97adf32153f0b0a68a98c80733b3c010b71c1434f7a7c4fff84df4573a2396323a7ac20427447b7554a16869f59e816f54f88fa008cd17099e611ee798eed004d4aed19623ba8b9c4693060082e8ee58d4ec5a9756cb61f47ebb5e4e881e9de87a5fc1aedca3261b80465f88735375731c2c102220c8f19b78417a6266d7dde7e38a98f6ab85fb66deb26fd38094706a68fe74f4819cefb0267e97e313d9a6307db668267a8e95ce755eb22135ff46f9a9947d4cc4d43b0e3cf303ccc93db0aebc329f6db40e3dfacd13963152494ab36f9ffa50d3d0154f86a23c750f02f514781978ef40f29b0a16d477046047190a5d291d2f937a8a70e390d5c002c865c82ec57cf838f69be602cca0ab755f370117dc80374e2d5d62fa6508574e9ec3fa387af40e7beb389584aabe0d9d2f06d410585543fb367df68b3d67a2e93971e8b93b730ea569cd1679e972beed8f40745121343857e91d0dc11c7369c70cd01014d22bd73c49392fb2e5a84c3668a56fcd8594345320553b2e0d53f1374730fa96cd632aceebab06fac6b4056a2ce2c096a9f3814e38cdb75233235d80599067cd5a0150ebdfd369692035f8c4d947884b09c74b575d5c1bb5a6a25acd19f33e5041f81e88020fe7fec0832258f0701e0935ff8de2d2f75004fd327b7788bc4425d5285550dd14763816539e4480bd2b17866d29398b75935b997aecbe7ddb5f035182d74d135d9f7464a33b58b1a0b5cad483ea47e10e2344a3b716e029fcf4fb200c4c03af49b158e18e61f0ca1d0360e08fe80117c87d30e9854b6765f5fb75c4a0649fe400b2774f5e4bc4bfbb7bc0d69d976764dce815c131e38c072bdf26624c2dbd2a2292b63c6effb1a91afc5acf79991d9408679b626dd8e04693192674e6549381846d7d55fb6f9b0511019c7f15aa2dd67357103dae67b9822b47ce949b43cf3caa61d070ddb4bdbd736dcbb3805ae83132124d4f028773dd528f624a6599e64e8f40bc1ed84a51bfc60cfb14cd7cbc0e0ebd6ba6c71a23867a82b054440a90a81895b070e37d9a9e67de75575fa028128e76f98723031086453fbd3dcfa357f2789c9ae739587e05ce65dae10474538966cfd370c69e126dd38b428f61a7851a7ad607e38911bac14f64c669a90f000ef4831fda505969600e0acfea11e8f12371834bd678a25043ef392337bee584fa935722e51c99a0e8d372180b2fcc791f8f8a97f30602d2b480fa5bf9707172e1c8080babf474dc9b79dd1a0c96a409debb0fe61d5ea4ee39cc0606746e5af403ac2a497ddd890926037e617c940121df713e40374fe9e53e530f9ce01678316606f4bbfc1acad0c9f8e62158662b6abfc6988debec158285b8725e00d39d28d764940ca051cd9271a7b1559cb2f07b7b1271ad38553666272e343e5520bb1b852282d8ed94cce642462bfa2fe2a991e8437b83aaacbcd32e7f7b9fb34a57bebfdc9ede5ac15048d0219bd6364ed12062fce0c9317d841c359fe64289498ba320a620774da8355befad7c0c972a67f358fe9da5bbab5e9aec5eac2720ddf3dae2505de0d15930cc97a997b040cea633390c31e1a18c5b62602a7979b1964f793ece1d1f58dc515c4acf19f97feee77ae1a7dce9d2a4c4d0b933f5dbe3232ce69fe9a4f768c0b78d6f16df0a2b15c44f27c471767eda630bff43c77a9848dccf9b5e7f07c780180af6f5bf39922f9759e8abc77cf00d43bc955537b33b1a8721a7e7aca9211188bf3f4ee862e4d59aaccfccc168d3ccb7b14b6c23bf69ec947a2bdbd96818b863934c38c010362647a9c5726c66a0e19cca68d71833516a09a69c533de6f0a8e5735292eac6e810a123f3507b8ba227aa9c73ead05ed41717e99488fc30ddd56d5ba78f3191f82913b259bf61263ede18d404caf46465fc85cbfa54c78b4d7e085de4667ef842537b6cd6d8f85606190ef806765fa000dfc10d3f4aca012e62ea359d0687709a9f8986d2bd0b49e4bb421accdc88c2ad2c5b187f236f980f2fea5d67cbf65f8c776b6c99920f713288d0adcee0611be1a2959091f09108db2882df2d0c5407bb7eaf245b8f8718d27b48fcdee3daeaf06c84c06156d7ef6208c8dad826a264fe6cecd7fc97a6b07e4fd8c6ec99a0374d17c8059809da11640d19886bbb97e8d3f61ba067a7708f9545ed6c2de25d2999253d7c4889ca4bdccb2687b9c713bdcb969a804ed395235e9f2be77f49b43f3374fcfc74b38c90b4d14f04c16a3ca54bc0012e88f1e3576c5bde004752b9b81d42b7a0ba1b37594ce6f63d45798927b88abd09181abe37bd7499ee8af25fe128a5e2b590258c6139bdb7f2d749c5abb45c0dcc2463c081bcecaebfe20b910ecb4993e93b247d20068f7491c248a89c0243c4dce8650e6f8fe602f01cf08e530d05abf69c02e5c09602c1b1a95019e4a06328b3e2e727f5967b64f2120e6872d943fc14e3109836e3e6591675b76832f4f149d1e67d787f25829f4cb80bcebf900f94d6cee1d982a2e7eb44f99f15d85005379d1e2ca00cade190166407c26c1378618d3ae63331a3835f2194eae309cee3fc724822c06f5c9d691dc54f7573b87edb28120f23bfc7d3f38336c899d1be604d3c9b4c13f61b5cf2f05f7afd818899dde1b72c32734b4d1333acf82ef8eac965a04eb5cecf1ccc8019eb1bbc2574e67846c30ab0438a9fef0d75ed5d8f3bc09a393586cfb679de97b80c72281ac2bd1c8f15682e73ea472e235a8a5b9b9f3183140796bcfa40e9080b4c1fa78ba2c857163ec71f0e914f37f457b2f9fe1fc33284848bf5ff48f697c12a3429d2128bea06cd9bba7f52cfc0a3da8ceb6b9a4926f5fba1cde0e99bef71e8536bc0ae30cc34fca4ff1f4471767cea197b352e58238e2a9374f5bbbe8e9c33db98f070356de6d4420103eb99e791b37b7c55046803dbeb41b3937140c6d55afc1be5f6e200cf361c9c99b53e3ad02581fba4dfb52f837fddce7a1389830a6e9d051652de0dff49a08e8109d81badeec4ea87fa5fe150667c1047058c2516751b1bcd048fb050d4836f194960872d86354b1e1c9c368155a90dc1f4bb93d245dfa73dc23b9925830302888cded4026d110cf607e8d674a9f45de48507703db9a1226c43a2cb660376a638e97c785ed9374848d102449c080c183f576fd7546128df7a2a1788987d7897513cc248d8b1b0e78e972d495b969ae689c5541f2027afc5ab45ace1f40867903954af62b4983a4060ae71f120b8ac3a80a90397edb35e815f7db137066b7f192c375af4e3bfb6ee4c3fc216530765bbb4cbd079fd5dd260cae439983aa07282891e28bad5d0ee34cceed55c983a584f1374cbbd7e3734d49534f02e5ba8f7a998fe5cf330f3aa2e1f00d03cefbb27cc4706dc038a7144ee1c65f8d4013256b37c060ccc6c5229f0d441dc5e4bd7de6d118a5e3dafb6e24e8ccd8158420da88a8d161b290196111b47ea5e742c15c85609062b67c679f3d28698c45616004311900c6282b828fa4b9987aa4730c9a0910c2d9c5b79bd508338a10aab36a621fbe58596c5a7c6c0e6715c50208a8849601f3323af94a861106275eede66762922820ed49e05b5fd54d374471f68bf317cc3b42db89a26d4d8e457d835fd97508da20b5479c8f2b347e60f9b38467aef8cc07029b67ae981bb825deef3c26aa567f4524be34aee7b6d400f8b64be3f8902f4e07a3cd0a745b7333fa24c3d844c29aaf1649f1324e1443ec134357deda2f21e0ff1aadeb176aeaeeb1a4b4ef7a166689d1bbbff8f38afda7e3b4f08837258dec465b30ef11e1f12c6e6d7757806f46c3f89370ea02ec3b5712dcacf83165d599393adbc0546e054d66d75791725e1164c3d95a5ebbfa7bab91a7313a445a11641030e42e86bd7f5757ba7dc89a6dc66ea538c5bff9efbaf0bee12ccc1675b6812f9060e88ca52b58e422af94d7335a77fe4ab1cc5e9d57bf3a2cfa8d74193052f4e4c4b87aae260b4e5176aa65e733c7c1dfc6fed0eb155c699ded66e9823acb76b87f59ead7bad1b0ce245b52a62257b4a3fd9af6b840860f276364f5e1d52b00a9a3df1dc6766dc1b4be693a4907a96d706434de83f224e2b40089af352722f165d3cd4cae853fb737b3c582239ac6297849e628bfd1fdb942aea8f89a7387d1e321c688ad200a6572a6f6c46bba47ad0442b51c7715b2a0f9022b9812e9ec2ddf3b96ad3bbfc8270415e480697ddac3a0ed8bde277ffb54b70daeb4d5e97ed1d248d8eb8bd4ac2d45f33dd74b0a1d4268caba75d9a86dc8475cba41c16eb2dfbc91b52f3e9cb1001801204289162b4541385aad3029a7f9e511cf9b8e7a18cfed1fad8751ac57cbedfe4c27e965a8d839f6d17674016de8bc577b2f0bd58bf238bde67edfbb1ca6f3de1801d03a1e0d90adeeb3933afd146aa094c52a74c40be93a43151aabb92023cea6cea53d03d27504256da9664f6e444c35f1c6fc4092ca56d6b6e18446ddebd6c595b66ddd43e1e0b490d50c082ad85d505905e6904c4e48d0b8a29e3bd86eeb82fc26d1f9e2baf2e094ec642d59db3f7984ee5b709f2c1f352b70a13724cc7d5b8758c2fb106b23ab6d93b221c160702dfbb0afbb90397f057a636a7639a4e47dd969987aa05c24904423456b56eb79186fa2448551938ed07eab352c3e51ee923ece6eacabab89dafbb09faf81868509b0f5cadab17f5703cbc6a933145f1cd42415cc2a79fafa0402f73a40384c0829d7161aab380611cad3878fad51da6b525e5a1d08e2727832d9de13bd113d19b24d8fbb42af5a07d0d2b0dbd08a38996a111cd34f4708c0fd71072f43616d0027ad725f0e1cdca7b58f06e2cde87256610965021b72134eb18ecd93c005391e0392815f4e988da8df219a6a592d9453574999dbc0dde82369945313788473f32f4fa3761aab1ab489bcd0b59edfa1cc8fecfeaba8ad895d01a84b9da28c2d666f070fb1bfc12eeb69ee0a8a852d0f56d6774dd6dd24d53ca2139d9e7ba4885ae9f02836d6267e77a09ae5503d0a10d02835286d65c2f5ce3bcb5ed176cbfb98e7a0729c267ce24bfccf5199d3244e168854e9d9fd86aa523a1d4450a6ff4754ca62a00ff61e170ef1cc3daa23c5e66271316f5e701b00d6bb38f0b65bcca666c3eebae2824684eeab367ed388036e0200e16f497808b4eb3b56121b4330bc736ed796256c5cfe5e358971b9e43330d216452451511fb326d61a1878f63ad2f5e6169a47a751944c14fdb6c441ffa8754dd12d05d85aaf9b42984b3dcc4c3b29187e02564305e887392490c2f25d4eed3010d3c381427d269db7657b01b3c6a1662d4dc76efbcda1eee3b1a11e1851b865a43db85cdfd4590c146f1d6b8f6c8a67e15625833b055b835aad95f84146f1a6a0f6d1436f3b7d36fdce91cea1af55d8cffb74b9a36da829de85133caf228c4a8bbeddc7bb679dc7534e2848a370c6a06b68b9bfbbb6083cd824d438d914dfb2dcca86660bb70635cd3bfa96aeb54bfa9ef48e7823cfd5d9dbde512ee881d0d52ccc7224edacda3fdd3adfbd623211266587bb05db061a8c9df09176f1bd50c6d146ef237d36ebae95dea1af55d18efb74d34b6da62bbf84143c8f07888abbbefba79b679ba7524628416b78c6a06b60b37f9fba9379cf44ef59bfa2e88e7d9a45bdb7d915df8a03164782cc4aadd75dd3cda3fdd3a1eb155da5ceab6ebdce95c20afb357b3b7bd845da1634388f5a88847758972c47586ba45da8ccd54db6da9f61b52da36a4b76f4b3db8f019647a14533eeb98b83462ea04aa72df79e369f774df51c40929d818d41e6d176fe62f4107360b1b4635479bf59b9041eda14df1a6414d7f23b478635c636053b0b9bf051fdb2a6c1ad41c6cd2ef56ddb6ea39e9dceab6907c26526a32520122a7e4868b47464f1f761b5a85a96dca307182bfc6393a57c4f4e6ca044e8783ada1e0ff8db55ddf6d341d902f32b634a283f61639a323ce03c062f49d9b8c8927a3ddc1047e52bbdfbfc248ea702444a5e0984500ac6f77867fa5e3cb923c7f1ae4537fdcdc375225ae0e4671da5f408454864fd9c6db5ce039123e5d456dbc9c8bc23cb65b7abbcf5bb129747f35c7751607ee36eb3b6616228f42cabcdd2f4e831c631a88d2806ae284d65bcc4acff155484a9d70c1503f1238ca35293d97d33dfffe7ec0cba2d22bf6f13cf67fa63431ab1045dd27fb675f8f4ae0868ea2f1ae9a13399aa046f60adf3fcb58873959b8ba08704185d3ae594771364dcb2bbcff2c5b07374f05c19d2d103e147076107554c7c2e533bcd011d8a66a4825d6aec21afe7e7f25e9e6ba084543b24530bdc140ace121b7467739e93d13c6918cb30e7cac4fb448bd5027bda595085eb9f5eaee974842eeaa8d7eb56216c55e94c45cf827d272112bc69cbbddccfcca7c93f31254143d651c58a5d0f7cb0b5f65aa3a1424a93bab90c9ba6b74045378c45b6bed739c014041fb65dcce2642b33510ddff00c21c11609ac811f1d475356083836d217e96e81adc889f8e83cf1e7fe1a8e4e6c113d9f08ef10013aad95aa31fdb3600c1ce933df6fb46c995df5d2c6c2ad77cce9256a6540887b0e7d29f0cd65506138f38a041f2bb42c32aa56c16ca3427200747a9f6f791cf050c24f15b8dea9292b1ae1da0f9e270de12d4dc9064a91ca16de994792223181a7609329fa79821b56a188444d64c9a1a06a3de7144b3a0bb0d6083f2f986c4210fa2f610f4c1d4dd19b08ee791d10554d9e70ce7a5ddb50d84859b1410d4a7c5a03b50bea8c235588bc7be412581efe16e2740cb5522eee2be741288ba02c9b5ae85f47283d9694965756bea9dec03cd20970147783e7a4aced37f6c48b792cde36f639f094a4079a7fe6f54cfcd1930e27e04b5f63b86048eb281ca6d4cbb5657fe6f661f88fe7b6ce95f22763bde635fa8636dbc40c632c834ae0078851fc10edc31c7d094aa56be7da1969b27fd2a63bed74d92813bfbae4b920c775e4c95800779fa8cd2f4503de4b20ab9ac64db83b64697c385d832a83aa2ee044e90388ffd6875039eab26d4bfd2ff2e3f616eb7bd526559aae079c5849a1ab998966682e6dca3b2b0988910b63022cd1314b3c6939028188655e566130e176da6920b1dbe6e8fccd5583d4c44fabef4c4fef6434a97795a3f993cc7986b99ffb9cbe1afe845cfbeb6ebc365e56b32c2943771b9f9f96987abad50279c5282843d5130c19eb2eb733392d73e44f2baf6909daf9b95dc3174ac94635d6214fc7137e64fbf35031d6366ae90aa75875178c555183fe6d43c7032c6e78f3ad66d003875a891c218444f792450238add72eb409c3a87909a6fc4c73e1857b22d5679e333f7f5e1e75abc3d85fdff1c6beba1faf072a6f49e281bf912838993d197eac06f0b9fcaa227d31763d174ec1d0f84299b69b0b9a5bc6ea9fc10134cd015230800a44ed1dac5c3fd93fe319bed0551790b395caf8786147dba8c885c7f47cdb0d5a4346db77de067f578ea871f02eed6447271fc3cca2c7577a1e67c4d34f7b3786239991ae00422772ab925cbc93ea8544d935afd94237f850bddfcc0947c6fa804767a073fc701b7883e0b850710291288cd1c37922ca6595498dbdc929ea4e56c134b61c80cd548ac112944e171898aa13cd9fd138ca5eb8073a45e45a075991907997df664f0fbd7c4a7872ac7db3217c34adccd01a9069b229432b3bf065feca6c8d6e420b94f9831428a63b94fb764e3a08b4363e0bae9e5d93e52b058cd420436c3cf64ac009a181e4d9874d3b4aa781d4b32febfc81d31150beb1f5c7ee90f7f917333f728221cb47f42c2315366c6909839d9253d40269254dd210f69e0bbe4176ce88a8fcccef07117de67b44765f7e559f46676b52a461f4b7d0bd570f217a56f2f9c7a4e8d65e3b7b2f5559036af93bd91c7536eaf00d360fa25f42e2334515dc54f30c9975d150ad432dce89ee57c2716a5e933ebbfee282d3e0bbe6ba83c450eec46ccf581d6564ea31663e6bebe6e9d3aa7c2a43da657a68c8a7e49a763b18062843488374a6fa53298f4b7a54f93fe71d4d73d0bd7848ee1f51eee9f36bed019566fc2f5131f0f5dbc43bd89f2b6036a2cf0fb2feb1b98bcb1aa8aef3b16b1aeb78237b59c4725e261ded417e932827c0f414245f14fbe322a313406b5cb2b4d5b15f214c7fef7af41767ae6e6103542ef550a2d352b343f0286cf4365185143ad3925b820cfde53807f46b2ad59166588edd6a559fa38853fcadbe59605d5984294309df2fd5cbb1215283c3e691fb9e2e2a8f7cfa2b391de2bd564268fa66c31831be544fc71808f5cdd08748d69a621f1c8bd36f90db1842e3cf8f5ec6ff2cdeb99167668e2d30ad6c2156370b670f5fb45df6fd1321c6b9761d2afdd3d728858ece387bc7fa03f88ca7c3a8e7635fa80628c602499c82b8f39ed321c07fde13a5608b2b51c6c52c0f86a72f125b921fba82779ba6dbc53c2ab36df2b363d331b3497acd721959b622e19ed93b78beb1d88738cae50f48591d378d72ee9c00ba26c8ba0843a676ad35b0220a1ba9784cb946ead2c90104d4cb145fb37e4e84125debdb5a176dff4f8b745eb22b9fa36a12e59e453d288034b86b23e6f7a7ca7158bb677802ab65bac3e98670a515b7b9233cf24249f1c1249f6fa68a07fd984ee22b46dac10d0cbacbf9fb12a9cd1a3f382a70aafa883de43148e0db6611df9c4bcd4acc58472e7ada0fe854b06dc1a9fcde1b8d8884ea4f95cd8f8596cf16b143cffe135ae5066e51a4b15e7b23522368b9c350aba8fc31a3795df18aa6a8ca39dfd15f24aad24c29ace8826764f605565e8f6ae8fd1683910a3a5d39613b669b7c9aff112c459ce4d9afc3375d14e574bc895cd7cd7cc1669af8e5f3bf76c8926b72706bcff50f7e9a2b5c7219e63f1ca442de030d299d8ce9f28c81e1967d2dacf4085059097034fced232bafa01d257258983cd36ab1d5e7ef575c6359079d5e8f01b947d42c6dde1460a4086d82885678e3f751b0723bcbc0b34a5c20f8a96ea0570d60b82cb6d7292c6b79ccb88b7583d41b6106581905990b25f994313b06c01b9f8d7403e971a1a4a9ca9168f66e20c55308d406dd882c0c6008ea94508223c20eb6299dc02365828d651ac212e110845b365f655c856a706f0926896a4d334fe53841314f679d2f6b81207a24350067c77a5a4166a72663dc6bb9df6f122324bf924f47b2e062d6030b45742a9e714bb7e9c881b6824f8e545d3608cf16f1d3301da35d387cccd92624a7c630b6e4de5ac5992127b8925161a96d398cfcc55fded4ce8d98f4043cb36a1161dde1a375cdd0f5351a71a74c65dccd5534562f683b0be3fd3987512df1df511d25fd39088e9433b1b024b1209b9dd242aa0d63e4252dab1526ad3d0a7ce49dd21d4c3e94ac1ab4cf34e87659afc2adcfc49577bd559255c7767c7301291b9338b3a4a69876a3a087b0bbf11c3e0c0af95699bae202e8e5336564bd4e216878f62b634e264b790afba54af13d4548c68050a2d9286690f3c3fb543d832ab3a0116f92fb14e093aedc21a52108f9c27bcf93422c1c48b330614a354f3f04f1a551c67ece17c3a11cef5f9f16c671ea0706a89cec1d8f3e957071d50c45767bf864030cec5d8d9b5a8ae46c1b6c1fa96c64327a199f82393a98498ac9d2d9eb5d138a0efed165a89177ccc1047d53ca35da0a5f39ca12da15f8341b3664f41ba9e5631b6f727a19a3bc031a6ede90a672db862bc1ee1daaff53ed82df4cefb803e40ca1ee9914fa73a3308648ebaf0c76f49ac05d068886364d65ca966f1d98c2382868e8c3349b046b0dc3e41f6957539ece701fc220fcdfa733fd9a3d4f3bba1b571e2bc6161da34a7b233980bed777646438ff5a2f9fbbc9a66851cecfca82ce0cefe38a73eab55684f222335109d68a34dff86bfd5f41e8fb1bc46bf96d898ee7ef44f13e4da4f1665f510386449bf2145fa86acbb37e425bd21aa4b1c50f38c43c1f96eec61c1679c93b453933a8421f1512f755c13a43bae7561a9a69a8c613c705c73578ea09250b580d4e6961a1ac2fde710cfb8e69926508dcdeea396a326aa36c6b51cbc48fbccb1830a55e904427650d22957931a172f5db10d4f1dec4f9e42decff52a6376c8f302a679548d2ddebe51c7f62cf667004e06ae7ff57776701f890ba2bcfea7313199b5ec21daeaf1bb23ab9659eb48b960cdcb78028a3cadc5496962f4497ac5c6326bd9447380172b399a6fb7622b1c07db1959ec08e12c1683c15c5ea8db7031b3d6be2d12e95c7e167bea43948146a687998520d03e849b3c41d466e030a9d21aa386343c2d24ef4b1834850ba0b7611c3d010718e245579f43a92eb8a6d49afb5942c59c0b8459bade196557c1acb219e9f0379c7899c992f85805c265070dd661c14182136d583341767aa4455197ce82ce22ff62a23096ac610720299876cf608f046b06ace9096fd7c55bbcb5e4b715415505928e86032441e28f4b0d6592497ff57eeac6079abefafd3f19e1cbe24018a00cad6c0f536730923a51e0bbb3f171c4ac28c4c40acfefa11196d82c5404d69ccde662c08ea6a220c4f31ef1229a43ba5edecb84a175a47a726b72bb7b341233d1ff535dc908564ff75020e26af09c1786c85207329423c33ed333fcd2f136acc882d25694b220e7b73fdf23500b70541f992ded80cbea9afeb221553ce3a7253bdd7f07d1bb4c60eae894016eee687bb9975cf15d7425f1675e62a896589c20bd5fc477f8b57dd4119b95e4770d9ce85f020b39c3e5c87a5e87a792a1c3e2765acc32317d56e8f77b40286e0fab0c3cbb34a881e5070b301a90871e047b9f074d8d856c695a3e21e10e8e826318ed113b56b7e6ead5dd084ff8e9cf171c3000892477bc0273c68c5358ce78973b417b1138f73d9bb87d8a9a64f3e090dd8f631b7ce891a0b7e3822ae1f2e14691a92f1ce36885082a863df4b2a8c96abf0d5c751660d7730f3738f8047d35eb99188166544009034a48a869657c35371f42c8c01ded47981fab49c918eecb164a6c6facddb7a5abe8c15370f9be6a680216cbed45c3dd75d3ac82e5235fdc2c0869dbd83a2f13891e746bdd7bb513722a48a8fc6515c3d73a5b86cb976be980f305dde72092aa4a8812a8c7b6454d0016a85015fd0c8d9b51174a8c1e18bf470d949c8fe146bfd4f7fd2aa2268d20d29b2ec2e9b2a2aa3f2bc22242e526a61273c150ca2880cd81c2b2a2f1025efaa0fa824ac8698dc16190a24d550188dd240d32ced69233a5111c0480637ada1d5d1358d2705ee4f95b86b9bbfeb9c7904b28a6527ad8865aaab928668a747189b0941814e5bb10582e8deb87b0aaf057af34a197f229c5d7bac81d52ddc591ca1a99fe223ae5707ae2d69a12b6ba64197726bd66950e60cba91cba36fab4480d0d6cb917242cebd01291dcb6afab21aa61b54d9ddc7d9bf4fc30688be4e310face8ab5713d212bf3636013cff2312a7e6f06c15cb7263012afb1f5a937d2c7f16bd5369043f51db10ab6964237e0896b2c4f82a05c269d3bf56717fb7494bb236a69d664d76c878377b289f04ec653141641ff65c00e2d7175163cc6e856933fc0db10636fbf4d92b0ee5d59bfeb33cd1ab8e9cf67b406e0bbac38f653bc015244154689f4bc921ea2f8ad59fbdbcc6e3f80c9572b7d8072f82036c32dff37c393ce0c071f9be10ff053ed5daf83ccc4ec1bbbb1d03ac5403be8545532faf6a6d6a8af3056eb9474de6bb3eb976a0bbbecee391e8339af5b2caf4eda8bed9c7400d0bca1d781d67a36e32ebf80eea66c05bd6df1f8deb827ce0be1063213e48932cfcdb45a53f4674e54895ae1e845627ad74d401a91153da8fe13df77017c53056ae70bcc50107847dc1cb0169715b624772b5c0550da0b5789cb22ae129765d89105da1bda5222b6c80e9d90252964e5c598d9c83fbef158816500ff1e95af6b66b6bbbb8b5bd3b10f1c02782bae062352dcaa8864c10cfe0c740c5d67f3812d356479f8c5deea6fba8e7fbc731d568bbfb9fa602cd6877b567fb3ca9d227c20a00e1fcf234009d5a3aa05e684801c04f8a014012937675bee373b075842da901fc0032a9b9cbfb94304153a4478d121c2021d22a8e81041448788210c0006a52f197f12bdc550d6d9a6b0a7f90b8a183a28364001010a4c072589ce18a1df9d1b72e8dc08e30617fcac1997d8de2f9fd9d602e8a000bb53009b025c1d029c41000c10e0eb10206500721880124ae9c7d3f16b9f460bb9bf41ddf749feb7f8a60e69dcd590f509fdf6785d6b1abe4fb0c4ab6cc91f6d74ef0c9186ce106674867802a5d408da19c207437480521a04ed0c6181ce10b7330413426847004f10c0d911008a7e784db9f6692a16b23ecf9ce5fddf2f5fe51d972ebfc5acd29da56d35cffabf5f0460838ebd23c41334af9a778410811028ebf33898bcbb2344119d20b0607daee771303e994c9ee775fe60104a54c146063a365e3a01d843270040e804c0a4d4ea5aefba02c93c633db760e5b65e7e5d1796da3a747fece549ea3ea6f0b8b264b7dfc7ed586b3da15a644e3451d41ffbaa1300220080850e004c00002294d21f7bdddf358e4906075975ebddd4e7ff9dfa1bda2d7aa2f83a2c7506820b6a8526da0122c883b6367284db530708253a3f6ca1f383124a911cf140203daa2aa8ab3e777ef0412b680522ed6f2347f2c90735acdef1810c4abbceb5e3839253c7878fec59eb0e22c98e0f242a92cfebbdb6764ed2483d893b6943fe96a573c205cff124887bc69593a4ed9c0ca931d9a8883323b73f48d2b288b0d3d475361d93243a148d0e05a343c71bb4438b74a8c91e70b0070fec41450f69e8010a7ae8801e7c508ad554c631b59b6999b11131083f3f4fbdaabf739c7a25a45a9fef4bcb41279cf3a4f8389deb1fbba8c7ceb16ae4bfc56a6b5659b3260f9df23c04600d1fac71ae81e1e10c5b39c683750737dca18b3ba0ee6059555d7dbecfc337fe5c4fed9fdab6db810476f061072728b5f6d97f8cb1ea00813a7ce8b0c615715d812449871a3a08318733a875ffdb4f9236cc42e66022872470393011072ac401047180020e6a8083187020e1e0c161006f38c3faa03cd58efbbfef25e7bf1ab2c6faa3cdf8d5d0f5d515095ad09af64c61b0b41cdfaf862cddf7a77b05591aeb4910679cb1a84307ff930e1db58b42064686e644c4ca2a6bf23730e10626b881056e08811b7c504a6fb6ab9ada7ddcf37d4938e66a946a44a1464a1bd0d08619b421056da869c300d8e0043664c106d31accb00619d8b1eee7a81ab2ba530d75a2ae56c81275d665a8e3fbfb971f697f736e572ab725e69fde9fc4c423cffa0badecc849d28623697fafc1b3066adadff9a4063328b5901c3172e4a4862e405beffd468ed4931ab4a0dfa7861f468ee49934c4a1b437d250461ab0787ed340a25618ca3a576e47d5c5213e6bd0c0053428a1945adfd62c9f0d5d2c34b854bd3f49c8b47a202ae10f593d10d3ea81fcd5e11994886788e20cd7198c380300d22083d21a97284e280f7572f95175af18776d1666e600cbe7fc043e919a069986cc8d3474a47143c45997a7f20fc60c25308319b8194c94d21df486190c500635801e6f9bca596aad2b2d242cb3461fcc33f355fe5c48edbe94263d6c6bbccb30843228a1f4fb60657821831bc81005326851596ec21ffba9c9f021c306c18ecbaf7f6363c620833168600c7c0c633082e2aaa392469a15ca1a085ffd0d0c101831b0400c1410c38d183834ca80061768d8508ad51db5e3dff1265243fc07625454d551378d645db5ab218bff0d7ddf87427db7fb0cc3fd379fe0c9cfaa7bd79a46870e1d3a2c92c440c2304618aa08432a0c44c2200ac387523a05bd718619676ce00cfebbaff6e3548eb1f57d583c335fc56ac8fa3c0ee6b9eb34f64cfe79eaf7a9f1cc7cb5c36ae8f3b20dbf9cafe6af0ebf2aea8fe5fb3e35754765f1cc5c1daa3ed73cb7a369b209b1a93bdf7c7f79f2ac436ebbbd5d67d37536603083522347aa75a3753f81610b7af24b6a1eab8e55bc2239b25fdfd3060cb8fed86b549f3fdca7aee93a5388bbede679a37590aeb351d1a32a47af7c61095f40c217486aadfe46df9357d57f3ed5e7cf53af17b8f002492905426f7881892e58815afb43d64ac4baeb7bd6fc0822491b76ad69baa0bb60ea428e2e14a00b36b8a0072e38810b44e0c248698a4ac5615dd705bab0baa366fd91a40dbf4aa486ac8fa77ec75b55575a4216bff6f7fd1ab23e9867a6864c2a1587e579a5dee2f7d9caff66ab6fcf3ff6f3c40523969cb630da7cea3a1b93a9eb6c545472f4ca0d2dcc00a494bad01b5a48c016cc8882191aa0949ee80d33a430c386c5311ec3937f3e21ffd58c3db5e3ca5764d63d047fdb2a8a3c639bb2b5aefe86e332256bdcb3504616926461015890c2aae6b763ce9634f5d84d2bebd45775cffa6e1d9228d3fefdfbeffecb4dfd34b7674a6932e76f9ee9ba322c22e2b21f26982b8871052ea8555d410a2bc4c10a4aa8f57d682ae8c2783e8e63471e1f495a96ef86156eac00a40a71d099e3cfabd756a10655b0b156e4733b56a1882ad01315884005910a37a8d54f5def97b86f5d413695b1b537a6308429b0600a529411074a911c01656d9ebad7075dbcad2e4308656c80d6189622a7aebad798322c299881e4486d81d1955bd5490a3190c2114a9ef9793e49c1868d4213a2708228040119396285b8db52f7d3e61f6da0e08512bd01051840c1e6096b5024472a08d4c993afc8be53f72f79ea203c61044ff041da90246df8e3d8b1c5d165b6533c81004e3803c911909123966977afd9d63821024ec8714213526842049a00628219488ed48b2b6845e2c454ebfe8a9f7a7f2adbfbd1bd6e8db779adc72a5724c7fa722678412945d11b4cf8accf35b195b2dec3841bf434c94863930106195890e1a1140cad79135ab25a6eda713faa5afa72abfa416f2cc10ceb7eff6deeef197f364b30c28d258c9452bdaba875ae1d647fe7b372abbabf97e0a15adb28410d6add7c6af1471b257c9143095a506b7f27b1a8848b523a86d9867e27a10c9452daf7e364fc7d2613495a96ae33a5f8aaa6725b6d54b84a8e5e31993e1e95322c620a727f884a8e5e31dd18e30263ec1803014858828447821124d8b821861528a5968e2f35d7c1236bbc22573abace3a2a798a27af27ebaf2db3c639fcb167fdf8fbb48c656e5d57e497e2e5f7a3aaa6f2cd389f2cd07d1069ab1846c4b08e6006a5d4d23d95710c4b91af86ac4f56e97c934ff3c11896221e5bfbd71cc101378e20802579589282251858e204a5d4e2ff62ad2b6bea5e7ec79ef72f7e3584eddd56b5b598c2bf1f471b810994d2197ac308498c4085118ca0d66fccffaaee8aecdbc6b014a9ab6c61e88d305261d43028a5f486de28c2088af0004a29486f14010930c6a09486f40618f6061845dc20c21744e8d677454552afb02c2b2ae80acbb26275ae5423b5e3202bbe1ac35224ebdacf2a5c6af7851e8ca9d6bf585761c8fa326d7ffe94a8eba976df6a5b1c62f1f3835f0d591eac08a8d7eff3b12c4f0579b2225f7db092242652ad96da7d9dff4de52a6ad3861fff3836ebff8ba53befcff98d21ece1c610983084210c61a416ff3eaf0c73be1ab22ec7312c45763ecb5287b75bdd735c84e006219821436f082103d4e220de21ffb4a689a9ddf7d59075b38d61295237de36f5bbf2b3ae7abde127d387745610e95c790fae6cd9ed7e526bd0e3b89ffa4bdc4bbd5f68c8b779ce4ff40403fd710e7aa205ca8e07d06bd5151872cbf1fe7e6ad3fe9c71b52391da658d553cdbaa7bb695631b53adbbc12e54ad54b657579dbb4b05a15cacef83aa2018cf57b9adb57efc83f93ed417aa1daf1fd0532d9e71fd584fb5de82a9d65fcceb9b7cefbff9e64fc930d6c421eeb6db8bf270dc755ce4b85b6e3fd45743d5da27d7a488b7164fa03f77ffbeef53a4823ccfa7fa8a7cdfc7aba0229eefe35fed32cc0ae4968718a7de5c43d5ea3887b6f3fca616b50d0d8bdedf804f826b78e77f56715a59d5fe9b8524c159087fddc292df9ce9e18be267956d15b107070f51bd8c95f317af5eb754ebcbf9dbc3b2befaa96c55fa66ac22f5ae961633feef0375f0d4b7669ce3b30eadc09028ea1cb9e3ef1607c3a04e95e36aa201930cd026f01bfb66e5e34e5990524be9676a93524aa2d4a474a30631b42c35eb0a8532b6a1276ff69721f026b4ddb6f4adbb8977c8bfa59b4356fd766b3ecdef173bd7413a3f5beeabf4cd2e3039362607c9b13156d6f8d61559b37e5357d5679c2fad4cb56e063dd735a5e6645de553b52ab7963c39c795779ccfca571d5f7c5681833c0e264fe63f9054c69dff9054c6f65bf86b96ff17cfcbdf7fe368f3da1fc32c7a9ed79f7b1f66dbb9364b6b722fc7965e3fb5f725eede0af474e879fdb9a7d223f774f6faf3b15facf27e0cbdb1ebfd49acc73d4d9e57979eb8713caf3fcfb1a56796a7e7e558b277cffb249873ed9567f6b697634bcf2c71c6f94dfd5c93dbcb6f6a0f0793d633ff6f48d27afbc57c723044e842035d7c79a676df57439dc5cffd38335f0d5967edbe9cbf42ac952d79d5ffe92e48335883d6197c610618a0945a38f6bbedb685cfe046cd2e6558d5e78e0cb6183283aa3240511e033528a531e08252ab9f668f0189c2e00c5a9edc96ab6c61e0050c50940b06c040955fe0c50b50945a59e3fdf58b79a119f2e917544aa9555d4006a5d905a30b6e6033e76b0bead002252dc8cf5b6004b5b81232b20d9570516b55f229b9c1412c2883d6ceb5c9821c169028b55650432b58f27b05e60a6c84a10abca0d41235574191d3ac2aa8670accd0610a72680a48d4e229a0a5357945411939b644c1161505d7d6e209ea70023128a59f04f34f823966cab45377cf3c49500212b08c400ed4ba0fe69393a41d7b68eb8a04f1679cca5f4fce6152bcecd6ebf979d7858fd3757704395b8fe0c7cb087a15f58f362228e324022d3abe2f021e2150a38b4f56d00d8117d96ab292a4a9cb2f4f21b828a546be6a81408d7c8a20580282916e5d7380c0d3f9801a94d2179a215ae6035a6854b53e50a4f3818b5a5aebf2cb0f64bcc5124aad2d946c81d23c5007cd0366506aa93429eec7d11e50e2012c3c50c4a603df012f28a596edc0f755904d07aefc1c73e00c4aa9d57f853baf1c73600556105d7e69e2c0129d0d8c81524b63d2ea9ab1d800289fba3f6979b51a7083064ea0011f94760b3af5aaeaaec914b666693310077c5d3a19c8c9c085813a506af1fd7192b4e7ca825aacfb579f24694f18f068a1868e1664d022035a40a1c50d2d7cc8c28b2c30900590ce05cef0e20258506ae91eb238cf01637d3cc7cda7b875e5f1ddfc1f8fdfa2075e51877884ba9425451d19eb0061ebb3de5a652fa084dd168042c7025e58f9146bbeef6f34cab4f7e3fb1cdb6dda706b93cae3dd2b60c687a45a2479aa15284105682a00b2e6b9af3dabd0a813056e409f025650a052fa21f18c7c96694b22a62d276086091c81528a84762670a9263156f59a093421013528a51f920aaa20d067a94e1270810450d4c857ad6a5d0caaf6ab5e24e0b13ab7269600a55894e105a55870412d192c8a508e2f16224a29cdf91b811d810f04ae008125d6fd7deaeffb6a7db0665c7364085c0002a31962b9e20757845718e001537840041ef00f40b1620e56b4a063054d92353a49dea0845aaa7a31f8e35743b6660bea27a939687fec9d6ffc5191b5ee5f0d7dc49bade7cd5287a01698107872f0e45f0d59f737bf78a55a9fc7c9f9b3acbfadc92fb676ffbd18bcf8b3ede45962ae49d3533198a45b483c235f92931516561658913e24a00adaa08b3d239fc573d86d4d53dbd50bb7aa958d9c8305ba7354a8c54f1166db2759546874545a506a755c3b89f39ba6b6aaaf9fdafb6a0f3f671d56ab4a424571788063718ca0d4faac57f9f78fe593d9862b7eaa16798a96ad7cdbe050eb04e36cc1f983e668393df4a49679763368ef234fed93dd16652ac3225da75572f44a1b28a50ca01d4e026e526a7d56ea93fc36bbce312c45b80f7e8352ba97ec2bb6a78a3428b53ef17bd26e6b3bff2ab8a822c7aae206a5d6f3336b8cb32d4d3528b5db9ae6126a5d986e724129358b504ae9bd4c1b54674d460b4c477741ad4f82f5a85528fdd1c633d9a8883330769b9d1c2ac9e000da29b3e894394832c8934459cf5b6044dd92f2a50e7fa5a640508d906a55d5679a9b2adc40e026850a333a544c800a1d180dd80796ada0cfceb1fab1ffa856134d54d2665deeefa154d664cd36ac9a9ba62d37c8b465e5a655f1073bc8b42ad3aa6a0d26f112631728ddda565177c61f9db02c917cdef1fe408b04d920f5a9518a6fdb0253afebc242e009fa1bdb2d94c800112522d1f91f7c0cfec82b412905423b770ab70577049708a596a8ffab3fda541c38acba22ad0dff7f49e138707c3564a5d4af86ac94961b3a551c38ac0b536dd6f8bbc61102f41b55419d49a6827ea89826134dcb0f1595f087d0b4fcd87fed975b8b1ebfa6bf9a45f5d964ba302a2ae10ff148dbb34e82b71eb9edb6e5daff611ab91d2ff62e0c8e36edb6a6de76bfe987ca3579ab8e4d3f544ca4b3822e9007e9baae53097f48c72bfcc3aec9fd5fa534c78c5746f7bae067a97bb623ca1bb5cac6ab0e38c3d2ffbcf2b0e938800c4aa925e3802eeeb50ef8205903922f745ffd0d121c244528a5f79e9014e0881c8e28e9cf43bfcdf2ab9cb31cf98e2ca18635420123468c8028b57ab63de7bf7b51a655d57cf7daaf9f350d304303c6a0945a5fd7d97cffe951f535a0020de01ab0000658815224473e9e7a9f010fe830608a226b50139f8a98510406459214f11839626dbdf7f3c89a481988b480c887e488ce15c47f554117647db8fd95a757fb6405adc08f4797f544a40e39a30ef982891b33640b3ae4876533c443690ad7213684a441859421e40294d28f8bda866f329960546c6cd468a146063565cda826089a25d0a880c6d26c53c8618a2fa6c8628a23534481a2030a0b1d141774459ce951696656208dcb0f1b1897eeb1d5df785dc7f1f765b58729e3e0c73cb7fe7c5955a99ecabfcfc2b7de073b3359cca0665c64da207303190ac84c2183440c1a3149e8c4e4c4d498228c10640c72a3036409404e202f52c4410a1674a40842b916fa7c18eaf3d42f95c9acef2adb0ce599f96a5d1167b41afa2aa8769ecab31aca509fb225fe6d7e18eac590a7ae64a8baa36275475dd9e7b7d51e3deac7d375a2f676d77d16e3b07c758775bd1dd69ea9d68348cb49dbb90d79d659835684b1ea2a576e4790adcf35c902e3031817c07001636190f8510700d0ce8f37fc48011567403ab80e9e634b14ca3363ddd76159df6de7a206755c41a028ae8802f4e2869732bc80e0857cd95cd648c345894b1097910b8e1628b48ca0a5a5d3e2c4675d559f2fa9b1ae71445ebf0faad6ef787b66be0afa50aacff593095d52d72f46a6eea8a818cc736ccc57f7254b8c6b8873fd956a65138f3958ac6041514a81a01d16202c3fd00e0b102b3be8ac782b2a2b94523ae4fb788d8979d1d64f6d3b8635d55a696d551669b95ed9bcb2f7c482131527079c8238d18e0f2cf838c14a4bdd513fdf27a65b69a9a1afa632467da110ff62ea8e1a830387f5556bf9afacc9e69bdfc74529edf8b041a9d581e20c28bea0180a251d287264287e504ac9d026fc21aacf50084129b728534cd7d9a87436954c9f1e53e861811ea81e3e54d45021828aa83205a5965533eebaaf8ada533f0f7efd6b66be2a6a4ffdbe2fe65b8135eb07cdd2f6073db7a319debfd138199b4c362a4f9aa78d4af8437894f1468e64cd630b9d2be8c4e3079223177f1f0f0fa59487898c4a4dd79942d33cc1749d8d4af7d25d25344a41288da0e49502f0d50afa38e8fbf8d6b573497101f275df078867e6f372de72b13c402a1097baa302f1cc7c397fc77e9ef2931ef72eccfed454d0104fd79a26a66bbdbfdb1de62749b58e9ea0fb0803a39a11f774afa0526fd1c89117dde07a6a8d28d511194129e79aeca706f513b42a8e0c24473c9075e2722892231ce97f8b468ed47ee2b62f362de8cab619a175d7d248d1baa0299c7ad2224029a555ebfebf458f779d8da7faac1991a9815a36333334d9b2581f8242b251b6440600ac0e1d4c0c580f3011606307fb5c63b85e701db9489f1e551f08c32c4eab1d06c27f20461571d628e362c8fabad6fbab1c7fbe0fb3a782eed6aacf9feff358567752d218418a065248d4ea640f6d8e8b65804ec80b210e84c810f7055016209b0e48881d41e8ec88416747097600d9b1001d51e8e8c0404707121d477ca8f0f940e773845ae54a4bd579b575f965cd78a6863e204fd578dbfc21ef7c6b5505892c6d546b5d5915bfd95a55bdefe693b49d9f2d5d67f37d9eeab39775d7e5995a6ba856cbd613bc5eb6a1f7d550ad1d8d557372bdd9e6fb16a686acff9abadfd420d286b8e31df2961ab2b606a93499c3fafe5f3edc61fef7cb577ff4dcc1e3038f0a3cd7b37900d0c941871c30f8ecc7d135634fed1cdb2c8c33ed8f2c3564e120cb3e5a5677ead513a5d20d92cf88adc95180051c61011e5840e989323cb1c513e313a4ce131e27b2e004164e787050a183e3031447ad56e71bf31cbbf3538afaf973778fad55f79af3794e5ad163c30ae276ac2469bdaf66fba4d621cbb2c2fe15c4417cff2a5b6bfe364fbd02e19b6ac9fdf96ae6f8265bee3d095aaf67989b5007e17c871c97debf5804ede0e0c21fd2046fc2a6094a292d423b4c74d161824887094fad424d81f58127f7ee73fb595586e940a530ff30ef927ae41eb79f10789a26dff5d653af42dd6b0f4fbdca3a74ea5515616ab6d6ef55d6f77c6ed6fb4ba8b1840a96f841290d423b0a58430133e828400b6a7d5f25c9bfb604d5effbb1579cb3ad209b6af1f20c37be99f96a270159e82420060990e924802a41032534a0048b1236a8759fa5fe66f1ccbc70bbd2755fb5e60ae49e6a712cc2589f8a3df5fb6ad7b3edbceb0cae3289adde7a54953ff652770b7e4d125f506af1d5dfd4123f0e26fb0349020b99248afc4d12242b07ed246183b6c0542dd341e2060916246c748e88c3113838a2831eec7fb26a8c7883114de818e101233a2308d029620b9d226a50440efdba0bb6d4d007fabe0afac4990b134f8220ce3cb2fa44cd4f5eb50713353fa9d22c260f7f08c7e68963d3a6326996d8660a437d5c9df1eea1deda443a455ca655367f63c915bbdf6e178ee3388ee3b66ddbb66ddbb64dd3344dd3344dd3b22ccbb22ccbb20cc3300cc3300cc3aeeccaaeeccaaeeccaaeeccaaeecca4aa552a9542a954a25128944229148241269341a8d46a3d16834128944229148241289388ee3388ee3386edbb66ddbb66ddb344dd3344dd3342dcbb22ccbb22ccb300cc3300cc3aeebbaaeebbaae0b2b954aa552a9542a954824128944229148a4d168341a8d46a3d1482412894422914824e2388ee3388ee3b86ddbb66ddbb66dd3344dd3344dd3b42ccbb22ccbb22cc3300cc3300cc32eac441a89b84dcbb018d2f6adcb12863200258a6b7f4a88c3cd85e8fd0d58ad6899c72d973c351195267fe5250ba1f4c4012796d293275219d3a0b40ca5275ffe1b6d43e98977da6ff90d5d6a5c58ecca66e15bcbe4d309e3e016fbf88276fc9b71fd247a93bd62f1a3d21906d7b16f0cd6b0664b9edc3e68c993c59fc78903bed43548283d3942514e39464cb5f371034a298a0f11504ab7dedb85525aa9a5283e9818adecde369571df1a3c55ebabc9126a42bb80828815e8716ecd9e6dc625de21c7b79667feca4b6e555cffa0940ea15230a148b3c4a11543275040e9b1e493f99e08df56f8b7739c43e949031890caf87eb72fa812c671d9b5fc86afbbb9daa1e9c2ec7f14f6f6bf8964e3444834adf2209d4638f9384f9216c78be9badfbf79cd0bcd908c2d89aab9f9b4dab6c41b75df65e5b4d273fe9cc9302f34433e9be8aca04d747a42ee993ce7654cd39a9c946142eee7e0973228a599a27447f06d79dc6453814daca0333041169402219591f199c2601122fd2cef83231492137c5b974319f580666f7fc75ea9b798123e0e4962703faa0480144a694951463f50da759ec9f9b6b8b7df34f982a949197662913c3d94564151b82e847505561c7caba871f99b6fab639094611edf6f921fe2fee5d8f1b617c883f850052628103340b0a07039f2fedead99b23ba7d4240c4a57289b17a9cd071dbb3553561d0b6931e3ce4f9a3af6aea3f464888d13215338b1a9e1baf4baf568de5c756f7fa7f4640a4a4dc2c8b1e57e1c9c3a419dcc506a22064ed3ff26c49dd213991c5b526a52c6c52731416ecc509943e2c6a1f404083d5911c5608890125b9225c73cf5afd95f53f32ddb3ec9c292df9c51bd8c59ee1ff75b7ef40f735c5a2e1c92b42c3f64b6c5bd941794941d94d6ee667ca3c37a71c7a81329388ad213184ee9c90f4a4fa25889ff2194d01094d2bab5a873b5400ad028230b39b80129cdc00f28a5298a324548e9c98b8b8918363c941d3bd8233d09bffb55607547a5e2ab3c3e5c552a151f3d69c057834205a92a157f33dd86fcbea6283a463488208210e2c38dd452777eb268b2663f8ab37c2a5b9aaec91a2eea8aa347fd52eaf7554b77bdfbef0faba17a558e93e09a1a3074d51f3bcf61da0bfb84c0937b9ab8b909ac2b4f61104cd7325ae69cb9d484a4d4084a4d6ef8b652522cf8044f8916c50920504aad1abead0eb4200a8e3528ad9d695535b67f0ce7b6db16fe57cbf0c739376320ab9529b8f834dcc52cf70fd36e9bfe9cc52cf70f7eedffe0a5356bcc72ffe09f04d7d870ce39c9b2ff66219c2b8193169b54c6b078d61c83ec3e4f75eb976ad99bad55fbd40ca8163f4d5b75e8b0aa5fa91687a27fea76b183a228400725b569cbae4349801528a5abbff9db3ddf9669cb94adbb2de2084551820eb4d435294cc5efcae3aaa6cae3fec84f53891c4a519420d9bf496880527a5e9526c5dae1940e4263bb6dd162ee3acf537dbe18f43eeb167ed2f7acb9ab0772f13d6b28a55450142438408308220821ac20820842880f7f6ec194fc293cd43705e7af95d271b3f7d183c448fdd12688208210e2088a8244caaefe46df93a31cb1064aad15685a9fbe670d0ddf56ca0faeefc9bdd00538d037a01831004ae965dace4bdc2b4a114428f75219efaee456a5a2871e2af5e2f2a4e584e5e4091404a88082f067c4480521f95e2a1f3bce98e36ad96af9c6967f3cdf33b6253e552bb4e5d6bb5a8c5357e0ef3f41bce39a6db8f9b5219daab67edd7a5fed61b2b605c66e6b5e1cbedfac97b415a4baa689abddf8cb55b69ca3fa195e0cb248562b7f35cb6704e7c1d0b7c0d44c9296b4aa9505bdb123a52386d375184ed761d3863a4511e2094a29df168693429a25f6b0692dfea2ad9fbaffe4cd5ff843be6a4fd5fafa36156f8bc3393e3917bfec9ffac6aefbf38f97b89bfba5675b7e4d9223368045fe67b6dba2587ad632bbdc65890284a9b7defb9118e1dbdaef95610eca0f5fa0b59af65aef33264571e64b5d73b58e82244fa6ddb9caaa63def1f353b54c362af793e9bacfbeed9fa6b19c7ff8b9d60eb2aa6aff62f25e5caec84a92565489ba9e6e74e539fa45a11e0a8502858e3ed5536b5791d4ce484a68d5f1b6e61eee60ed6109bea9d9030af8b65429299ee7796598e3e97b7afa9e3ccc3a7bfdbdef3a7f98b50cb62f3536f96faccdf3c7ab6b8574de6f7ebebaf669ca30c7bbf9391e6e74fef753393ab6b9db07554ba5f3cdab2c51d7f2559573ce4f8db7c5b130cf3ae4a26ea9d68724317e7aeaed1b5bb35a1b5bb37ebefb222eabd9df581204522dfe427e9f24b62f377fcdfd27419b853c096298ae659ec6ae5cbb52a3656aca30279452863971f8010e48800318f4fb70eaf7cd54eba343471d435cab07be68839213a041433804a12abb330bc3ac2b94557a8323b723355962c78913386fd0029b36c50735b8218d37986aed96d8c31ef640e99050c72b37b09193551dd5b4a60d4f08e0861b67157fbdf07152b849a639283559838c8b529a047aa2063d51831a5fdf9aa770f46443990201949a5acb6038de7d01f5c1437d58e20b17cf9886e5f6e7bce30acad5ca9f04f3cfb8679b64057eaa177519eaa789419ae45567cd6d7869cd1aebe3d6ea6d62f27170a5266af8787c1cf74ff1b8f9373f5ef6acb7e87dd6a7f35769f2cb78ffee9ce7ffd86d4d8f085343d522c94f7d125c536bc6ffd9fa38fcbb301fb29ae43ac41ac7f2ae35f97df5bd5b6d8b499cc33f1e6e9efde33f8696a55abca65a332f302f35632b65b9542bc4294d5655e5d5c2c11b973aaf486dfecbf7d58a3643fb6f5ef44ceef2030d1e7c5be1e3781d833d54ceca2da543a089890902a594a49d2d4480526af1fd3827dfd6197738430e2bd0ad37a1ce9f44b75864d7325dcb3c179261b40cea3e3f2d0a0707f96e3bdf16182e300c51dfd421af1957efc6beeac63e919af071bcfb3fe4bee7c9ccc0d4d0b80cf15ca238d1ccd8d4785e97d3b7757fdb91a7a4749de79d292967d7853c2fc786c55a69a933f56fb61e9a98184d1313f357e7ff782a4d4c4c124c131313a4eeb2b4b0256a2ceaff2dea7bd6ec1f425a78cd8376a58254b626412b44d7799e97ff5e3c7ad8b49ec9bb4e249feb7beed12c4fcfa4a2b212ff41151518953c53c2a8807645e5410bae3851b955212345c68fbf4b80c312ae40a995d51df79e4c1706478b2518b1faf37b654c1766eb6e2f8c8b09066f8dc31fd2c1bf5beffd5ed65e27ede8f22478ea16934a8e5ee9bafb391aec3a93e9e33161178e4a1916e9ba0ce79a466ebba9044a6912c8b8095549d8827e482ae8ab4918a2514918438d8e4dfe770c255625abad637c635cd442c219b414f5ee39f2c517095bd4d409fe354b1d22014529b59040a965b33e89f105a51464418f185b586288e183528b8b416d8e50c6279475f6d423707184ef089e1f4bc800ebd675c59768b1645cb251eb6ebb04011d237841a9553f2374805a2bb2fc6db274bcb2b766f99d712ae39bd082dd7a41466e7f8411823068c2284011caa095c427b8a2a9387911425084efab5b17e106c8c8916a818106185dd00fc99123df098c7105563088a006eda7490432a845042c3211509508550d3a042594526b9fba0e6108234a2dd567d56721a4410839108269ed54d69ad7550e22d6891242a5d617667cb105a55ff05859d27add7a26938c8a4af8438290022ce887c40a024d106c58abbeadb9b2f84f645cec81562010b4a06fce00e1c70fd4f881179452fa8322e10f7c50860f94f860a4960f3c14877c5efe68d30332a8b5027ba0a407286af5c0432d1ed4c1ba78b0c4222da8c9140fb8a01c571b1e8c3c0882522b57acfb85b9d8db01153b4040c70b2a788185173abc5842074fa0b4dc3c7c2ac093dbe73fda581faa9f0e40a0831e39a0430e94508b6398ca75b71fe630073d3a392082521c2001072ac0c18fdfa7753fe71ff7578bf359bfc3dc408d1bf840db7a83ef060ab0411ca8f55c735c41960d8060031c1b5835488306df2f4bbc4fbde2fd04797ed3acd6e3d871f71a6c41c51a7894d2e00949a041121ab0d040a50b3974113e4c6660ade5429b914676fbec4b228ef74970d781983c99c840a491c20d0c31cd8efe72183876dd758930b1ebaa490c38d18691404bb223b0f49ab88d5d77c5155658d1757f4ff2b70903d28bb0d12612594c34b237ccc6ae533179014914418d146a18077257dcbe725bb98a357181e892380c1395c26cb35ba974f5d09a658e490b48766445d066a43bcab62c1b711325db480bb16b846522912b892f3eb7230a34618196592bba44e183d76adce85780dd6d048a254e0cefcd48224e0576848525f0962e91865da24b5b99a460f45cc95edba589e166c50c1c4d50c03d268e446e248e4456cbb4ec012627106da19881160bc327fdb571e33531819869dc3f068a300c1b914825930a9870c185a42d1b8dc02765e2959548392625b81a16922ecb8dc091086e18896b6c6342020cdcb61004ff825b38e24a181299cac3c6081193118457cb3071340ab3d7ae12b85d9894890848a27badf8a391764b97686447908dcafe0e53eafd12be59d3752aa14908b2bf48e10d398ebba5ececb6736102022c03c5ab9136cd5aec665b668285c907ae88611b27ba7ec3366b49d7aa834cb6c04677b495c04ce32ecb691713bfa5eb569dc5c4032247cab47b89b0ff2b1b95469be8b431e940089246961b71a3dfc00ddc342d66982b4c380072e015811c291369d696b81002261bf8bfb06b1b6d9cc861e2bd4663d775a6b15b54e7a08906489878ef93384cd3c22b6e57062e46d2421b5a910bb7fb23cb5716759a6020c4326d23bde88e349074afa882c4448bec455614721b2712dd2b8eaeb1eb788dcac9240b8cbbae486433ed1a71db8834ba00c79530d18589ac76c34db4656fae6c4e130b6456bbec55e2accdae28ccaec9462566c370bace04032615c830f112efc8964a97c89632130a68d9e8c1507b8b95481927b213c8c450a469d7287bce6a1b2993801d9540f049184954d244f7ba4cb0b8a38dcbc28c13319b655929f3baced47561e7ad3a46626344e54704366d0bafe73411b65d3024813adbb0a6eb360c04ec865da4511882a2268eb2ad712c297a294c92df753d638da2e93addfbefcef1be8264b3d293b00c248d4a1613695d77e4011aa934022f4bd2c22ffd5fa4b1ebb0e7f55d05878015af5d5aa895eec685a5ab647fecba9b4ca54d224930920862a5128974490f6e2236765d8e06bd9bd092a0132bf0b952a6914aa311560a452136769da77bd73520c76ae15fa4920814af76c59238765d15eff5b0eb4c18e772c9c72f5dd7753757e162bbeec90e9efce6497b1f679fa1090854a20c144352662da6612591b499704291148e4071a4bd08c32eeee26d335e89e20c37aeb461a0dd30bb6da30beb252dfb4b2b8917e32e5249bb63d7e99eb1b7894eeff9b626c6b54dfc0dbb22cb8d306b358e946152ecd208d3b0ac845dd80666a3d5eef9bbaeffa88aac64af10b4d8f657dbb27f131b91b80d2359b0440a416d7435c8659c36e2c00c0cbf341a5d63be440c03c30b725bf88f8d48a3558ac4eb669b0d492227e234d14d21b54dc36ca869244bb225d14854d3dd9036cc02b97b95b6d18b4a962391ae52ea043f868a9b65a31126621ae98a2ef6772ce107b18b1b61a5d16fdb5bd18f5dd775377ff9a36977aaeba218af18da11283e47d2b40de4ae4a96225d96e3441167efb68960e99a722e8c4ad771534b2186e26be205c11003b5ec6adc8f44cc72a24b126d97cd305178ba165573317b35d1936e692b6d9726d2426e54c22ef196b05269746d36fc01621b492b954461b88917a63dd87524f9a18b2d8199165ea3ac04721c2913bfc727fafb17db385229bb230cdb4e2a2d1e664957d3c290c4912ca87159e6800b924456148946a512186e2187c4de1747240c0bff6aa55bba63d779a323ff6156b225ed1fbca008bb63d7818c6c59a9f423d08a3714b58bc43d140d086d582a8924ce96b4f05e501cbb2e3fe975dd8901a4cd8ab68d23852296dd2b0ac7ae632972b92de35e0343510c4b250e1cbb8eb43b75fb0b47e42f86815ab689b80d0cb1edc7aebbab7ceaba55b62ad8909bb12a9f5e47c888bbc06b04625a288a5a28b263d76da2d3eba59862036aa026dab00de4384eb45c5473af4d1c8dbe54ca40d20daf68d45df7619ec92f5dd775bc444312ef5f5108da9074dd12c98e5dd775a52942522666e02561db8804daef3a1521a86dcb44a510d442f06ada5b70ec3a7e63dff4faa7baaeebbc8cade78137211433239b6de05b0e7b7b4191dd9dab60329896859825619715bde8cac2d4097ecb0254ae98ecff47a51769a4d03e775d414ae0350a4936ccc2f082e0360222126fc671f78222d145ba1aa9eba4d0445613ef757177341a6d5a9682c1b60b62e16b9b38ba594974fdb86e069238f002dfdabfe035769dea33aaebc6deb328464f2281237044b2d77665cf8de6aa9b2b9baef3bcaeb3e2e5122fed2f2cd44662e92a894aa2a8bd8e49939f5cece8b2236d2b61a1762f11bc2d23910db35176655909d430ab995842ae9489208903c54dbb2c8885564417c769d736da42d2768944a5d19469a7254d8e5b48b3c42a5d6796b8ebca33cb9c9e0b6d26e248dcf556247258dfcfe26334d242500c419b95ae9228dc4628c4179546220662a5d06a5c891bbb6edb31e461b22208722f2a91b88c0349371bbb6e77ee99de5622b59fe50254ba1ea58b7b4db46d97664b1c077263d779960ac7811a778557bbb2ed8a3878689cd544dcb68957b49138d28f5dd775bd14bbee896ebbe2152f89fb7bfd93366decbaff2dba94ec2dd9cb95c2307b9196dd51d975dceb5c8f5ede519048a39176dd9178b96c64452371ec3a95de296b34226977cbb45156b2253104efd875decdd6d3b7ebbace7402a92c8d8c28c3b63023594ca48db012a78563d7a532bef97099560a2fc86124d27685da76c7aef3ba6edb4aad6d68e0b65da57bb79115b5b0442a8d5dd7755a566aeda5b6e7d9c03c7e6ecf43e2baef89b82c05f3725847849000e9d881840e057c8ef0603c87670159134f24e184d6bb091c9e124d7c98c09e7b4d542796e01e05781270b3f5362534c79144a90024b6eef608ac0923c47e1681793f7a4a20601325e000395ad51540c48d0dc3bf318088cb504819e679a98c476ec7dac929cc99b881790ab09f204056ead0fb8ddd88b8cc0c9f8f06f0c4101e0e01e41022c7964b0481799af43479848d1a001c000001e1f901f3fab6dd87fea91c27d8be241ec39ef31f93cc5b89783f8ee7e1a004d88110763082c99736ff20841dc8e04398fc60080150269c41c989d21b441ca12846ea604300940967e0e24481f8c18713541200b8300e4894522ac40e446080901d82d8800d0480833c6011004a8138a1277c5b2928640b0a79515abbda755da7d63079b9d101e5db4aa126621012e426007c5bbc5bee9127569cd8d8dbe5d3f5fb784cbb55f9ecba4f0d142a7ea0540915c1177c631c5bc609a97fe03fec1fc81ff00fe30fde0f53fcc0fd90043d3139a1e06ee2fd7007d567207c5c918f80403d4c3dea27e7624f173f4847b367baf8416aad351fb1a2e65cec7deabef7851ce0008815e81e26f14920720f95baa3e6273def92da071664e087182028054013f8ad3d7a849bbf5cd5f48312745094db054a6bd71980a2dc25f4afce14880056433dac4fdddf1788ffdd4106d8c0b09c502796aa52732e8b145046d497719f244f194a4f72562661601903c9295cb39f9ffbcdb3a60c8bf06cc835041bf224f992f3949ea82e8989e088332479ba242642e9c949e949cfa748e909bf98d2934d823895cf97ac652ea527557cff1d66cdd2c3531642e9c90272fe9a9ba6a42cc26e326d65f70635b98215c98a6845b6225c115191511152912fa07828f02ecca35bd59b5abfa935c9ab4ca8de2fc957552b92cf3f4a4d967c3c192623c5322ce29285a0c499acb1cbee59c80c499e2f6f57c24b62226378c6689dca58c62c579e046dd73297d43f5c2ecd193e0da5270ee85b9b7a6721d7b4dbc6a40ceca424f776b99971b1a1d4248c939b4cbb9be8848a1b4a4ff095ad1ec88730397f330ca527bf7a20515c128f2c2b32cf507a326e6b527a92da27891251abab573ec47ac87ee9a752e7bfa5ce76b4f9ad632ecceaea958eb3104a4dc2c0c1a40d711ec3b7e138f541488b437c4f29a8b830ab7ca2f4e451b6b4fc04c2a5f8fd97d2932978cfbf4d5628a535323330362c3242a4f08a9c6274ae5b6313942268f06de14e9e650a8693c24f1b2720e52695f0876418ce85e17c4099767a2ae8e351e93a24228cb49954c21f42cab0937422b9b24d7422c9b44c3bc14021e2c2b735f6055ce0021da01da059d02c6a70027a2305a540508480c1b7f557635350ca011f3253356de8a93e03e1518a07141b1f882c2c143e0e49da92c70cb95ee80106cac587524a023a43a9101f3560502a434510820f50fa016ca2f46600947e3d50686610ae76a84413e8c64d0b191a1200d00400d310000030241a0cc76332c17040b30f14800161b45cac601f8ae434c929649021c600000000000000400282008ffd825304b54c84d8116f802f1f54cfc08fa489d45fc0eef7a97bfd5030ae8baa2b6c7f21da5491994f4e6530f21befa188f99e1bb50d136e14fd40321b8e2fa0e98859512769c340eff282a7bf7342648a6e64765bbfa84695ea82097a2597f3e56068a690b51bf4522ca3a7262405263a18c36db737d508c2485a8d1b33b9153b5dca175de94741f89096b55563074b985b6b60eed7e45440a4ec027ac1138c9ea9f9d6632a463c20cdc6f9352136e4c575b07c8d6955f6bd67adbb0e369aa004cad9dc65c3a5cf3ee98eee43b49f7332a460476d9e773751ff726a5b44b9fa9620d32dd55d616710f92d7424918514c11fe5596c34ef828d65b42b7807d4f449b8bde22a1d3d84176ecf424df15ba4f040351fdf412cd45d167aa8f8d20efe0f36a82b4a51a8472c9d9a6ba3aa5a32a7df5aa35155f8012ed0dbc76fbdc17671c2d343aa4c4c87067282ba90a725f6c768a7336ad0d4a85ffe4ef6f9b800e733499fcb9cf92856aecbfc37168e4a502cb4bb3dbb626728e94a7bd2b25f91c68da9b243f9a0b96b0177148a6920a3ee858b439e17d4d70195c8d187b68a331b32e5c6d6a71edd5943c8b4280aeed81380d5ce91e5364ecb930feb226c77f46f3df9be22ba7a1a5f34ad371e24376eacd44b6fa9d04b8fb695ae41c63a0813a7e489c551239357cfa52f647cd4ca1e40596d25029d86cddb1a77b959cf452756077adda3acbbffedc3ffe71d8125acb9ca127045ae5dabc19ef88ac717d2e42804b59c69a45f1644f9537df5c809345b13ab93f242cf6d720e127f76d77fe89b29a59b40340522af28561956d1a2d35bd3bae067a3261f6a991ca75c8c260c53baac6a7f926fa13da247ae2f14171c4f48128427eddd6f3fb2b69bfdb00663a02fe9f9ab109e81167c37c2f1e975c04f10d5a48ae3900c235a4002270070cc6bba72d26eae66088aa1a88d21ba31459b2c249265480cf6e9e7ce30040e5d34c26d749126a1fbb2de9690a04e0164f81e751067126c479d85dc25f473fc40ba0302193d884e0ebf591141bdf8226490bd364155312bf926921e4ae2eb2547a66190516135fe99e4f1dd4017206edf59f31b35c1fa9ac1a815ea7c060a5946946421c38b4ba1c6408826cb398c2928691e80abf4270ce9a0164417c54d1d6bba012f191c4b16f86e2b7a31ee4b46203a681c7212fc9303c593a2630811876ae522665da3ddcdbe5a3fd63c112026d933d2735511f74bbd20ffeec7ab551d6134f305067a9ea90774e73e71e03ff1fc4f778182059915ca9b544c0fe20f9c435235d73b62a2204dde6e5c1e25bf8ada8d5fcf758dcbc08f2c06960703d4d57abe75b689f8ca41e1986fcba470b1aa599a678b4cb8c507b3e18cb6173b750f6a8d597f4afc97b6ebb52c929f5eb2497d3339ef17befa6a99d93910bc962a4f5b2fb52c29da3411c137920f78edf145433dd2d981687fde19457e3ffb596f084cdbf4db772f53834d341d6f177f3a56cfa08dc4203a07996a4c3387b54298bcb41ccc0c1e8ff74b35418c9a840bb5199a033758cb4faea0fb559b8ad14d6b3ffa3dded374adf6349507b613079ed1d7df3f4bd73060267a09d95cb530d2a5bb57183f4839931706429188b23f524276d9d4a3d2382b31b69abe998b5e7a6df514688b2e519e4444c2f6c4ca49d2f55f4c4f175dc9c874a07db1942c8035406b9ed460b7130d88d36f0cf42a74fa90f80f9f8e77a34ce4ba796b291fc1936f07ce9e375b570f84025c73d802cc570b90cbd5df8763384ff5c29c02d5c300fb6bcc96152804f19010bebe6acd43634e7ae1317b8ba116c528e2987280c8855e59485396ecd50a61042006977ba0446bc81204e8800132e23b1f5a7b884e51e757e1076a0fc6d0f4744b1f335c1f04e4cb780058bbf4ed66308ca2e57afbf1bf1956812d4824084363d970a533948f2b66eee6000fa0e7f5091a9ddfaddad643a2391bdfad19d345d563a54206445b32c13628005c151752a1b1a446e7fb3ba420144f953d7028d3903ff0ca94469870717ab3aa58469c1b5e0f434bf49eb936f41b70acd288313014ff6b226025c7908da8b439d55e76ca6f1ea214aa46f947cdda15e68131f9fbb74a0e45a7d1326df5e015e4157190e969829cb4df3f74cfabca8123c30f505781b6e8e563e8762e5d28b9ce129376e1cb0be3800abc5ef93ec641206d8ffbc3805356b5a3ff0927f346d07aa8049d6c48b3355ba9c4a4856c1850ad74ab22bec3e0cdc4a9354e875cee2b8ddf1ca5e63eaf1a3f2368285a52e29edfad5ae99ea4692c491ba7a7fd1e93805c038f5162d4eabf9b9783f96bf4f5616c43ca72ffecb7f6464ea4347e6d5701af5fa700253783a249d975461d44ce1e4b9bc6bd637f61a657b1c794776042b99f23de9b0ec6084c17da655efb7a9f791df0c7aee81b2fd22acb360b9df15cc42af441b20c1b27da5ce69b6ce5e169af86ad4032a06e7df9c4c45912f6256f3df41f0577c2d6e4cbe3d7b7e41a8d3fa44a55729e2aec7d7e33b10bb64c04624e8da5344d5670d2f8fed546ccfb879d88b7e1315d11d478499c811fbc18d1a921e9285396f97042910f69ff4774511665bf8968a2eeb4661466fbed87bbbc17de85711a9956160296431ed6657e7ad4b84ae5fd144df8762fd788dbcf70fab5279b5678ff671509e8ec35eed3b8cf16b14b9eceb2db6bec5aa2c86be8959bef0a6418d723a760b1133b32e91e6e6ead497d1c8a7b24cf899fcbf91be71899f0a91bad2f84cc614faf691ffdcf0bc031d7755b61c42fa76dadcd102098ce5f2b39b584511ef1f4e23c667500b0d63fd6e8222c96506e0e5a28f7df87dc6f049135f5423e04c9fe9a5507fe0b1bf4d3f550c16c6107e48c85e2f157687ea84c898ebdb5171666332b9b00e865241111f9caf6431f0f5f3f2703de647df45c286fe6241a2c028ad8c19ecfc7b73c9240f0c97c348b57474029a3b86d9387e102caa7d0a1ea176204fcb0d6bb85e9f1a8e0d983b372e95963581516a5775e9e7b98dfe0c9687c19651593049e9517bac1ebf194cc3f51c01c307b0646b86c8ed44c2f0492ce92c08f724861b526c5714169d0dd47586f8bb4074af327c47460cb9f23d0929c39860bba862536a63159a06c6b0ea5139a40c195cd59a509e50c3d2aa0ee64801b993852e6f024cfd0171a1331c99d8ac9e5858d70a65c4d61c6c3a082fb2934d6d960e3bfc717fb027741da91b4c348a7343260f70265fd4e511650b5a72a3db17c1bf7fc48b742e6595234569ff344a718140b6ee44986835d2b0bd40fce3814e5a6717b17b833588b1f76b01ae7c2d8470fecd8da8ef03c7323d043dd7888bc30687ea5f7e917c3e3cc85bc6ee33d8f97d101d005172258eae885eeea42e2c4a67b8433b239adbc6ca0db58b75e8e9126afbe7a95f078734dddb2fc15d60a5eab8527a60df0f19d312167529560325d3ddfe5ab6af2d195768844c312293c261136be15a1aeb602176db2743b3248668fd9a795a58b72469e6a619305e9bac2bf163dc0568e3d1667c2f03902d0676038031daa21a3d75315720bcbefd63a288f31d5640110db0f0266fa72651530a2cdb8164925ee846af0872eaa76237539b433938aefdd679ab272f06b35d11fead0acf70a92616a0b13c11c9edd6bb4eb8eb4c0fc810d14ea8c9e846797ccc4099e20f2d58f33d9141fa5b642810f0b7b944b55db5877cad9c8d6a978deb096a7c7632134be5ba98a3b7f6f0dd1a10769f96f7aa225a58373c569f6a3057dd897a3eca33e0f91051a1b822c72674a9803574ceea939e1a6d91ffdfc4a0c30b016ddf30688e6b4f1efa0f8cd62786cc8476cb5721a958a02c7733b931b8e2eee12da61667c3b3cd14631368a65e00e70429edc34848816f3e6ed1b1bc5631672eb7194d9c1ff650bf2e02d55846d978d90ff4bf4243004c74a18ab18fe180e46caa590d0e5c4098f4b5e3e1e0cb91092bb412a3cfa18dbc01d38e0cc850f39954e26f4f79e5a9cafb7ba89429728384c62131bc6c67b0906990aa87154892812bf3ac21ac4abf153265cd308adc7999f68244c39f85ac47cbf4437526e38b6676d8e5ae5807913d1adb44f0f8be61d0cfec558cc2c7a5e924c056104b1234f4680b4130f837e0dd1c8a606aa4c2ed4b6f8c0ac9f8676d0d694f185c95e71ae4a3d0af0f66fb34b3311a79b8043f35a4d77cc4012dde6d73854f27561e0bb2503d8d578cfad3344996bb92b75797e8f9b43a56afd1e1b3fbf3ca052096322def075e566132d27199cc73e54d1c51ae3bf65a992c3f6553e55cbaf65d44906d86189897e6f432ef689c180b701dca4ca8975e4b33900df08e28c63b61f93aa8681f76c59107f3e44eabd81f8f3666fb0fd352a8e1fbc1794ed07fe193ca87b9750b9e7b67d2df80499131ab4c22c7f5d25003a9144897ccbb95b4c08db52fbbeee5d1b27dcfa89b7ce8cb1c84f672272594110677ca0a527a6e946bf1d2bad34a441c2beeba38afce8d927a02be6c2c89317ca79227ffc74b751394d18fdc26da4ebed22672fa990df1eaef588b50e590dc24a127031e0c621e9156e9d8bab4086e7efc703ef3ab3314c0d27a4b686aa4d0b8dcb5484d96eff5aeb8c861a86e1dbdf369a37e90f9dab1bc667ea88b1991d6130ab4618cda421e3b33490c84c0d25985d438964c3301119309a08ac0f3dbcfda3076ef9f0a11b1f7fe8d6c71e86f5471e46160d4bc46634a230591d7f6843c718dbd20123b63acad0ec8e339aa563c667e990a1191a676896c618cea241a2b36894d04c8d2792012309658241e2307df4d8cd8f3cb8f5238f6efaf0f15b1f78e4e6871edcfea147b77df8c88d8f3e72eb430f6fffe8815b3e7ce8c6c71fbaf5b187b77cf0e82d5d37972fb6ec945bcd6de3699334db85d82cbbe6d45a85d5a6519345804c3090101960480230f9c0436ef890076ef28187dcf0210fdce4030fb9e1431eb8c9071e72c3873c70930f3ce4860f79e0261f78c80d1ff2c04d3ef0901b3ee4819b7ce021377cc80337f9c0436ef890076ef28187dcf0210fdce4030fb9e1431eb8c9071e72c3873c70934f1d97541e1d0e31f993b8d3e58de2ccc917c68734468ed7fc80c31a3e74002a7f69e3eb2727bb776daaa65c81b3a94365e65490e11d613266d4931849926840fd9e69bacf57e62d9717f06a1d3388ecece38044a841206246482a22d7f47da933fb4f5bd2ca47b7081e32acc354f02e12d2df0b08948e81996cd01f34da1d0fa03fc9e7d81d33d933c587f18ae1c805586252a99ee132938cbb1799d4e7cea05fd4699bafb22a1eb6559dbf08d09d26828da6574a5883eca2af51aae3b85eaa3b8e2dbaa8ae5c38defbbcbd768913d09d1161544044bc2a274c9a493320daf535771105b813740a73239579537bc9b2528dc1ae05d679fd462722a7c078049cfc91af3d413374ee1a868e14b4f1d7d67bee405a91107208aa0545969d5e60d723bbf7a3ad2313fad24f7534249c87f49f420a57389d00abbd7c4f2404e6e3a2f054092d7fc04415960d9e025cd8f1a021d3ccc93c9f55bf6d20c806e886575918a1cd2abf60cc8222359d62f15d7641559d57cb23d21401186c1ad47789375ddccc0a64db6a19f1286389167abe9f85af92fe92e820bf17155ce56381e1d9deeed936d894e2ddc2d05baed72ffe5784766c84382d9466efc2bf336a9b54cf9150a7abca5200203803b22e1dadff767d96a4299e8e2b2dbaf80c14bbb09e7a9f3dbb2b908ca5cbb12f151d17b0ba3918c205fc16ac5c54346e3188a7f29639460822b6f6817e4f0f6a303a31b0e1451f04cbf3f147893791613ef90802acc6ec0a039bf81472719fc3910fe5a9205108673874ec8808d2f76acf52e8d3df0b96bd2ef0407c49491c74167d842046ae6f175edf35790838bcfb6a39e27e0a041178e57b270c0753485f553ae2e37f62291bb40ea13c149d9418011b2f341c0c2398efa08749a5a728875648a5127400577c9743f3fb4e0ad5d9e51b2b0217c61ac1b7c6d11d0e5a088c2504e3ed3d0b370ef40e5a169468f4695e29a6d1d163427f3847f20165d5042fea6a20cdf986205b09d24098d846e1f4059768e7ae55e7a74bb75f845373dd157bd740203266e5d0757c8d5e4991539c02ebd58722401f342d15ccd20c2c4ab4974b5215fb1034bef3d1131380912d3857f0de743031019a3f69780e61437d4e5aa1367f6cb855d637e5e5010a115bf656b33a7cba87d9437c382b1cdbe6cfb83ff6594986ce8e96c4c8ab0b636feaefff0ee7ec3a0a0cf7a2d30195d4e4980f217398e9edeedf12a96d2921db8b380d7b181896d3fcfe3755f93206efbb68b3e457f79f6bd1b09b78b31305f5f1a047be884704c5dda37f1211077f12fb3803e8bc039db96143672fdf4194c3393e2f364a1feed5f141f073b5ca4e268f34fea7bfcd55d25624ce12151a312ac6a646c55835c2deb8437c5f8ccf7f684d29855ed191b257a001ff47f88f41e08fc70eb4ea6af723883a7d338196b6c70c7ebff992c5604a0537b6fadfef554a9a04eca5c252a2be6bbb351155305970e6f2c974aa73af10b8c066e2a99d6c54dfa4fcf60351b805ca84dc72a73b77ed85ea6a29e9c5a11dba48f0a708fd364fa20de1ae29f4168c1039411f4161b08a6a9cd3b9b9079b62a8d0f4fb4189c5ed802048964f7f1b68b823ef9be2028c101b3e760125529c74c0fb52a9b4d73cf18bbb02964a0b5f8f730b6d8a6224dee5a505fd36382613c380ed1e9c400c77b641f99d34c64e163199eebb907ddd9a3f0a221c4db740fbf3e1e9ae7afa7ed6d72a44227f1c609f6d4f989e2464ff826306ac8f3766e0bf5ff1eaa519fefdd3964aab3965e4bb1e7720baf5832ebaaf0685f0bc516c5feb5e35c91c0aee24d14ccdfb939a53189a8821c829a8cc17bab7d99ca1b540b7df3c27f370790bc2424dafcda58e3d22253f38ce965054a143b700be65f090ee37ba7a66e48a97fe0a5bf0daaf331b5be8c7531b4d357691e3646b4da4d502476e46c5255403e060c20aee70d71de4789735c12cd31b377207d09a66557293f3be0b51518673b2a2662e0e42016c197db3058b0530a465d86699d258d2a0f9a09967d8074aeed9172a3bd6dda0657205e17158ffe1ac13860607b256ecd61e247ac635f622a8ab9b84d7cc4eb3d57c037181f056653baf0dd3ebb83e86e54ae6f527ba9732cbd1b680c4b3ab20093fd1dcbcd0601fea56a97aa5ddefefe89a6f626adbb8a6a790174cc1ff5d866580af804b04a08b9e9000f44dfda3e816ca7e4c421ab9b8a079cbd5bf6c94736774946e5fe8b60e801f0c84191094e5e9377e55e586f9bb9b4df5c5c22bf6b1765dc34ddbab600d10e32d681b42eab31c0a54442f4beb89493faec347dc1bd321b0dfd369219b868ea079a361758e94682b3437427af62c49bd1baeb06341c040c5e324f94814378118bdcad0d47b8b686f30426951cd0dbbd8351fb4c37a9deaf75ca664e6759f948b92c8b36836d5adec07ec41b87fd524754fcf26a6782cc8dcd6cfb2cec5be5eb19817af955eb7618806cf26021b03db64eea0ed414000279f958acaca39b1c7b25be38cdc9cbee87e5101a049158d6a9178c322419bf0de6eba4674490b6327db82de02f6b4ff05d3f69eef99e50c38d4dc2292b83d528eb23aa00ab070f0083326a40b0ae7b2f33a8f5485627001aecd0d53adf26e7428bcfac8fd286da26e69240f6fba2f28b7b0639134286182d13b76b22755d028611b41d93a6bf2fbe67f28a4e86410106cee565987b6417acb72f4696a114a00fdb8270095a275f02c9e7f8b58e9494b70501d8840c61b66cb4ee581c10c72364adb87d12ba60e5610888ad8de5d2192dbaf4b70c729349d964bf4bc76972f74fc963c31333197c8514728760f6c675d635d1e72013f9029c46be41a0e61c3f511901fb2af0bad46532f13a7f3ac3d18371812ea15012579736ab927d548897b565927184e624eb3bffe83b2ef01f61c1f868d1cbb1c5104aa3fdb6648f5afae7757428a49e1e23c9376c40c821a5905798fc492137d60592dbdf68330503eea185d8d183086fe7813a94b4662060ba83623bdca68133de4d5c890bf9f62f3677f2d25a7a6555673904268f0f20598951055ef80cca95f5979ac447cefa77f87933f00f4f3af3a42506624b66b8edd488dd28e860c89f7900f1abee4629c30285bc5cabf9435e3510f2161b32842cff9773d3de068ef15ffe64668fc51bdf7a0f19b43f4fd623f75994ae9822d8e88974e4bde74fb6a4f5b7f0115af4d789b97a245bffc566617377891000caceb440705f546e1c1f12e989a898d85e5ce5b17499b25d79ab8ab339b26e6309f261eaf24839d02c55b87dabe0bd6e80d102080816a23f53170351368dbd6499aef1ab162affffbc9dc0eeefa7dd321def96077a6a5e30c7749acf8635916e7ae77670c3ed8e2d013569d1ecb3cf544e6e1357433f9a51b5929abacf15a1db045b4110b28e2e46528d3ed3dcbdaab3a433957fbe68f38437b8cf9c5e43dd0b4a202842fa10314662d866ebdfde1860d2fcdfe175101fcf23ebafd080fb3db86580ff887ee5f083beca9fec33fca37356e4f87e967b48e8df1b4f72dfaa1a544d548bf026eab5e81afcecc763c181a6a3753666137b7aafac6d693f5d6199a972e746712027cc4c4a998e0843fe8cb47e8f7a44c2438afa007043e38e837cc8ffcd7d3d65512a942ac05b167e78763843e534afbbb31c8ace0f53e047c4610e6e069cbce16169bea6f0f661c3a2c4955bc0fc1b87e67f43df39e57e2a57f9817763b74ef9d42f9e0095e314e4c077f743010a0ab9c9486d1915b1f0f60171e190194db4c3495cf9ee2a080af2d1e383e56b13d39770d18c403944633f76637e5c32701d6d5fed209bad8a2911457a8038ad4600880acb08e4fa5ce5db75d3ab4ff3ad46f88dd17b12dcb7d54c0c26db78d8a32f26fe55b7adb0cda413bda7c08599adc774421f45f60cb9c0c3743cf28d3567083a8e146d01592b9793615883415d4da2ae5872c67d22764c779bee0861116a69e00cdff64c60acd1918e0d86c8f14c734825ec548f44decad2da7d22109daa01d96f725a1bf38253fbcc50b54142da05f618de76f12f09ab81107c829bc387d5e43bc49672d4e472b2513ae7f0aed79c5cdbeb9ff53b3f22cfdc665095c80c8c50d5e52ae0c3c52253bb1c04be8cc1fb91d904213943cfdea5fb9f33594b6d173cc090c28735fdc8a9866f84b9fcd9e2d28838292e69293aaa56c5b81ee4bd5d14feefa7f6e3311640ef43967677fd59fe4d39c25c5798f59990488b738ddeca67c523a29201a59f9b42654b4b09f2943f852b617571aa8b1f894bf6bcf5d45a3b15f79a6d079e9d509cca05afc45a84b776a146ede397f556e94ca9874259350147e486ad949b9361c1d6ba95288a093450744fc73928419d8ea393f4305e3ef8bab836cc522781f399bfd3876e7152b00decaa536752d78daf8f54aa148327a7c8b6e2dc4c9d842c0531c6bf2f0a75a69f1bda05f00e72cb3532f3c6b80d0ef6bae66ecf74682af77916d488b3a2bb69e5ac44bdebb69e2ffc22ff926ee88a593ff017caa6c162d033bbc504a2c05f16786ce2beaa74404a0c26abf3d7369bb2d9c97382c1176ca84629689983048293ca8ece0583bad0d499a606b503184b688f7d995a2bf8066563225f839f0d7341137ff96d3ac6632ca73a10dc142496c8f7b55dcb43daa49eea2be6f5dbeff0793050e87ad57e87abd1bbf3fbf9e4fca236b10df966dbd4eb2e137971e69dee64cfef2aa0e993a1bb94f06d75cc946d4d70530c65945f131b5163f93a5c82207b3720f371dacb9c82fbe76478b42c7dcebc9d631b929994f4be6caf8f709685237b0100d3d4d4661a26865358bc047024ea9e54f10a2d1b612ece4b7d93b41207d7042a8a52209c262fd210d11d4a4e93d76a5b013bc693cc68f6e6fb1a9d6e11118fcc136d4ad7b484d05f1d0cb372aa038ef7b55657875c6925c2cb0e003742f043948b4a44e24c67d4aef9e3feb49dac1c1028e05ffb768bef6eec8c90f77e1ad6ee9004a96bc6ceb92a29d3cc21bf675cdd54b3ace320a51dd31784bf490b0b6b26b9262a64f31fd00476d554dbd2bbbbedec0845dcbde1a4bb81fc5735919582b79660045f8476a6e7e3ac66889ecaed1b9caa1a9c01987fe156c3d3eb28a92c903d80c54f1a904cbc16805073da47be1de98662c4c76453352ea458e20cba26ab99e59d1c1c21e2a0280fe2c01e024c80785faa98e4e906cb1ec99a983e3b14ac47a5dc4899016010ae9195751978a2b5d4ce72c03e87ef62056b56a8a030a543242b85a9438fcdc180c33199a334f37639bdba4febcc1cde8beb90a68be0c7974eb8adb2876a0384b4f85f813434e1912bdcf55708cb832310a03a114405f00c96ea378255a5a4b37ad097232ccb31b807abe1e9d7dccbbd2674b705d59479b53eb0e10e41fe5c140fd8b3ae7d106842afad2a6b383942597c246d888f9188604ba9a88f060f897ef1a453054daf5b4360146a9a04ddab379afc2cd5060966ea45ef5b3ecfcc16b9f16b1fcbbe3bedb253b5267b623e29221ddf61c77ae040acc47cc3bea36a86572b2584e7904d1b6f379b315bf2ac2492a1876d90874bb45ce2d791ff043c6e4b1b00d563e9035df9a9c65884a024e466941ca710af469b7282f2c960075be24183f136df15c3d85d15b81f04c5ff9039cfd5cb1890ef8ed6e865bf39810378fe2aed1900b1bd2e110b33b7c5e34a14a18cc3f6cc79349bbae63177a1a56a929fea261b5e0d270ea10781ee3abcf7bbcc8bbb8665451a1c056bd987ff2cd22459809223dd73b64cb29fbe155d7f553aab424747db5501be10c10a228a51478e112de4e6954f1892a015386ad6b8497c0b8d7807dbf6feab93694237c64b09fae08b918226b6957df54baf97fc59848e212a804d6020c9d27601178f13ffc6e94a03dfe88004c6a9273c824620d4d796274856b2ad4ac476f6086f4c135e7a3d504971ab91a6b521b9dddda89cc2b9bd6c73f1269b143d4739ae948723b985cbba1789965ca5f6ad2524123607540be501e8c74b4a6a1536a251ee5c02aef1971a56a6581d784e5aece73d122e88dd79e93456407e5987c60b214d9f7abe265da417aa253b6d300dbf08e5b9295e26a323a60095f7d878aae3a3d57e38a3ff59dfde6fa8007daee464f99825be1d2451f200727f79396b3b1bb67bb867e2c4898520ac4c5225ba02b9756afcbd54071e06ff1a2a6d6b993181d2be1eef7c4e88a1e4ea3618d861a252df8a33cc35d2e8bdff834f6c33935bc66ef7e342e38b026f3f9f34abe94d7061aed2ae4286f4635009a9657d7bf3785dc5d06dce2202072914a8e9c31e3d01e17a5d1f8a537240d4fcbf028354fe2c142c3bca4be11c4a9b044f8232cc6224fe576284181c08bc586ab39a9e19f0b6820137d303f790d260d07bb7ee8022d651bd1395e14e1e68d10c9759fcf11c96b186fc3ef5997159082f175d584c9fda1f33965507243df9ef4e262f9077849ba776df83a0782db5f9649de5b0b3d05b7f4c3f4b3c9e82e9471ae3d9fed4df13f1d97a55d5c0678b9d66a6048d30f22b5a661079f36ed5e7fcd24d068a20ba35198d1fa97cdfbd6272e2d0773ee2581a56244591751e595b3fca0dd92129413ab1a314334cd4183c3d4d9bc7ec6edde35a6238516f8a217ea3a98132f3a2c253ffca05c08e1e9831ef1a8f0fbb0fe4611696410a30df5ad511870bd099860f8fb53639ffcb01fd467964c57f140b345018f8440b0a0dc4f356bd03db40ce8259e490f0df258b8d1b88e324c15d6b487440eb5e5210d23c64f1d886e0587a44e58e4415b0d7ca49d57222fe8ed7391ec001fa05608af1c87a79c353973b836b437862a004dd1d1116d88f4665a924985add02df27a7a6b1f8e79f9ac0b9a7bb0090bccb8983ea506f178301e035ca174425daa2e906fd2331bdf067687635481b8cc414e6f18941e3698c9b0189c0ed24351688a65d9a8a805ab5fb37c614ccb5592b03b0f3814e39d2e2327a4c067f9885200f77c827e13acc6428775587d27caa9ad6bb946cfb59ed8f1eca96022da2ef90c810ddc58bc0c777ccef8bba6ae3a10a19e6a27ed95d3ee2127fd4f9f0b14509ad2062578c8bff1bdb3f4ebd3068e21cdca392e897d0d9acdbaf2d2a88307f474c289839356adc8413411fd528b5031cd94c83572d33d890098079996ef445add38332f29d76cdb6463181b72daab94aa568221febe0029b266adf25fe176df939aa75b11b65fcfe4f716a399fb1ae81c5355b517180b030be231f11b1a74dc9f73308df70d8a379b08bece614363d7d1177dd8251f5c365ccbd0e128dd96aff40bcbed93c132ed144030c74da84683c8cad3f8bb98c3baf529f9b18b4d32148435a2e4a644d904cab98a20642512cb8e54276003894bfbf82a3719c6ac6a336db097c100722ac53cd9475e2a0060e27cd9b275b21f13b3eb777fba683f6eac3067944024565329664994de0eefeda6f6908d2e5fe25933756e1aa9777298e17b0587308429962b027c15cffbec359f67be8248ae097acda8876f9b7651f775d9838d975135859ee6f80cae45f65248f75bd742f59a1beee3509d7db8bad8472ab03388d8c86002291f739ffac6595f29706dbcc3367dc8436ebebbf0b6e9a51bc36544b1142ba0bade01f2334bbb1da5e1e5ccda9d7d0c3d352d9811f4833d2856525cf3e0813fa1dbc4a6a3e268f0aef1d11d8e86fd235d8fa07a77a2b75d6577916800c00872344659ad91cddac5389fedbe6fdf6a098cc434cfe204dec03bcddeac49490c51d4404716ffb5dee85da7cd6fe821b72bc61f574092ac3e92a6f2e7d49995e82a23cb51aa823d710075f99dad67fd9c41275cd97eba6301e7b919d9587a13e3b382c7cbf6b7c99475ecb27964716ed59adfb6814a0428613d6365bffd92a3db9ef941732f072df6972d4bd105f262ed15e1a58f32aa5d940614b103e8f22f44ae982e1838fb3426d56d36ecc3e65e5a2b722e2d75d9e3548784128202b25aaaefac7a8da085107c77458799b98a93dcd315b798f6adf41dd88a593293cfb8af327349714e7813998da84882b1c7627cc2e8b5002be1209682a807e0a64ed52d2b5b0a979e8241a9db02834d8a7bb9280a30ba6e7e8228beb5dec0ae58746ad3c6b30bf9701bc3a0fc747a4a3278cb3c89090ba3469b62575b3593b0db9620fba630da5a852190c34fe5b781a1bf409389fd5884bc36204e81d25782640516ebd5e79ca9692c424667cc4144d058ea86ad2a9dd97e2b1ce6da3dfc0bf451a0ff89dcf42d55a456d4934c31a470d39062eaa37f13a11a72e773db02ac861f878aba6333080adfaa1a3c22be25812e4ad60769bfb7da0f0fc6d961376074fa9f1193f05aa4172081dc20a7106df72fb6a536783ca338bc070f9dffe25bf33dcc9b0fb4c72e2077c18a73440b310926bde740cfb5fe19bb88dd7173a12749332cbc8885569301ca07c6636d94efcd991761371992442ea68625c345220869977a89f4b47b17380f86fb02b39607b856668ad771d5a1f20a5c9b362e7ead89b3c63004358cc77414d30c4dc351f579ae3e182524ccc9e84054a88532e63b0ef3c0578a1f4be901b0e65b25e81b6ae0b5c1c6258e2463cd0cac8e96e15347a433afc389c5c182c546949c061a330654cde0f947149aa89868d92b36be9422bd689ba0512a5e4ec43bd78a2b71e464b40eb1e19dfe2056803413eb4acc202c9d758443d4806b8bebd2da1438b7a931fb75d257990f81c5b76ccc8068cdec7c99c28d89be9bc8621dbe2ae4d5cd055a918a156ed575135a46f5a6c496d70a3c3711f2b6bc98536a03ac97db84fd03d3543772fc94fea7dc2a5658016bb6b09d08b18d39be359411a4fbf1912eaded031309b4eb1cc4c02e0b67a7a1fa098046eeb2a46aad05a06434866fac31ebe08f6c59bdf22430717789514dd9721910b775d03108efc9cd4f50af4fb25cad33dcd1152c0a0cf1aaf1ebcbde7a69ce97a571d7b1489202f6484dcc201576e24eabe42e49626e74984868f358112f7a69f020c35c5200b498eb898479f9492cab10b48d4ff2cd5e99770ca067df39d4af2c9f872f2ddf5a8534f6082c0c48491ccd7e5ea88fe2b48230f7f4fd7db504313ce504477be3460723f3f45966b49b263da3447dbad41c062cf21236b72fb964d1b4bf251ed27810371cf0609cbc565d5bcb2b42d770494df119c7c2e36b3eaf7198eae1d13a9ff1b3c27e220ea720c75992adc885406a0daec277e670e6f2aeae8e9622bd5f97c280b5da2342e82cb34bbd9383ba48f28affd15fe9394466a103fdd2b61d56d86637061f7e1c257bc1e258854d017dd6556282966a8611ff6363d3151e198c4d1e4aae1ade30e25fa9abd13414001d37d00d5b9424b061160592cbfd59aed1c95b9f1dea0552f9b133bb12e67c541465636ec4b4a40423ff58665491d92ca1e4fbeb301050a8a5d60151588e72e4fed026874109fd35b4cad7e6a6969c05789aa845c0fd8b053313adf87755076daf5632292a75260f6f1fd59e1aca539774075cc7bb0d13236d925952714486440b025daadc8ea34b91688573b229149ec65ccf268ef481d829a01ca638343305b443923a64629244f066d0f68d52c3978aa097537c2ee61908a7376b93777c1272c524b819f86ff5f93115d7b77aa7fa2ee0f71e866026ce7e50fd9f62c039a68f2f3d2e55b544f93c64287df0ffe4db1bdb9fefb163fd6de91cced0e823030188876dbf8901a94ae50fb7c322e0ebda6c1449c4c28846faea0b71e86b732c68e1fdda299260f8bba571045d071de08cd2a61e25b3f8ba1e6e4dce751b5a0f9f5fb580946d8de21bf33ffc05f07644c26f37a8d0a534b649e905b3ce3759e822ea1f9817cb7332e53fae3563cd2e27c93ef29bce44e6b199703a78f3f5c5f57c8c4967b38ad73c80149c5ac93bf61274b51f44fb4a56a572f176715b5d7a517daab59e09f99a3b6b3d2bf0ab44d68af4f7a726d8e855e0d6775eedb4a27547025e99885704abb25ac0dc9faafba088a975546b3508db7b85acea757259ec45ccd9c1033b2a5ad78ba1ef43856547758a43edea66decee67477889afa03b8c25ac0dd87cf0702d5b8900ebca99628f38090afc54aeb5901bf6d37f240bcad74df915ec4172284ad4ec1462fe89ab10cdb8425e6c8d74d7307b6fe4e89cdfda19d288dc32a5ffe5e496ca117d359e9d4b172a7d5b0caac19e39e5900643730513c105ee51fdf38a6611c22ca4b1150421109f8a4c682e69ec1d97241d426f06cb9d83c8ef295335849462b1ea5a09ed9452c3f1311f54c5d875a830f903126d8871f23754202b2a587c0524078f67a012135ea52c8eea887d6b39bed356003ac6f5677303dc146a84ad3aa0e6e53ae704c2b52323c49e4009ab338179f72d3e527fdd50e129779950332709476020432679d6cc96ec1624cd00bb68903a93b1cd90493e22308f17648e8fc27ad74c975bfa5a60e409d33b0c2dfae3e4c564e6d92af47ec02443bd02babbd6731c98214d2f20b2f92b6fd69c3fe3afc025c1a40d521e0ab08a12d817393dd24e1c9cff8e729f27491352cb554bcdee1e43fb4fb5f316b702145b0ddcfdc1213fd25188b64f730ad1ee210d165b714eb210e6f9bd83cb5345020f11b3788e5ff15b7c040cec4c9a142efce2e040095409f5f04e8828b28a06abff90b0e5fdab67d5c7105b0bfc561733be0c2d885dbb830185c9198e77673bb95c8e6c7428c0fdfd272dd81eb0b76cef36a6c67a3b8ace17fd4e8b384f9175983391b53730e0d4b92a3429720efe785789363de50de67471684501f584cec3fb962986da5614eedcf8083ee72e41799d209f894219e53ce58413121782f95fd13a4e2d8b3fb021e34871b785a4e4a4d999c4bf8f0bbc2a8b875440447adeb85fe816134db556df88beebd4b610c719c0973779246c684f7d3f397a6a3ac40a9c6f04c7283955ed8ead08bb78833d783159cbd9ad247f43cb131f2452a6d0bb3ff0926915206590c1d37aeda00006d6797f0e159e8dcf8f2889d891d16f72b427209e88e3558998e790125edc65941b370db17141aa43127011c8c2939ef0c65ecf992e2b1354510121f73a6a09e1a7ee2a5fc91948b297467be2ef21a85d7b6ea96052a9833f26cac1a7df1784667a658a4668abd9d3b0642a3a87a117f5b840bcc69643d1080a258424f85d2d7876b90ac0433411049a98670b7ea5f8295175dd03cde06edd7735169f1a9206de9855aaed1cc9e6e254de9a6f1e948f979c7ade6a5bd903c9e361873464d8712eb535e5ce7122128adb0de4574ed79cbffb6f3428bef367f56a1ab49f334ec7abaa3ab443fdcebfb21cf4fa26a19a5cc7b861177389ce139c8169c860e833daa2f9e2ceea536446497ee91106bc343aadf3b0b62f483e130291169ca228df2e0e1810fb79c3869872d0f4d79c7edce5ec3fa36faead575034057ee84efe8ae3b79778351740a42217eb4fc2b29305573268105198f4b4921ea76fde3adfa7d303ae97919b2197d48a458dc8f837a320cfc9c13536d949f18bc9b186630db3efdcdd54bf953366168f202d8d67b72acf9025e53cf14ed168cf5430eb7962253e754c44919543a64c79ad35a421b8724929a2b25ece4263cb9a0317e6b2c09b0d5bbdba5089b3d5d7ebe468904bbe20ae88c4d4907b0552811cce59002d6321ff6f2be2ffab10e679337b7f2aa8ccd47cb6626eba7be8df1d486f6f390461b6218ffec90517cda342db1d2ca2ad88d9792e892e3727c1da9b547ab2bf7dc11accb3c709035390a5f1ad073c4c2c88aba1e40408c3b2561ab511142777915df0584c5e1d4f35e86f724a4c36cdb1032e90b99f5146c2427d8fbc3036fa9031317e0faee51304722a1981d4df6b5e20b878e33b6312a483117456d792c56747e8ad46ac8b774b07ccc6fbf001cbd7d300e2f59ada91b6a388c43b36cdc032c42770397e997cdcb972cfd139dcedec335f2110063db6c519ccf0dfefacb99af7ac738f57bb51b43ef0fdaf906e7288d09844db963ff69320d120cf13fadffa8da2edea121ff243d1917d0c6f17b72ed4bc0ffba11e60abeb42e990dcd393c9e1bbf6a587c9de3f44ef14b64562e8505565d4f0a3e0647faec0996924dac111295a1bfde137885257b0d868f9f2a748723645dfc65ff93d266ee256f6544336e2a88a736b90c37c2353b5d83470c3212baabbfcc023a19db83dc6582b211c1cd7132baeb9f1ab3d418685b117a6dc514f605fb23b9ca84ad4127639444c11444e7fa32c2553e4b72be7937fdcf54780477ecc7bbe896dd668b83b4431a1be15ec9c0b433db7277ac647279c7f0907d127f0b95216fc13efa563d080839571b9c4f6a7768700a6cab0d7e9339e532db1d38c6d0ee746a96d3deeeea51a7f7478766dd381618929eda0df8ebb82aef3ef30d43b6825de933ebdb2cd2d4a96ba911d2eda12afb7bca933412ea1f47665b3cd136bdca63ac3970b980443056651995a9a42fd7963a8876a33e172303082c353e7f55e5513d02d36e51178a1ac971321799398b0b8133364172c5b16c3298ae607160a89dca49327c78e7a27530aff1e2cb622d6099210245898b8392ec88ffd621efa1077c44c2827cc66f9d12a4b31ebed2b02554d5d66bd337f949b625c35b16f3e5196f357519f6ad5c887d8a3ffe8917c47ddee06d60fe5eceacbb66a5f3eaa6695d8c42a7f412382518370a5dfa4cf947a0e045e3679f21a0874209436aa620538d3640a4a66162fc41d0eb50b1d2cb0591e79e13e51c781f063b88cea12b63e00cc2c82b8b8d038e8e348909fa7f5caee9167854f6583588b70d2629dc07b4624520fd60277a396335f08df7161b9d1dbae0509359d68f0e807f4b3f8ba3a3d982263aa562caa27f74728a48f6589c487297d982b62f80b394d76e5dc0d09f2690ac26c952728c6fc906c2819f36055ad8e49f17da79aba5251883fa681e88e0fc88ef810ed6a75b498254080d7dbe5811cbbfec3f8c78f7c0121cb1225bd0fa788a1d14c51b0c978fefbefcae9db6e435366ca0ac25b3f75e13a674e7c7e1d2a45dc8efa15b35ff3e0b60c6d0087497823eebe3db00ded6ac53f9c2e317f08ba294862971f6a6feb8f2f74a19f89a9c3019cd900842328ea88628235221738db57f205db926f25badced7b785beb8c2c951368d12c86616d446765289771e4eb490f41a58706b7e0cca963c680be6c78fffe4a2074268089b222e2414675dbd4d7f630f10da4824524483aca37d5e9da42a7af3fe7d5b3e9c62b24a6f3793bc8666b000de25ca79cec11e8415bce3a6408636f25ec96c936032688f902e3098824d45dc22ad051a4af779ec369e30c2c6ab8f69e2792135295756d030fc2936e02e9aa729da08672de6bce32dcc0175a3af5802843e00718d6d43a3bbd4348501241bcee1c2999372a06e50a650b39002a6e2915bcb794ddacbbf20de44a7c6e667946e41556410bc37639f398196698ec981e795ab15c81a952de3e27789957f1962c45e19c0a586c4e5764cea489459d8f2a1906516a433a68669e193caa40fb62a366b846de61ec264a14418e66c2287d8939849d0a20d691696c85cdb9a92530d897e33edb4be78dd985c7417083b0f50866a6dd68d3dcc48dd31b97d8ef403d22b654d9d2d84a9120ad5c99b3f488426d54fa3e5b5c83358474a4bb77e69b8f72d6855c829d7c4924bf0a4038a07a77aac898789414f16c5bee99eb4bcf67d032fae4af3d2e2c11602850db9b55875a72f7e1f31d96d4d6886863a2ce200142325b307f671647c25ac5f6640b0e1fa6b6927225fab021545790b58d225fac326ad213349da55646b66d374a37cc94deb9ed856f38d1a7f8587a11d9e08cbc70ab514f44c94af1d7e39d3b3b2c9b7f4d9fc6f5d7e68dfcc0e14030acff6cdffa8d7edc0e3559542812862b99961cb1f99fdc6bdc987eb0cd60aa8ccc075c3e0d62e3da6bcee3e36926bff727874d5d0f5a961178497ff01001c7f6a677f2b508e87f75fdb3ad4d4d31b942c4d86e5f4a9b765208e84bd89f2093517cd386f87f1fc5666597e7ed5d08706c9b6cd48c1f1f7c6cb273b179bb6e3785228ea0928e00cf1f90c4933ca570cde7a4d3ed743015d0d0c34cb8bccce4e9a8237e7bcbf453c3ac88e18be4dc00f6bd4408756a8cf89ed395685f5e27a5362cb4003622b6c195c3ce1d74d051f330391cc59015d65fd4039ce354e41df6ae06b22638ed62a0160e31b86f03663eae6acf57c4797537d6aa956660fb7d02d4925212080a03218341aa39cd46496d77d9a886b735662acd2a9912f29e384ba77e7dc44589c3a0528270f13e6da94a8eff3bbd6b740a03618ae04515483eac930306c987e2ba269e4a5e952a6d382ea284928e4105803d184bb69b13e937a9c7afc8b5a6e5cda3c7a9808b8c52f18efa1686df4fab261fea76d4a2ccf34b97eebffd0b366b37b4c05ccf9848600b386674d161077b1efbbb05d1bfda53261c3bfccaf6601b720aa99c491d28bd206620c70ecca53ad92433539831aa9608afc36e263d1f47ac9083b59d7d76b2139c93bd28c8fed52a3bf56864381fe12da884d0d20f9ccf0ca09284dbff8783dafd178899e2f730e3c98f6c51e37c389edae6cbf433521f93df6622ab576a6c3aba24f98618493ba68ef63e6454b2d51496bc10c66f2c3fa979b4d149e6c5ddd196c340df3573270006d1131820fd63b702b8124d0447d5726e7558dd3ca197f03231c833aa337e0ce6ca38af7aa597eaa9915361559382aaa117a66efd7aaf6d9e5ea88123b87b5783602fae46c71db4dd824aab86f90925a73764817eaf526afa8c7ad510b5cbd5696efc6e52744d859547af221107963073dc6f4fcbfdf39905a1f84d5610ccd3fa01b9a2dec1f6b0013cddef3ff265d5007adde12fcef4e87bfc8390263ae854784d0cfd94d482539b77fb11c62c5daf96ffc3d3d3d17ceb11ad513b832b05ef30d3a64adefe6095142c6b5bafc066d1e23e746ec5fa77fd3a17039e8c3a0da781e05a29cb28963a2e70bbb03d86986e2ec573c3f303e5f6e33be8f40da7ae0f78ff0f1bc6cdb7b5cb108fc4ecda25ea035f5d7cd789e8556b968b3741a603f9986bce7cdfaf96b60e84a67e85ea5869607e35a98ae68493caa483d850cb9222f5d51f6472b8398768565ca5c6e49376cb6def7954b73f912abe3f3184eeda4ea086f533e7229427f965b7ce953efe51afd2e27c9db979b1bc94bb46f92168aad8d58d941e3377b296ee54007057cff8f19a4f0e908e74d053ac34d30989dd717de5b6ce93b6da3825e44fcf064bda1f628a08935f165421d445b28fa1ca671258badd1fe8363f7654dabc4943a5ea040ddae83c6fec7bb49390a25c7617e73ac53cb834582f3ffee2931471e7de1a6e6f7c5392e77982ab29769a2274bf3912f9ce4ddf97478dc2e8f1c692fcd383f6d42120ac6c9fe255b9692ecd40ebc457cc6c402320148ceb367a9621b30eae53b4b7b980cc87c5fea5b45d0e40078dcc39492544a2c7fc033f47c4ae21fe7e4beda88bd86a261119e0ce2f29554948328607c5821118903a69de518dad1a1099cff85d90600169f73b803bb4257cb3845fffcdac03e171c20b263103a11c4a40c5a9e71729b1ae51c7ca48860de082373e159af8fce868ca68799e9a2d411460891ef6750803e40987d97cfdab4b78e359dda0532e9d6ddd061b1d2d70a4fb75d0bb7dcd117346dc25f2999b38ea3204e5d747087d65971ca38b729e6759731c6a4a4f4ad382b5c05f7e46fe044a815f6d98447454211fe09a4627e10361dd156ba3a71630bedf6f94283981f4f4d1302a870fef86e2153d111f588765caaedcb924ca42577d1f177edef355b448efe9572294caf19fe8e6e613c1650c04e9028ffd83bbd0531ad15e16837782accbc893d27d86809a5575d4ce54178c66254ff40bf1f104f22cf6d034d701dba7f8ebb5a4e1456fd7a9998bb08597dc13d63b2790c167b33400de3e32b49cec77f8e44d14c06db50015c373321e4bb2d076c2cc9aefffee01bea8847d902ff2668b14cb4ec34f165827e6c5c2e8591857d00b3ff2dfdfe7a4f86333ff366c52db60d6b8476c557322fbb10a963cec0875e4c5d00ec57198c5bf5d2ea2a4f00b76d163b3d185d4e63c47ab9d126ada6414c152851f32021e63fc6be3f19e5c396da015e32366a63c65b627f289dfcaf6656e59280b021705cca2b242fa844e8d14b8e2460f1f235824128a92c4cecd47c1fe3c6fde81d7bc949cf2b838a0271d72b82dff772377c0c28224e4ae0ddcb4fee85ed827f87e71b85f513beb5dd787f46828911cbd72bdb0afac1313e0db9858171539900990ff242f4d50bcbff283927768c93e2a2e10c185088db296f4b4aa80a4ffa18f4e0e637623bdc6b7d40d21242d15f466ffd9ba907c3fb6a933528577319155066cecb5efe88ac7b8d7462b549e0d7f2d492982cbd910e4b7a8b18c26df6e5604310e342c06f0850131ee8774e9a40818f95948ecc0100b8dd23cac95a8cc9a5edb8e09181347ce265aadf021268f0dcc9cc5789a0ab1eac1aa38e223b8fb725098db4b832b6733878f6df5c06be46541859093e27811ccaeca392b82d8562be70a9c9a2b1a9fdf485544a020a2e2918c3ce5e1b82c3ef9580715bf9c5a6dd90181d8031018ea7e4aa8b796ea8ad1f71e91c85f8f789dbe7b41f340860ce39d65aa74b43ec958195d409513340d4e6cd730cd3d7db3ca9f5d8badb7929882efd08980116a05d629ffdd42422926e2787be51bbd09e649179d1473bc6fa335658257d0f5bf6f5c96996c41af70ea7a35e89f6b110ca071269f8ff2d2623accb34bedcf90f29b82a2df80b8c3975ea34cad02fa6ed0ae93da7fcdc2f614bcddad80940ac98a8dce5c40e43f863ad90c48383c9244c647220dd8bd52f83dc334c782565196d68cc4d636bf23db3ff5700e441a4f4407e71f815a0388cd151b41951796f75438c7f6e4eaa2d14667494dfda0fc5d751a5c029c59eb2b0e824e0135106faaf19e8d69707b6d98e4fec531084e850ae7548f2e4d2c8f1fd05d548db2608c921550537d93167d4ca91f6e0d6e89f84d23c54f5387dfead71b0789276bc51107c3b3ee4f9f00866ac11a2fa1d90a790948cd5c247f18e0290b915ee4b0a3c9be97e36c9939ff7b308080189b22bc68c5e05d98de2afa36e9df7befeeb6ce7b8df98107a1ab24dd249d510658ff50a31b874a066df75dc92d9cf8442a4c7e7237f391ab629d06a81a780c53e4f55888a3bed3ae29378f67661a3c7d5d283e050944f53b6ff75c14689aa40c5ec6ee863de1c5360c8f81ca99f185a6fa8ed377aeb67af429e4686b1fdbb412a827f220ec4af2bedfac8be4f70b812382a85eed00953a204fa96a97f316a5b08d0185d383aead9b067a710516366b6e24538eca08fac617aa1ac1ae3509ebbac86f4cd982fa3adadcd05673448c6a3a03e7228e52fb0a3cedffcb5748118317824978a7094d8fb142d26961a6e0684fe510488423f5e891d6be3e6efd81754de0656e6b72886bf7fc472387bc64e79cd9f6541f6094012db175e04b55dd55f215249e6881f5e41d775eda162cc37e2fb76d1961b0dfb79b7c3f94d1038738342d46e1c2f2fe7a45f00cdbf29078309f2699bbe9a4ca6d93dc00813791b3c2e15fd32297b918174ef312ca0efc86180208a6e095c4835040e8c62988462b92e0311d7b244f9fb4070997c8c12db5afc6a2794a543a56b90a100b0268887a0c06a913f7e0ce00e79e18829652ff7cade3aa129226ca07a4dc1045246a80c6ff3de7e80c2d00ff2bf29e7b5253137bba8bf7c960110f2ccb1e4df2dee02dc51a8d2e67743f61f6157d505093f55e516d66150580110209be3ca3625f2c82e4e716909e7993ffa85844bd86d404c888a6b76d3191409613e3a84db4a7e9d3c60feb4378e4be5a201836c3302896b44106c6b81fc7944d264bc8d42d8c8aa51b292581a2944604f74c8db86ed9ae40c88de302a9634f06dcde724aef29e8ab9685e597c1f6d8aa30cc82c488055d354bf23122c9b7cdeb27343b54d233149b868c6bf5c7c211c5ed818956a0a9cd9eced25d42a17581b3dbe2d4a3c19698695a14ef989219ee52cffc29341b4fc26ed2f4dc8b83aa019465718f2bb15d933268a5fdaad7fbbc2c5247ce6f73c569e695eb745ca8064e30dcd407b1a11c2951538bf2863ec48a4dade3c19db9ccff2d09cb599b1f923064864ed46574b002f0b056df42d17035987d6cd1fc8314a2bf05b630d82fe505399d205c5c5026980db6574895c920f6dbf1a6fcb63dcb284756d851768bf600b166d055aa54b5ce4e38ac8b374fd4458b82b6271c6c6da595640c9f3232ab127ce019d63ccf2b7e4bf8982062d707777d3aedece14527d650ad7a3b45eec94e91732c5f2e56cc25b09d5875caeed8189c4c3c552b7aae169419f2fda5ba39cdca974053317cb425097b3241e9996e361392e5220a9a17f0184a9ef4cf4de8cdb6ef1c9325b3d2a60b0875c9bbb7a2e20595af3c8b829bf792736890d9215fa5ae27085028cc260951cc43f2d1e3f766771b9c01755b57943e14fd3de05b7b1247a2ce60dac72ac243e275373e6096e2abee3d168dd871bc71aec2c40055ebc8c222651004e50130c62f8c3fcacb6b39eac4785595e894f4b58eef3479414015414abb3ae7c37fd9bbc1cd0d442b561735514959f1a308c29985da8752bf1ac49d9a33923efc94a3566293b4cad2fb28c01855f1d8a171d50803dcc51775300d0af60e2b71e3b97654d3578841b7cdf99b1866992964b2c1388173e35a27df08e733f611ef44e287155e4b4edf5e4739aceef6556767ed0ce8723695f7633bf2c5dc1a9f03c324f0ed63199897087bb038350953f4be88b1120a42bdfdd3c41a8a2b4eece5160530f3704c8bcb2c1d3d638216d51b208bcd59f24432b4fcefc981e762126f18f072cead47aec7030c20ea28ea2dfff9783227718d94968dffffdb78677008a87a56fe03e4ae6eda1decf591b7837d8804c2e8706ec130f2ef7794ad80f4979f5c35697eb97f5092e4a9da331451f6e4e82ea0171545a2cd233acf90a5a4c8e0b75de74ac88525573b16c8a5ef68252e76a84da17526cb22ca21cdf789bb3f799528effd7f3b1081b96f271d85179cd02431c846e4a3ed775f2689840d03de1522f260854ee23d2bc4063e1ad4c1b1a1e824af99f1a877fb1855f7ed625434c0e4fe6030bfc5ec9d3a95ee846492786055cb3d28fb423687cc4e82f77cd7c02bf808da0031e365161f784cbf78b49efc8a5bc97161a605c2a47828b460f8ac84d5517d0086149702b931194cab88bb44147dd8b80539a380e0563dd3c01c0c21400cdba6341edcd645620f5937b3215e5a6e53d076660290f300e33b3f187cb182eb982887551085b2494789471c5af9477f507bcffca3c8e368af22c624512491ca09164e901a640916f404beaec1c3f0bff4e85137498fa7dad567ba069af6c168bb1ad062475408c2154b7118af1cb00459b37ce50fbef1a19b07d7353dc872e8923245500e74e5cd90d8fbe50bdd9d5405ad20da74dd48ef0c3799d58cd25b0e1f9924f6a63b8ecb65795716570072397364d8270dfc32da6a5d602e48ca150b30502e7fdb25fc1ba4ffea362b526ecff2a84324322f2fff48aafe2263d6a679393905630fb9207b3200552d77793ea653b6b914736cd2ae1ee4d9f35133f43d1de15cbb83117ba5342dc05212c82687fc358c66211070f9b6b34070edd76bfe1a37990fcba3d3a6760f6fd920f93eee34fae094b62ae263b5de557e2c00b05e1a966172f6159a44a4d57fc520a9d4cd0525c75a9af7a4a24992f1323b6174276e20ef9fc377ceb8a7a42d1c3b295c52c3ae2d4ad321912985c548bd54115897398bd1c15b823439db9f30cdf188e701f7b5c6129e9e66f2e7480a1fa2493a54c67d3fc394941e3f027c63ab0fe097a6b539c80bb20cc2ac0574a1ff3cdf1f8c9636bf3b6aafdab3a6560f0468b2102494da70b43801cd66b0235a2e9df04f89060a78af8f2d79587d1338538a9eb19bd591b2ee14b0d01e058ca58c3025a5d9dac465c0b4b3256919ab00bc2613671d562738dac50e5a471e81e90c818528c82ccba38f50878ac7e36f50bcc10eede91d410bd76d05ea955a1284471c5cd149771d7a46f1029657e09c7b74f14878c4b3f30fd54141fad5395dc8e5a1f98d9212e2c1a1278d56f621fe2a9991deec9334276c5123f78ee0b46afc414d549f1c28bf9fb4e522a2f0abc7224e2e552bba8d244d478b167597031f48c8bc28357a5b1c1aa32bf2d92fcc5946e13790a5b7514d6264451cd45553a119031bfda68cbc7092a8842b9c0981a75aef9c9008f4800dccb6720d9a534bbc0137a86507ad0125bc2d523cbdfcf4638791101a8bb289cd09a9d92b0f23d1b190f87ac4a4f770835c651c8c016ce151e0ec75a0177ec974429785853f4d199a7d0745ccd8325b77d19a4021fcc4a15345bea4b6bb63cfecbc1252bbdbe12f2006f863bba0a4ffc4b422f66cbad9e2aeebe56fd35fc575a5d7c0f19d1b6bd0b6ad4b34cd5823dc4e1eeb99945aa9173a53648d35e6a2506ae0779fd6f611e6d7f377bce63ef0d6a1d4a421d63284a4c2894c34478e7b9569efde71a7d4ee856587f1f1a04cd143347ae4144dfdebd14d8938ce42a41eb91c04aa8bf0e4564abf987b0ee3dbf59f3aea9d113c36c233f22c7019a8f030224e68e1c3fe2150324019baab6c404783cdf20830b86a7d71ba51d668151ecf70f7496b0732db0cc59215d50256d39fafef8aafb1cead6ba92c724877414e577ad85473ca340faa00778eb021ba575210a4390913ed554c34f58219f9f424643eae55e03885dfd4e3730360b095ce2a4b5d859b6b30c2362ba55f3ecc2a52165db607a9ff73fe6b8164f0fff25de0168338c47c3fc44931f0d0cd92afa698c729c0dbcf815fe4d23881cce618346d81ea18b787cece46099248391b9b056a1894fd5d87daff46d74e13aa21340364c51ed1fbf9d6eee6dab4617c1f308e574b9f8182b27be443787ce59fefc3a5266b28e668fecaabc4468212d9a7b94ece8767d64f3171f20d267191ba1ae66ac436b2c60a1a0ff8e8c98d21cb54440b8b015c29c2fa4d81861edb109f8d9dc09f3f0291b47891ca6ed9c496558b246e75910ac434ce3c0557f4788e39a16a1fbc629f6beb9a24b49b36d4441d887ac3d2a86160e70b7edbec25a64b1674d6960dd0fbc5e66686c671b805b72ed8cbe4f146775417dd2445fdd819debb14efbf6e884f39b428b8bfd6545863e9613361a44dfca3729fe731fb87654eaa1335b16bd71c09e5f98e34ea0cc287c59b05be937c196310f628b22c473506020d387652259a55f405ca8642eae3a98fadbae451a7c617e3faa73ce68e8a2472beeb3b8003ed2489301a75d20f52e18e681f47fc2bd50624000fc8b45ee1f75846c01049f606c3314f259bfbe362ac8afba4e5df2d0078b01a3afe169d1df160c7b3eff3a8690cb0818e43408a1e83f5e58198ba7ba0f8bb6c207fda3c2c3309562b69870d61769971f569ece4b9409015775e431a03942fa4ac0bf43735481bd08d93857cfbbc6d4035646d3d32c5dd582c5971c71c400b7394667af4fbbfa22bbca16b794afac0a18b4e964d3b65b4b47cdb5b57a79f5909a358874801e70355562e587111e614c12f1abe80d6a938e29de016b5dfa62a7db2cb2b4485a6ac8663eac1eb54c0ee316bd481703128b366dc173b1cbf6e30344ead2af9501f43fa44b4430aed44f8cfd7d82365932e6f4c18c4806cb53acd8f79363dbf353fec046e0fa0660e556dff6590def8bf99ed03cf60784c5975e0f2ea98bebd1e5f525d1ef39d34993137090df03ab61c8100eccaa62b89d8edd5b537f49f964d6824e92818deb9df54583cce6aab8475f0dab50c3c8426f1fe5780ddeea71968415426022a5751e63954ca89251e241f262b4ee2fd38761986af0d573ebc86b0970262593d321fa668ab251a65d01d3a6fcd2b20d9b2a0c068e09fb6472168e6f765a3c533057fda5e10f24c841a0ab8fa12d86beaf0348cd72005c840eb55d7486dabfbb35682e5eb3a622c87ab7121bce95b017c430e0f4ec7355e77c2e063c8c32c8b59e9b98351841bd873b65a4ebf65e36de6add942c07ab2aecb29bc53803732138d3e235dd396246a6f5a6f214084c50a97e06a9a8c1e504927a0007168e5f2a44b2fbe63c69b440420829f475f41c9d2bfe5403b182c6bf1ce5012b86745c7e8b91b2b14b1282c638eb9c093c72c5a3379e5e294834570a7e97d6723a00fecd7e83d427e8998087ca29a2e22d675fbc8f88b3fdf987ce7deccdba6342cf8b3156a01e39a695538fbc2eb6ec1722f0ece27a186633245e301a4caebc09a4f1ca142cae6ad9825fb824a564aa68a027e324e79b262a5e2f9879f55dac78f138f389ec5e0ae6d83cac6b67f08852cbc7bca1c5b2ff00c1489fdba7e41f5388d1b73365726366cf245a23ca07a1e5f37dccedd2a92926f74081b4c4167de66e88a63b0d660ed4be44978d8214c2d3bc4f6310189ff6fe90afc6aded42be862091c92ccc6351bd2647442e28f6857695dc6fdab69cf14896f78806b1f52ddadea9247889f636c7c00698b395e2ffe2bd4c9c10e5901226a29daed1e8b28a8d740104fe6614656bd2639781a4a3349ba9596e41fb67dc574a7bbdbe56fd9e1be31208ed35f4eaf87437e210a638d071a0052d9a2089a00b72f84f1cc42f26b42f2826292a6d4638014e2659893d27292f4871646fbf60d179dfe54346563f45d1a11672e6221eb46c84c5dc3ddbcf1d1181dd65d224842d82fdf698dd90ed048478287e11ba216c257a94cd3d2fa8decdb7aad7814127de7a153c81745e216d7f895ed4146c3fec7f07283f9a408fbf3e375d927d8e19305870f6692746e413811aa209eb20079770ecfe5034f79280674e1702db555c532b99647f2b1bb9e93f4469300c5da4a4321dc1eb660e99342ee452bc2b886609ec2914a6c17f1ad50c30d031a8c293b33b480ce91e611226bba761daa17d7371fec50920b759980a52ae68bbbc698320271a6e0867a1db911ab0f56254a7fb6efbfc0846a77d8d27ec823a24e724594db77907e87f70dba27edb04ee3b46f0483fe3408533d2accf1672cff17647390c2ebb6cb8448cf4c8d7cae3f68358c2b8234b7533b71ade4f6ec3d497c15b316508ba733cdd42c91fdf8381a1c1b2a48ca369c09debed56ecbcd1e60ae57d3fd3cee5974b376dcb8b11110c7bd9b7c5027cd8f6047e38368293af2f35234218023a102747b6cb222f3726b8a5acd377524af18d969bdee21ecd98e97389162771ae24c59cf2a48432e297d8712c3034ecab67323cbcb5d1c4bd9b9deff9cc789ed687387a0a65cb8f21b409d0b640d2971a5f5d2e83bfc10cf81fdec1d1e7a4998e9399e44798fa18027a951d3e4c8b0de5ead51b4a4d0faaecac5ecd1a7f4455c6ddf42a126aea2866da93a302a3d845aa3b9c302c821ddc529016b15e1888e09e4923854795accf8d0d9a4c57379db5b1d9235357f035e3d8ebb4afa5c3acca111df4250d6f2ee4030d48efbd3f4640dd8d11cf88f753df9e3668a1cbb2ffb0d9ae14b7f12cd69a8a470ba52f2fc1b3c15696050807351f2881b6084a9cc526b9c048c47699e2ee5587a771ad60b2a2209855581e527d8a750fa94323bebac88e7731d055c167cfdee989c6664e097a8c056cd2300013a51c87cf391f3f8402ffcfe3563b7a8256ab0fb54177e35991fb2fd17100f4e86919cd4c934d7ed27f791f8200b4e195abe33bfffd493771d2bf3cd88a69d3f9fca5cbf2d01d8f6286ecbf40750b19276224882f217254adcc44fda7d6e5827d8ffe34a0deb7e17a6dba672e548b707c4676a13a6484f79225478f139cc88797fc3510f4eed9bcb05cbb157cc8f4212fa738a336dd40f388c143427866f3cb255c731b0af14c2cc47aafcfdbd6f6abc3bd7cf4832c80c988f6e23d4d274fe1a275b407ed72572a872722f3c6be289431173f68dfc4d246c3ae6c894bbf65ff3064dc416025dc3525f3637247c84a726b180a7aca5db0a99f70f8bab3b0449549e33fd23ee62060ace995e291062071221dd1b43f36f98fd4fc9f1d926ba877a0a6c038b1b38950472e352be84ab703cae862ab5b39b3863675f6d91c533b9f82cb92a9f0dc2e6fd7dda2bd5843df943455d7f5b04b0d4ea84ef0ae888f411a0540bf5c7cffab675806d0c79ba67022aeed38cf2ef26ff7885d7b0cc5e3cf2166477ad1abba5d9510ad1f5fd1338f9e5bb9703fb95ec4cabd93c976e5c491369ba904934d1e4fbd97208809ae33c2821b71e71dce2740091e822ecc6b60e0b68bb556e460a0042cf3130a71e16f946f20eca30e804fe974f00565731066fbb4af1742ddeee63d621c40e045fe9c070f0628e15349de9431a625020f23be922e909be97bc98e9c94680c6c79b9297f827dbe86a238b8b1fb5fae4894415dc18351c4091935b3b2426298cf617f71f775a85cb57d3eacf4720c378cb2c5b7d62fa0c4e2da7bee9ff38dcf8e1edd81674bdc59d8ce7b59ce2a2a73cfbb88a10c7a9b0edd86f4055a0e4f62e96f3fa0d6c98e0317c3e710d647a6be40d4fd44ffbdb77b200aff6b9f036fd9833188cb301fa4a6752186c37287b445fcfaf076c3751cca9642b3265f7ff91e26369851bcec49a71843637169f699e10bf9b3499e03e088f630db9d13a17475cda92d611a6fad19200c7cf6ce768961079b8c76b5c357403330f472965b56cd0f253f061a6bf0cc954051376fb8c7de070ad5dcf18347189658e873c17ecdfa2b2c8ca34fbb6c816b0f8f2996ff9d9c8084be38eddcc427095eb788f56780d87f65d250c7c1adcf61cfaab539a3fe0e5f8f293b06007c062265068e7e16ec341b37b31cb7a2d74e488a2d26e0f3fbf7d863ccef0d38e27790f6dc3bc8ad2c3d16f871acd1d0c9dd688bc5de02a750e1bf23d5f748f4f4b3351edfaf176fac8789e5378d4c36fda9e6b0f33ba931cf1bc5d27d5519a05a6871aa8621c16c962f9a795498f40c3c4f59ae27a2041390bc10f1fa6835b550792648da9bfdc982c200124b9d4f8cb3de6798ee9b0baee1a1daf0fa7a79bbd04b115593c293329576e8abfca1119ae3af77ba9909b67e9e11be89c86b59d146baa83a4c036afcbdbb00be8597b4872783a51afe08734501e4025ca3e53aa8f09a20a28a736b032c009c5efb8d182ec07a0c77d691036ffeccbb9ec21969f595134b1e433fd6f5f42890a5301f396f0f58392bc588340ef88816a3b9f2bd907a10aff13af32ffb89b3cafa1b8790e5f33d6e259087126d5b14ec79fef793a19f2b59957b23de2359a197eb6b7c110f60b98123a229a40db32ddfbb89f4be37e0d28c42820fcb981dd453b8b240f01d2d084d7416f07411aaf46c8722f1913203e04c3d683463a6b0567772c9d025e0ca2c6a659d060b1c586d5b89735db754553d35e4be64665d3f96c5d368be5f1366b84577515cec88213727554d546d3780284ac2143932fa9877abc212c44703d8ca61d5a5b1649b8c0dae24b94b406b29df40a00b33b21034c90de299b8ffca478768bf8b285382f50d77e300f7f84d74076411ff4557a622b075627a51ffe2d8e71bd98f37501f0ae0292f7f0978a3c6bceb2ff2272c8b863958a6ce4d6fd07c0e93af68732256e2a1f58ac64008a4d68aa4c8ec9ae4e66c53b86fdc6bcc578557897a1b603a824f4056842cefd1244883812673d394d808310e91c97a18671548f321deba4c3c951f5ecc53a34252116ed44543248e705516e9bf39ab0aae1e99d45fb51da56ce3a4097a3653fdf1d03191637939ef15e467a8d0f328a4f82d524a829a22912fa0d98b93b03691eb021d04bad5450b0248efd0fcbb023d381ec0cd747e6e517141b8e0705e3f05a55c9867bdba3957001d194aa61550ad095dafc87905d81c2644112c5862bea5c6e18908ae35b43fe404b9b51ef6664673717735921a681ad55d2c50e198dc7a28e02f6da96fb1af855a2344ed2e88be678b8a84c58d2392aaa9250a3786285d037274151fb72bc46fc7ba72e250847678e64c8763e8f65211825b3de30f198cc8dfb74a3b2850ebdd20d909788f81e066e494f9831cf616066a6be0db15dfd35b3cf3b62c530c7df02fed2381eb10b9e260e6edcd7e225ea27487de8719a23cc14bd51ede34d9f000073118dcd8fbe630ea0b4567cd758924d2a67f772b2c7b988bd4762c967a32026fa9bfa8b2111d98e09ff6ef1768b04f4a97400022af7754b36b8488c0be7d6710be9273c28b8237b536f4b1ac00e8e45cf06be52371c267a6d02e6ea6b0fa631e92aa0eb0224cdbc724d4c981cba0fd0d6971247149b01f06ef7e69a0a7ddcab43784933ab7cb4c3e9a6c4c9453189ca60931566db95ab2e0740298ca067c1d9347b37672323162362112333962d2265ec3331634928d68710540585466c31f8217e2a0591dd5c443bf555bbf03c3f91f0fb44d7455cc0510ca3a9dfb0daa9df2d43cba7d3f8974d0f28b6c583f989bfad8c7e3cec50103e4837be9189d2eec40a2d6f3df39c61fa0bed3e3d2e6b88b416fb9d8dffcc06951161227bad6477f66afb083bc551c686e7d54668f757e36b8bac763d9b73f4fa68e6b5b7bd07e2386cceca96d9f92a338b371e30bc7bd03d2eedb11fe2a1101bcca0f14fdf0102ad3ebe3907bfd64984e6660fdb6f8447ea12ba88663feae5ca7818d8b6e32d0e41cc46dd3c88bb69bb2ea7975387515e1e671c806fab7ef01668c497f2e03e9766a03570d5959f52cd79d172cc6265b221c1c55ab81050577cc1752da50e85b6edba191015a9ce6689fef229311049407006b54b0f761b94d7cc702dab9528b710691f163bff07c98ed47b0bd93385f84dd54c1853e3686d976ccdcc19ca762e5ab6e706f89d9d3b6f8be40f988cc1d33c7f52f5f594ae7ff2e5c144af2bf3bf981521954338b450155d59318abba9c9502839f2cb95eedd6fc0541da74e46ccc8daf7875fdfc7f23e62895f4a2fcc5476b9e8c844cf8cb049bfa8293bbc09526a2461c20e5a4912601e5ba0460fe119032452376652d2818e7c21718993bd2e4d43af8bb36155e8f63700d4851853245bb72835f5d2f88692c14802fb807488122d25fa76ef8bb70a1ac598e62e83ddd1ec0133be6600fc16355fc2619dd5a512c436b7816ff31adc21ea75d5405dd3f4e7385931edebcf13594c5423de73e59975aa9107c462c0ecd00f1f9862725218728ae19b9196687b1bfbba5358e9134e24e2186b5462540b0b63dc4ede19e9819aeec9f5904c31d88bdfc3283f742104ad3d5c6bfc20af26f48cf6c7a48955d1ec49c8e8a6e8d69688954e1239ab4ad9262fc4b73b74b913cf7591c4f48e7f263a83dc4c6b0be89ee7de5ffae39d5329035d276fa1b6d608188c20f869846342ab784e29087cd2f0c4f1c061382fdb83e45220ccecac031a397825fd06717da3b2b20e364b0f9fc1431a0f16f48406ad4076eef0f5046dc5027e57c1e42cf51ec93ac4eee0586ce75d905222f8fcca754c65debdfd0c9bffeb908d94d838277adcc9363f1fee3eb664f4b8cb46e39ecee5079953dc1cc6ba8b784dbb3c040224365f53459c55075291c3011f6fc315c7a97ca422f19e3137cfe1f98ebab8adca1ab04277326fbefeebeae598d75a16c04458f9ec81f72392e2cb96401effe4540f6600f56cbd430859b64f84d974b7c21f7e100f254248368174ced5f8c64dda5c968d5abbbc2f00d5c369d138364f23abdaab859d030ccb7155ca28d92d5407212a6e415aabf28f8a11834810e7ca3fb7843a73298fe9a9d34df81845ecffa21efa9c3a20ee0eed86334b0a6b9e223b6f4dcb2400d27655f9228447c9b85acfbba878c39a9d05b91aa1559da5ab7f11dfef0ead4ce26a910c07f661c073a341518f2f2d85426cb6474f9c9ba32e985bbca51cef9fdf91e16900562c92fe91965e6768186adf2f3c4e5b6bebf6edf60b1bb3b2dee4af565fd453bc4d634c3603cff9b43bc262f1d0fc64a9415956325d692fca8898dc00fa685d72549635eb1c6f5443cd0be720b38175f9f8772fb0bb2244605e5fd6d561bc49ddc374151ab3b72664b425f0e5bdc1709593ece1d06ef0781d0bbe6d12210911e24f4b527621de8f1c1a363e12858c157f29b36dc0c3a1fbfe60a40351c2b1ef04fd0531a14ef68181fe095f05b19633e648c3a05585dfde51bbbfd9d9e9b3786447d0d00afd82ce643fe9c83a77d6db3a3bb16a1f7ddb857c2d068c1dbe43210ed9e1d5406f0383a062ad3cd434151a13d2725770cc419d90efe105f6dd2fd925486841d47041ba1ac9faf6d2de30dc78fef3f2fca98f05e04dc87ea0015a63e59e69ca606cac17c566f4ca686a060a6ed5e2ec7d9321ff98f71a4c3577e6bfd887c97ad59f754ca00da0bd1ac9558c8cc834e1efa95d0e80749f424806388b39ea12c0223da69782e8820df28b7f450fbd9e30ab8c97ac2cc0898f75144e7b7ba58942bd56abc11eeb10e3a03d9d8b44a00f2cebe52c520714281b75006b7a2069b61bf742baa8fadfafd67568aef355bf93f6f8bdd0b2727baf0af2248b9550c8615bf5c738e1c7c2f6a8e8d11eecac82dad5b9985298d4e76e9e2797a1245bb70dece0dfe9aa76add81a5c7d8958f76b24c41c725d23084963c5d892f217cfd703b7d347e788c325f5d18095111877f0cf430efc06e5771b8eb92b323954bbe96e6a0da6fe3c7a502cf51130418f14a6de51bd393be200122fd50745fe32edf350c57aa8637f28aad2406534bb14dcf8b2c993e3ad6ef4aace635f553eb8ec7332773a90fe7aeafda724dbdb062d624e9c723bbae16477f7b913528668fe44971af545f1a84f43fa0e67f71d2288f23d86f6c8815551ab022ed5f0e886aafa05ee06586f0db09120ad773e1c2896c3e06c4b0765048a3ca8493dc7029a6051ca0968e4cddb3cd92e97215918110b9644f2ed8354e7869ec9a83e098330b01dd162eea173f20c8698bcde1f902c95eee89f40fa07d3977e20998940d2b08e715ee1dceab5c0083e4fc05aaf612ae8c3d474b1b5560ae67e128ddde26f9f888cc17f06d55c3bc20c31adf5a13a79cc143364bbf8f4f2e4549134e838b02f180749a26989fe2df268fd584b0a9d47bb7d02435c1da35065f41664f339930882f7a030dd1004f9caf80474a4440941d720a75eaba685124d69e9471caa445a267c8ce8b8ef81919c9b4feb62b715314f8e8cfbd5d5f64bf0cc98d1024f8b44ec0b73a22b0479e2f9fd009c938d8747c6d17f76351fb0813f7f9e8b44865d22aa06130874f577f209bf8d4a439b136ccd75a8bf32e1b6a2417378806e36ccc637f0ee69b16459582d8e08cbbf8c4d89ef6c7dca0bbe08e1be2bb4b8933b2f57e2cb1deac73c7a37999397b755f13881624c7df62fcf7496093e80d456dec18c2ed8b86ba8c39b65ab1ab5b924e772d69ee344d5149201cb6bd6223c98a4a0c41ca6943a553f1deb2a92b787fe0a814ff95f9225d6a4eb4aebf427d52774e432b877ddccfb8c4d17c20822e4fad6432054c306ae7cd969ad7507d27f918fcb6915b71447dab6ee59d77404b8d93ddcef3d75fa96dce17ea8a875c205bb7231e78629995a87766037d866db80bac075c899e836f4ff3fd9a38bf166127daf83568c132750312a62ea5f48971bb36dae018c597e236ab3360975267faeeba1957471a9095845ccaea4cc63823db97e4772babd8a79245c500734b94d833ff1c8f22e3f235341d67e6fc1354bf25fe7d7b780b21e405e8a32922aebab162e6beac0f4bcdafb473cbc04d4ded06feb75a9864bdf18513b67254c0197cd4295b1e4664165435d3caa2d7227a1adc59a8d44ed148938ffd3dd593a136a9232649b66b33821aad9eaddd2640b83c93d0b64fc365de847e58863f586db9f95821e607e03f0fc0bcfe50575ff65a7c5676463564a14bd0ea74c580083bbd9f91459fc73fcd8c7107394189c2368436e864b35fd7b26bb2255cdbb01de752d9a265e01ef404233c44e85178dae091e658f051527b9aa56c78dd170a568a54c3da363fb28b0bbf2d92c448726cf5d18af78b9b261a6755012ea4b099eba51ca03b9f9d0f4bd20df041273e59db6906e412fb54f37a3fa8a360c5003bba71c803a73f49a64ccbe05ec1fc764f6cdbfc77e51740e903d0eee9cb8aea930f6f99e8d7c9e8ae1c6136d5ce25d5c16e6533c57bec3bf7c23aa94d64e0d3eede3fbf253d2b44ce94a39bffde06fe481cd82cfb9292669469b7465b93843fe0f714a90a6994c6135e6435ac75b8be3107eae58442a4116fe3abe9d06d2f46db9a4628f0774016c91cf71a10e3d41f77cb316c04442074d7d3bf683fedca1097c03508332c3f1bf2bf1439a0fe78e37ebc7ff4d80595f1cba7f9d169667a9c0d133e73999ec7e5db813128c9a385d403b5e33cc0331d0a7b619935bb890e57e2813caee75ecabc0ec1b8b4ec31dd48f466b62950e9d60cf570ffef7907b29044e884e3d2ccf962cdc999b338334807f3c7ec57b1258748a42764b3f6314e75078bd19c26bc49928fc5f975b91678ee3a70085e3e23cca33523f565b0da69dae474eb9ba7263dde4db9421bc40714edb36967d0e354f15037036afd0bca353e7af5724b164df93cc8b3602d1f37ff8ab5fb42f04d13407cd61649287d941782c67087ad56f9dca99eb65b180181938124953017e13236057f4062d08678ebfff7f0418f125ff3d32df19e0c405845ca35791ec8ac5ea6caf248efacad7a5fdf13a303518d454695f7b49981c74d3669df8000d18c4ca1bd4ca9d76932b94301e4194aa6ad1a0a88337867836c19709c0972d4babd6f4345f6c2707c7485b4a86ba2999e8bb3baadba886ea12300ba1aeda1155b99b41926eed0df725273ef33abf0b3c3b367e16e8bcea0f4e430c2a838f5260b0e20a02d923f8f1a58c9d4f56aaf4b3b38bde943aece8fbf10ac5b0eb31d796fa50a61e72025cc180a683971ffc42e27f6d25cad741f92be0e4bdbb19fd5a3747a72bdd203f450985581b4c4df42100bf0f006719c23bc6485f261bc2d711caab2eeb7815cb0ab36873632ed4487f016a861d49576f74e76511a71f5b41173fdf9e1b3fcf96c89f85216334059146546548667b97a8fa6eadf4b879ad22412fb3c0f1f513972ff9f59a049b7c635f8cd8d0d72d2fefc91de86022a5a31e334dabfa2d4be6e5bf87cfe15735ed1abd86688cba1cfbfbcf92cc1971f31d7ac78d2634059fe1abee28e01765cebde45912f73ee5bce91b81e06e92fed24c9aaa4677cd544997d32aa40fe4d4f842a14afbb2da44706fdf6bfdd13102974a683f93eaafebedc3c8744c2a14322d39c3b56f5c4966d34e0c9d4fd6c15d33a7396a4c5dbe6c5168f3afb0e8246f11e9035a37406af28b30e04ef00ac1728f5f0c4bac83d5ea8fe1c846f83726a044aea082fa7a50c9f67ff8e0390e3d56474306a5e541cb57249e9b341fc03740382f1ac358f38d9e1709bc43d9fdf5d19ba154afd7c7d2f42d7a8fccb3d2fb35a7f2df7e0744df2e603df3ce49c82a5b7c053e9cdd481582606488e4f0d4408f8035bbf7aa0400316601cd28ecb07917523547e0dcb236a9de7733a1e4dd6e92c325140bae1eed5d1004dffccffbb8af7d30bff50aea49ebf3a0bdb113adde193bc43d5b12a703541ef9c9fa4371c4696708193877d5c505cce119cbec0a337050043afdad746c28c1cb1a347ca964d3039e7a39c8968d78aea74e35a3073b9e715cfa9f8f15accc6557a59f361760f57eef9e7c59dcdbe8efce18ffffe63c5b858f66f698e6edf8f666715e9f9cd8cc28558bfec1ce709864154a6c41429adb24b5d14a8154690ad765b001a5aee9099c164db9170a8a8cc435297eb080e1ab3e3f127d6f123e413f88e5e30b681016c8c74926c9f6b2367c3692d31c7d8031afbfa178cd01739252c7e451b2e1d42f895eecacfb83452e73bbbdeb4a91c13111f6dcfc9e865ef62a7b9ace18276c4fc1a08fcdc7ee6c13f0f1f86055646264f242e0320ec3413ec843066196105f73a5eb87897e0b94dc0545443e8b36efd69c8044c225ef9fa61b97b20f4d2e8a12391850922f382d13e7635ca8fceca38711068313d76203c1ce34cd4cd9b0cff703b31599a60a44a5b0b4b10c8f5dcfa74c349c9c1388ffde022838da5916d31dca48dd8c21779bfb14c3c4a2cb04b65ed54c139e0f9abf6864960826d54b24ac497b641a76f51b70b1b6755f060dc5e1ec67378337d33179f2c5ee02f32f58e0169997aa53380e0fad57c464e7ac32f0bd8b0d15193d0dca274dab5bb53efe051b2dfff38a62fcf18d1e1efadda516093a544634099656c1c9313871e70937d5ff500ec5b476c111b54ba38d823b79a4024f84fc8ec138700178343bd4ad7090ab7c069329235917aefe9ba43961e4f4b82d269a549d5cddc606407816822dbf117c179fe3d700eeaadb8b8c22aa00a6205f7e0eada70cc6643e8c7f9ace97a250808935bdf1b5c5c3c8d0a5fb8419b914cab9d8a5418796c33e32a6ca78e92618ad5c78a21b7ad2ca8859e4935bf5aa729249e1ca9dad80ca4d16c54d4b59490bf7f4cf1bc2cc86cd04e5de31e207744982ddbac936e7a475c2f08e835aca7b9744f4707419215942fc43448625b2057c2fd65055d06c8519597a749540e914a08ab1a4c1719f230b07618f4b6b58d6c913dc6ec1f7f52ca0f54c782b01c9a1e56aa08453f2440826e9d5c1b5495d310064c87aac9d2d5008d9973052753e13c8aa1a221489cda7d8011f58d99bedbae7e45c4fad56b1374d7db944f6f4a716f8744a4420bec81c753d035b219f8fd0058bee9882b47ac17805c6313f59d01ecd9a2200bdaeae684265a394552ad0bafa7fd1622b7a3af718cc38e3c74e824bd2702167636bd7331a48726093405e0de2c6ebafea6994eef8322b6be91fc0145a632cbc7a79610f7ee60ffcd7a4eeb7e3bb4e0479e7cf478f82f550e6460756e4b9236f40ea8e94271b224a3e7782da21c5aec2917e4c4ceaa82ed543c865a2a90ae5af0ebf1c13dda25c49160ff7fbb3544408225783e1f7dc6a9b77d774f1696286ae3a362df7bdd97c79dfaca88f05ffbe541c68ffd48ae6379f37a2128b6a55dda338e2bcca1ae535fc7e058756be3920413c08ddc58f6f49a2418698e471fef853d3c9a64d815e04dd8f65e854ae9005e634767580f212b918a05288c7819413944d68578b0e99b854e4616018df7711025edfcbeb517f9d817507fd790123d1f3e461b03ac58b1cc8835cfa1f228d276680fb9dd6231c1a5d336df3fa4e71e7a0c7b540594165fe6fab15cacd8e7954572fc355dbec9aca401af209706916e6318c55b0d21c49f8e1daf30e0ea831bb5de70b908d8f6b16f7e9bf5734f38e0b8bf99856c734718923cac1494301f9160346fffe51fc72cb8dbb3d5094180b2fdcbcce311a2308a066f0fe10729d67e6179811d5e43db1f36307abe868e15046d2e9ca96db152b8b57b1e0c9ecbc0fa20d00316bd27ec6d3991ad7fe88eab3aad1f0167ed832a2f26c7a55be18241b2f9dcfde1d58b8c51783c51afdf94fa3322edd58c904b1fbb139cca5956689d3e65d07612ed9e8755c6c01413ad2c6123c1e8e6b1c01cd11a368b4e36de14695375c83fde7b5b3c17849a0972f54c33db9977ae7fc57f25a7e76f1966b90b6be9bf56c0eda88c2feb5f76f04afbf92c0710daa9a75b8ae7c1507aa6f787701989313a12418f2f4d12d48202cf889ad3bbd1afe67215f52da8b39d16ebac46623f24afa5367b7e1df8d5a2d796b7d73345e5745f0a9e7ec47e1eb9a3b1c0f6223f74d2ff653025552a003b598c434419ab1b7c6566af20ac5d0f7b28e76cccd141027ed32e772cff09503b1fa36fa12e5e236127907388b46e900f004a34440de97d799d3502bdd067806ffc796f48ced42a8abc4d1912c1f863c43252f8c9b9b80330c41f731cbf70ccb6f658d821743e3f5e9b253f3c89e336d5f030af8e73e01140f948cfac074b5522918d67f8ab538d00858e580b4057055afea32229e36414042e0610d57dc4ba0795748aafb6a00aebb2d8c7bc94b6ed4d594b483584d95011559be2c93cfa36b199334e5e035fd49e32995ecd05a2055aebdcb811c9400f648ee4fb11867d7890b23846e816c9b508f00f3a4dbb3868f01e6edb537914aee9189e069239a3f5e86e37be36abcbc3f7c5cc06d33988361366fe0a6442225eb062de221a970cc1ce250b199dc19791d908b2939d39ea0287ec7515d032ea1761e043ab4d3d63ecea613d7e7d43fb42887302bbbee0cde54e051bcc69f8bc4a64526011792992677d566a50ddbaa6828062fbb62900dd1cada18b05f069d7f389236f828d4c8e83214638fe2a79a28fdb4dc60ed27dc1fc29eefb7303429e2b168831d209d5f74b1fa9ac385633ae36dd8501e2c56457f026561191f2ae1d8f25498000236089c33061abd3d3908a67eecc8addb71a3ed85c50c7ee39030b9fc7e9137ecb067d1feaa52fda5172668ae6396b621ed60c27fab8116df785942506f01593c3c38d25cc625972118cbc3eeca4aec342d860d3882781235be1e240d7d78c74954841e1fc9a261aeaf75f6ff460fc6690f30e05c653bd8bff14518a456bb7a435f585167ada81e3d4e5f456234029cec08dc61515a644fab5905b16157b5a0c61af241b161f3bc480dae57a7039d8f34d9307848cb2b451b066ca8b1bfc9f442bbbf0621eefcbce4c99b4f83c38b6da68c36dae9db78dbc0d4df097306ed748c625af13067fb1dd1eecbf840e8cbc9f21e317e53d76982f2fd9d67600a58a934ec0353f638af064de641d234b581fd664c110a0e3c02ae010a4011379486f2804ef67f541f4e8502fc33b998049097e989b9d765f156228b38013ed4aef79c6b3795359c3b3049129cedd573c0024d30537a2ac35d961ab329273048cd57fd1b4b4dc578b8ea48879dbc84a827dbed25d5a22f04c1d3ff29c2a19c25c2eb37219760f42ecbd45d3c0b29b1a9c2d883c3a6dadfe686c0457f110be40a430757bbe0f583dbf2557f5449fcfda92530ee1d2f3b07c0f4ed43a5ca8d352e39a480b72e823c36c06b6b8b684bd977efeaaf380dca7e0bf2096990270e93951416f3b4e2fcddbccf277e181913e73524534ae03479e755f18861c774599433ee11460f199a5c555281dfd6ceb329561c6316871e479bd57426a4462baa0fbe524d24200aafd37370ba9020f6e0d04eb34b9f2404417f72c7021d37bd12c8820494ef68ee825c819f2d491e03d7261063d94f20eab46b2e7569453350782e2b6656b019d4d11787e10619838bcfb5b781f0073e6dcd735a76511f7f92109268e312889e51c8014707621580454360203fa7623aa5b346cb26897ab4981c0182eed174151bd7977a1e6319cf174f33e879084fdf2228d9502fe03d3a6eafda00e6cec1f9ed9de52d5d067321735a540cf994c0c34f4dc1b1d46a9aea4396d0181f2faa6e1ba62a5b7863b199ab9c4bcd0b9bc7ae0729befb0c9dd08c10d1aea4ecf7cbe1f26376d96e854e5a21546ab34598f789a43bfee2343a4952d3f14d7894902f59c4ca71bf181fa9e91ac931a73f143481f183759100d7d894716f9de40faa454305d96367a1ed18a36b66d540b958633e9250a93a3f6a1a53782ec018110e4367b3f88213007fb9156f4de7639115ed390ed4ad610f82bd1ccacf308c4333d2578ab2a5e5d3241713953257d40cab446684e2e801913d1d49ca3a609f08a14ec33dcc8c7414475d5cbaa621e8e0771bba2af5fa21a2b580333f89d8d2dc366de9471ac3c5ed31748f73f8ababd6df72d0ce6cf488db3b96dba881b39c7e5ac4e87dc37d2fa3f1ff1bcded858d475cc0b42687c2bc0d8a31f0266e7c980043e3d5cea0cb0171514962ad06f40db6fa8d028a3f46cd42d5d88c6c1b8cf3498a1d4d39ccd063629d4632d76b38f24966cb16dad053daf2ca999936779cfb6fe1e34500bce70f9e216e968740b2ea88d94e14cff3d6f65f90bbbc7a5b1bbaea8e975cef66489f041690ae80a01001eafd5f1cb09543ca34b8e289bf409038078c46669345022ff94256be4aceb92bf0e45fdc3373fc42855284e7caca42d87fa81bb319687d8df9fbff0214cbfe8917a25f6645b0b3845e6d23e05236ab47224ecea100ec6fc5028be725c1035ff5723122b570a68720c3c0930b2648d0450d0bc7c595087f30a385f5e7e5011a9c15365e714371ac6bf2aaa3b443864d43c6f3f866ca86189e595b826175accf7cf6bffbe3e881546fb47167be37c91d2666a6a29c6e8a7726c648e0a9daee37503ce20e9bcf2390fab94a58d92c261b88865675f1a185b0fe65758f24f2c44c30f56a8d987487a5a3121410cd5842ca92f07f6727f32c2983c0505ce4c1027777c1b783038b3bd85d2cd2829c754ee85b813ba7436389ad7c4c5430626fdbb4db344d9f304921d0390ce5692cca105ba84e1b008fea29053ed8554931cc6cda66632462978c9944a1018d86ac2bee5f1d84d22bfb8e60f0a523bf19a0397780f432b158bd136fe754b393aa3dab63f4d3c2645d82737d2f8963410e9000537b5d55fa852340146441e370f7215e87615ead5b512a62b6e8e6849edf3c41e78ee0d34c989060aeda1da97d296f2216a065acf86e3f4227493b028ba0c7d2b695e7f2d21e0df9fd7c0716163004ac2ef6edcdf47c755a81689e352a82d69e56534b054e0fd3a304021502731075feb341e2ec61d28030d83f1bbe26825c51e4a861a36c46e67d5f5c48b58d0107e6680a8482fb641ce1bc4722c4adce17c9e268421d6443a028b512ccc0564dc319e955fe6d32ca1346ede04616132504db999da6daa0516e1b3399de43f713da97f3bdc0183e5ba9a198ffa2d49c0af802c11835f84bc2b88f6be2e8b2010f4672e5bbc6b57a3d58f97cda167609113015f4871c8cb6cba4e16d21edbf1ceea6bff07610c1228187cc6526b352eafa1b09a03ba7f69d8f91b7d568503fa34cce7da17cfa63dd29aabae0046e21f7d3731f51b96cd5e1ea9bb057572dba231526a0ef6f87032990de503831ebd39b895eb258dc9bbc81027f0e3d2700ac37a02e63752168fe6550e108a0570b1365df0734a1b0d26b60d736d46b6f42fef90ce47f6085b36ab96aefdba0b74e0f1d724207772d43cae5161c5ba7ea34d5aa813a714f9f0cf8e19377c7344d9938d2e6d352deb3331c3e34448746882ce408ec5654072cf85092ab90d98aaf34c354c516ce0571bb5244bac6debe78162102052e52bfe00f690242d20c20f5c974d14327b39ede0716ec9d00b92bb2aa8b0f1dc962dc769194c610331ad0b9f8e9e130c6038619396987617ff418fddf40879015cba98e84eceed399eb372d53bf615860885db6bc0fe05969f2ca20076cf2247000c048d0d7e79c9c47284e19eb47364934af2869982785998d574eb14a083f382df46f14c58500ade9b473c4a4e83e675533195b29865ccdd83662620c0ccbf4f0b8b5c7bccdeeb0a5e574509d4cb93227ba26449d926c98400e3289f1aa06b1d01ef382315c2b359ef24b1fc65b2339a454c1e8004447349d0fa3c100ba9c11cc8abfeb8c2975ac17f106ac57af0f642a744da795a0d1442a7d667b9a192dd0ddda1f0cdab2336a5617ca7745f5601fdf954c88fa92408293ab80d8d0ebb0178c196c9f633025c5d03aea905120f3520b026e9ffffffffffffffff5f1c68bea1b5c83e413ba5945d299c6a1bfb944899a44c29a5f47b8fdfc03d008043ddd6fa5bfb0d04d90e8d0e010f75d4cd26562e57a1504c40c2895e8eb9f5cea7650fc9260e16a35f9b23bc6cad5028148a10124de0a3cfea5b3455625d854221c9c4c2cb16733247bc1cbc8a07483071eebad27a1ba24274150a050324974035e8d20ff5dbf28b102143769058e2241be3871cfb4ef65728141f3d1e086f90160081a412c68f2a53b233ee4fad5028457ea0f1a307193b3eb0c30c1e144a19249430d96b78c8d7d4546225904ca28e4bcbb1fb24bc7f324824b118abb4934c3a7e50b742a1ac31a4081a428688608d1128904422193f395aca573de1557a7c1021403e40a17c1021409a87094820e167b28f79a4870f771f917a5950252ac347cda6c88f60217184d1b5d3c7537bd3ec57bac89ef1233883a411d7893299d1dcabd6644472dbc5522d1fed63ae502845b288c5eaf849e69afc781135d028a206194aa208b3cdefe8cba77c949708546e102ec66de94ee72042f9cd562fc8f4536b8100590a65a417248740746f6e54f19c2b63150a85c4105a79d0b992b12fda5da150821004347e548814d9c10f7e30064921126b3134a6580da5c52b3d7af8705f0aa547911f3bc40c0710e131520b1242d439e7a4b221baee4a3c201984f22deac2d8ebee8a404804816c884e6732d3d6a802a1a9ef50135a9031db76400208fb43a580c40fd6070d90f0a103247b58849899cccae64d1b3d20cb37661673f8fc3fca83a7a3e38cf0514ab5bc63e4092478d84588c6cb52064d1dbb43257418400813b1d9256374f82a144a0f1990d8e1b792d7ed4d7381a40e88922d48b1ee93e94a3af4354a5cb43a7c1e6f0e082de5c84b211f64cecae132213cbd6d5b12af89831e5469fa36f3b05b51c0030ebf9d50a2c59ce772cd37fca132dc4388ecf00781c40d66f1c3538dcca9f9b2e880a40db6a9103d5ade16b3da6c283b66973736c7cdbf246b4028958d80440d89afd898d135ed3e3d03491a6cd9faec53335d8e612790a0011372748c5bca3363f00ce7e9ecdff98216d748cc60c9202b4325838a840c66ce3a5a0cdd4e1aaf3348c68012caf44a64cb3d273198d4252ddfae49b5bbc3b09cb7ecb22cbe59d4cd0748c0a08b5184901e4e3ca9cf49b083c72244c8c81448bed0b99cd37ee68bed7c9178016d52b45684d866bb245da8b6674f6ba7ac8de1189070c1a4ad3ba6da704a3f5484640be665cfefc624d76cd3023268d08e97f7f6b33049166a69b4f0662faa7521332c282ef9c7bb2c4813fe0f922ba4d74cfbd3fa83522533239058e1705af89061e131775d4820a9829f9b5d8490c963d0952d81840a9bb8aa5f8b2784ab1705922928666bedde17d2ba94426a3bcaaada6b16931b0583cc41959516e3fa8647884002856b947b109e325e1a2779026aa3c8f969f94f3a86051227f897f9e4a78c7fc89bc0b9a84dda7254b428bf09d62061c27133b4acb37bfaa468078f21effb637c816409a97ae7cfee82b91883244a583fedc68bfb6269e9ddc163440d2449f0673eb4f9698ff09c0409cb3ad27368d0d9e553931c01df3df978d5b9c5faf0a00189117c41b77fcaf8c17deb212445d0b396e8d3c15a0c5b572814226bbc094888708dcb3106371152f3c3c843630c17c73e35bb08231dfc44cb65cdbd3818e7a0c963653fbf187a60d829ccc5fca3dd6ef48b46aeaaad5b871f61fb62392939baa4c7d1d9732f52eebe676a346cec9717a7966fce598eea5229ed02ed3899753a66fe423cc6b0a10b3c56c974c236f8d79e8be267b3cf3c4bb24d8b8b544c8b89bc4837d1de6231959af4d3cf728ead2d12fa43e7bc06d9a65c42b0011bb5b05eec51f1f3ff2e4f0be33a9eebf6cb82d4cf2c3acfe2899bb3fb68a32c2ecdf22fc9b04c77b958fca22e95bcf41bed623e60031629657de99a454ba735214182fc2b362db6d421e7f469e97785ef697ef75aeae0b29caa566c2dffc78c3ae1a5b34275316eb6ecfa2f6957614b2d79c728194f67d24c15589e503ac6e8bbdc5c552aceee1f3d3a6c16e39c0c15a66f0df95f5dbac33ac5f9ddafa64cc67c9529da4ed519c2f65298ad4ebcac194c9e1029fc9cd1a3426d5b746d368ae6846c2e53b52818b5fdd1dd7270dd7c28763176a6966aa3cb710685aab9457a4b3a28dba0fa84152a74b635bb93e59e709398f372df642df59dc85e2a0dd38d0bd32d27d6206e4ea91dd7b87813c918a5223ee5baca491328213a6c749c71599499b0adabbad4dcb6e8d3033630914bf722cca52dddec5e62abcb7cad1dc3dbe996e8fc47aae64f765f77258ee95d18bd6a9d9f8b12e7f86b57e6a2f4ef9a846d765b32aaaf79924a22b51003087571b4a9ccb95a88063622914ea374260f275347838425634e7ecb517bf48f58d0bbd331a35a079976041a546ad0dc9b51a3de08fe64741232e6959e9911e6965c12f797ffa55b16b1b6b095a2d153b5328ad073aecab2de2a994589305a8881c3cee59ba9d1829aaa10c18a9237279b54478b561d6217397f2edaa67a3b0d719cddf8b29cc50bada74264de591643e353ce7542b0d9456de9cfccd8598542e901031b83b85ff64e5dc99051474178b532a3f22ff4f4814049d3dca921645073550061aa385dea82146f8fff70a6fffb244be78a1809b1e107fd4bc80b2aec84d0b93ea03b6c9f54d5ce54994211810d3e18b3bc9805b57699f53da4f4646eb7f0cc3d69850c1b7a683db7986bcb4b7b4a79d0c33574b08d2d0825ae22d8c043a536bee9d8a53b78b51a1a4a93965ddc54cab06107f378b7701b4475402dc4c02ed967ee9c2de697518542e9c1021b743087e7341736e4898f1971828d396c42755dc329196d747258d075edfc8fa9db5d1cce29c4804164cc0fd7efb225ae502866d880c3721b4d874c2fe98aef0d4b9d65d93199e5e0622f36dc90e8111e2f7a9b4a8bb5a1b410038e4e2b8f2f68feafa642a1502857021b6c5812bdfa1e83d42896ad2171f9ad1e62476f988760430dbb2ca9daf53519174649b09186a3894c8b4d42b4348b86c459c924372757ab3e3c43bbb15394b85e8ed948b06106346630b15a19c43a53a1507a10e1918690214ea10c2992868d32a82ecae4b5c8bfe8997b1b64b8b4184dd37e4b324dcd818d319c3a6570590efa5c4cdf5760430c29b139c8f0c266db3e2b144a0f109861230c754e9da5dfa2e79eca47ff0e7c74c006189643bd1c6329d920d5f385378a564d6da667d2b5e185af3a4b6242980b2eea636e0c1e1fb0d1859396ab422651df305a2e70f15992d7f7b2cb7ab670106af368b0f4bc1f75600c36b4907df86a9211a3bfbf34d8c882a15a849b6634d96859c10616169dc96566b4b49a3f57d85cd8741f75fae6c430d8b08262626af25ea3ff9c7060a30ae8a0333667667549b378c106158ce9e4b75422e4e5fe60b031854f5b9e0859fdd0e389c186148cb183c9dedbd1f5980a8542840436a2a0f66aaa26cb51b77148196c40c1561539e141a6c808b58d271c9f6dba1f7eb3e618102142b805369cd056877ce9b4a511ea63a30969a97a88ab90166c30c16c49e95ac709d32d6b63095e657d0b5ad059f3656eb0a184cb67465c678ea790b191845f30973d664d1b48585bd0977fdab9c63f1b47581c1d5aaafe51a7fe54a150823c100aa5881020446c18c1f091a653cbb5c84c19368a60ecf5ca51f1e2697ed0b04184b62bdfc52cd22cb359358cf664cab6ff1ca3789622634418facbc6b350374fff17f9329430120c66d5dc93f2f994bf0103a13e7e8cd2b73a9da130f20b64edb61ce694cce78bf9a2cfeecc902d9e938e9230d20b5dd2ea3a2daf09918b17e89459b8d498fd39096164178c4c73ffe11d6b453a84115d5c9f33e4c663a37d2e1749dd6c9b427a4ca736b8409cb9a4fa3fc8d6ce4118b9c522c64ab898ccf12519208cd862d9b76d6e74b62054b7230543466ab10bfbd1fd5bce7bb32d6184160bd6b2a8fd1de9e147150ac5c719417eb4606416460dfa3d075d6e5af02b140a09466481b7fccf8d9646e8dc2a148a8960241657bf28cd829c2d19afc16233e9a34fa585b2f2033b3cb0a3031480c1c82b7491517410faa374daae30747251ac737cb30f7761a415dfe8cc39896dd78659616552d2da4b6bac50166164150bf2bdca5234bbe5d24811465491fa370daf2e271d643215987df00a1bcf413d8a0a6fc43ec4e5d2db629d0293a6a9a747269953ef8511532cedcb08d1ec92b06bd9c248295275dd6f773975fbc78511522c6aaba73d9df2e61e851beb73b2bf4c164644b1e6bc474f675a78513783079091502c469b8d1e75539ecc486104147aec8efdb2ea973ce808239f60c545e81caf2dbb705d61c41369f94333d90b62b2fd91298c74825fd590a673da1bd9d284114eb8596c94fc1ca369c9d3831f63c8f340c8097064134be22557d625f574611e3ca2895b34fd24df5c52edee3137c61923994888b51837c7fbcd9249a18c18610413693ca52c5e7378397d2818b9c439e77e7a9641afe754306289c3ccbd5fecee6ec7d0d990914a9c937a77cdb76dca4f8f3c6af0589e053c743042897a3567c933e62c4bca349bc4a287854ea7ba463739f2841149205e1653669b7f74508a44b939296b59cc7f17339038795fcb2ae2925af1117ca83f0f4a35c6b71c61d8d479947adef9ed8430d288decf4cf8e88810751719b22a00c20823f410a7b4a0638a75310b0c78886064116d2c8f1d8f5a523def8311453857ff23c7c59c19da652411cba2889316f2742ee522028b139935f3b1ebcf228c1c42b918699dd92f9a90971143b0236efd82101f4bbe42f0a2b2b63b83c60e0d21966cf44b31328f69b91e8c0ce2b42e8c96a56ec93e8c3c4a302208838c2ab1b6eefb3bc84820f2d0b310f9e24957ed851140a4352fc8eda66eaf3f07237f5854b7a5d254d712ca912d8cf8c11475ca644cb4c6443f18e94315ffa11ab470ea563e14d66f2f473b1dcf9e1d8cec218f7da576c5af25cf52010fece800055c30a2874f66d1b39af2d3464f0f214582908042115224c88f11248ce46169347dee98d634784c8fe04117a44b1fb5356816533918b9c3e28d2ce195f5bfbfc1c1881d0c6be22ae7bf7a4a385287b42ce665a909f131df9f11e48100d94a7b60840e66bdf09299e7cf7d9a8a0646e6907079e9f3e5e898a92a144a0746e480779d6e798cbafe9f0a85622371489f7bf86e93de393e66502841ce081c7031858ba94428ede35528940a1135802c67e40dce9cfe1e939e25752d951c710332565ec9649e6f7b20bc670839018572869013a421040514ca194280f040236d58ce49ee858f27d4279d213a20c28605cdfc49943c93978f203f7c0051030d4a99d8378de950620536cdc2ddc576416c388d922a244f6470cf61e572de50410ff6415fcecf312feba0640a670e3f4a73b8e4d29d8a9448c11f535eebd20897c71305b3d3e53c95aa510285b39cbfff739ab172f91e943cc19e0ffe495c56d856254ea85e16ce8468db91df3461e964c63f2d4a65061113ee9126c746cf7d66be0484cbb2a0562f4bd7b610a14409eee9cbeadb59e4334bc25ff51f56cf54466d2548f036d43a0b72e32ebd52283982266465ce3254f5dace030c254628f356ea5767edd5fcc8144a8a908e6fb2af21e5eb472544383fbc4bb2ecea93fa87910ca165f1dcaf1a2c230c6d93b56c1e7392f9f3c168a3858c3efdfb72ac81d198c6ec52e917e76ee7028e5f187473ceef7d99a3dbbe489c0b32b5880bcd21ed028e5e2cf3a96fd39d0759252f9c3bd9a37b5b84e5be0b840e1f36c8df507fb22e3e6957295a6cb7794d2e4eb3398d8d352e74d944bcefc813e1a2b7d0645b5cde1cbd1df3b6e0ca4bbbc46739c4aab548a7768a10399feac938e0a0853148f3b8bd4dca679f853a1e4c6daad51673d01a70c8e22c9a5dd239bbd89b2a061cb1487bd81c5c8a5d59bf61d1478fb134d49ae9cec680e31577bd6f3ad54d1fa3490d355c91a88ace343d4f371b35d4c0d18ab3bc68317bea586126118f1ffaf9432f38e05845329338d552c9977d890c3854f1aaefe6e0e3952d7965c0918a66f43cc3b32c66fa898a5e3af5de25d46841fc3be038456e23b64967b88e79c4061ca6e8aeeabbe547f785b214bd6d493b25746866511b7090c250e293e88aae2d1d33e018052abe2ee8b89f6376313ae010054ac84f2e9cdbb5f4c13ae008c57fa5e553595377570205b396ff26f2257af49f30e7942fd26b74ccdd3cd18e963c83c978e96feec451d4bfa46ffcea53ce894ae4748e9717c3f95dc1b1096367d83fd7cbd236fa81431378ce929ed9678c97094726964fbda4f2b21c020e4c785e2efb961efdedd225cee0ea923ea17bfd634bfc31bfe54b293294e88280a3120b2a64db0be2791f3c382861ec92235aa7acdb3d9330b9eee8760a93e7f11a3824b154d2b4b31c36aebe0c041c91b8ac94c877907299d338209116ff4ee7b49de44a2382e3118bd058a2533569ce6a111c8e68f3b3d3ea8b5b52e34582fc0e1a611e3d67726ab46c310e4674d2f3486d3173877f11c9facacae527ff1ca308b36941cb5f32e92c6e124722963ca89159134244de9b547412db76328de3108659b8a6dbcf499754a1507aac0087214e2dc95c2ef9c60ed316822bb5ce97b9c5969f0981ac0d6247278fb146cb2012b7937566ee51d614c4a74e4b77afd6393f27c10e8e80231086689029f3e85afdd0e300442734c3279dc48bb0ed0faf4b7fba697f63e893c7081570f8e12e353a28a55bd0ce791f7e4f2a37669b92a93a7c6837e5cabafbbe0bca3d98633a57b3705b6f3240e0d003defa2ea6311d2ed2c591074d06a5e307d5c1839ec13b6752cfb27a66c71dd2e922bf838d0cb5100e3be8b3417fdd69f9d2be0ee7a79211a183163e6370d0214f6e6ab2e5dba0dacec1723d61a61be7dd73397c2a3f4fe897e52077c7c14e1e5e38dfcf57adc3a1bdf8f3ffb737d5fc1bb091adbf254369c9eb862ee45e6d50ff0f236a039ed5d74e5a0737311b2e4d391bdafb3cb8ac21b5c993be8af33c32480dfa865bd1e349650a350d27599ec55861a6625e3430571b94f224739e0de1388319a3668fb1c48beeb5197e69de34fe67e7ea5a06a49e2a0d7f6fa9274386b76646e995935af2312c8b6897e284d87fa912c3eb79fddcdf5d740fc390966541bb78a32b365a38c0b024736631ef5ce7cbeb171293b1d5250fa5e352010ae0f0421d5ef6e431f87678d20938baf0a851224e6dfdcd4f3be0e0429e74aceee8e261c428071c5bd8c2b39cc2635e870b6b01cdb2e039ae2b3ea8cb1e7064414fa183aaf354b27ac3031138b080ba3cfeed63215eee153619b6323ce89569d00abdc60ffd8ccb360f8e2aa494d2cece2e627d5a2138a8d059b767dfcfcbb0d714fa734f173e6aa470343da2bc7256d36951584c22eef733b61b475070d4f4a66ffad37eef13ce39f3ee59f27821762768319a3bb5790eb711471336d31d21637a69d67d1c4c58162dcb39bac98dd9b4845283ad854e5a1c0b991d14ca08147028a135cd497a7d3ef3bc712481cbdcf4b2e9300dfa47427fa5b37d9c16ab7ec471043f95c67cb285b9ed7ec408388cd06c97bf24fb71fb597014e1b4defd292377379b65ec3083071b7010210d4ac81cb42c4a4c334e8220378661ffefdbe9b49b1a2e1e3cb8210cbcf25b18d923faef85c18d60f8979a734e89f8b938083780a1e8abe98a0dd7fff42f9a4d253fb77996e3a6377cd1470bdb10db8d5e205ad01de48ba35faa122f8e494b5a374407d1a71b89c28d5d98f7473c6bbe77695dd0b8a10bbf5ecce2b9eeb3e48d5c546ea13f68102b323f5cbc5174bad32dbe28371fbb718b3a4993a3456bd11afa19376cd1befcc29bf4962f6fd482ff71f78af130ca0569c168916636a7172fa6417063165eeee896728359e54b256fc8c2eed29b4328f3749d89855b3addc9ccb259e91c168ea507d18e2636ae375e518e6cccae08a5ba4e3ed61852648d2166f8e0862bcaed8ca31f7c5c96cd8d56bc23e6b44e4d5dddce8a723b0b2335c4dda7f583881015acc278c1753e4b666fc926010ad0f871c60d555c7a3b7738eba035762a14ca206ea402991eb488d9ac0f4a77676bbc097698176ea0226d91652f6edc7a48a1f4b8710a3b67f320c73ebf7f10de30059b64ccd222747f964d374ac19e509a4fc789da17448a7efc65d162927b35fd28ccc2293d2ee5bf203f14c5aff25e1ffaeb5f344381ab66a674ddbc7107859d9438951e5d64c554a150d0d98d4fd85b5baa715b3470c3130897f34be29b5c9a17d4094c6872154dcdaa38e1cb9296e518745ce42b040885d2c30c1e7a6313a76dc63e1b7797daa48993dcf49a52643df5ac50283f2a446270231369f54ba9979dc5b996be8189f25ddce4a5638c417d38b871893634feceb7b618d6ac50286b7c0e7cf84863c900411a372c910921a3c5bcc59bcc520972a312bba42fcf6bc6370b9912cb9de4567d5a0b2fd24998e474c5075d4acc28894bd32c73468ec41e63eaae4abc5a6e2061d0c2ca7ff99db4b91e818c7625f692bed9543b62cd789943456e04fa3cc8bc986e4c6c0c23aa1ff1f41dfa49445bc427538a1663d6d42fc82822b9c963a9e83771f32622bda95a3fbd05116b9ba6b8d4a45773f010f7cb1ab2b6b3eb976a88c3568b4c5e1ba27d218ed549defd5f1c194384a83737094da20e6241bbe8a36563e3e122887af7c445e4546d7b02a1b96a6e8797a5b69602c45e96771677f299cb3f94293bf4cb1532c55cfc703cd9bbd9da653355f761318b16f499c7aed21d1f7c51449b667f8fd2e11ebc916f6974e7c57c1a3da0fa6236bd59a367799407eb33bab5a0257149b77848e3d48e70595bb4d37207f7cb37e90d11cd496c87c4b608e12e57d98b771dfa1eeddaf624bf43890e9f0e8fe9a96ad47f9bc352d728194beeb624be1cfeedda4dcb50a3b5c7c1ab8e692ee6de6e150e076d97b2ebaf45cfd11bd2820a73111e37e4886e30a61b1f2d4b6b19a4507a74e1461b96ce4c3c28eb7c3143de070c6eb0c1144a93685c8be3a2b60683f8cdd794b15c45a5066b6355b674e67cb3a501599a6466ce92bc946d8542b98186b324b3b4a9e5d1bbfd9f21793a866dc6bea69868dc308351839dd2a74e575856863ecf8f0c32ea28fd20192e9db3f0d278380643a5f7ed79c7cb825c0c089d74ebf3c89918330c9d6cf6bb0b1d3ee9b2470b780829128404e70618b24d214735a8d5f760854249038d167c60071a0d031e3908f2a30c341a06144a1a68a861851b5fd0427b5c753de1f6a2150ac50bc8fcb751c6f647c9ee46173479a1f39fc7179dc70a8532c60d2e6cdd39095f3ff1597a1f49b8b105bb94ddcc9cdc95d8b5c0badf2659b52f66f12c54762f664136df4a9a2a14ca0d2c9c95d651338dd41e9d2b1cfc64286d9a1dc65a2be4620b5f6f76f23a73a30abd68b247e39450ba57854229a286101f43bec8b23e6e50e1d5a4f47bf02cbc6cd21937a6d0f95f08d31a4ecec72a144a096e48e1a4337d12225406e5e98d282c3a42ffbd2511669d0a8572030a889810f7ecc93c5f76e30998fd75bbf0f2b96c31266e384113b3fae25ee6b02e4b8542b9d10436ba782f6d3c31e18e254d66cfd2fbc6d012f690ad27741ed7af5809575e6ee6bcc9ec68efd8d1881b49d0aa4a6eb5b588ce1824e0699d339c8a7ae14442b8710473668dba58a931a9df30c239fd958b669cc73289e04611baced26cd58b9e7ac20a85e26388101f3788601ed3973cf8f76b8c15223fce201986aaf126b6358bb174148635c2cab36e859f9e4036480a7698c183470f4882b1ecf6ad7afa51346324c040b828a25f74b7ac79aa5028fe837d90fc82974b58c826f5986bf285414b8b39c86c39bab9235f20e9c5f929ed3795f87c59e3c5b1abc3e77e395c6d5ed94532965de69ccf35eaaa50283dbc078f35fa81f06a8244178728e1af295bc47a57e99186902120a050d21032c4972417b8695c898c2d8b5fa4071f8442e931440809289421428690e02217b477d27ecf1dabba6087097e88191e1883e4168f66a9cd31af45cb1a5b18e3a9bcc71a51174f1f6b0c296204925a9854b5cf7a6796fe57a1504868f1e6ab7fa936d85d6c150a050924b3b85ecb3eb5f4a2d8c724b2e0bd3d73b47fdff0b158186e166b5a34bfe051335828ba32f95ea5d67f55f50afbb4a063cb6a1a74ee0aae3a5fcc34b9b0a1a9a881462b12cab468a7fe3ac968ac4086eb0bb247e3bf7c568440b28ae53fd5a5ead59d2edf83480f968c1d3b3cc80f13ecd8b1c69b60c79057018f34968c34160d0ae50724aa584c876ca93666411b832415a832994b9ded89bc2035d240c531add8b9d6cfeee7f857886c25881a88e414c8f4d87541aee68fb2299a9b4f117e363a8a0e059252986d3545acf8896bb9041252a0d64a78966ff5353d0924a3e8b7c74b84524286dff41839028928f04a578d5dbf310b3a150a45c8730d4842d1be1c74de4d723fcb493e6c40028a6d655ed2e575c247fbc462688f9f3e5a5c8cf7813408483c7136d11ce63eb46a8d150ae5cba80005786880a4137dbc04a6e3117a8b97902e88b0b5d9119fe58e8ba23ba6aebf11eace8de8fc72c7a42646b8396a89cfd5145a7e17715abcdcbd24b64d981481169312ff9149fcff9308ecaea5f11d1dabea2162f13de6a4a54fad7dfe21b46c6d378ffb2eba980e439c5daa50ea41a8a310093353a2ff628ea5474264a774101dda61358c740c0225f2dfa1ab6de219415c9e7342544b29994c3b7aec385443123a02a17b67fa19cf498d782aa60310698d25de3dcb9b6969227fb863c7779d72cb4adb0f29530d0365e8e8c3e7513c68c6ebbf7df9a0a8918f715aced1ceb48734dbcbb9a7b76c4646871e165dca164faf9d77b63ca0230fbc494de7c2bf201a204244b083043cd2583280e8c0835ef2711acc53ea7e8733a39c676cebe0f5d06187d3e7afd02c682b29ba0e74d4a190a2a53b9636d5f1d3c10bf75a936ea65d2c12f02812448d4a194472a0630e6ecba64e86bb6c2bbd1cceee71693c6b082dfc5671307a7e55cb30974de570b0374ccde6d6af53f61bf0f0f2b796d966c7ac1b346bb1bbdb35cba2aa3e74b4c164ab73a7557d5a302b14cae760c8a2e163a4093ad880f88d1ef38fc9870874ac21976485cd6554fb0d8ea1430d5707516ee2a74563bcc690226b0c3183870674a4c1bfda0ff662e9d0361a96adddcfadf48671171d6758ce49e9dbf20c992e478719f03ed992085ff3245a7494a1dd983b1bdb21d205e920c32e6975495d7addb9fc1874ef1cfaa9d53fb62a051d62406a96acc33a640bdac6828e30f4312eb68b2630a4a153cccbc9aa2fdc262fb69eb08c33dd0bc99ca1772db2470b1b8f26e8e842ab59d2ad6d0dbe3217ac8ff139e924e6a0859c40c716ec5c5a3ed526a4054b28395a2dd8c5899d053b2e93e753e271f43ed78185fc54559a32f5b1a22b38dac23ba9cd0ae74d152fe8c8ae1ab70a76cc41ae892e95fe4285f46b84cf8a5cc7141cfbdca6c3248564fe6472cb45e6aeef021d5170b43369c9574c5f282b44768c24e880022fd2ecbb4bf404a4a8cfb866e9fbb3dac1a3053a9c90ee9bee1e93cdf24dd873a876b9f81d539a28e86042f2d39dfe2cc6c60a7509eafddcaac5a911b312baecf7bc29cd6499ce2c09479d5339a72eb59c749070988b716f5d8c2f9894063a8ee0e8fa58f66dba7a1e23e8e28e962579f210f0d05184efd7e517d5d64184ad6ab4143a439e6318791493565e2f9c0c1a612cc598271519291fb3603c1afc93eeb94b752e398081a7cb998ee642851cbfa8fce5f11c6bd53dd852c8e10be7e56a69bcc6936eb017a64eefdefaf2dd265325072fd0d7526cce889aceb2ecc26c9e6b427390390b3a5d2cc69fab3f1551f2ce452e6a0bb245e6ec713c5c14be1d17226a3b654c8e5ba493b86ee8d4eb828b2dac163d9ed0b9dc3a7db5b0de93a674f185b99416e6b96f79fef45384c66c16069155e235faf46a4c16679bbaec2dc23a6b0b901cb140a98e897cf753de162cf6f19edbeb3d21427e85bdb2befd1984fe6e73b8021d7adc63964e3f72b4c29c4e58566dc8a688a1908315c69c29c3dbad4a73b38a5644092de8daede45944c002175028403e0743860809b20cd9018f4a0e55d4bb9b7369fbbf8c752a502d26cfa432e37c6ca838ec6953f72c27db5cc120c729f25327cd74d30a85f26359cc7001094420020ac5070f729822914177480d2a428b7129b8dd4d7a936b69973a52d4c1ac4dbcb83b2e32951ca3785435b674c2e5369953a150d0103264f1e13f28941e3944b16bd21c75af0d2147289664d23be27fbd3b64d628f2a3370d1e2ac8018a73163385ee4c6722ea4fe49ba2e4c7e6b54587c708727802194ec7f4e26916637ad4600663e4e884ebe57267770ce2dc1ecbfe09800051430463e4e0846342595aec8891e5b289e46ee7ce057b2d936aa2901e069acd7fd32e8fb860b2ca08726422199363223288efce31d1821c97384ecd8912d16214db2c71defc1d7bf368ad5695685485bf24ca5b4cc6214342d0011e6ae4a044ba9312b2b55e2d7e38894de964adbee132264ac2ec577e1bcf9465b22b148a193cd0c811890531325bf369b1ed7413e480444a7790d3f3e5a2259d47382fe8ec6b41783ed17e1a3f8442c11c8e405c56d66fc84f11cad18893b4efb950f1e111f920427c50283dccd891820ce4604462f7cd53839a49ddfe906311c69a6ac9ded7bcb34b911f1ef8fe01a48c223f3c70460e45e4f94ab7a471a4a78b3e47221837657da644798787c8fe00d201212828a2061943be0809d0c88188caa5963b77a97c11a3436c1a64eafc2acbd3cb10bf68139d4dea85e8b5c517b4769637ade6063908b18a74714366730fe618c4d2c6f61c847e8aa4a1841c82e8f4934e22c3ba98758e40b0f32d6d88ebfcaf690e401416762d9918792ec8fcc19262d2c38ffccb59ca0fe96931690e6da1b6357d303db6a64d9b731835f2a11f7d5e1a5b0a0d6afd418e3d9844b908137fdafa3e7a3079d6f960a2c469c7f2d069b79c635f9664b38b87c375d6733755523f78079368590c756a5d633f3b1c22f47ac8c9f6a043150ac5478e3a2c479725b1594c7df5243afca6344f68c9734b9e1c6c911c7368ef5d52316b211b26e49043d23473df650de2459f230ec771d366b695ad978183394813e24e874dfe826fb8c54fa741630c67297e0e863ce67043755a96378509eda3ac0a8592a30da9f2785d9b62d46628071b728bbbcd697436cbe90a85e2fb951c6bd07693bedddd50e2b31c6ae863fed841bd7c6b144a1939d2f0c776d192cc7ad1b1a121a17c5f6c39e796ad4d65d907b2ec9f804251428e33ec9de7c554ac44ffdab1ec9f60081a64842187190e328b992c337f1e99ca5186b336ddc6349de3aea9b2831dfc000185c2e37390a13cb7d20ea90a21c718707937bc18ae65173f2b864b6fece54d9e592c5918ee1867324c99c7b8be42a1f858837dac01240d11e400c3f5ffb2312f7ac816fec292b0d3b95f428be91c5e48e6b02f679caefd0e12418e2e547e4a86767707fd6785071fc40a39b86075ae97e24369f1650b27a5b43c2ea6726821119131a64d6c102a21422a3e80f80f27e4c8023a440c24645d1683bad0a5b53f410e2cfcf2a796cabfbcb1ea0ace7a6731f784788bc86105334646d5943dadf15701659f54d7de9e830a9d57bcefc797b27d9c0216d21c5238dde78b51d3980bfa1e447244816b7b75df74325baa3a90030abeb70b6af12d9b2bc4870f223f28941c4f50e4f3bf18bfeb5cd052a1507238217d215bce6ca163f6a642a1f060877ce76842a6cc3ac79dedfdaf2a14cacb2007131c2d233f57ac3ab89e6309c7f839cb1dff4709d35528941e3d783c10de31e450826ec2456df7ffa42906438e242c9a28bd9e9fd4992c2b14ca117220e1a0c4bd2ce6dc3174d8731cc131ed632d89b5f479ad50283d2a398ce06a8ebdb74c3addb4150a0508398ab0389f34785ba942a1502863e4208259fdbf2a5f7218e91462a0441829974fcba3267f470b0603999a5f3379d2596b02c6924bc285f9f862de722b148a07f9327878c92f7e41abc65a73bf0efbc27aab92997d65938c25bd4066f945bdd331beea8146c3c0837c192628e1452e95fcfd79527daabda064170b1b83dabc8f28b5595da0452613a563e870319a0b4d67d9e6eea6cfade1e22cbce0f6e1d4e6e09f1e2370c18e33c10e33c103e12c94dca25c1dffd05bf25b934a6cd1a58cb5974ecf3a69492db46febf6d861d45e0cf2638738194a686108352f1556a5f7324a6691ccd8ec7e9efeac20427a50228b849810b757b2478ba39258fc33fa7b713dfaa52981c582e9a74f6ad5e55b4c85422979455a4eaafdbd7e3bbcaf50284384f8f840892beeebbd4ea3d49256b023a2f694769f4b518542e91124051fd8410408900eecd851a4073b289412569cce7eb67bab37865fb28a3b7932f753d7b142ac8a64e6ca5472a30a85d22a1041492aae1ff1a536cb331b9e12542c5a3abfb2cd37fbda2121a05076c8b7a0e41468c963a90dedb9315d649498629396a254aadde95caa502865949422299bf7d957b7776d854259410929ce9dd9cb259daa50282a2819455a501719f333a3b436468928fa17932a556b3a66391c0ab63f644da9f5f79940514911274fe954de2fe613576a85b5ee996ba59e308b3fff6945844eab75628f6677595a7acb379c48ddceff4ef733e6c681924dd4c2ea69cf77b1c50f6982fb8bcf579e25d51820fec34710210fc449102405140a911c081152b11d45011e699464a25cffd0513a33bb674a3061cee5a74ca24cd565965072892c4d379b6cef9876c7428925fe797147e6e45b7452154a2af1a967ce9f846bbcc95082ddfa9857b48ef82c9340ab28533a6b72dcaa0a85b208f15121b263648924124a5a697bbe561f2f043bcce081839248984f9d6610dea739942071da12ee19224b2faf92472c59efaa6b109e257dc3a0c41106a5eab9058f318ba96fc4bfe5a23e6e65c49b426453763de56e404a16c1aa9df674f3ad1f2b22973f8b62eaf499d0599607419624e20f6b772b669620c2dc55ef727e8ca67b39c4a1a5f6dfcde47d5f32238d124384a0a4107ae74a0871ee5cc920eece9508e2052581489487fb688ba7b1861938280184621f7ee3a1949ede39e8afd4a0e40fec7be77c69bf4dcab785123fe4a9e51472cac55c7829e9436759f3929aeceb3af9807ff6ec8c4996dcc902108cc1a3640fb5d6886c41754e7b5af4d0bb947a7243559287badd4dc6d37f359b2cc183dd753eeadd2aaeae923b986fa23b7bdea0e952620753a74ecf4128ef8d621d96edb47327752eeabe0f94d0e1cd182584164cd6db3407f745e37bd011cab22c91039e5de5fe529b49ef2c2571b0a3072966b14133642570405d34ff32791a458b63f02879c37123427e9cba4ad74bdcc06a0ed26deedfdeb221256d60de34cd3a6c304da31e94b061499a5a330deda2b99c46c91a2cad71597a8f49a3440d9ef4f498779d94d05d8d92343c2ae3a588690e427d951234a0657563a6cc8fa7391e949c61519492e12c63cb929a8994982197d3fbfcc79c725d92484919b4ce372eb869cd1d0f198ed38fa9259d319a9d7a88c00145d44043021de0818392317427dbb468e5a174ba04291143a2c3f4fa06e5e159bcc70e29d28310ecd80104c87e60070f0a65c40a256140e967cbe81fdae28a2560a894ccde69cffa3b5e85421922240d1f692c1a2028f942a697a93c9eecaa8e2b14caa7b146111f437e8d21140a074abc701855236be35f65b6544aba90bad417ab3fbfb3cf5828e182268390e974164fa1396328d942dde1f7424b0386122d245fb838f5be5aeb2f1b4ab2a06fde2eeb91f23f4a6798a1040b9e16469e1c97f342c9b8a1e40a6fbd7c320c3f10830cc8999764be932f7bae1863785b10593aa368febfc41003275f943aa16531271586e10a530c30acf3b22c95cda7a9c6545620c617ae2b93b9cf94786163150ff26329430c2f2c28f3175e9309d91feb8299e5cb0db715c2df27c285f48be567bdcc12912b626cc1dc16751dc39810b395400c2d9c1de3dbc9ac2f9e64889185f3645bb2510dc4c082d95662f4bea0e62312e30a67fbb4e7b9a7b4ef5f21220331acb05c52f3537d16e494b80a761453f1a1c2e7e52431a89067534a67efded4fe624ca1d4b2f3df36ad218614da0c32ad7aa569dbbcc70fc488429523b386307d49b61828547bfdf973d23fe7121a623ca18f9d2fe64f9ea965599cb0341f73febc3b8c56c568c21d23637db290eac25f61422765d4a38687e78697c0c7b664ed5910dffec450024abd4cc659791ef1567af4f0000f3288908042597c10f92a889184e58dba9d620ac5070f341a06df83c70818c44082ad334a06a1d263e81c318e60ce3bf91da63dde311c10c3086771a45c9faab64673046214a14fd35d1915a13e4e42c42042d53096655d8d274a534953aa9c086333a5646b8a70173b271896de0cf5a637fe831e187c6dd2f2985970f9f65fa46d74d89c624cae69be4076369d1fbb437bb87ab1c6fea69ae7b8929f178fd42cae86df8d5a6b17983e6d5aae7ac8aaa10322148a2e98cfa9bb65d5b945988bf542c80925e26229ff47f76bd4ac07dde2cc628baae7c2b67bfac4166a1ed5f5c29d6bd05c2d0c4228f5f6abfafc1c2dd6b59197d720d3a656a15072d05f69139cccc22453bca7d4551675679122bd851db91f08ef0301b2e7241659a7eccce3b2150aa5524488078884e00416d7f98567ac31df789ebc02f1318826d9c2c69ae787a8000a27aee05ad0c936ab6978d842dc8c9356289feb2f3528f5092b8cad0211a1084e5471884e52c1a992532de68f4abd5f70820a453f8716b4dae559700a65e3a557695d793a6970628aa47b0693a2ee4ec45e59221d80c14929929fe13308d9a69971428ab3946fb8586bd0563a19c592beccf1393bb8549f88c2a8a39467c1a5cc5bdf064e42f1a6672ff5f2a6321d42e3cb3801855e397b5a9a6fd7cdbe080978fcc927b4f3d98ced9c59b20504279eb03b69f5d82f697e85c88e814e3ab1bfa767509af478f079a4e08413fd08352db92659974f9bd06ec7455378925ea626eace5726f6e268b6341386868646c3a00527984856ffcd869195b3cc25aed1496595529924824e2ce1975cbb4dff159bde4925fcf7dce2e229fd2f6a4e28617a8b9aa936932c1744c1c924ce2296a1557e846ab222895d52fb1c3bc84e22a1e66c4dbe516ecb3e810442996fcea2a61e911683e68de143cb319dd638718417bb5e372736e29ce5d69ec598134630db25378e8e6be9257d70b2886364f406910d85f283134530abd6f1aa938ccf9daa1a9c2442f16c6936f6bb25f122841344d4f95a2a35a6ab8c4e0e816f7a0edaafb3868889ece0c4105e588e76e90a810791aa4137b73644ce58202278c10921b6ee50faf35975fc0753283d7a10a9b080c7901414f9e1010aa5c80f0ec2c920d24eeb9a19b36432f41341e8b9a5f6a437d7098d05c239bdceb811fa74502b2780684d7f8c79efbc5bab3f9cfd3bddcb78ec28f2133fa0e4577e5437ffc710331cc88fca077870d287aed56496cd3c3ef4d94467b5b4a8e94d7b40b46e5299ee753a772a1522fb2738d1c37a19eb49c7bf976456a150580d224e021e2f38c9831a740e31627452b3eb091e0e1d63637ee9c4ea8777b82fced44b67274be7ed604cd263eeeb0875e3d6c1d18b9764a991e1ea9fd021a5f64f8e16f5a0a19e8317d25eb69753687f8d8f2142cc3891c3a5a283cc61e394fc70650427715852dfdddd77fbe6de091c2e999a7fd931ad87e90d7679f2972fd3f2a2ae5028686c1a44c6387103a21dd74b854e1b586d415743c5796c29363827d7321a36276bc0c4cbe8f84de927ca13359832746eeac91132ed2769309a8eda25ade5cc926c068f1d9ca0e12c9a54f58e67e92d9ee16c4987c73a5997ba3d31c3e2a6a7596ff329744216224262705286c5b897479d5f276458f3c3bcbe60adbd2d2763d0934bb1ef71bbed39150a450cbb98426c0ca24fb43ffa240ce611333bd6f1693af645860849030d129c8001af1006d0c9179c31d9776d0d5af6d00b95c70e7ea525a457c98c932ef01df32d77a74567a642a158e0840b4b6a2e5b5cf513da01244eb660271d6deca4579af8275a48a60efae4c2640c1acd02723dc7173f35168c7da6e5e0513b970e9d5c415375cfa2c6dd0abcde6957f3502f9eb80adfeb8bddaa71a4ed7a42055475277d517ab69a3b99c2044ea4b098639fd0ecfc49147cfc48a3032a70c009143a8890059c3cc132f5c13eb9ac29456666c68e323328c0434f9c90f616d15996734794961b9c3481f7a8a6555458bb2c8609cba9fa936d66affef06409b647d3d64926ddffd2274a58c04912d2f9d277d0b54f909069514484165b4e49f3e408cf769a8e41e990aad58911cc2e7f4a4f2fc9e82e5fc60e327698c16304274518c009111631e392de3f557afc19439e0c0ae5cf18f263f06893619c5d2aa5bc85591875a5f9ecbaf9f5e883916b9683767f08910b9800e320eeb7d7ee3466fd542814341ec8f738c18e3178a4608b2c0858400619148a8f2168a0b183043bccd8b10b935fa04106014c7c51e489f8f89146070a60d28b0698f0e2fed19de65e5697fcad5028bb60538338d3b14cbb9bbac8e594a11fa33cf42830c90591353e070f30c1c531a9671ed3b2c74df72d7ea4d1810798d8c298d4020226b41080c92cce6254777b1d75931959fc79bec4081719b49c58c0220126afa8aa5b1a97434bb7fa714532a65a7fe9fbb4bca756f8f89146079ed7030430610556d7fb2bea6539b4ba8a0998a8824fad69343bc89869f908b2f84083c8f2c0870f21453460920a36bc37c8bd5926a878ce639d5adb8ecb58a1505860720a64628a039894c2c78f341860428a518822147b487ba92b8426a010b220c0e4130bfa5e965f633e796e7be27d119742cb2fcbfe6d2788706287c926d4a0693ce9cda2686aa289059864220226989080c92526606289a376900dd7a7949f68520947c4e764f5e37f524309223f44483bc06412441860220922438410113286014c22a18b2b4a645b347bc104031348dc9e4be4cbd26652a73479441b77721e9a3842db0eaa2ee9e7f7a0993462bb112d5af708e9993082f1a0498b741b1db1c06411b520b3ac263152ac139828229df42a6cc4f99b7689f89146075ef0001344a4636a1783980bbab9c0e4109c4bed398616f4dca83ec80f46434853286598182291418538e38c35c3022684687494acb5172f12647b5dc002934120d39c89f06c04268208049be46b12f5f3e976569e42e9f1fe630754300184e97673aff29999fcc1e0b2ac96b210133f107180491f1260c287d6e48f6b5ce506530711f2c30d267bf0a100133d04c0240f6a8712b1f127459b5cf10104c8fa48e3bd4df04000933b1c93940b4fa7c553f8765850aa1a83750c16f6e02b26751080091d163dc90bb2d74643a92b14ca1826730080891c8e31290f7ddbb51dbe1f0284d70c1e2c0b386012075cb6e5f62db11e7f56406002075b741735982e95e3592a140a1a3d3ac0838707f9223d080185c2a3df0540802c1a6550283c7860f2862a6e2d83bc4fba31f21752e44ddcc08b1b3cf7749653c23344888f0ff20348901f6db842b55f68106a21b464c286748c86d1122d65ec308347912fa34264c748266b50846b6cad12211e2f35f82526c5f77cf5b613e447084cd2e0de85bdc9662fb5a6c0040d8adac8bdfc9d93d0ca470f9333a8495d16afe3338edb26666034f8a9b4cf9521edf29e6d86965a1c71c5840cc76ddce0a65db6eefc180ed2aee45adc742f6711439d7dfcd6c6cc3d652a148a49187ad1c476292dcb1ace0643276d638e23ae65b1c42f20af6c554ec7dca03a5e5836ab0cb7b83829aa49179efb58e21ba61aaf572814132ea4b365389d84deccc8150aa547fff01f92860f0aa507274cb6604cb6f59f5a3071c2aa0829e2c387891670bf5dd51ea16cad8249160e9997634b2f29b7d39960216f69dd53dbc6a02a13e2c3471a6a50c1e40a988c375a901b639684cac40a99104daa8009d1840a7f27175f9a2b9d6416af5028144a8f35961f43de640a95104da4c05ae62043bdbc647d9944418df72fcb59d0e51f54ef4250600205b4fa565b68f163d6f8bb10143c2121db23aea1350635be8913167f3be7cf7bffb2e62b264d48ab96796f59a150881421b2407ca4216488d3c084096bb4efcdd2a976dab142a1f43841074c9670d8985e2df11ae7ce8a0f0fb23e7af4bb0005418698282195f31cff337d6d6c9521144a8f325070039324a0c3944a77b1dc638c0b0932068f762128a050da0409c60caae141cfe7cbfb8c5743070f8210981c01b961dfe77a62572d150ae5043cc83031827d7d2f6f0b52e3bc1d081992864911d07d2eca426929a2869035f604144a1a448060428405a563d262daff5c4aff3f869871021e45d420c30320f81f43cc601e66e81806efba693bd9ba6f8608594ca043187bf9a77ca86670f520357aacf126a810d93176b44147304c2f69da07b9594bb6665028ec11d0010c64163cb6b7ac6dccee2fee205b9d9e36c8d1528542f931c48c33828040872fb0393f1d642c6f4f5b21b26354886c858c1d66ec108109768cc1c3032020834261f7c183053a7aa1c5b8f02e3a7bb2d479d155658c5d97592eed8ae8d8852d6c586859e4e5918f0a80600705789441872e7c294d66dbab7df4b102c5821db5821da5821d95821d85821d45c68e3a01051e481a6a14f1918bea33bcf3c72c25b3bb687441072eee342fbb689be69fa1e316c6700bf775c1db5a1dc10e11ec08c10e10ecb8810e5b186d5bde176316e9725e0b5f2cb13b2e462b6d323a6881ce2fbafbc44597057116ba18b3b341377c5f9705a3b2419d95bee8188e05671ecd5f7c4975163558bc41f7a7472ba9a34a5bd0f18ad593ab9b2c2163fe912b7c39e9923145afa87c5ac16c4bba85bb0c2bec6ce2ce434d86c6bf0a3d88cdc20be2ef36c654a1c8a772a9dbe4bd64d2918a63ead2694ba46951721da87846e37487d34d2e763a4ea1c73c21df4969cdd228041da6b84db6477dc135853e7594828d1be6a54df310b204d1418ac4858c3fbe41150a45c728da73f142dcccbe931fd0218aa52a17847c0cfa1f438ae808c5f9b65ebe66946a9f416190bd9e5af013612dafe31398d8dc1f935f7c2751854259810e4face7c174b6ee359da61e5b6441b0238d25c3df87ff10214588c04247270c9d94c9d4a173026f91e71b537f991a6dc2381dd633bd70caf4a48963748e2e7b2c7564a217f3cb726c5ad5c995480e82a851f980101d9870839e922f4b9a5b2fe983a440c7252cfbd0efecb238a7639640b8fd4791ebe29ab62bb1b7c78a6798ebf952072596d6b3cbb69e3b993a44c724509a6c776478d1ddf41ed8d1011e417e6ce50392e0b4cb2f96d59d47bc4858aaa4858bdf1b4cab90f032de5e6a5dcfa00f908ca88412c368280e0743813018080400014eb7365311082050402495c703f2b860a1d60314000141362a604a222c2c1c1822908502a13824108503814018140a446124049124c6d3b4c907914f61cc92158f6f9254d3885cf022e64fc7b179e5fdb6785ffefdca8acf3277914a11fae578a91adbadb6602c28d97af3c06ce114da2a78b4ec743d2da920f823c90ff4fc0bd48cbf7295d7d55b48588728bdcd3143c80d523e3710404452979f2a2ceff34f0dd61091bf2114b57aea0ca1aeba1d005d06316ab3af967bc773969a9099b6f2c541596d73f9fc52aa85987fe69c75298938bc824d0581e80ae21e6339ffc11f073e4ae57ee3e19bdbdc66f891c622bb8221f65073d09a6a2df6512a1cb3e35a765b6a9123181366255be8b8889206634507f50c97b2e2217e26e02f9d6617a8de0ff01956a88a1ac3e52e108843aa401951f9f145c5b6000b080540517e0fe2c29f5735c6af8dadc6a72f43bd42465fc900455482774fdc2062420d61e5f4b951cc264342eae645b5a6e7202ea23f6cb37733e00def27acb0bf9ef618608f11e061f3eae59fe3cd4856fdfa95519252719947f57512fc93ad04b8233d8b5c8db9efe33a5ecf14e2c428ab35a48ba1846c32cd89817fbcf409741e9fb83c58ae9f6f0b5f3e809c40abb4fa6c47687a9be8a3b0b4bc2afd479a804efe9b98f0b55debb7d38a9dd6816e9c2c46c2e5e7469b984b07b5d994506ff51536841e933fe5b3a1ea9b6053a3ab35a5b374b70f0e7158bee86ff98a31e122998226ca7ba360f837fca19ec86fc42d4a254115b24245228f8abbd42e88f8bfa0306347fb2b077848e595de68980397e0d346e5b80b40c73eadc94b8e23aa5f0ac5f67fcba699e0e98573b66059042b1eae675fa4c6824cd1f648e33eb3fb2e13afd821a9eb3f27f377a9896f83a66148a340072b9bf48ceebff087df473a807dabf16477ab5fd81e4a416018bd38a787fed135272b9517d8ef1262fba5a67786937c29413f5bed3ae0b3270262c9768e181e562c531e8a507bf024b93130c02c90c3b4abf68ef873566c5545ee2aec21b7428afdce8d00e5acf6f55ebf8fa7bd5080d0c98093614c9400e383d9dd9cdfc6dae9fe6ab2b9f088d751659877e085b1e1cabe544675017e09f731e543b8ef4a60c2c88d7e081f398b8979680bb28d4deba8d7e02d5f6d0b7544b658204fab905657d2ae517f81e26524b2559f5eacde8fd920db744a92063d12e3e3d19d84cb447447c48e74b5d173ac63efaf21c46d024a9b3e9c2505dce98a34f846f65c000c0c29366005b00cc0907ec0a23e1a19f446c5ce1e51bd789f9b1f4dad06f4c9ed513c16211c66d21f90581ddcb95e837d3f973afe2756b327841d8c6a250c51dfb84338bd81d55989b6ceb0488558dbd8467e773df7eb4ff84e2d0d11f2ca8c8016916d1802e543f001392dbc79aed70b7f2fad31e397c803028f4ac43a8899499037b0df4b683d5488868bed2aa7c5a31dba38cb5146dd5f125554b816f2c92ecbdef8370ae4cf67260338035f912a2bb2bf32f0dc8d65b43d209cba369d4a3fd1c8544aa305ba237b342a307ab6f4597ab3d29dce7d88fa00f7fe0be2622b269453199f669920948d50166a089b442f40050692e1ee87c1f0464b8920c2d4997b0ac1a25aa459343fce334b037a961cf64241bda729eb314e260ae08d455bc6d07476ba421af5d6889bb5d9b3b0f53788902c2f4c0586da53df04ebba8298a49fd556462007a88e132d786af822f000a60c3c1084e6106dbfa230207c990eb6876fae7554c089e5ae3743be7ac27a831d292e7fb786967f733367e3b7c27dab5e42903fc605a804540331a528f1d7a77c4c208f67eb4c6d70908dec0babc9083063d6ff5659c26c1234511d4a59f73183ee046072a71011e02cc0bfe1495f10056eae8293e7d929818225134350a8824f95a169d201636d3a7d812d131882e31e49ded7cc83a412ae38f13809741dd53743a26e484b7e30e7a9982a7489db334df32f82ce8191e0aebd5d40499e467e1bd482c3ec0e793bacaf27fe3c3ea7300ecc6acd43f2a6b67371a5738c45a0268c7151e39b2a7583c376efb943d04a7b2f4a25ab51a78043a05b0cc1f165053cb38693c4007999fceb2a61c36cf0b4834559c9e0a2dedb205608783b0fa8948dc74cd31b1db457ae29112b56322002e3d3d36896c42b572abdee31340eb4ec8ab4b8a693a1961496699073f0187e8c093b0e6a5e744bae9419ae4955cf071ae0ae8b953e9c7dc0a5569ea221ce916e073d56ac5f821d852ed40ed54f92146bda843e4f6024884325e1f699c634d7e41f9f8d5533b73a801375ab9191f6531d142a88cdc91cb706933035c14fe0ce3be84c35f1222b4baebe67a05c9a7d80ccb50302032a2d30967dd7dfd66b038614065e44fd2635b86e14e3e091d70f65e1241acd042a52b204955caf85e32df6a65e1bd120676564ecb908bbaa8bdea60be441640ae8b8e50ac26a731f3ad1107f5eb3fc3c813e8f2845fbd4f7e096cb8711f7939510a0d74400fc9280166cc2f6b6176783f3b5af67ca7f9db85f95c222700fb1c6e42c15ac9cc1e4cd964e8d20f5475efd135fdc443204ba6679ce01f6dd2eb97b27a277f9825d31dc93ab81a041b7560828a2273a27ea63f9844027637a602304ba782e32fe757bb92f82bf786131dc08a44b99c21da14631d474291218b159290e68012bc507ca0e1b34cad74b13c2351285e8eb881951daed72127e6e5abd1cdb9b013a1c88080d2c76df3233a007db2277a06fa7b546814a981da4dcbe2a81fe6219a1bb64930bac39671992f6cbd7fca3e30df8e2c6399be6823bbc7e9d5a5c1786a80e9629bce8391e79729cd110d4c12d64832f0b6a2653012a02a4bc73fc53ea708b833d2fa94d0368143b1f9f1fca8f150561d09bdd647c7b657b8c878ba4fbbfbd00254846b7533d2e805efcb5e7785b8b4113f653440ec1f628f4f1cb81285c2a5daf1277a347935bc82b6617852ad4dc621546517c0025e74e26d670ce35a409e2bf1c3d192c836be7955ef015406b1a5c89c16ea40ce36b46b3090aa09deca9dbae8d7b0633bb1ff082be0330a7d04c2d1097c3e526e53007930c92cfcfea7d6b4b18d998858786ba2eac61812ad5bb9da21ce6e99ef19f91088efbe51ce7a17188c97e06733808a04d1913c510ca5b690735888e793ff6be4ded66eb8a5ed47f20dc8b7ec018cab3a3a5c9e7b333ca7ded9b146080879d49d8eaa9d0111cdcec4ec44efc97422a66de0343e5e3259ba78c015bf7676b02ce6d13f732331ca910e3a1cb12607ec3233a2e96b43af39374bc07be0e945bfb086d6a6b9b1d2c3f5547cdd2f10c4c05f509f6f0b24c791e515ed381ab9bb5608c57ec5bbfa3a64d1fabd6420b050b1fca688d748a53b18394494449868dd6a2ccfd35436776d4296acef5db6c8e1202095446f5ee71a73bf3014ac43817ecca04daadf671fd023160366d9033b4fcde52539bc016dd1b31fb0dc367a021db3c061b0cb2d9f1bf0b04cc18b6a1beebea7a1c00dd3e0c0b6d02789e5b06a6e49c8d8484f794282649710c699752cb14034812fcfed6612c0b01e39d1bfe31ceac89d666bcb46e32b4b88857f4ffda2f1a2303d3a0daf8c39bd1190332020fdfd74006fe2226e614357c317a9a3a69c50c270408aa3f796f78f2f144ec3ea47ad676a57dfc4ad7e7f4591604821593a46a80653ca5c58d2413805c15e07d60c2ef834d27ce044ee35284a55f95b4894ab7878a9e32c9ae572cacb0459c59fb05b9e315e4dc5ce814b897c05194668878af6780531a1776bc6017de10ccb91bf517d9fa48a0434bd3501180c34a63b02b365e720d5e094698c7ebc90599ded25d909e277264ba33889ef314b279bf238a6dbeb5426bd7325460ac48d4361a4c754b496c7d37c14a7c25b7ec5a271c61d00481a239e95af2072b821e3e95e3797c63a28801ed2bdc3b85b9da11a3d8df67590815f24431bfea047b4df0e177c5b691572da493b8ab00ab723728e29b38969ff14af369b8e44ba3bce30d806ce5e19b5eac9f24d21c69715889d8772ecb935861198a131f21096cff2505518ecfd50cc03a585cca44188dd9899f884408db910dd869ed54f57cc8b2dd1a68ed0ffbde828517dcfd349c57b3642b1fee46f2ed837ab1764afad0e5d58517d7d5aa1c19085b9b69fa52cb0cdb0a91e6302f6e16068a28712a8e72c52b10277d4bfe46fd3694e4e76230774b2e79bd4d8c7b497fd4e072b8288fcfaefe8d8576b1332c9d40ff4a45da456f6228fb39807cfa3a4833b25c06d98bd339a87d7e74600f6f66097b7d5907b6d17471f30283c21ea15d5ec4d21eb92485cc06efe1c9d26013627e0600cf17f69bedf1253ff37380d9fa1dc4a848f7c0bd0a09fc6c5ab2be157b30036bf33c06f4d715a1dd92402ca57547be5f04e32d295600317c64efaf7b4de2d90c1132944138670b143d8cc68fa80afdc03013a3f127eed83234bbcbefbbffb1c33f8356c914656da93f4f40959d228583757ea75903b230fac580213e5d7e560676dd68d1c9affd658dfcdb670e981e07259ac92915b0b0826a869194f4d415165a0d4347d04387f73ca1d7fb07f218013c43028e2f1c2a18dc7603a39bb4baf19a1adb141c6eacbd91fc61a68f4460bb97ad2e993678b2e486dcbdedbfa7c2061926c7168280aae5628845b467568f453a3456bae2151d7d82f05d3094c882be900fae124082a54ec53004ed6ccfcc204c7a5ca4f267eb17c3de46c7fd8507ce6f161b09bcb32ddc798dd9712978b62c865ca6249a18c42d9aa89758c1fb41a7081ae29c765e17320801f2ce4a118a8940f7ae0ab72dba27dbdf9d0886c95774b2a8fc40d8b36e2b3032478bff87b379971236bb042dccecae676b2510df813e49bd3bbf2ff58418d609f3ef93b583c3c38b07c1171c3f792056b56420fa021715d59714caa105c946874481b720b258592fc14cd453546c3b657086f03538267025f7dc42108dcb9c61d697b566e28a52fcbb5604bd15b6aa2bd4ae302cc3daa8e7158d673ab4bb8699d281180907afdbf2755c23f54755f77871769f1eb3e986030ba9b766bd8c11aca31ef87747bb09ab26f5c2e69bef25edbfc1de336de6c665e2e514041ef2ad3f038bd93087e6f278da90c3e79778c455b567cdbc0dfda2ce7236dd086aeb69862ff1be0eb288fcbbfb39a9308e4cca01ff3c0fd47a7dc3023285004f77cd3735c5e46dfb37981542250d5fcc1e2078cf743efe0ab9cc9b50fdd6d65ac17bea65d53dbdf88f048de4bc9d347033855a8f305bc221d354941d8863c23d94c9eea54090a81d574aa2ec3ee160affa0bcd4f1c71369b9a417c3985a88c268b7b097fbca4be1721291a683007354b0cf2a8fb33543ba02fb4b473fe2876c90a769c704c1b9136b5e182c82cf80badd28c97efa100b610c210ed322cd998facc902caded72ac8452e7a5141b4d29a63948daba29c66c19698c07d9d168529fac9d5b9014437bf2d2e142f2ea4170a7c462db56ee58a730c8d130839685223452b860cf725b5b1f96748045042d35e05fdee602207e8cec64097dbf855b8679a531b6b25e6ad4c82493231563e8d7c9ae015bcfef013f92308b8f70d2e79d2b6271fc20928accb3c279b4bbe5c9fc6c43a98b610f3c24f39376a091fbc59746f2a3a4ecb960c370b82b3935c07bc56f45b2e1d24c82e9b03be56e8cb7b776545275add941fd54b5efe6f32b5902b53c9489345be3905d14165e3e70b2f49ad4a759b022efcf12822bec721539fc701bafdf4b338187679d6722d58c5d9e27d93679b27aac335b67d27f3b884b659be053f332fbb4b42f70a6009884277de59d44baebf6000b3bdd789673c663fc976f4bf8c5e48e37186eb270a26e35f583212dfab266a479fd484b54dd85c3c9f6dacf10a490637877a760afe611ef21f770b8cad4246a08064f6bc77ecb86e15db1dc4bcb5a1c3b9c5e004f168e876d67cb9d84e015cd169e68e4f17dbfba9d7715a375a85f6a6dd402c191bf0af04daf056f37d8d7935eb6d96021682bdd165fb34729dffc7a1ef93826dd167755995ce8b2bdb517fbf15317ef4d720841dbe52cb29057c88e894e67b4af3d1582804f3142f07c8e4ce0740515cb79b90479404c3302a10e51a40f91fc716d87c062ed0c94cfe65e9ec7b3faae25dc1068ddc3d0c2fe4d8319bc15798a617a6a8579feaabe6fea5e2b8b0b50368f30170e53d330531e1ae4354edd8c4e98ed0740058aac25da09138b0f98eb4db8f826352d1627a586602551013be13872eb56a426459eb241c158ed2364f53a32bc29d179357116c931ac46de56c765b9d49ed855417ac28155b89527bd097481f4b82822cd0606e3b6ecd84fe30d5168bd328e96d8b5750257baee2337ae86b80c410d9ce3880a315c6cd469d16988f5314351a093fa82410684238c0ef3a8c4ffa7432418e460859a88619d361ced20e2f1e06403005ef10f518a8a9d1a3fdbc9ca81030c323f6f18c62df33f4489044b4263e5bcd9c0f121ee573d69f07fe097714810f93351cdde3956808977406ff37fd6e1c48a8acd354c86faa268c7e5e2dbab763035d6362bafd2626edf3302fb88998ee1ec32b77ae5985351abd12fb201cbe89afacb95274fba834af289db09ece544cb4b6e26dedb3b7e4ef31a6b26d379a3444932d824c58df90d0e1fa34ce2931f0e76d48fdf20f1976a6caa859eea54332da6a7dcb6099e90ca77e72bbf4c14d50137b19a12968723834292ce5f0eab2dc1f7dc2a14507d2bdfd898995209bf5f2619cf31c687bf093752bccfae5e8099e6e09df26764ff2e80d0d03d6e2746a1fb881edf551a2480f0433ddf68ec0be902ebb1a425c0a156b4da8772ce49c60c448b2b6404435414529fcb62731c4f7dbbb17d7d1697ab99414edccad59a8937789c977d6fa990df11b695543e8070311b3b1096a2e81b9197cd4c9559f0881a27c3583e81d0124a59f7bcd870ea98a3988b2811556e1a0266e15e525c0085d6236bc1bc13a24f436068bdd782ab7773e0ec0cfd3a87b63edcc4b465e2d1064ca9cefabf9a47310d8ca142765517f08ef3365db66255bd077720402876b7a7da307f8c30fd7875a645a19d6caf4c62868617acf0017f0c585132114d5da6dc51a68399aa2245a9e4e8fe52c083e42ba31e5fee28eaf34ab2b77f76c4727157a8f8f89b569d3c65eb8e92b852ec76e88b204ed0f966e2297078c70b0ad677f94b372174e4288f94d169a4f392dd2f6eafaeb36dc5db35d598963994cf769ab318b95bac201facdc6da4153594786c6e24743a2c532d12769843605de9017bf99fa43068fe26ceb4bf278e67cc9310638452cd17636b3d74100e3167143fc1fad3a5512b4a4671ea92f2a62d0e2e2e26ea6e306b86f6768cccac7f1d7dd0f7a35634dd6615aab895cd87d586dbd8a841ccc776fdecf414aac899687867345ca06977c3e7f90c0c5aeeec4c394a51445ae14e9cdf73dc37cb2375e7bf235cc75fa324fe4565bf98cf28013af8b72c17f8cef6ac84d1b6479333d28a99b8b830dda584aa85d850bee164c5278d2c2488e899f49d7d5a7f884e7def89ec984e17abc1c5793a9e300728a0327c8b3d92dd638c8c60fb850c583a495642f56628b4b7b75bbcc3e0af7fc23bf0e3b409c7be1882fb111a4794caee6a4d22f5c2d8321070f018d32635ef6875787c8288d9dba390fb301ee51ab9a5c7a9f26e023997d6c25a903b40b325d61c3399b77d50a1e88f9c1b5280427a14b2cf3d34a9f04e3d42b2e85dab708a5a164f76a04134f2a34eeb6df5ece060023c602c046ec66b206844cc0db3b76219f9d539f1a7bbf9a67a56d89f6b67abf1885a37106426ab228296eaacac5a79e921a7b39071f85b981d94c1421dac93681031d37892ef31a88bf65a58cf3a74c72a2466060a3a4e8741c25bf922d27a62d88602c8d379492af56cc2ed7f3ae6d1861e9f6e6c660bec7086f6ab6e1a98f1af66753a7f98e50c88ce66767dc4a009d96e63e485c6cc6682ecefd4cb52f655acbda44d163ca21276d0dceb0e873c8ed62c74498aa09c50426119b98c0f04c56f11838e52c06323669e935c33b9a498ffe95a702a25bd350bd790073e978a1ada39d1e25fc1a57caf17909ee19f6ba37d53fed8fe9bf1dbdff7597af809e40c72fcd82ba53b795b8134acc202d071fed795274ac05486f1e714bc69771652ef4e28e8181d033e0a2322fd416818b8a58d9b6b99351d999c497b8c611843993bbcb29fd491e1bd580017e5e2325f2e745f4e4f8d165c3ad010aed42ea8dd0bd0e2da95bce57c94cba3f0fc96d7bafc56bc8af2b512f876b3a2c5b1803d343cd7925d9f5f0d1c0291bd354ed66d83b24f96e836410229d2af3e7e22e82c26063a8e40cbfd0c187d0ce2f3db5357169a549a6773b01a51eb198ce13dcabd0b31b58757fbccadfbe05c8b8ae82881b7fc2078f812cbe9e0aa9ccf1af3d046a4d12b11d677046c38d0aac96c70be69f3167ed3cf9be6e54f2c4713967e38500f1143a68696006c1fbda5089fa7325a0ace58130b7ad2cea1b2d668892bdec043993f804888a2498393c0d11ecf1aeb51a255ea7d6b99487c35a3e0725ddbedc9ad0531448f34b80ef8112305b592f7e76a9dc0685c64cf01f3b860dde56ac0a4aa22f52fb2bdf37a28317c7036c68769d8610c49755f9a3b02be455b6ce50c12f7817a0e8a0ac295b0e19ae0f65983bce29ee1db4937fd9e4eeb2320ec7b714e3355da4026a181ff2cc3787a39e080f001775ce65267f1d3b1e902c3c419301fca08b5ed6e54e8659b4f841461ad45b9b1f7397cdeea509cf8cce598f7cba568732c80c267ced37eefb8d4cf7bc6c127b198b3e2a3557f8720c2491c3a88dcd86e912db53f5e44e7d08100f1628c4b215e109530173441741e233dd9b1f999228a0c2ad643ae864e31561ea73ccf27e29aff38d8bf0c0642d6c09d92457b9a059178534b826466061efce3c8d82b6e955ca965aca3625038e121ebd4633b644673bebd113092fab5c50117699a60d1a5e7690ed63468f14149ce346f18e4dae6cd93221e1ab36aa384c427fec7a3e937596d99d76295308a3deadbe925dd56e0f01083b1b29808b0693ae7d4b78bd82567ab0043ad373263dbc3313d56d1972357aa9d87b8e34fea0cb2bd8522a17ac7f8433bbd8cd1afbb6824f6afc9d5de2c7aa6dd5e9bab03e9d4aabd4a85f53dbc9851aa379d66f382a66a56d1a8a9a120bc11d0b2137c9fffee6b4bbbfda0871ef14b6bc2234c0bb0b9cbadb7e2e35e3159dd394f2736e4631a317f07207f602f84b2d50f0576b2fbe2104f3dd2a0004fdde3160d9781d5991d941b22d38ffd89272276c2de1380cd08f322d0d14948a90e39b435232cbdda9e015b4d5c0863216b2ce4063e16b2ff4327bceb01c56c6147b63cabde1acf60c2b591ba0f149f8fc87916c06b6ab329c4dab8d2f968704151ab317aa27a24ed6a8dc0cef3f4a6c52de64510868a66b94630381b52e3c0fc371c0d4ed0a3a50fde4407ed9d2a1fb0fa94f14a21421486b0d81f24f4d61dc0df9ff24635b77dd90843c06efe20949780ce8af9d9409264ab9e2ad564e3f2ce4783d9f468072206cd1d1c988aa1e5b3cb212ccb5757e64f9a912b038d1e68e7fa529f0b03703916dd2fa302fb9bf60197b8f3eda3d4a091202c31a3b26064691a939806e4994d6653a01b318612c622d7a774e71300b4b9f17294c830985c792a8e2cf0b2b9819dc711b780d4e91c69ffa4d12b2285039752bf0161666c5e12fa1f080e25df43c60ce1934c7815ea0f740b2fbfe8ac29934b42c31fee3bd259ddc8819f14ea99407bcd08bea55ba7350dea9948804b0130475fff9d0e6015abc07095d4e4a0a20f68ba4c920a5fb22983a6ebdf7a18ac9e3106db503c0207f72d3fc8324ea783a6a45e3738502fc8940ca83aa4e414f63957fdff3700ee7d50e01431f1b3ec5f4fbed9f4bf851d73bd3aa241ada0cd29a2a3e6ba6f49b305fffb532c4bfbddbf9efd42ce005ebbd258ce1f706a691c15ba2b202703b521815694c1031974f9ddf7ba0a559b84b4a40105af4988c3d8c429d3d693af3fdf45a74173b07723c4da78f5e265f0d39720fe3883c4c3db99febedd41aff6bce3cfed13caaf803980bbc700d2c4914c75d88208fe5f612ec571edfcefe5a691e46a18fba904adee6921a6cd450ad2a1792053c140ef0032bbf69fa993ef72e07e511c58755b0060120aaaece9a5844f321a9b496519de19d1852aefb032381a9897dfabc6a064afeba1a768679e36353be66a79a43998593cb95bd148e8eef613528f9e2ab77831c32d10ded2b8b6e4312e15dfc7215d1063aa3acaa0bd7ac60964937cbc4f83358c614a02af128fcb2bab69b4fcdca540ad54a421f69290b94289b8d9bb94129535775e2cc88525d1db4ddfde0c963baafa6ea15c5066826e2dfbb992ec8518f893cfaf880631aa8a67cbd5abecf5caeb28db6c32a0330f49c2011f1d8da2c50ba62f8838d0c9745b4daf0cf5f4faf5a151ddd4d0d07cedff0d3beea7c11ef9fefa7bc0a64a49c55dccd5ab82b0b232e536061468cd3a9d7b572399a5a4782fab0e167eba86cf056a552fa4883694f5960de9e1ff7678740b53f4905400ce6b544b75152ab20543dc5dd1c83579cfd943938ad6a37db0999bcd727da6b83eb7b4adc59cd6588b3c59613113a002b4e485356df6a411f639ecba36d3006b00a5c8506d7cd857020c584165facbc47c535399473c7e175ab0e796c78205e5650b02457761adf112870f651f8193951d3ab6ae6eb56b1c99b2fbbe4bc7f38e69adcbe5f605be27440e75e9482c6511eaea35d1a2b5b4f1fb8cdaaebc00418fa581cb4b5e4b2ac0c509d42aa9ba211abe3c9ae939336c921128072748c210b31712d74f481999efd70e325f1b3c1a7dc4545e9baa3484a995d4bc22cd7da7650656cea060b1985e74d32a530ab16d33d453f927aa34f9c2634262d4c741727b2eacd6a3897da3d2316e92507d0069c93be763b523652bb3e8da6749b02f2a68e5c00316230556278104afd64bdc9cf5708ac84e45d94f64f7686da2a6e68f2aff84f7f2f1090df8580dadab681c94a6ee456d418aaeea929f834a9567f1ac649e814e26d0554013518524160cba63fa11e998d30a8cede5ec7b3b16a4a498ee86b81b4380e205a7a173444f6dc230d4370814098fa422c4857ce506a7481afa038736841c095cc94f300c5419315330af6449154f3c4994ac04cecdac53a6dffd31beb13af35b81542a238d8b93c0d5745fdb28fb6e4d82aa9548d2319194fbd37b006aa1bdbd8fcd78edb06493bf36904172149a0112dab7ec815e356b2a0d8e5022e03825f8291704ff63eb74d1e0f18d315e2b4329bd15fdc5b65941750bc6162de1054a609cb0cb13025abe620b823c564de840cb3cf3064f017692a93d0e6937778b9b237927430625fb40a427ab9ad7cf7b60e8ded13e8cb34e1bf4b860a224b991af0c96f126d10f41e62065d6e8aaca3cbebc2e9396f10b5a60b4b26741f4ebefef8eb0cea99b7cd8c18abf578d50d4e9331c245f3617efa0a02540269bc81270137a90663e6993a97cbdeba39bfadd65d2306e5bf63ba293e0d0afed6a41e2e52761a00f83379a69a058e7108c81ba4fd39ac4321561df4da92cbee026d05762f5bce24e3c4527d23931fd4e987e137047098aeeb82413e01317fb04dc4e344d131fdb13146d2276a131269cce44629068b7154f5389c026cb745bd0380177279adec4639918f713457722b199583713476702b14fb4cb13a73731314d949b89d09ed8584d9cbb09d099e81824eeb662689aa8d88e044836bbf310f2f8fb1c73db248e1040845bb1d3b83fe88f41c98bcb21fb4ef542d3a958a74b9c2f499c8224f6fc576d6e7149e491ada983bf3f24f30b865dee50ff15531776e0a939947a7d821de30426be4680721278faf8f033d780624167cf014ad02f05fb24bdd92c704308a17d835b5fa91a226b22ba99f0cd3e01a8ab90253b817fd18bf9872f1b397e61975672410e91310de05f49329a2968e93e06aa9de83b78ec265c2aae5dbc6319a3b0abe191c424b83aff43c1eb5379d27fc39e5a23dbbe6ab5daa46efb810adeae2d2a34adc0cb6dced4c5f582242c4b787c2b763a9092a1d86749d63196e3e7da309072a53e3a6e02a4d13511ac1a73ef6af557b7c5ca87d0adf4c8bcdd621b930795f124ce134170ac0b070912ad424edd67ea5aec5cd3b1ac0a4e42388583e5b7ce6d0bf41a0a23170e3622352b0c6ebbd04f0aee0bd5b8626cdbec2492b89b94ec6fd35ef9f617ed0527415527691450830f4cdc0e0aac4b75460f8aa905ac340834baf2dd01405d5d1f2f30e1e17f3a03f0dfe503e55009307e4f3082daa928b1dc14229d10da6d85deed190c0503a3544c861ff5bb7fd247ce9608e505b97509597bc6b5ef49dcf92adb1916dab2816a6fc475eea402e6f2f804d5ed5760070bf6886689fd838f468db62d5425970f1b0814e6fd64e329c31e022c98cf915a14a108fd36876eeff6ec17cc8e9296bc210ef312588746086f46696111d2734a08e84c56b84804082d6437275eb28d3df07b45cf196e2246fc09b3e55711bfa11e2677d689cbf3410cd810974ac18a0cd84bf02583080d9f0092d8666b162ff057a231f1f99c8edb449964c24e00e8df1999022a0050f42c9ce2a2fa843eed6d67e6563ee63c6ad433651845921ec6aa9f3c5bc2bb571eb6ed9554a232c8fff0357c5ae840dc0edb8e015509213f08d0e23c3232a5ff1caef191eed8fef74016a1111c910c48ce5467eb0bca22e9706507488668cf7501154963987b3da1c6843fdcbcaf37f28a26ac1c4430c12f2abc2aec74f2e6471822023e3cfc680029d04e0f0cb0396705e1c62b21b3e71ddf495892710b8bc44d3645fa5901fa7f4292a6afd05ea11bf2253736b7d57c7c20e68457a07bdc9f2c31aab7e7fa1a45700013b3f364633ab523a0c43cd0852722c7b28ea6d99238e75b469c0bec42c58b7181e812b0e1cd0a9a59e7e29206e65232a7abc396171f23c61a470fb7b94d2dc6ba45628259bf534fbe05d2e6a21e3d5e3fe23082029139915094020277b158e198df99493b04f10d47b525990c0298837bf73c79e43f96e32c51cd9398cae5b6997a667951df360610e85cf34c5d525d0b0d6ee49f204c7c6487a499c20db31592a7dc5deb4901388db473995f5e795102826303b6a259f708f02f6400ee5c1098d5e312d9e637bd7e7d59fc5347b5052157c21e507d7f74ddd5cc3848c912ab0c435ff9a3a5e2425e3f30756d1c31b63212e246d778043f58a3d1cf9e5362740f6f99f8913daecf31f4ab6d8f95c2db5acf6bffe1af4bd32d31bd1450a2e199d6172ec1732909433283e0dfa1cb53ff925a110e4576dfba1d19499630d14e6215d5ab966dbe60d4645c0e24582cef8189c6c64699a9c3e1f9e008c978f2a62a639d280a7c3246e5acaf8088fc03f33af9e6f130352df6eee0cf9241941b6982841cfbc0cab751b8261158f5eb1dbfae2129eaa4451393aeb4a0c0db00af0f05367e1f5286079bb4f727078f545a580c69adcf2238f4833d17b51348a0fe6a624284d7b72d04c6189d64cc48b206cfc2e72b223c2e89948c87bc93766bfb1a0b0ec857c342b148ab67f3f8c17d9553bb3cddd31832bc780090ccc6d7aeeebf7450da0351782e8dc9ab2015951ad97429f6043a92cb721b18394aa088a8868ace569a4df5856d400694f0ffcbb2bc0f095e097015d5fcad111d39b0763d28f3da0069019fb85726b4f3f8c7c0c21ad7e7e643ee44e91945781b627c3ff75590447a9097c693ca5fa41cc99b7c29b5ef71a699f2e512871ad5bc1953c01933aa1d479b0f7360f3d57bb1c5c1314c8beabb924bf9b9651f819c1563ac542b1cb5a5efa11583fa1ced8021ebca88f23e6afba004c656747c168f4a7ab0457119332ab9916d443fae9aff03004227c7a4666d4a5b68ee7fa6986a0983cadef24f30f057274af4defaaac08c6dd353c3c7f4307451f1d9b03b234006abf03204e6243e09b5c57fa150934505dd42f85b9665cb32599c72b5d1fe8411580691bc9f447f1eb63503fbeb4970150ed6c4f2e7e71540255826f4841b0812a54238e720831dec20d208acb5e0ede1683ff46483209e26c966cc831907eae0d140323bec59e69a9f075c5c83de7d2096f030c0ac8b164cb1299b28c41ff293de6deb152d25f60e9429c44312e675ad7c9e224f3940228e3b7ad176c23f751c511960a6c974f78e44c8c6558508dacf4912e4c1a7516dbc0a0065565fc8d3767fbf17a3f8d8f2312397ea89c29d2da54ec80d7903cab31f83cc87c205cad849e894b398125bd08a7de7275534342dc99065ecaa97296da41562e3897ff4863c316bcc01d3d993d647e824b396906aa8bfa1cd527bbe22dffe1e86bb66e8199ea72ae953d9c56a9a246e11eb00274767ebac7a699b856def1828e1b1a2a43a60f27fdab85aa86a43d2b646670146df6750271227d0799324802d8c5e64f6e81573835109e69bd80aa039e1385f783d6f1c55551884a76fec1ebf24819aeff57fe49fbb77589fd8bb541eb17514a01c39149610b12a501b3402952cbab9c880ab38d86f74fafbad067acf497459cf7fe0e5a78671c2025b9779b69cf24beee816c548fce2a2d1cf478e5e98e3893b58734d5967f855260e8a75954a0674e6571f842b1c684839b6692486211c9f7860e9dae0e1ee5e3c024fe931476af4f7054e40c134fee0c54e862f77f046f32a17c8b29886471b6d5b9c4d5e1c528f3c8db4d68f480ad5636c9172ae69b7df0f4f4f02621f6a4690df330b58b8e4389cdc2255d6c231b4d2e14e9444610d70f630de28cfc8d388eaa5c5701518298033d37a0f4288e90d007c0fb3f38468eed40312dd88b723b7183100974c4960635b1840acffaebe5343e7cd1aa12cc8110558e66d4a3262f802f7de7596c39af5b1c3eaf8376c9fc1c7906f3c70fe7cf0e3f6573739b2f14318f4fc342381137a18d9e1c887046086864c59a3ef3634cb63d527bffc5f1176b99dc59f0efcd405c4e23b81e742cc5137e16d8d8f97956103165b7409820d7a756b231169cfebdde334880ef156c729ffac6b544808d00c0147a89a28fab023b78c8072015683052c2432f4d17514767ba02c208f04c1bcc001c76a40b755ab64b87845253bc90099019486eef1aa041d1bc5c3a5bda391d0468529353d2642a94f0b14af3bff03a90217a94b4b2d8b5c948447d28554d555542ca0e9dfc2f5ab82c80d29b1b48ba83ed59c6c19f412947556bbb23c749bf13923348e4dbbe9822e2dea5290ce7385aad0f2f6058d01168641803b0318770158d325350609a86860dba33d9cb2643a976d38b7505db8d2545f3eae5c9665bfc288ac86df4031ff041b215e3ec810407486c178174556d0ccaf199e32903cee43c380f294c4ce9c0a40905c0cd85a08e8669f382063bbf56863f530e4b5ae086c455b8fb0467aadbed5e16c8e32168767ba969c8b9be0ccd002b386ebee80643644df787603f89d93927b97aa3440740e32251565b81152de07b8db7075ef295171ba3c8d64e0cfe9b6453cfafdcf50892a4dbd93391a6fb3bd4cca48834a8ab2b15452e294c157270e55d37c40f1002e82e08b6d295dd88f4a1f572b044eac94f26c54e2b1fb28cbdbde34d8e9532aabafb49c3951a958276738f7b72b04f68d4c0668a3fbe6dba450696ef9f38381f3fc26608a322e0ef017b13f6fbbdaabc81e07d0e1611f7abb610d9ca62ccb80af66206428781bd4cf6c95824fa5cca34e317291f9e4a327cebce05441179c88563d4d15ce60ab27a3f642b0dc9c4048df153c1f468c84dc5c20cf84ef31d428b8726b63633978b52980e4b93b9d4494d568d57f9629edba2cde58ee36da83a1fbff311ad9822aabbfb660e7f0dd82bcf380e5d52e14585f03430446089df0da9274bb5cee0171b5617e2677646eebd579924804eb3f4ba0ce4a8229dc041a8be037471263c27a3d65fa2a56ed1900737626f4a50c3a416f0a552d45a97ae5aa40010532de1b8e3c1db71800ee22394e6cf7af3bb693ac3654994eb60e4bb1a2797f1fe9b6fc731314d6208ec51c0bd23fa67f8fc7c78585954afa1b655acdc2d3c7a187d069cf6db68a36f0522f32fef0c7c8e5805b32f464fe9273997371f677c4607f5e0b229de91cf53557026597e2daf47ad9fc2bb1a8901a1aa058a0e009f88e3b688150bfeed3ad6039505bcf4388b5496c65e33eb0bc783994e5f74ca6e30feac1a8c607ab436ac6b9e898b121f616c7595b62d02ec0b9e6029a632a6f3f4e9f9d52f6863d8df7e1ade150dd9abe00cb54503875b332a72f3880ac151476d91308adb342da58a41856c473b9628e409883297d11b9c275f5b74a627c5fcc2392a4e00ba0e9a5de0dcbbcda65f1677283bd2a13240556084f84dfb038369b9526e4ee16024859908d1a592da6864c32ec4249b5814912c67cc3e3b55f299bdd1a3045f11bbc7d49c52467f6c36c3e669b8e54e2ed0ed9bcd8facabd7fcd114b3f99f1bb963f1e21a33217c7119b1974896a80379b5d5460fcfde28c1475d17a76ff827cef2096f2189ea6f3afd6ea032db03cae96b27e9fa1e7bd3910a42bccb9296bbf2d64e7c85be4197bd2d8e1da692499d43ae7ba871249cfe60180dee298472340584d4386fbc454b8d43bfc504e69f9609a671036020e1964a7a375469cd4328951a27f7d3f3b02b8a79d752c1ccc1bd405b4dc8fe6d70a192723cb057dc8704fe1f166d77a7ab2d79b42e63a49ffe6f3da35f9fd32bc904d1b724f7ea99740da7e735efb08043f86fd11fbbdcf7e2762ab6cd466d095948b69e34acf9ef6ddd1e0a281e1058d07c5b19eaa553469883805afc7f374cd98a00affdf542de913212ffeb11795994e476ef2a95e327d4ec54562bc3109fe483ffa7edfd7560c182445e47491c7bb0a83379df600bab2d5463b50b026c301f3ffffffffffffffff63c711bc99b537335435f2654a3245b9832accd41affeb2d654a49a694f4716a7ca787510000000040f632230f62044004430405f5d100a5b9f2b6a3725dbf9119945312a5c792894dab874c2635f879ec98b1821a3d7a32d9e20b191900e3068d771c37223240759e09b1956cc1472c76d18c9a5d9d9019393e60c1c771f79c9277bccb87f1f18aef3f43c5e8a9fec73383041faec0ab6c055a9ae39ff8578b3373f1c18a935c4db5a43c936a43d08df3b10a3b98e68b9762ba985585a5ae37db612a4eb73b96f3c457e71b1ff84005a7394a673fe6998febe1e314faeffb6d7b6d269963810f53bcde1bf5d42a05f252147927455d8b10170b98c002b4f82045fe2533a7ecc728bcf439fb37c4067f4f261ff810c5e5bdc1adf46328e5864c263a5e0c2eb4d0f15e20e1231477490ba1ae2af4e5b6d062c7ef601a35b8384433eaf0010aeb43ce9be9bafb4e27132e3e3eb1aabe7e48338fb57cc8642283870e195ae4e1c313a885572c93367652133299ecd801818f4e1c5d4487ed901a54cc061f9ce8b484798e2364e71cdbc4f571b23c5547135658e7789babca1de38f4c9474d60a1b9365e870f9c04467a662f20b2ae5fcd3c725b61cdc2c5b5e7c58c2b03995e4e9121be40fd922870d0c7c54e2ae328b0f4aec514cbfe8bea449d6101a5e7c4ca2eb3453327f0cab1c53810f49d4b9f7a23de5062f33128fe7b8334a9ea6300d2470ed51f649542e5bef11fc9cb814a5843619f290c9248c9f4cb608a3021e984c72d8405f7c3882d141f5d99bb01e191b61ae53a14a5376cc0f3f18d15f30b973c2e06311678e3532a74aae9e234594b4e61269a54a04d2cd3205112ac6841c110525975214d92a99930e91984c264388ace64e19a29891ef1e3fffa25b0a71851c0f7ad6b2091d2344a952a8bd76c56852c7fbc72012428b2555cdec8ca520da5c4a7512f5bafb74200c3297e55c6b5a612d209a9311afa9c5cc4cfb87c4f9d85858d40fc79c153c59796cbc8c858f3e2cbf217488e8f980b0ffef921b3c9607ed01eb8d97b346eccfd37a5864b2ce7879d95da63c30526468e9a4767ef378f873a4eeee7aa965d3c71d501ff223dc538c51b5c3a63168ed0a0b3a89a70efadf2515c3c52d15111df0ccf4e1594e7ed6ce1c92ab172b9a3457e82439587e231f546cdccf751c8c29ade7d2ef51eb3270f08245fd5c2dda496bdec0e66c1b297ae4a49d6e48e7532a638ab11c94df0637a891d167ea4f5cd8c0bdd9ff758c2aa1d51a7411164f53473d588a1ab24da754a5af5518611aac3b0b16d52fa8fe6ed00899f12ea0b1c3c6071a0acb8a6d5d7bc162211f67e8727814d57ef942da66f0f225fd31a9d4a28417c285160dd02c78320210868f32649982ee114bc1e5e5ff2083633b9b7f37848fce8ec14bbe31c99361b92486b4e267c4b8c9a5b00943953da9f84c4bdb2a7d80214f27635edbcaf9aa4326931938fce30b263d17ff963dab7ce3c30bc720af73679aad5dae0bd65a6f569f850b88454b597a844eab978f2d5caafc6d7f53ebf2aa852e7a58129652f292a68f2cd8b5265653ace3f6393eb0600a8b5d610bcb8715cc98feb26375baafb60a689ccc59b2262ce81115eeb5ca21b38ef6f49a291cdef24f34cf49580e0d9ea5b56302eb4ea1b183925175bfc439abefb7cfedfd3f4b94c4776cfcfc58ff1f3299a4d73183870c2ec28854a2ce9923afd976bb6c8e50c28aa7a133e8adca6512d7081f33bd2653cc2749b82b622b3d6fce2ca64870c142799b2eddb039134420c17a864ab153e611a9b1d0bd95b995921806114798aaf6a6f733e5d1da8c4823becb0a7e7e524da69611489755cfe9f736cc5cc4155f3f87c6fba4fe53847669234fe5de0c4a8b2442d9ca529977e3e72d7921238208774fbeb8c854c1e45291439c35275ec7d46e38051143f029984c8d7f16e2d91d5d27de64f4424218f4e4f582c7aaab6510899239c9dbd805b1595df88bf00422d78a1be764e5f07f7f04108cab5bcc23cf45e42b83c81fb02c9a32d799eeff5009227e7835cea818d36792ab46fac0a66f775f3e53d263227ce0fa6cd4ec6d2ab2073fb6e26288b6efa0ced08123dda011d1033264fdaec946868daf51012d4610c943a1520a1bdb2d99328ae06113dd17e6b52154dcc81ddabb11d9992b4bc7b88b881d56d9d1dab7ef2c538ad4610d2da5de924a5177072142872a66e557b1e41cd6b89b7a543a15d3c22f64b8175a8c11910332e7fba443ef71783e89d19429b33a5f040ef955367d9753d47f1a79c3d57632eda5fe687b45dca065d9d0967dcb74e13674425538ef9c299c8c61c35f420715f4e77042ac6b3077e518a273ec6cbca8614b17a36ecca5ec6f4fc3d5395b8aa9793bbc194143d9be3e2ce9f3acef2267583e85271d9ab744ce30226660d4be5d4a9b7fb69e32986663f25c99ef8890c10aaa9dffd9a36352631019036e59163cea262206342fc54bd4284bba0fc37e41cc9578336da282c12f7de92dcd27b15b46bee0c9341e9bcd3758f65e483d064b6de68d4817eaa46249753439225ce064fb66d9be5b940b225b388a922fafe9792b83225a286afa50fec1f4aa3d59502da6d3a965feb52f16fa53e7ed2ea3d3fed981c815cc9dda466707f5d182112b2c261a83e6faee2721b32a9c2fda7e5b88071d836654b8633ab1c9934e69b43c8536a918f3e651bfcf272970c94eb763cc1c19fd285c2a6bec9ebb2cdd27144c0fe6732aa3872cd313ce63df4194fe4dd284c68838a1cdd0b6a7a26cf498479a80c7e7512aff52e674b120c2842ec77468ad48cb1cbc41640927cd59f3a624bc4fe52801a9f12fa8fa6c56e52249388385c5142c8a708bc220820434799645d272dcb03176fa1a59e4086f36cfb25ec1abf205821c3dfcbbd841c408777ea83c6271a408e8d0b76b51f244473f428492ccdb980cbf1a371719c2154c344b2f9c9e7e224230f4a64eab37aff6728c9eb1c5094250824810cc554680b05719f9815ea5457cb08d90b5fdb7584988233d6043f65bd63d5f35bd04223c30b7c3fae73d99f5ef1a911ddc9f39dbdcd38390554407495f8fa67e71f5d42507aae7cc326776488f1d336e4470b0a8790ed6496fda140de9227203a3ba9645082236b8535d52d1e99f711a2d446a50f22484fb77ec02f697bc65ca46b91c95fce1f0112ac5bda8a0da1c3bb4e042e20746ec5cdfdda7c6a4ec4351f4f77697dade8f0f7726a51f937e923d94e5b4f74675f852b1440f6e7ba9f1cb380f9191e4c1d9f08c0d65aa40828774b6bc7faade597b13437207362b9a7d2cd3396729b1c3b33e567372d7c159b78e65e367591d3adceba7d62f862390ccc12e197ac4c77800722091831e2b648ba7febe9d5fc70c491c3af35e91f9382d32b6430287375f9d4cb10fa6b22279037bd2b259584fa9aa1bb4a43193a6f8aa974bc864e2ce6d40943c212a796c52a2d285840de64e2b329b9a91bf460f1b220083c604269395ac610d1a4ae7d6832933757c08d2c10f8231780438581082c9e401123538b2f2ed68f617b58e240de68ae7c713fdf16e4643372add58d21f34b57a86327c338eff0975bd49ccc0a71a9d2ef48b78d8372029c3b1c12f34c89307b4e041a3460e10e8e081020919eadcf66fdf41c9df7c0ccd7b69321544625893ccf9fd663cdf52613834340918f47cbdd0e673755bf94215c4e9784258d2f7d10bcf688d49ffa90b68d15be7ae7a61bee2c2e6a24c0861f9b9440705922d14f734a3aa5feb98122da043768f8b106dfa3259a83b54b88b8fd6a72d30d804122c74a92ba69e0f428d90864c262cf81b1c905c81eb8cc973de0ed199ad8056853ba7ac245448ef091954535432853e6fb3ee575e0abae8da59ea1433eb1e854c9e5c11efa2622385c2ad3632a8ca4553ae3ee1349999c23e9ad89f244ed0bc2a9d7e97ad98a909b7e9d99425db3fc8cc8433de4468d937b53897d0f657163d5b134a5c12259c74664fd93194044bfcefc6f45176794742bae374f6752b68cb2447e0f2c8becff92aa9e718e1cea6cdf306ed752a2b42bd15b7dba2498880e6964f1fc784520b920ca1942b8ceeccfe5fba2304a46fa65231ad92205c6245b4b4893c55490910bebcd26aed9c67fe1fe8613e9b1ce11a437c3eb8848c2bcf94dc3dc87a70472b2f311645064dbf40c2033b7fb85d132f5d4186816407e9a01dbf261652fba3036c4ec6c6cc550e36999b37ee6e680b1e090ecce95e4674643dbd758392eae0b1465c890dce31e6bf94115f88a406bc968d585ea60ebe9640428363dc93fc1cf1b575496680e6517bd3294d546c2690c8e08f31fd547bda541b8dc59e2b2d9c9e9295db4760815d926a27efbb356321afa3c78e1b15984c3a1079c5a2ae92d08da25aeea481882bbe4ab92be3272d4274ad502e5d1ad9282b3025369798b8b6b4ce2af0f4b84f176b257f2d22aab0d2690c427f304fe68c15f0ebe8124985f149291ba15472f0874450c157980ffe494b6af814954ca2f516564f8a6c8ab5de4bf5072d32eba514089bef7b4bbe0e22a47043c5f4bdf788a7bc476414a867fb20a47905cbed0511516c99b55068992d5094329b457d2295675736724b458d239ee8eb3cbfebe4da732cd2895c4cdc3a25939d326d428413c8a42986e5ca25a6f14d74e1bcb2f2a279e536a28933aaabb7e8f49ae417c9c461710d28e680530eb0ab4b00031230460d1e2160d0b8e180ca62330b5300010230463b2002001e3b7a7c6000017830b8071837b8c60104b043c7a31e8e43470e0488000038e3002062401a3c7484eca83163060240c290c30602038fdff1851703870d1b6fc300205e182307b2f1360a00d205a4c1a346c80ee602d2e021060ddf02d2e0e1386cf498310301205a50a3063f751ed6cdd51073d66332b1f13a668841c367f8bb80460da6c183870e0d806401b11dcb332b650a69c1025a64ad9bd059c8af80433099ecd000c8154cd9b52c3a00628553cf44c5fc9a31a83c04a40a7e4c29a6a197dff7a2c239ec57a650865d5131af94b54529386a3525f53e470151337a538eecb44a43814b1e948efdb9ed43e875708e14803cc1f8509ab473b8d0310f994c1cc409c6768f95d2db90c9a404204d489c99380f63d722315630638b2dbec8c01732322083478f0da4ffc03b0e0e4c26ef386e08800b204cd025346a41a46aba9550e7caf63b4f52fcb424b0f1478ef5b89a9b2c44c6610f06c86800031680409090c8502664b0ee17d1500072046f34b6ee74108811cc9f969793bc93a51990229474ce9b41554e336f01214262bc476d84167549053284c3664cf9a9e1fa520844088ea5c76c2aeb86ce2d4810524b2e5b715996e2a80304087b58f99dcf740b407ec0ee5f984fff5a6ae117203ec8e594e7ac1473b5e802203dd86c574ca60f32a7f33200c2036d64fcd8a33aaa560a6407798b5269d374eb4851078f1ca147fbf71cb8af2d2fa79acc4e0807be99bcb8289a7232e606c54c0f8fde49ed5db6815b3b6b31f4840c425e83828ff20aa66fa4858d06c9b496494e33aea70b32039456caa372264da7462032288cd6923d7ab2d9c3b1c0465a105aabea54b6b02847598f8eb6f1ae62ba90bce2cad8b832a22e3c6657a4c2452ffd315b5aa6ada872654c7a129f9594ac30ad58470b21a33b79ab6077bc4d54b83379abe23c9b649221e2c36a8e2415a6e8fc5e41f7a840b7f78cf24ad36af914e5ea95941153b2262331852376cf7cbcd347cd7a21294527478a522763a47083e7e9866a478192dbcefb59734e951445d66ed24ec3ee4fc642818e46cbda9aa9e4e3a0f8dd4bc526bf259f30f33f2e79a86829ff9ec8346e989d585a27994eb0eb223f05b1f76c6f152734191795992526f36543b289826a6a7c5e0cb339570e89260ae671633f08591b4d99489ff5ce76dd09a53d98f0def4aaf69297f052c6d4222a6394aa382496584d85ccc83ca9716208482ad16b06334b4d9a2a6d169050a2eb60c96c473bbefe2193c91618904ca21c3fb95816b5ba0d874c263b222091c426f29bb694dcf7ca47a24a774a49cbf6ce1766010e0ae84812487c6ee2540a619a4e263d22913d79b2a1491ca186f14f9a94f01b1536624d31f7bcd69b3d6b8cd0bec34eb7da2799fe10c922ced9df33e78fa9744e421245207ca35f5edc2402cbaa3169954bf88911715c129bd962befe880fc1c994d3a47b8712313b2031c4699f4a64eb66e691e97830c0c051030492423432681cab507ba1cf1009214e527b430795b2622c07911eab0cd273aea0fd9608029fb37072dbcd65e43878dcf0421208f374fa3d91f76f694b00118477a823f8308ca2300a82188641108431df1cb31148305044188d464332a18cb2ab0f138080470351912c0e8e844181300863208641200482108441209c6288528629e9b5030deee9471eca9a3da736fd5fef3fa01b998e526de4a86340d63bb23b48387ea6ddc2a0a68ad48d552f6f4b27ad08fa6b0fa9b5a59f77cd03640d5f9a94dfc96d3a412ab4bc6e0a5781f73c4dc63d8f69fa0ef631715a67e7e22aa7c459f10f18274bbb20c8c7f1eb55ac46166d9451c8eb402ab5c5d839ede9ebbcaed358fb9b4137340ba28676921a62fdec0b0f445eba0354ff10f99071f12b736b3086505beaceb3c92ecee901e7cb2eb372931a753350d749e883e2c7f356141269ec08fba0a35bcc814f0690cd018f719a3a6a06dabc688d69a69db4f654dbbf988a305cba3710a176ec83810e7832fd1b02d7e09286bf10c6377e3712ce2c904c158bfedffa5fa3e7b145e79343182a65ad72ca0c69d131257534506e8663fc82f315de518e02aec8ba90338a199b09e551ade4f14802f4fe45393f91b240510e3244f4fcb04fa6b9f46e9160127bbb784f183669b0cde2588f406ca4de29eb0cb1347af2a6ad51cc862d8271714fdf725a2dda0048e99deab13028486b48a0c75f99b65fb6c9c67b5b6f4162a0af99ef002b64610eb6203885dae21b7a1c26631efa8d449b3d00f93fbab16c2bf2ebf225b3b2a02fcfe33b6bfbc06764c9da6c891865d372fea623c63a2fa46effd63a7e6939f492c6e18437834059607ca63d76ca8db1d757abf69c5438600326eae327f3cf52683274d9ff79305a10766cb9b503fd3b212332a7e59c7ae2b8f77ddd764b4992c71059cfd1b732191126723b5d33204174d45a2dde115880d0728091624ac18ef6fad56b7ab9bd664738be9fe7e45e5eed5a1b927926fd51d731d9126b3d07a252c8fac148437c6ccc9bd104aedc75284153e303bb13b66961d1d4f9a7b9a6133c039aecb90a91d0073be04232b9f95051d376cce5122b8f48dc9dd54a729d65487b29be46d40dec4938fcfa4b804e58b0f16320994931f7414753f28cae4d5137e4467d00f19c6a3a1276242e390b3bb0f928d3f1a18e8c086e558dce10d3105c3c6d418cf2c427f62354eadafb9c4692e9438b0c405fb3fa12338fbec645aee3c34ff98ac1bb815de6f3c7bae8d2516b1dcfcafe5949ad98034855a279652f78d8a56dca5ae7815623a864e60e759d2b121cff063a84a02bf419435775d043b1ccae7f869f70e84287e7e792cc70ef204c0dcbc142a479be4afd91bdd026d417abd5d1c0b49b61b62ff6a29a015e4a9b35e4d7e9ca0b8f506c940972de511d2a2e052df225bfd34c1ed26f5549a63a65d5be012105c555b40ae74398218700cbac039da4ace7312f25e56b344a470a1396420bfbe6164456712817b7246e4e3a82b14935f5a81489bf37fadac0db335c2bd8f870c6ac85c80874c99235482d0ba1b1478e60c0b373b672fad7d7c84e2f70140bf85f8b72636fd68f2b38aba3611daea372c36a5217baed64306700d953568ca6567a36b5e94510300ec194e7c7a66871c80e9ccf7804e6c49d6b78219001aad84c3eeb90e6fc0982424b26558f16858181ff4b36dfbdbb94bfbf8dc04505218976b96e51a2d1d1f2d2b0c3c5bcaacab9c5bad9fdd4daaf57ceb3f790ec80e685d11ef493a01a59be7b09e6c9d93ec3827d04db2d5a30ec54f706263b0802310876e22fa484d1a85db582ab3a6c01f88389afa8eb43e1b6222d38e938a7dd8d4a10ab1382fa09b0fe49a0cefa428062e865881d1444688d408568122fb3111a89b2071a93ed51f4f6f92c6e85af0707e3c0f8bd2b5965f29ac87549692c4285b71d55ce7125a0ce651d7506117f3fe13f3c260dfefb7167cd33d5c6ed0b1e38138fc5c9778d49298f53efd826339d26a364ffd41dbe700a7b50aa941a6fb2beb8ea7734934921c1b30e0bfd11dd0f5729918fedf5ed192abe8684e7dbd5a3972657043a4cdc679be381e9991c1e1105e145b663fd808d48dd2804dfb511d792b43537c9d6eadd3e789d29f041bdeaa7681802e7b45f37bd68679827506a65b12a4fe45be0c8ff8210955239e4b93985f0711b9eae64586eded38c9a7e6177c90f9004e8d9f918e02eef1223a614792eb5ff53798b7b629f2e74400393de7220d1ad38ed66b9c3083c1e2c6ba793b826b0ce4f00140b5d761b1fe722e3f92fe48f35f748645cceb60a19a547c6bd7db0fa2ef3aad4e30c4b4fc12be6d5ba894624816881fcb65152b692c47c89d5e6b478c35edce81631b00f1313fbc144d65c06941e004c03593a02de302f18d8b776f794afca3d7588a4f5841321e09f8a10eace27146bca0451c07477167be76409112d2260f291dbff8ce49b738221629b2fc700552e1872b7672f375420bd86e49095cb98dab303c09e168a7e8ddac4c11a5d38fc98a4a475738c933bc8655bc4e03e0023fcdfb59c689866e8a7b6e42829e111826474401eb4e89ef83e0a3b4de8d58b212dff48604b0d64a4d520bebfec618168de6c351462bdeaf943cee9172174eaaf41f0ccd30bc14f635014c4b8d2f38ff533ee6e911dbe1a2303e9903cf3f103114d6ffcb90985e9b3ac6419a8a5a1db697c38a2f92a3f23fafde513c4eb98fb9ba08b3d5ae0c70e99bbb6c3b3cb6ac82916d22a670cdfa83969a92d06ee5dfcb52d490f988b2e3dc8de703e141f820f64d2bbeded8e2cbe004c6067c41cbf38fe85e7e3719e74c24ee0dba12f602ba23fe96866afff940e426d4a0b7eb05539de16bf4c72f9581c5d596531b15663a4e3b8ff727e221f3ebf3bdf0e874b902b15e183368fb07bfc948a183df58b9a9a5339ab5cdbb97d92accbe7ae0ac10ed2bca05350935bdc379f1033f4ca7a17f6441d5059705be95cb02edd0a2010638a9537354e44ce49cd13ff5ce1e8b877ecfa6aec333369239996670a077c7d54a4a90ef69934c3ee2eca4b2a77ab03b6e86d5fad0dbc1b3e24bf683dd25638a4cd9f8165de58c93607e68d4db30eb5c31ca149690432959999830dc0fcd050d4bf31c94c912257a17152ad635390dee3258178fee8fbbdb335b3d88b4f7f982a82035704ec26db8bfe297ca8d148a8b0f52dcf1a1145b12440c7fe746f48d057e052f9602f58d56ae92b43376b411e0949d29e3894094667c283983628ceb0896209e0207ae4eb322e61875989a85701bb0049b1d0b316a5b3c58e27b8fe8d6c05503daf1e9f438e0f447d85853f4b04da28fcfab438d2f29d2ebab52d312ae467be01de2b10e4ac44be1da11cbce7f02ea6b72add66a693140dfec0b8512288da7d1ec8257d8ae39be6dcd3a3b79754e78de0038ea8467b1048b8fc2d828eec665bad799db4966d7a7436e6705b77493fb2d2db042051e63717fa350bd39a697ea48dc65761be624fc12df8c842984441744cb9be9d1a920cc40ada3bb630f5666a376cf31355f2a5f67d906a928cb8e7804f922cd777de0336db0b0beab249714cc5b7e6023a96facd3169d79ce579c2a9dd8f8c58f97b8d1f05af7714b139f8a4e01d98db44235fa82f59a79a5f9ea425984dad7d21e2f23c77730bf42577121b297c744e1f05403c74f684f64a479c3f1ac80458c2b60822fae4218f12438821d9dc124fd79057511d5943e3b4d29c10602d92a79638fa9c38261ed2f274d067ffe66211b527fb0a67078b79d60901101286a484855beb8c414466c81c62914ce5c766116a60af350f1d3c9ac260dc48bf97d1ac83b2a0aae73f84b6458c6b7840e396d40372388e017a722267ee66b5de17290f14ef4342dfee1afc68e4c96347730d1e6da9f18fcad61e854ce931b423af8773a1af598c8d6b672ddaf1f0ab354e749d7c2ef4a96e318df8bb12467008080204159fac8b3dc0bc019483968bf98da2cb7b554f574ca8fa1126333d4dc3f31d44bb30bc065b80622c76f32420ae8fd92d27220c1af653b550f76e91922febeb791904b3a2707aaa50a45762c14fb737fef838f711864e982d3621904ca778544fa75b6638d98781c02d9c5380945079bf8a8cc3588ef0223943ea68b041e551c92fc4ea76a3072f8922c39e5cbd91c4b39df1d0865aa07b78c28738bdfd45f0720092b59e469c6f1b7ee9bf6b5dc1ead44e81716e6544b4cec181cf65e3f3fa37eec5f6f2731ce375a191528108ed8a71917ffc1745a9305df838d5cc00bbed5417ee04da8a2b92d91f8c8335317a923086442f710d915af10db3cc737523076e3f7fa53e7c7c5b1a9f3398f15c0ab8aafa800fdf9e6c85a3e2821a4dde4af2fdf09dd79c7ade3f7758f5d602942a2cf7a821e831604c139a4814e1409d11ae759cb2000f2cf0e341b30aac15f649ba09d809f3acfd8411888054fb0e34723c6cbd3b4a79b57f106a533dbc06f1546c61292804f78be872e0a5c27bc8cb7f311439af2c6d16bde4ae4409fffe7b853b3f85777eecaa1529c24bca8a5aef037a13f83ab00e6ff4a0fee3b3492fad9eecaec912aca8aff98062606467a99d4c3c02fde55df896a3df1f37bbcaffa482b5115a0bdbeae1f86f01e7144fd04dfbdb177b6c7463b52d03a8e1a02a0595ada0331f88e43cc8d065f88eb53314cea708aafaf8087d905c64420f4d8c5af4c8a1f0f779312491b796fe6d657bff9d60d7aa4d2392fd367cf9f66eb3a7e73d4dd1719c132cf7d31590f87b83e9198d3be40238786078a7f01a09", + "0xb341e3a63e58a188839b242d17f8c9f82586833f834350b4d435d5fd269ecc8b": "0x200500000003000000040000000200000001000000060000000000000007000000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950636f684eb09a15046772616e80d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc33": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19503d7dc9205a149f6a6175646980306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb531": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", + "0x3a6772616e6470615f617574686f726974696573": "0x01200e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfa0100000000000000fcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d0100000000000000e1b68fbd84333e31486c08e6153d9a1415b2e7e71b413702b7d64e9b631184a1010000000000000036be9069cdb4a8a07ecd51f257875150f0a8a1be44a10d9d98dabf10a030aef401000000000000006c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c810100000000000000d9c056c98ca0e6b4eb7f5c58c007c1db7be0fe1f3776108f797dd4990d1ccc3301000000000000004bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf1401000000000000004ee66173993dd0db5d628c4c9cb61a27b76611ad3c3925947f0d0011ee2c5dcc0100000000000000", + "0xf0c365c3cf59d671eb72da0e7a4113c44e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195054435a901133fb946173676e8016c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33": "0x02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16", "0xd5e1a2fa16732ce6906189438c0a82c64e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xc2261276cc9d1f8598ea4b6a74b15c2f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0x1cb6f36e027abb2091cfb5110ab5087faacf00b9b41fda7a9268821c2a2b3e4c": "0x20a076ef1280d768051f21d060623da3ab5b56944d681d303ed2d4bf658c5bed35010000000000000038757d0de00a0c739e7d7984ef4bc01161bd61e198b7c01b618425c16bb5bd5f0100000000000000d2644c1ab2c63a3ad8d40ad70d4b260969e3abfe6d7e6665f50dc9f6365c9d2a0100000000000000764186bc30fd5a02477f19948dc723d6d57ab174debd4f80ed6038ec960bfe2101000000000000007c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd808130100000000000000bab3cccdcc34401e9b3971b96a662686cf755aa869a5c4b762199ce531b12c5b0100000000000000720537e2c1c554654d73b3889c3ef4c3c2f95a65dd3f7c185ebe4afebed783720100000000000000da6b2df18f0f9001a6dcf1d301b92534fe9b1f3ccfa10c49449fee93adaa83490100000000000000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950417ebe2c60c84ed5626565668403a90c2bb6d3b7000020f6152fe2e5002fa970fd1f42aafb6c8edda8dacc2ea77e": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0x26aa394eea5630e07c48ae0c9558cef75684a022a34dd8bfa2baaf44f172b710": "0x01", "0x6ac983d82528bf1595ab26438ae5b2cf4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", - "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195097e3e605d1b3579b6173676e804c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864" + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19501b1525326b5d47776772616e80fcd5f87a6fd5707a25122a01b4dac0a8482259df7d42a9a096606df1320df08d": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0xcec5070d609dd3497f72bde07fc96ba04c014e6bf8b8c2c011e7290b85696bb3df32aff68041374f02a2d8cfcf75dda85fafc04ace3bcb73160034ed1964c43098fb1fe831de1b16": "0x6c878e33b83c20324238d22240f735457b6fba544b383e70bb62a27b57380c817c94715e5dd8ab54221b1b6b2bfa5666f593f28a92a18e28052531de1bd80813d2f9d537ffa59919a4028afdb627c14c14c97a1547e13e8e82203d2049b15b1a6a8570b9c6408e54bacf123cc2bb1b0f087f9c149147d0005badba63a5a4ac0116c69ea8d595e80b6736f44be1eaeeef2ac9c04a803cc4fd944364cb0d617a33306ac5c772fe858942f92b6e28bd82fb7dd8cdd25f9a4626c1b0eee075fcb53102fb0330356e63a35dd930bc74525edf28b3bf5eb44aab9e9e4962c8309aaba6a6", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195075a33a2ed5ac2cdc6265656684034f68c5661a41930c82f26a662276bf89f33467e1c850f2fb8ef687fe43d62276": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950bad35ce880ec90d4696d6f6e80c4a980da30939d5bb9e4a734d12bf81259ae286aa21fa4b65405347fa40eff35": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0xf9922c78cfa3c316d27a3eb48145ab1b4e7b9012096b41c4eb3aaf947f6ea429": "0x0400", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195097e3e605d1b3579b6173676e804c64d3f06d28adeb36a892fdaccecace150bec891f04694448a60b74fa469c22": "0x02ea6bfa8b23b92fe4b5db1063a1f9475e3acd0ab61e6b4f454ed6ba00b5f864", + "0x3a636f6465": "0x52bc537646db8e0528b52ffd00586cf1047e0a469f1357205816a7035dfb30b8d4b93aae112bee7ff8a97a5bb9ffc2c6eea0614136db70c733055160e9c5b710762b51e7a2408af0fff5c1a0d65459613d951624f96e88951df7addc80ffc027ec8b9f96b4bddbdade52ca94a40c2314f212111443fa696a28650e079d7294a1ce8dad9cdef43308792777d62bef1476368f0ba71af9a51839e2e8e8e8483c7d679b4ebff69a82e851b662f4e2a9a7a55d4dded3cc85538cec21cd5ed8ffe3dd89e6f90d9913b584fbee2b018862d0f94703fdaeebfea7bbfe04f093e7e431723f9f087d8e1bc2fd4fd3af06eebbef3a53f87d473d53389d90bbf64ce18c42eeaa670abfefd0f3299c326757a06c394ae71d8468febebb1f0fe0f7f3db01fcfea73bff884c31f2f7ddac7e674c6305f2f71d763685138ddcf54764764192f9c342fd4241b3469279a8259b7ee866efbb5297baf48542435e36bd57f3fcbdefbc3068863ca78ef7a570a4d9fbed3da1a19b4d36d03172e3207a640a836e727fe761d00c994e9dd27be1d8b9f41df5bc707ba7617bef7fba147aff8541f4880044b9f19c3c4ae14873e97ffca7e793c2f9dc38bf6f52d4c560af706e0f697e5122af3920740400e973bd9a2f60f65f7df78c2b1edde3d91f2423fba7ba45459ac79ceccf7910e866ce4863993e2d02256b99fefc95b754fe99be3f8579cb88d328e92daf59943efd2743ddbadfffd314064e5aa6bff2967dea7fc31ae2e02d8b57cea24fdfa81b49162b4b48c1156e30051362dfdc8d050b4ec8ddbfea151d696e3c7be578e4e62caf78d021e88fab4c9f3e85754f3f7d9ac48feee9e935795c65539e58d608c2b8a2b13c715e4d54db79d0cd1f20d86427cf5ed5a761ed95d320402e33d919f23cc48ad18bf7ad5cfcda11afd0d850737fcd8d696ce8b7df6ff110cd34c75f94c89b4ed1cd1e2096336a79623163d6234f2c661821ef788b26d19496edcf917e20db164da2599608cd14464900ee78ebfdebd7eee9aff87be578a4b9d670453f1a1ce7f4ca7efdf716259d65df8e941c3fdbefbae991423aa557b6be875ce8f5ca3ed72bfb5cb64f8d5c99f4b37bb827e1d1ff7e77434af6ca7e490820cda41f2999edcf8f06d28f44b992429a3df4720d3b7361aa5716ec95fd11cc76ce328565fb94ec9efbf6e9946e8124490621daafdde37f711090cb1ed6f4ca7e47bdb7efe1cc39dd9aa2fdf955acea95fd54008e3bd9d26cdf080fdd33b19841cbf687baa7befd1f280c34db9f5c1e77bcccf6a7b7a8384e2cb3d68fd38b6c7f9c64642b8ef38c4c69d45ae9e8ecc2fe58f31cb99ed1cbf367b7fa471e7906c9f3e714327b6af0411abd9a79feaa7bfce7ffe89efaf3b7b09b030067962abcc8a83cb35051469edd9a2549921910c79abcfdecd614c79cbcfdf45609031c48c3082de0a20b2ac4edb9eeb179fb8d8a1279c323939d7c31d72bfa160b00a479668a6b00638a5ecd4cbf766b8af43decb0368b3e0da02acf520a2ddf3cb164a188da1725a2de50489949d14204fb472ebbbffbbbbfbb14a3eceeee39ce840c0ce060e600f6cfb26889dccf79e08f2e0120fdd940e6cfae9b22384b0cc0be7bfabbaabaa73fa77b6aee32083172bfd72d176b1e79e4aec9f3e98e938e3e0dfb917433f777f49dfee8f4fd27fd25fed31d0d3b9739cafd6858f357cb515a4e5d7b34f4fc45b91e2d47f14c5388102573d00c997efffc6ea82499690d20e975cfccfd1df5e614427f1c3b0f7b409afde7cf8f06c75cafa60df328d319ce9c76da4be8669edd33f6cfaf3f63aa02eca73fce9fbd9abdaadf03f6cff79fdf0dfd4b269ebdaad8f14f13353d403745b0fea8caf677ba67e48274cf08aeba67dcc9f6edffe81ecf364b5112d97e4db75af4c9f667f7741e7964fb60f7f4db4f758fbf7dfb5ef7d0b73f732c5e32cb3c7188287d75f367ceb893fdbb19d2dcd16f48ed15c534f4671e873cd7a6df108a6ba83fc399bb6e7e345c3c7ebecff53729aaf60a8f439e4bddd66d24121e495f7ad2e681793ed83ddbfba7ba87f4feddec95f7f4a381e6da2b0f8fde97bc70c833e93bda93ba696ee1cc5d38738914ce5e8daa3c9ff356951767b3e6d4196bf2c4e37dfbfe9dcf39730d479aa3d83c1ac91c1eb279fefc864c2ff7775d7bf3bb7824caf76938c391cbf3fd9b14357b35d63c7fe456f3bbfacd89f27a95d32b7ffadf2bfff90dd9fc8675fc210f79be3f43309cbdeaa7df909bb298eb5583dd3373f6afe1ccdf3df3fd396f5592244952f45f4d214e7fccd9c91387a844ed11ddf4016749a29167492e917de4599252e4ee3473c6cffdf383011c6beeff698e3ec74d6fcd668d60a63f8279e4727fed9ef9fdb37bb69f5fbbe7fe7cae7b669edfdd70e62da4b99b3dc06efe003bf7e83764c341c0fbfd0db93f3f01cc7c9f7e356c7ff1b8fdf65d7f358079fbf9d55ed59fdf10fb37dc7e7efe3fdd75f32b3d178e1ce94be10df74978a4dcff38178e7509e9679edf10d2775c380620dfefe6c7e191cbdcdf709c65bebf85e326001c1a60848727e30ff9feecd5fd1fe7c225417e74749446e67ee62d9cf986a34faedf518f0beb6fe1ccf3bb2148beffd33f4d0a83b6cce191e6289e2f1e7fc8f73bea6de1ccf3bb78c8b3c5b35763cdf47ffaa76b387b45dfc3d9ab3195e9cf9cc64b3e4f1c2212ad533a1970febcdd0c387fde6e760ffd91cbf367f7f4cfef3aa4998634d7eea13fbfa35e8733d7eeb13fbfa3df108b8380f43bead990e6f9d1efda7b01ec9f315501faf7dbf76f88c54140fa9d7b36a4b93ffaf3f3ffe9f90de9ffe99ffee99feea847c3993ba4797e069899fe4fff3411a554896efe00bbd3cc19c1ec3fbb559be53fbf9b3d40fa0d99bd1ab9ec3f3f1a689ebdf2ffe91648337d1afa33cf5ecda7b181cbfd5c6e4c63437ffdfe8a8768a678f66aac79befffc6aa0df78eca7ffd333c7f112304f1ca2a644dd14c17effd93da32afbfbabba67be7f4df7d0f7afdda2a23fd83d334b0ba6c8feb37b661e53d97fe6385ef279e210514a43378180b30c2296517966b9b2459ea86ece6f06e23cb348a941def2cc22a5cc34cf986eee80d376d307386d3779c0694d46d4054aa8954c574c537c47a60c988c301d618a998630156122e223c344e55bc32484893405612afab2f099f19df131c154c5f4c457852f8d2f099f10be303e304c52be2fbe207c40f872f0e9e088912f0b4f8d8f0aef0a9e0f3e237c21f864df135c0cb8920445b781ee8b2e08df952ff6a5e0ab62a3751cf87ed025d189a00b410782ce03251c744e744a74b1ee89d2ecdb814785e785698a57c5b686dbc0b33816af81d3c067e05db80c9c0b3aa357e814f404d404b4034e9af4c064091205d8e0c30c32c46072c2c4c437850f8d8f0a9f1adf133e277c50f89af08df1d128f079f175f161e1d0e88ef061c1a4848903260f9086f0acf886f09a508282d7853703ce0ae7020e0a8e89af468de065e15dd18de1c5c083816786e7824ee6b1c0d3c25381878547a53b2a89c06b4167848f888e76777079d042784c2891a0b3a2aba2a3e28eb1d53a33ba2574657c44f896605a82eb0037851b41274657841214f78bd208ba1494982821b1418154a342d8d228c9e80f6e0f4ab12fcb77832e8c1b0637058e051e19dc0b4830e05a503202270497c56785c3c29404b50237c587024e0a2e0a8e045c105c125c08ee15dc138d01ae0a27e33ec079a0496fc6c5380e7044701ab833ce8852114ab492185c11de0e4a639488e0e9c0cb01d70497026e084e055e1a253038985705ce8803814703ae885ab159612ba33db0890165abc157834f061b165c09362bb62abe0e7c4adc216c4d6c4c6c4b6c1cf0a240635000521189244da146de1997560ac12582b7822b86f7820bc615c2f501e9089211b70c4f09de113c247845f092d011e133f296501a42e7822b836b4687c43dc32ba3f483eb45e9893ea28d280161c3425fb05dc199a07b017745c9072418dd40298caea89bc289803be2b2408de090e036f051e9c0f08ce0d1bc31b8233a2094bce884c0911c151c0a9aca46835e82bbd20d81cb8057032a858d0a8e0a77828b839b83ab03ce0a6e094e0b6e051c0638291f17df165c155f11688c8680538273829302b70687854b821b821bbb4f5c272e08ee076e13d7039789bbc4edc055e272e026713740697091b81ab8b07bc435e266e0167189b843dc2ad7e80a71a9dca23be54ab918b8415cd21ed92cd8352c16ac1af60ad60a360d5b054b053b058b8695828d42c32c146ccd3ec13aa199b04db06758332c13ec126c19560936091609960c7b046b045b04aa85a5d93168179608940b3b042b860dc382618560bfb041b040b03fb05e581fd81e581ed819bd81dd81cd81c581bd81cd626b606760bbb05cd82d6c69614039605f605d605b6059605760b5b059d02b582cec15d68ae680ad828ed11bb0329b028b023b4557a158a06bd81358135829e810dac85ab1515812b4125604360436669fb04ed80f580f5826ec12b60356099b849776031609ab016b84cd802dc20e61abd01958237a8515c252b145768a95623160c97a54b350d7a858a86a542bd434281274090a821216dd105d95ce880281e341a9061d13bea20a824a12a12df02dba094a85ee009d4213d1459dc457a591e8227a082a060d839a4183408f40974091409540d5a069d02a505a4ba168d0239a05ea044a063d8336813281964193408940c1e80fd02f680e280ebe217c62d01a5019d0f2a30185416b80bae0b301c582b280663144474045409ba04ed00fd0272813740baa04ad4233408fd00168029f0fbe19d4902510810358b2a37952d219a4762028472850e4c911201e8a14e9a827690254a448a9048209858992234340498a0001e990a3d4c474a2431325452c2004e4435011254ff25013a01e2c7004872f7960022169e2a4499123489a3831c050131f9c2041926d4a494c28508098d8948e702955e9a1002f25a33904044507202011a624441227488092dc94a44c2816005a02c502403624202c05a1e449b600142501b0400e4b2410d2510e290bf307a0262d2435e615260f489c3c01a22155610af9b083121d9a38415244c9930c448123e20b290a5307274e849e1479a284072842404d2ae0a488058096e4203d6126016ab28312284d7c183a82c44914253e040115191272f204482808c90933899222434050847c4022436ac28402a464488990131e867c38526487224a9ee4234f9234392244830dd219d302142862061426404d9ef420c44391244d7c704281264a9830d4c4099222413d2429633ad1618684840965a80950142032e60e4d94246902f4a408d0d091244a923439828407c908132889132436a4224c21273a4001827283449b50867c7832e483131ca431e691a123498a3471a22409d01014255084809ee4208931a10009394152c402434a9828a1c011264a8e4439f2a4302694273e3811daa1880d1218138a909321284e047044e8080e2a9217b3024a9e6421a025424e18704348e2c10402f201c88703e4900468871d8ee4b083a48309650912201e90d86042196a022404c44313254fcad244890e34a41a4c244aa034512234f40350110b3079f2e4481121a0244c94f8202e41e284895843a2c1eca1c891a123498e0c01150045eae2024a981c5132a4a4899217d216730912274c28500468c80724403f00b5906230859c00c09b6d0121273d00f5705be89cb0c9b23c8104791275b324c94c895ce6ba4cead6066183a04fe85683f898734e1f418204a1ddd4af6f7edd7ddbda29a5ed5e29a55bdf0d66db71dfba29756e66a3d4bde5de6e2da59be3780f0cceb651774a533de8e694d20bc4b7adfe68ba6d97f3e1ee3d6a0d7d9bd9b63bfdc238bd74d27698deda7928a50ee34ead7737ccd6ddbdd36d63bbd5b7f6bad5ed6e4eaffbdcb6ebd7bb1db5a150b47bdb501c6d476dbdd519140ab56d1be7a8eb8ee2280ae528140ae58e42a1dc46bf7c28177c7314eaa2501bca1df5a17af3addecd371b5e6dd8f076cf739b7bfb526ff666d35eb78d6eb56eeeb5bbdbda6e77a7339bdbf05b1b86d66ee1c2d4a6bd3975d7b9d4a973eede5b77db706f18efdefc7abe390f77af6e9b5293d31d3a58296e46d5dd33deee9ee79e5b77181898ebdbe6edb4dd6f7777fbb66dbd79a9b48271efebbdc1a4eae63936d4e68ec3a9971a876e1b6abb71bde66cdbd66d6ac771bcd5b9b96f3030d461a86fb7eb75986da34d69bbbb773b0c0c8c6fce39b76d9bbb6feedbd6dbe6ddee9bf7e6de9bb7fbd694d6c0746f957653eaee4eddbbdb9d7ad7b06e97b653dfbadb7beba6ddde5dbdbb37df9abafbe66ec3b7cdddb70dc629a5f46f26a593d21a0a0343699d94d28d526a636e9b4d0dd7341bf5994927dd7aabed9b3b754a679dde3075db3ccff33c9391690877490224049444c849911e203d8094080de9f07294645433de12244728c0848913211d32478084665e6cbcc8b8401982a2e40720af0727ab1e4a7400127a8253342f4e9c08158102b44393233c20c14d809e3c393284e40894264784868a0c29e981023e4061014129d28393244d8e0861d51094224b849c546008a8498e09cacaae62923439520448e8c8931e9c303982c409931f5f12254c8e4429020507a6071b0d0424a4431121274347903861c2e4c8cbe4e941c950131f84704a87211f6c523f00f15064a88912a12745904051d243cd8f1e9b1f9c5460c8c692234890002de901d2c325480f9e223d80961c614281223b3451c20394233c7c4b931d944009b9c903c502404b8a2051c284023e3c5909dd40cd1e4980a04001127ad2831324458480a238410224c4b3a407488f274880a0b46e8040434784809a00ed50e408942448704e393e264051809814f9e1480f37a61d9c3029b24313253bece084894c094a911f8092345152a48992233c20d1410727cf930408a79b3c404b8a0cfd00d484c7c70314254d94e8b0f2260f0f48868e50a0c890d091a16e0868871ca5c923740488099222403b1c11723204a54812264a7840526488890f4774004a5264e80720569426404e9a3d8a3471a2048a1050942216d04189105094222ff00001d243084a1127434f2c2084a4c8d00f4038519a00f9cea9073dad91f922222272a2d746d419992fa2cdc8dc885eaf17257abd5e2f22a2cfc87cbd883823f3f57abd8888ae91f99a44442f37424489882e1125226a232f4af47ab991179d4688e8ebf522aa4688281135f2a22f6a64bea81122faa2446ee4f5227ab991f97a11b911223a8dcc69e4455faf36325faf17911b795122ead5c88bbe88888888ac914944d44626116d2344948888c88dbce04ad03927ed01ca91198f690fe370cc25a4659a3036f3b58fc530cbc12f17f1c68fb816c317cef2981fb12c06da8f618d06c750c68fa12c062ccef297d93cc610cbfe630c58b27f0c52784b855d31c4bcf57211bb2fb3cb662a184ecd3f86d25b3770d7fdeac6ec464e8de4706239b41ba52c6786538b410b6fc5dca0cddc2073625d0e0c47b6c2ae1bb39c5a0e8913cba1c520f3960cceb951bb0173c991c9e09438b31b311c39650c0e8943bb11c341e69438240eed46ed460e4e8933bb41bb41e6c4726038dd0d59ceace5479cda0c8ca6a4c9a9e5fc989343cae0c4666633244d2c07862393a1c5fc7803369323a3c199e1942e3fdea8c5ac700c4bdc88e5e0186039658e188c681c8e81c421d3206769647f9f2fbce562cdbce512ba3c2d3b0e188ba3b1c89a8b8e5a761cb1157963b6aab97c0e76e1c00163c1682cb20c17323b0e19b782b9acca1cb39cd7815d3870c456e46c55f3a1792b07961d47796315cbc99183c68a65c731cbfe2b568e32470e1cb3952c4799a3960386a35cc572c872d072902e1cb2156c55e6a0f99105cb619131b4161c340ec6912eab5ace2c0647ad25d602e3662eab32878cf929def87115cbf1630e9a0c9683a3ccc13e4637c6952c06fbc072e03147ad05fb2cb15afd98a3f48939cbc33147cc87ec70fccb45ac65d70163c9767c37a3d1c4b2b3ca1a8fa7d941ee80c5ccb2f32077c4743e46874c47b90a75fcc3b2ff0ed9ac855fb168b510c78e124707d641baf0218f182b8603bb76942e1d34970ed2c5c305cc8ab978e8c0ae1d321d33560b985563cd78903b623a74b00e1d3156e92cdf51dbc103ef80e9a8e980b176ecc03b6838662db31a8c25a3ed80d1ec2075c458656d474c4729a343c69a913b64b39a8a45e3019bc12f17b105fb607196ef285df0cb45a4c13ea5b35c074d06fb68e12cd741aab08fcc59ce8a75d887476c6e2185143ee417d97ff421b33f0c346fc160d7fbc3f085b75e6038558b0ed9f190fd88bdf0c87648551ade4aa9523a301a1e650bb11dd80f59ea5bb04b87e421fb11e391ed90356f9d52b1ec3c662dc84e3f4a9d5aa703e351b610db81fd9095e12dafd391f1a0752d94313a2d90333a258fda2cfb8c0ead0518875d3a258f5a0b3a2dc074643c682de8cc5a2075623c662dc87ee8a07e9076c8cb23d32179c85a88753ffe9091766017664b2b33e9d4523ffe2875623c66b78552f5630ba4cc8f3a331d198f1718981f5b98a9ba991f5b80c9e0961f756839469df2a42308accc5efbf7663d311832fbab5ab28e163e4c099be1bee5b95a769a778965ff19fe19590fd972e373e4fc8d162da7058b2971be2556cbc17a1dadd9ea592d32c7af7a64383e071018101dd8d56261578b5c61578f2c077601c18181d06e60578b96835d2d98abc705040703e1b0ab556bd16057cf0c08c63d6410b22573f5d08084b8071604d62a7b6a401ef7c478d4667efc318b95b6870966f24153d1523b329e99e56a3e503ffea89176cad90b0f0da647cdf4e30f120584f448b497999f22e9068fdcce0c06bf5c44d574960dcc534bfd142d9eceb2c1a32ad31f7d90783aab064ff1e5229e7efc0123d5329019aceca9f5f4c080944148590fad67d6430291d5622f3fb6603d25901a9018cc8f2d1a4c6bf682b316ad1e1910da080436c220cb0e8316de3a61978ccc5b1eb634b1ec4268b14b7b61e6ad19fb2eb0ec3f33cb0e7b99657f5af63f61170c31213421b120b418166fa9f0e93d18ee93de4566bfb0ecb69c9dde05bb6080cd5e800599d16028bd95c227999787a965ff32fba7c8ec7f0a227ba19499799a9acccf0891a95ee65db5ecefba9243ccab82c45e90d160979019ec1222835d2fa8b02b480c7ec115a4e62cff17ec1252ba8490ae20b2174a170ce40b17bb84c082942f80b42f56a26db11a43d1be5909b6cd5e80a160a659a9dc60a82f90a89fa2f7a390d22484ec5e28ed8f4164a71f83a040fc279c6535d387551ece5a089175250c92702e6bf8e5226e987356ff142fce589ce53fbe20cb384be12cff29563c9dd53f0689657f0b8034f78f730b29e616b33c715e95a8be5044f5a522a297fa8009ddcc1969adc5fdf6f3416fdd9faff296b7bebea5b7e1d7700b5d2fcf85ae987fb9889bf7dbbb6ef7f75db06a4d5f69c97dcfc52ce94befba9203f8a477d1ece92d9d7dc9e55fde7525879677a195505f7ad7acbd60d7142a9fe8ba9203ccc7bc6b8ad10ce2cb53a1a2eb4a0ea97f795719835d54e62c7f184c858a2f294c4967f9bb6017a539cbbf0553a16209bb769ce58fc24f9ce54fc22e23cef20731152a5aeca23367f99fb08b96980a1539ec029de5ff611a7396ff865dd359fe1ea642c58b3b4c61ceb2b30abb17b431d28fb4acb3fb93f653bc3fee6cb326967ea4b4fb532ce1978b687f9c2509bf5cc4fa53dc7ea424f753e47ea4b2ec5b7843d059f46da87216fd1abeb3682d4f9c578a88f636eb4e5387fe690a994f5f3a99e933c5c805b19f4abd993e463c4477e921daa742c59e993e469566fa187935d3c72865337d8c6a6c4c1fa31cd1b16b7b231fdef49962a423d6a772459b9a3e46dbcbf4313ac14c1fa39898e96374a39a3e4639c4c6aefb463eeef4992265138d76c47e2a2e56fc4d1fa3364d1fa3d269fa18b580d3c76806357d8cb0e83fbf65fa18e9101dbbec1bf910a78f91157d8c3ed2f4317a294d1f231bb1fa18dd102b76f91bf9a0d3c788ebe963048ad3c748254e1fa317dbc76825f6cf9fd3a7b1abfecb45dcb6be77c32a6b2f061dbb8c7c88fe1673cea26fe44374b98815bba4f8d1d191e3e92cfa2f17d1c887d8f89d457ffeebd28aa5a33f80f333c5230d9aff031865cb4194cc415088b2ff48941d439953679c3a23cd349cb90220fd0a80b30cb2796629a198d38804997a10d9f148c93c3f1b68aed57f8623519e3f8368f69f213562f2cc9f1dd169f452ae5fef1172c5417e74c4d527e1261c1eb9674244452d5fccb9727dfadc7b587f7e364c1d1c91396cc576af3cd2273589614a996f93a90358be3f5e207324dc6492818314307021085c703f64ff1ea2885c936759e5861f103712860854485902599f5a216d3200451231a11bb1146021879e4c32b215d2852070414689614af9c305f27d2b189864881b262719e2c4aef9af264e84400841608124458bc92924e94fb2d7d0bfbff92d00550422449105294747e214402a3bee176d7b69d0352cfb77b80070c9fd1c79bc9816d1ab2280a610a19d6c653ed14cc2d39f13573c858a8e58dfc8452ca27b52d97fc674053832c9b4885ef9ef20018729f5e9ffb41038d222b2ff389190fd5df341671189730a1fc8e2892c64349214eb539186643d811123c080085e204ea1a223d2377211e7142a2dda379241a45f43231944d7951ce8bb7070963f9db9aee460bf62d78fb3fc2d765dc9a13ec5ae77967fc53bce2a4bfae39c4d2a0891c54a13c03041117a60ca029c22110770f002279cd8e28b2aa4204e71feb893c393a448bf88eec94161af26a25e9df05a43eb55ba71d6be3f677fb3f6d6900e69cfbe7f760a59d52b1b448f72fd8b67af2cae34b711905ca14302f637c4078c74f467ce0822397dde14e2a6fe6ea8944aa14e21760aa1f6f31109c895de766fb9b7dcdbefb82f71dc5bd25b6baded48a1e7590a41467eeefdf3cc5204cb35bde2b8a7d9de73679a0d9bc1fd25e1d92b6e0bedd4993fbf3a75e6e758bf8292b98d92c894ccf3bb6eb937671e29c90321dc4083c8138f94fceacf308a0da739858cb5e2a0539ee33ccaa3ffcc0900e95ff9ec3fbf20303ba664153405130838cb23a66407b4088a80b334028d7cdfe9771d1361508e893094d0c2fdb7cf069a827cff72a00a0db34ce20550a800669e784987630b0d7139681e65fbf72332cb245e90afc53ea8f2902a3b0d291246798634881ee539d239758832ed70f4b79f0d2d827cbf7e35f8df9fe51149c8f6fb7e7f36d4afdf784e9dfe9fbee148b1bf0dc7ce5da370797638cb2392c84135049152db11c615798422042cba22e471880823a89cc8e390144f7c791c320211f2fc201a4a352772d03c3aca429e1f6443298f3e68e00679be0d611e7da84204357024399fe8d28b8324b2a5223b09f24da6df4d0480b3f4c0947c0aa2d97e373f1a1adbaf782c9b90e526d2efffe323118d0d968a25515efc6d18348f8e8e6eb8c9f4291e896c18e5450b1b35b454640f873adbc8fd36f492f6f78f087d6bf150374b0f5c91873a3b1efba3fc740d6fb28737b9c3996938d4e5f94496f6195d7f573b904e8aaa9fe3de3929b672df5631f2b553d8b96ae4bb7934f43cc3b946bee1fdce7ad33aefec4aabc93efd1fef3c77f33befdc55eb5dcf86f51bc20338dfbf1dc0f9f3bb59b91bd358813c310d3bdb70a29127067b95233b56f58a12d11725aa5e4df04a40fab557b3be9d42c57e55b6610de7a704a4ff51ba0904acbf23cf2c605c913fc7080f4690c09648649c912d8feeb15bced9b0d046e7771be97f7aa33f8326f7fd5dcf490aef774ef704d1a3dcde469f7bfad940c7c841340cbac9db775cd83fc3b189dc1fe90c2f1ee9cf0dcfc9a3f14fd3ecdf7968801ffff911717fefe83784f31a606456c55a77b25de1d080eeb1130b01baa766fb3b194822dbffd12d172d966c7732cd66fbbff3ae7af4a3a1fb1bd24f3f1bfc7bc336d0b7df6da1cdaa338a10236f3f33fddffe86f4b770a4595823dfefaab78533abbac73e98eaaa373f1a5e64be7874e5fbbdc600b290b7a747f9fea4479df5b6706c32df9f4de60d8ff76710ddd3feb346428117b9ff0ad145be3ff3a9f192fbfd34aceff57fda27a6fd1f0dd786fb3d85ccb7dfddb0bfbbe17eff162eb99386af863bffe29196fea7bb5238967ed6ee29178ee377e192f9dbf7476436009c2511b0bcfd9c0520fdc4f40bfa610a068220b350e9a110e5122e7dd0580135d638ca50e64c8a2486c8dd4321ca1d9ebd2ae171da40c2e30f79bb1f0da57cefb5d6d65addbd3bdf8f48e7edfd2352ba1f119a37b7df90ad3f22253cdf7e444aa590c686ede74f6f863393c2f1878997701fe4caa367eeb9bcfd4f73e1789ffe8f779ea510b15c5fc7da90f326518b46f700b0be989ed0e5594e2123cf9a22a4f81006d09ffe9cd3c34fd23d00ac60573f8543f78c8f258fd38b5cbffeadb7be08da1fe717f9aaf2ed19390174cf08f2d03df77dbac7f3fd069491ef47a05b55f4f9c5ec22df541e83e4fbf3fb6955f7cc924a11f97e4df774bef7def7ba27e7e225b3d667747eaae1fef5bfbe59df9e7beb6eb7ee46a179fbed6f3873d774f6cc3fbde125dcdff702707fffa7373c12e58d0ed91e8f35dbeacdd97049908be36ef03c12e5ee4edfd190c69fbe7f8734fefddb77dc77747bfa5cb811e9df9e0bfbbd86fe6dfb9fb6dc77d6925ec8ff3e17d6ee7dd22585f6efe5bef370e866ff1b8e9dfdedfb48b373784e1e4ec4fa2fe17efbce85bc171abab923fd90974bee79247fb7df515a267d57e2dec3b133f7f64bf69d14fefc06409449784e1edc4833f7fd11b1cf61ff1ff790fe76b10d3bdab9e7212542b37fc5608992a41081463321c28b9a7ed5a97e57fb3bfa4d8a02439a670e5de9bb53f7f32747e27e279348a18a9b3f85d03cc39f3a3b79beadc17ee9bb523812e5d2b7570a4b6f7fba14ce4c3fd2463f22dc89e60eec15e9b9df9e7e434a7824da421529ec6c1885e69166d297c2283493486fc3996b670af24c43c433f71cfea9339f661b92f092edb92f8533d72f882bc0f61c3ed5d57cfa31e0fefc52483377439afb3b72b785e3f61c098f4499f434503207d192fb1f2f85b4a3defc4838c873733ded8ff52f0ea2d962a28d5a2add34230a439055b2cc200b2510e7d7cdf9cd40b057f48580e3532fd3a741327dfa3eddb365fa4f3f87fec8f4bdee99effd1e2e005ce29f238f997e37a79071275b222b8052b66feb8f8ec757f61f49f308d9622bd5fe0cebdb70012e04618b2371be87a32bfb789f09d107f2f6e32bdb9f1386395d18676914451ea279c34d261939c88f8ef2c5565cf35f4454d4c48ac9d1952d1efd4752eeff710f73e48e7a359c3fbf074c1dc0c49923b7770f56dd538485eea647e433f3eb28dedd3de444fc83e8d1d1d151f61ff2ecd8bf66c73436f8db77fa95d22b5dd7cdcfeddfef6c78431c40bbbdfd05f4e39128fbbf44f7f935a07e631791e8f26fb1b7b0862e2291fefc8678ab7fbcd8e291e60d738f03d8cd2f07fa15bb5e22952b4133e4fb54b4a1fd1b8e9eed7758ffc76d38730d5b9c5f0e2ed2ff690fc32912f98b12d117ad1d9b659ecf4d21f6e777f647af5c09796754657ffa3bdee2de7fe52d52edd57dff2053c84f9dfbfea4100cb966dde7bca56ad67d7f554cf69fa5104679fc91fd63a6109afdedfdaebd1ace6cc38642fd9f9e14e5f5aaff3e7dfadda7a94f73679afab314420a7996422c21ab7a75df8634cf2fa8e60dcf5edd1ad65e715367ced276d73a1a66a6796e71052674348d36c1dceb6fc87c9a6729041a59d5abfe826a9e5367e2fe8604d1a34c9a3afdfdd140b3bf7ff36948f3a4efdf10c7959b3afd3306006739458a3c7ad9234d2133773f378594f22ca7389155bdaaa83ccb295a6495f56848df946739254b56556f3aad6936752268999efcbb13cef5e7d71ed2dc75c87d8794fb9fee6612709643cc72f7dcd39ff4a3612b7d178ea55f42badefc864c8abacf7dfd0ea41e17ce3572f5b870ec429a1a2a49e6ef6bf6fc7d879de7570325f3f79d7b5c68fa0e67eeaa27e5c9e9a59c5c44e2e9fd0b5478885bcdc89c919704835b4aa498ac5fb0eb7e0a37ad674e635f85b96dc19cd10fd1f4d61d855ddc83d8693eeb5a8db9ac673e788115caca6157f54413aef58758b1ebe24a7316765599d79c45bb579841157480c50d8298d1258e0085128260e5d535b8820a2478808526c48a6badd25c464b3a2329ed4923509c427a2aa0b83d95174b4f6525764f6547f49e4a10f10afd913e3185501c348fb27d62ea84d689c9d3df85160493a7bf14da0f4c9e7e2eb44d4c9efe2db41e983c34728a518d3865ca94295c1293a79f034a7420472461294e6331d866b412a74cc9801193a78f50891c96726ad9767494052104c1064dc4a618fd10a7704f25886885f0c45ac4e4e91fbde6042080718427b080214e71eb410780b0022172d004719b32658a94139517ed9495688b264f3f951dd152993c6d496f6d784e16fdab52cd69c98ae764dd4c1ef467b6e54b45d45eb3826ee68c3a62383b79feca6b4c0fcab8779134f371f0967fb27eef2e4dfd20765599a5b5cc490ac392e746aaf5b7d450efea27d16b7f7ce6ac9e254d66499f75540653d666258dc5e6cf5aac86839765e4e965edc6b89896f6ba71b06ba7c2ac8cce9a96dfb4a632d07a2dab6052efaae5fea679977fd8d5315bab25251dd6b04bd6d913ef0b6b9739abe78fffc15ba45677339cff911ae559692eabdde4855db2ce62b3d6b08ed95a2d7938ccaf93bdd996e5aecdd5989d9ddaa5c154dbaeedd22d4dcb99bb43c3c554588b8d95b978ba667b365aeddbf2ae59cfd4eebbfafb460e1953c26c786c66319e7e20efead1419ea7bf07bb389223dd2078936d35ae24ddd916db689c8c44de72836d33cec236d259bd71308ee6b7e6aceee75aeadd5e6a8c76693eecb679577f3f875da8f2250503632d341cecaaf9179c9e89d53cc62eb096aab994a7590b6c893c532717b056da7e150deeef9aa6ff43ec42cd5e66a918286ba939ab6bfee65d366cbaa6d6f23dfe07cff7e08985fdfdfda3e75b0de47bfac703691fffa3855d28590f76bd00c1ae14f903bb401fb865d603bb50311eec7a89b95c6a2e7007b7b85030d70bcce542739d5cc02db2269dd5b316704bcc593d632e34929cd1648d8271fd12c3a9e5942612159b49cdbc143f3a42e1b8b8cc60205e643920898128cd707820be5c441958ee07bd855d2da4fe96969677cda4fa5b48183205d25c50b5975aaa04672e3014ed2505ea60175226f6f252a6604e43b5d45e64206a567a99a56228190c099625a7bdd4b676818133540dc52aa3857c812155ac2f369c9af160cdac4bec765dfb9b8339c1cc3ad54f93818991691859d7606a2a194c4c4c4583a1a962313418986a063353c1626631aa3245539131650ce92283a1220e48a343e8011563d8a07685d34a18ed92cd81d20a52b0429625ec2cc6d548984fa18c232cac708616254dc69524d816a335a1e60511c6e88178675b2df74b0104542c614410c4e048d6123d28a28922276011a7e89b3f37b3010c6c3085208828420a718ad63e2966925911c306464c28214eb154fa53afe1c5941b9c21461340d4df48d9d60fc4e941d3bb4a5df6d7fa4ba537eb6aa45a072bc9bcb2a391681d598a79b26e469a956a2598d795a4b2442b915e2723c94ab37b729195c898f276e57a6b537bc7c06060a8999d792ca66fbbbc8a565532fc72319158ed62a950718c9139152a8e30980a1559aa5a6e56ac86ab34421669439651c88285ac259cc5032b5ef0821c7021236533dac4924412a410450a4a50c2ca59a9469bb0c2822b94200a52cc625e47eb4824942e60020738c04224d14a3220440cd10318126512c4296e63a92c8541c4088c10821422c42996bc590c9526d09268428d34ba1a10232c5548420a4ef084b18301e10724b082850762e2149ddb6afd9b8c6cafc96ee9ef3f9d604d7e33af7622db24fb649ea93491a6d849f6c53cf233c14e3153ed837db42e46aa6d34307632d5481f8ceb6216f6d564b9bf98674b54ec6422495f6dd2342bf5577a35bb591f4f250a046d1d4fa7136832d1de8ba46c5fe447332c65c3f1532cf233c4edb16b863576e02afdf815915e2e22f8e093302b662281a437e9781d27d3cb63204ca63fe5f81c5f54747a29dc17b95e3010a7d3ea5777c74fb1a8e8be148efe148b4840dcfbac67fd8ef0071007c6f160c84ac359fd348442942b008eac3474c0bc75c2fd3a96f09609f7eb30f2d6c5fd3a486f91b02b0d6f715d9e3ae7530d93e99af7666033341a994c0dae21656033e4cc8ca67603d3c468683231191a5893343319d98ccc593d53eb998c8ccc6c26466a9ab294a1cdc84c4d3393dd86296960343452f76d1a144d0d9481bda955cea23334170cde46614ee41aec67c5bc75c22c13a8038f1c49c5c223783faff0a8c2d35923ab96fb73e0f1fb71842c2c53a7ff02e0b84a2377b3c83468b1662d51d36f43b311b351b389d5c058309b9a0d598d8dac86c632aa21fb6dc06ccc6e6235331b588d8df2066633b3216dd4c8baa6144bd15e62b96dd42e8ca359d98b4d0dec9a1847a66a6a36656e1b24d860c3de86ccedf2b799e546b56b470818e0001074508226a0b0cb062c855db38b1e64a1841524a41401c42e205c7eb431cbed0a5244087a104411152244f0a7784a793fdec45c27228c418324c4a80921d6fc0903d118887fb9882edd6df3a47e5a6a0d17882f1711089cb6f1a96eafbf6ffa1b7fcbd7646edcdd8d5d38a7c39ab33ac4efba99b9b00bc35ce1e390e6acaeb96e4a5c3aab6f3026719e7623cbb181b1ac71683fbb61836dd064f004d7f663cd4c36b34193cd68b2922c6be50cc3c01f431a399b4c2892f2c50f86f002718a5ce9474cb3021a519042902510a788c2311d68910410905668813845700c6b58a89c5185219a70244eb106bf5cde072b088107900085118853dcfa575f78cb35f316a7e25a7663fdab9ab738eebb1fecef3f615708c3c991ddd46265788b3399bab9fe7ec1ae308613cb79f2066c45f3d6a9bbbfb1ab6bfd295cc3a93d0dcea185250ed9b19c5a28c381e53cec46976251f0620a20c040bca9c164b21bb0192be0a0074118c218b1580c76839cb52758a1084b06a6c064301c3287cca9390db070011642a4b1033146b9800206b89899e10197910fd17f0c6795a4221b0106a69001718ab5419a0ed4588210aa808311a73665b0822aa85153420a43187368b91b035a302182230c50419c22875d54dcb0d3dc527ffb5737ddfe7679147832b5aa55dddd386633d8952326835d3954d8752306af60b0ebc6ec05bb70a4ba05e74061d70ac4ae1b27ecc261c2ae1c1fce41eabfbd61178e9ab3fa3d8c23e6acfe1276e1b0fd15bb56dedf611ca4b3ba1b074d56bb635bdb5ec1bc65b9b9ce31cbdddecd75b7ff786396bbc42ac359dd2c9ab3ba2d667de1acee8a593367753b6661715637fd918525ebf888ee0b878856aa44161d7855df5eed76dff4f3df13a7500922724f2a75de97fa979fcfb9e904a25c5a9e4634a2a917989f424525c6fc142aa038f353a870a2ccaba650d91169f05d8976f2d09f42e5c53a79e8cf0984fefc99f065f2d09709539387be2a74993cf4634298c9431f268c993cf45f42d5e4a19f0a65260f7d97909b3cf45bc26df2d04785a4c9431f0c4b9387fe29ec260f7d53e84d1efa5f383379e87b21cde4a1df853593877e29b4993cf449a18dc9439f0b6f260ffd2d344d1efa37fc260f7d1b9e260ffd1a829387be87a8c943bfc396c943ff35437dd6cd9c716e31cb23a8fa3c7f7a6bf50328f4e3e9cfa26d7bd7cb45746bdfb5bd8f52e95dd6f48d7a29f58b50260c448954647a29f5073088e62cc5d4f19f6291898481400161eaf11500375c2465fba2af5fdf2d2eb216e6aaba6c0bfa30e12293c9d4f58cd6682753972da333f0c94f6fa17011eaa56c5f84f29ad6a4a9c3ae9ed11a7d1217955eca868190428fc42b353fc5a292f72e99078d7cc0bc8bbbf1463e4418ec82f9d2771e7679bffdc9845da647bdedaf097f0085e8d73c296c5a9394ee38ab63373ae6394ecbb0141a9921d73597ae358ca66134dc421cc29fb0e96cd64a5aa3344afe8c8c51d84e378ccae66c965debf163c72c7eb9f0fc48cb3b69d3593efee70b32fbd7c8bc555f2e22aa059a0b325a76fb2e58f627b36b517acb3f63f1d60997de757a1790dff99e6f7d900a7ef72e1ebfe375be8577e18d7c8078e366de05be2bc7dff8d5b35ec71bf910370e73ef0aff1f3fcee3c0ae18ec6ac12e0ebbb8dfbee5633ee75db08b06bb66b00bc42ef0ebcf3ccdbbbc0c76a9b0ebc3ae0ebbba2ffdf7aa977918ec7ac1ae14769db0ebf4a84ffdcbc3bc875d24ecbad865b1cbbee9ef93de7b7f1a4601bdb0055ae8822cdca1853e60610f326ca116a4855af67f095d285b65f64f853bb59e9d5af63f853e62a8b0070c482cfbefc0b2bf4ce802e90299fd55a10bb31666d9ff0b79481d32fb77a10f5929ec11e321cbfe3b62d93f277421862396fd6342176a38b5ecdf12f2c470ccc72cec517e8f32fbbb842ec074c0b23f4de842e8022dfbcf843cb01096fdc1d04719f608cbec7f23945114502141b98134404093d1485811aa00e38a209870a285da4e8d8ca961c6129080c6123472e6028d07d64306e48a31c87001152010a7587ff4e1028c0955c0828b2b9c61459ca2c9f4a30bb11ab040065888a1c4182c10a78842014172a176032a4830604f0021264eb1544261202e4f8c0a4c68020d35ac5811a7b861206c8fd2a99081c68c055bc8c42956ec326120502f17d1e46396fdb314de72fdcb45aca59a2f551b55c906888198618d9908c474d6cdcf501347ee471805a46457abcce934cb4e936d333256bf32bbd7326569f64fd8e5339acccec85a7a4f96fd4b64f6df66d9abadd9d8875d5e7ab534ebb10aabb4136965b1ecaf72d857bb0bb3d561ae7a61b674967b8555da25adcc4bd855c93ab3355b9db6c94ae4370367a0d76ab9c14ab4affc48b0dad8666b2eabb0afd2402bab97f4d84b8d75b5a6b22578610efbf9e23d6e2b6f8c54f38147ceebb0274382c970b2addbc82bf31e06bbb8d856de1889bcb51e787ccf6523c5caecef95d99f969d04936d1b79653c7854b960231f22cd9d6d3118920c66ab71331acc9197b6c93852c991cef24bdb381aa9bcb38db471b30d468a71b7dc1a8f601e67f9c58dd564c8979837333b5d996a235f60de4ce9423bdd7283793112b7d5ee6c8b79d58f9bcc85a623953f72b4971d3fc514fe91234f38a6c76c27c6c14eb3ec5f66e778663b3219aefbe183b6da2949b3981e34ee47cd470d0849a2f1d0563fc81eb5f0076c6746aaedf820796a3f603b3352cdc70ee6a9012149341eda0fb2476da724cd7afca8f9e0d9e16a3f683e683d663b310e36e3299de53b545dac342b955dcd2b555e57f266259947f3605d598a956a259857f3621dd9cd3a58e9233b9a27eb60a58fec689eac04f36a5eac23bb9947f3605d598a956a5e57f2662559172bcd4a5dcd2b2fadd4c5ba9a5796ca12ad9379a4372bc94ab5ce8379b452ac233b2fe6d54ab983e52e7bb2fc9125b263baae7b10762a4d35d53733c5baaecb014f269acb579a6034d805c24ea5e99bc54ea79869b6fa6426929499689f0976a29d60a692e68b7db598d3ec64927db0ef74224d1fec3bd14e3067b9e9fb4eb553cc34fb6426f29b81b05369aa996226d85782e44966a2996626f2939d6aa7d809662abfda173bd1b2ec34cb5a9cc85c9a6419cb47fb60738b6c94495409d6c0580bac8596632d31d40c45b6d44019aa046b60ac05d642cb4bb8902d32140d2c51b096186a86225b6aa02cc3c0990baca544c55035940ca4b9c45ac896194a06d25c622d64cb0c9cb9c05a4a540c5573215b64281a58a26060ac85d6024395600d4582b2965a4b0c3543d15030b074215b642d25aa868a813317d80fcd25f65346cbeca7d642fea48192fd7c01d22619799ca5ec8becffa3c58f2c354b912eb297d84bed67f6224bd152309712864ccd52a48bec25f652fbc102037b29533597592af6224bd15230971286fc295d6830b197594af642a64a971a8cec05f6424b952e3518d90bec85e6428389bdcc52b2171206f652a66a2eb354cc45f6527b89a566293205732961c817598a96aaa5622e3318d84bf9327b215332171a4cec070623fb59e285f6137b81fd48912a7f8c5c6a3df23803ad34cafe339431034d8654c9626830650cec8794519531359898980ca992c5d060ca18d80c69c8c454331509132393519531359898d80c3519998aa682c1d4624a99525553c562c898994ca9aaa9623164cc4c46a6a2a96030b51899984a05438bd151ca903232550cad83cdc46866323055d9c5d4664817990c4d1553cd66542e2ad8c7942a985aee6464a54c8967c0f233cc54311e3fc5163cc317b3cce119b48821678065ff71062db2ff0c4b780be62d8e9ba9cdc46264663b68ca1ad80c326fcdb2d39033b21c3531195a6d2626332b6b605278eb468d2c86864603e3646a33e58dc7d8454333531393a1cd10f3d68d903543d69434b51b33339a5838439b81d5cc686435e40c6d065633a391d59033644d49539ba189c96868343099da0cce8f32335899a3169b91853fcad05835b115cd2c0799037663a6cc91a9b16a642b1ada4f11ff4853cb397e8a387ea489edf8716646d6942c2c430de3978b88f363cd6c8565480347f8630d9903cf40eea091cd60d4f2e34c19cef219582a8f329465647f19b078ab05bfbf0ca5b7b816eec9ec36b21a5a8b8dd94dcc5f069ab770386e870d1a8e0d984d7923aba97d0eecb241dac86a68b39b98b3fc0b6f855c8e9bd246cd06676333fb1dd8658366a394d5d466de8ac1d8067633cb7143c6d8d890619b9a4dec86d6828df2066653b389ddd06c9437301bd8cdec86b4a1d99039cb6f4a1b351b36a48d8e1f6b68311b36481b994d5953bb7123b341b301b36133b3216fdc94366a37a40dd9ff6843e36c60376637b00c3a7ebca1c970039341f6364a19b4e0816d6458c22656ca630c3519964823a6b60a5d6e6a5f3e26712903cc5b3a3a0ccb793224393cfbd90abbc2f2a6566212973218798b063f2c9cad9e16c230ecc910cf7e260319f31fc33156180b6931a1ec65b816d6b02c94bd0cd7c21a96fdc7702c8c8534fcb070f6b4f0cb12932e61497353a3211fcf38980be912ce42d84cb35763cdb4ceef397bcede4cf70a3523ee6e84ecbe65771efcc7494be2f5087727d478a20346b0824a142e103d27bb6b0009d9376b84548fc082ddaea50d71240b25c8a0892cb22ca4215a9c6c6d160d74912dde59f5ca082c89ce1ab978db9e4079cd1bcdfe08ca6ef58c83fd71ce72b0b8012418968a57bde2418d788bb35f93ad3d65fb0321641b44ded9b2c0800546b2c0c8f08cf0404b62c45bab2c507061afad3f7e4a7966398205f9cb33cb114f6cfe09e1c70a1d7cd5fe7c618514d6e260459953e6d0802abeb096b4fd58210339275501f32a9670cf800d26a83843035314b101247096239eb0cfd9cd6ef6da8b719082b2f5e9e7507198955f4cc1fa96834e8d9d203b3f76bcf543c511a41f4a44a77e26cf1aec600d6ed64d98959e02259464676c3f3234b6ed860128a21b9585044408c00f06c468910932c0fcd35c4021ab64bb11b3c945dd214952ca4f0a68dbe657346bbaa059d3bb68d6cc2368c4c44215987002952476d08412c22b4fd8300ebdcaa17e0e38fce03045051d10e2892b322bb048c25f310387c661a6fa49c11731797201027246733b820b1a2591021ef0208b30d0c001086eb2401a011244211082164e5891050d4820848d222090466094860ca090051d80e04a1421b0a9a2c13cb1ac31851f00810558b40009a330682ea8a122048e3ccb2b33f87070c4162f3841183688e20753e882a6288d9ecdb0648108247c67467760b0f54e909d1f41ae48b1e3ad9f1a9459ae6f2b019401c00248e3c75b3be30c99fe8893fb7687138618a60bf4cb2b3253ddbeffb99d5eedfc4c8165db6e18805ed10c04a0041f68a2092956b05084d833b9bb0b23a4e41600fe5901387f02b0f323f51c2780520b67cd2dd27042b679628901963cce7296270e11476f133ed4bca4df7ff4aeb5f6ba3f073a0bab7a35827f80041c4d11a2075992b0c507fa3b3a3f191354418a95286490850a9090c9fd60f79976dfa09b39dc8cc90a30ec419597d0ee71d60ba0d31fb9bfdff54726aabc851f1620d7832adbadfbe97743149a29aeb80755b678497d0cf6113d89d0c41062b229ace4200bd50c6e0c2e97674985102bf013b4a09e400b3fe559032e3e90b73cbbc0d2832d1c69dee81765648ac54d60e473eacc4c666aa5e6ad69a0797b7a3d4a9f4ea7dc14b26dbf6d9452f7dadf09ee2c733d993eaf2b5d4aba97082773ef555d1a93ebd77195ebeffca8afaa5f533f5755ae7547555fa6deebd2722feade8d087863eabdf75e997bafb5f7aaa64ebd7ff178af6a0ab15f5fa63ed83d5cae3e4b17159c6cc5ee95a35bb6ff39f639fb9e05b3e5b2b5cd4d21f4ed932cf5de2edd28a6db57c3dca6a51f0d148fd406db14d292edb66ddb46dab6aeefd38b376eead8ed373c6e53c87dfba429a4c5de1d8f8c533791397568ad7876ee3c4fa6a9e3ff4d1d7f6feaf8638a0270962758c23e2da37b463a46f6a7344a46f7c4647f104b76137c914795979363f2e8f9d38f484b9e53c73e1dc36b79a436c84890824e139e90c9b8816201a78e7f0d140b3885d8f7474d212d3d59a6101bd22c53e7bb9d1678a8f04e58c21951b081d60009254823532cd9d6403f223307f9068ac5ab150a6aead4af78ac58280c33cfa756a61028744aa656a6ce7c21506896a9339f4661b1641b45b6f6270c3964f6a758a6108be529160a4393793eb5c114d29227365501522c79047314200c6dfd9400079335b3ffa43d3f25f062ae661e6d64aa823cf3d89247f0a7043498ab99fd5314869f12d860ba70e345372100fa8f5c790229727dce6bd7ae33a7ea706ad1396f38d5e938e86ee659bf990f547d60ccf78120f82e29371f369a11bf9fff16c4526eb0ebf5bd7c07fe8bf42e3fbfa6a565bb3244f3e9bf94f726977f91542d9b832d34ef7a91dc7ef7f3533234db46fff53d4dcbcbbb5ea9f77f91de24d3b27d2eff029f065fe9ed5fa4f7996adff4544a620c76cd98f015ee5ff63799169ad2bfbe37cdc060d7ebe54d5ecafe0b7cf9177c0565f248ff023fd592baff02f1158a6b5a503805e22b27fcbda26fc2e08773fa5fdd77f84a09bb5e240e577ce565f1157ce5e5556ada98d05597c125e56646f4fa2e2a57f40fba796d3c101dbba898447f23986aebbba4dc387e5bb1941bfb4633e28c5faee499c054cbcfafd9ac5faee4995ac09fafb2a4cd2f57f2c07fbda4ecd691fc722593f7f3411bbb91be7fa5beabf1cb79ff7af992151b1a997fd5f757a9b0949beb343258ca8d73ff7a995780893533762375a77fa5fe7b1795924883a5dcc8a8b0cb68c66ea4e7def5eabef4aed7f7debb5ea737812d30ff7af9d4bb5ef7ed46eabe13eae55fa97779d78b7bbb91baefe4f2afd4a3def52abd7dd7eb657ad2bb5ee077ef7ab5fcf7ae17cca3fe95fad3bb5ea8f777bd5cfebeeb55bff4af97e760c29c06d2ff12d606423f157e03e97709b90642bf25ac6920fda8d06b20f4c150d540fa4f21d840e89bc25403e9ffc25403a1ef856003e9ef425503a15f0abd06d24f0a6b1a0805d2bf85df4028907e1be6341020f43d9c0da4ff4543494be866f76c4ffaf9a9eee97ebeaa7beccfafe99eee017f7e4ef7f09842680e1a29089a4cd6761d89b46ddd75e8e6fb2def6110ea8582828810093a7dd0f741d6fba0d207711f64ffbe0d37474731c82d78ac38e826ca4c46e171e341761c74733406d12833f9f43f0d9ef0f8df9b3e3cd678785495be2be131c53d09bcbf5d3c7af63b0cba393a3aca168f516672c5639499ec7864b2f120f78ff5e6c6516032c5392db4c6baf796cdcf17c0136ff9cfa74b78abe6e7d3d25bb4f4f37fbc45faf93c784bc7cffff9540b6fe19c7e7e106f996cfc7c6ae42defe75399b76ea47efe8eb75c7e7e03bcd5f233c7cfa752780b94b979989f4f63dec23378e4f2cc7758c3fad5e3781bdae0229ab7f91be2e43cce87bf858f8b2e8e673d17eac0456d5fc777e10d5c7423fc9cff421bfdf6b9478539708ebfbffa9710e3221cfc373e26bcc1453a5e9e7b99b0a8e8e66b662905963cf3291ea28d9bb7f953587483abec108bbebf799a2fd1e02a26f1bf0617c9fce96d709517b1687b9a57d57cea4bef1216d5a4dee64d366ffa14aee26251cc9f9e1416d9e02a3a6211ea6d4c5ffa1a1699709518c4a2ee6f4ab84a8d58547a9aafc155526251cdd76f098b5e385c45462ce29ee61b57e1c4a29aef771db80a158b526ff32fb8ca158b4c7ff3165769118b5efef43061110b57a1118b6adeae70951cb148f5a7cff15e589403572989452d1757398945dedf3c0e5c258858749fe6c1b0484a1191780357c92116d5bc7f88abb0c422983f913e7cfc342ccac1555a2c02dfe6a514118938b88a0c62d1e96f701129f52edff2a807bf0a156f1ee32a2db188f434b888e6ab5031fcb0a8061755a162cddf94de4658e4f236b8a846e6551ff330fff255a848838b8a8a8a4e6ffaefbdeffec767c2579965c2e9acf9aa70e5acf931210ece9a0f13fee0acf92f218d396b7e2ae49c35df25dc71d6fc96b001ce9a8f0a29e9acf96048a570d6fc53083a6bbe290ce2acf95f68c459f3bd901a396b7e175299b3e6974295b3e693c21f67cde7421e9c357f0b29cc59f36f48b570d67c1bbeb3e6d75000ce9aefe11367cdef902ee1acf934a4a5b3e6bf4022fa9271ae04dd14c189a509b24c1fec9e51a5aae91ecfb409b14e0da0eb5e0083e8ccb37b66f74c6fc3239737cf7e3690461c72f761e4ee67d77df71d9e53877221258535cc30e61633df30d5c8f4bd1a661132913946a6259abb5238bf2124fb118028cfc9a37b1a8ee1489f7b120d671e325763f75c0dddd3fbdc0d1d2ee13957dccfcf06d2d3f9d5503369f32df4bf438eb95e1175b4c62a38470e9547f00812134427c842112710e204494c81048c14515cf13630c798010baebca0080a53e4e0258b952fa2f0004c9e65144e702cb47b6fadb5d67ba3f0225f2fdf7b2f89fb8e4422fd4fafbc85c3bdf74641837cbf768f29dfe73e754952eebdf7566146beb67a0e5e9e58a0d022db3c65c00514795c91a81da2944aa5261a4c3cb1c40d6a392002092952084e492c010b3aa8c210624770a95921374909a521d068469278796e418408cce826850204a944a17bdcc98147afe8aa13dbf1ceaa57b6bbb3607141eeaff6fb53dd53bff15f5cbbfb47f7d8ea9804607fc541402efff44fe37046a69f43f75c1b821ad7d2051613d0a01a217941fb8c20b282225c89e207553802969615d0c088098a13d06846924031e576a0ab995639d58c788b24c59d65f0a88f4397457777ff4fbf9120dcbbc80015d95fe5ed349a9124b40a1350f900119e3843075b88a8168c20d3ec3808a8ca3f0de67105e6c9850e9e707b020f38072e50c515235c39e309b01c80506c000a25ba53799624a8e52ecf2d88f8a29df01daa5082312bc206cc00433ce511cc534597d08010b508216010060fa038420526157c7996239092b93cb7e86289daefeeeeeeeeceb95f1cb4e58a97f8773f142222fedd6de1127bf1c86ddbbdd6d6ea3ef6fc6ad832e9eb6fdf11d1fff11bda47a38ba61f8783b6bca43e14a26cdf3f22f6ebfb37c43e0dc74d0890bb817bfa99c3e392ede7f7d53cb71bce7cb14881d6558fd28e7e35dca7785ce2df7f7f89dfa79fff0d976c9fc5441cbd596029c3e08e2a4e9ea508c4c8df0e34a0da6c13ea124e79962228ed11dd38b18cde8eff8f6e4d9f3c7f35853aae5730ddcc991406af28cf9f74d6ee99993ee7611e79fecca1503470b7bb7153663e4042148e80a52cfaca58113870efbd97b419784106558c30040c64555ae05921041375a757f5e631959b0a91134555805144c613d40082d8cf754f971b084564b1a2045e9e3210430a5a2f1673b6ca82d4791be7173bdb8f2b1ebd9aa2db7014f76362a3954ae7134b4bd5ba5405a0fff8234f262a7fffda3dddd3d8eb157dff2de4c2d9acfe1ab6461ef5a73b9d754e377d1a3a45375fa59a29fbf4bb1740af574c5443c0ea21572965a29b39b408100758dfc7a157dd0d1bd0ab1c7a4571f0d6ca59f4dfcb56956d290224b2fdcaa5f0c82427db6b2b25029c331cbac79f7e0e8e7b1ac3e4c9850e52906b9ea50838306979e2105dea46a73cb1c464dd3f69bc3e75dc513aeeb6eddeeeed7bb76d73b7cdd5dbddb76ddbdbb6dbda9d3c57bd9a5faaf5b77befed2635c99dd4247712a90e79d76dbb6b4f758e6bae26d52bffeefea9e34fa780fe7fbfb91fefaddd5b6fb56ebdd5baf5562b676b6d7cefbd7d6bf5ce7af36b3cba72ffe4ac7beda9b561a8b50ab91d76d5dacddd9df366f7d45babbb3b89f4eeb5a7faadd948b454ba25772f7d3698f2c5325367be757777afd7737777dfbefaeeeeb77adcf7ddaee9d5bcb8f6577b4a9dc9cbeeee7eeff5fe6a4f75af61a8d5746b303d79744a4e9e5fd3ab49b76b39936aeaccdfdebdbb76adb56baddeeeb57278f4f2a5f5d6ef5abbd61edb30d891666b7fbcbbee5a6bad3dd51b861e876a76af3535b76a394baaa45aabadd5fdd65a6badb5d6db5bb5b5565bab9d3f4a74b37bfc67eaccf709d2bdf71e76b7544bfebd7255afdcdfeb9597be0bc79cecdddddd5cfffd52ed5bbaf7de7befbd97fbf1de7befbdf7de7befbd97abbd72f7c291494eeef7eeeebef7fec89347afe6bdf7aedcddfdbabb7b4eafa6b77bd71ef77b1b867baf3fbdf7de4b83f7a4e742efbb5bbfeffb847cf77eee5dfbde7baffbbdf75e77ff5269ab3f7ac53d8f5e71ff02e92a73ffbde2de27737eefbdf7de7befbd58d52baeab73eadc7677777777777777f76ef7923fedaeeeb59bb3ee1d8e5ee6dafdfee84e84e62053872b7957aa3d0d4389ebc252480a47263ed99febeeeeee9ebddabeabb4e65b1b06f77ba9bbd3c673f36f22d0ff06ff25d776239729fd9a69f5b6f7a9fbc5f5c7fbf3da4b43759f1e159246d775f767487a8ab99ff3edd7dfe6df30bf542a954a254a873ccf6d9b73dbe67c8f7edb8fd65abbcd896b7a353fd5abf9a470fc3c41cfe37a35adb5d6d66cadb594526be98fd65a4b297dccd5ef6c38daa7f637fb37d8ffb1f6584a29f5da53dd76a6dc8f94526bffa7a710ee474a9bb316d75ecd9ff4e98f5c370ed94c7f723475041f1f9f26394c723a47bc529bc6bad93df47edd701090d2efaaf702e8fe0dd96e77bdfa0da1df5f7dff86f8d34f0033d3bf21cd9492a0faac79a8e6fa34b53311fa41f3e868a8664abf668a696ca06f9f560f01a5d92906267dfbbdc476b3877eaeb96b4ff5f6a3a386a19708d13cd499fe51a6b37b6cfdd17e67432290664b83eda19e21d377ea62743367b4e514e24fb3116944b5a6b346bb44ee1f65f27c3a5b967456d31fc0e97938529bef8fc84df6a76110ada9f1afb10985684d68657bdb0217bc00063160412549176745b557582cac0a6c16560bbb028bfb2d0aa68f119782e96304caa68f918a8ae963f4554c1fa3d595e953b14bcaf4c10bacd06fa3983e53a49c44a31d717b2a56a68f519562fa187925983e4629134c1fa39a134c1fa39c29a68f118f104c1f234e04d3c7081cc1f431529160fa183d14dbf7dbd8f4d9b04bcac542cc2072d8e522457b9ff42e9a12b9176206b1c32e2166104bd8453405174254ecb240110b8ca8b0c11547a24b8819c49897b249d95eca7671b5b7f4ae6a53d5ab787b79984afbb64f61d78e9d916077bf845d9396242a3c44eea56c2f257c008c25a4f86203a294ed05bfa89e4c952def324a89db972a0d76917e06e3f0f304551fc42e4a3391bd53d6381526c13ce81f27835da457610aa35d06a6bba8e4289655268a90834c219a01920000a0004316002030201a8c05535510abf514000c6a9a7a66541f4ba41ccd625021448c01020200002020106c62000fc30f09f7f8b772e5213d46283170154c961813b14c92c72e3b5500f58fee69aed566132c1a6642ddb4591ec0d82c0ce0b689ae02f6bed736e2ffee7bc3d6bd4b64887ca60617554501e9f9d9b157f26e16dee6f241f5308d6f30bb2020623739cf39067fe72f79e11fdd3a5956a9dce35e9c074c3a35c836da387f6f5ab4a6784c58b16eaa2fd760c76755b8600b5f82468dee413b55afc97b882f6fef194d6e40ab2c05a57903636e354d479fa581d1be86ec5b06731efadd34f16ff09a9e930f064decd147f547abef5d1d944dc5615a993605d0842a2910eda227b3d8de67b3d8a07e7d0668279cd961bae42d37efb0f1d89a53bfcf24b293e17296d9c96d9c5856dfdb0b6aaac472bc56c99def10f4187f5d277d7e8d401c6b036f4d6036046d339cd54d85661665d46a31205ddd8e05ee9403a69fbfd2570fb21c3b9306406358b41e6543a83c93e3405615a2a05b9628b0045c10687b9b84c389f8959474cab3e7cba92ae917965daa128ddf946cc7468072510c53bd99884e2a5942d6823c593de43fa6f4d6a1ede5731e37ab5adcc01fe34fbf97b6430a451a453776aad17fdcedc3ff967ebc9f65456fdf1209bca90185458f1f9e624e0060cd322c33ff30ee76516a456293c7d6262ba78f73254bc8fc2e600d3562b9b0969ca303b1d83a374059b6a282a20af291809e72b1d6d57a461b649afee460272f84f7293dbe53e3e2c121fa8c5b1931deff7c804b493901b16d59dbb00d64a95d58846603d002e59ff2a42ff3d0e5a37d7255a60689a483fa392a0b31acea6421ed894f3b771ea0fb503260bff551f580045a94436c5045171a5e75aa94c7d9a8d3330cdcb0d96de81e60a6cabc9ee6d34341978661f80ff365bb148dc2c5ee93af2c1368c686d6fa9caf84d0bdcf3d638462c5ecf58b1ee20747ef22b0faef74d7fc6c3e1102ce94802972c8245b44efd31c9d86393136dd71a53bc17acf6dba059e6d64effc576fe2d4c48b64315eca160d2d4a39f8ce3a230d6fec9a0999282330df053f486528c47f36827af1e020d4ce16accf61679e193b903cac5dcb14fc522a2ff1998651f6976a99ddc2ed930dfb83926ca5d9259bdea99015950ee4534cb0dac3a9350a9d31c285439db7e0e1188998ecab2f3a1c89c00afcc83670c1ab792faa7c06986f82fc8045564527705f07df24ef97a4a5847616aad30a77049a52ad0e70437948725a02c0f500a3073e08b3e1c0345ea244384d1163bf63c50380077c2758071827e7189815c77956b31ae09ce9f8702f88288926d0136fa4d018e5afd5fa73502534446205cf8a0d2af324bac6c9d6d5869d01caf2da1a3523821a509efe6e35de96298605cedc96262ddd27ea87da327e3930749ac312e11f19e4c1c4ea06323e2651b2ce7ec555bc0ad700a17ac90c4ef0e795fd5016c3e1bfb231e31aebb9d64d35339e3211c01979116ccd101407c37dca90fa0ae620f176a22449c18a3ab3513e2d174fb2f77f3b4559c6aba5378d1b424039c9392767c45a5662a488ebb854fe2d0972ec99ae9c18967506122312f26bbde48c816bb859db5e50a4b9053bbe9803cd5567263fd160cbb803a4454f77e8ea51f5598d0d4d70b4de0da623466f8f577a82e46d7e7fc46cea975a20f31c610ec218fd51f7c25b5581edaa108a6abe86af8fd12052eae36242180f10a0cea5ee2b911928fb87183d9474fc8531c84cd62bca6ba322f7e2910aec312dd296ae51819af3ac44f6c2cee3047c99b6d41e8ab8de90b4d94c502bb2b14baeed5489ac01294858020a5be99bb162de99fc8cd01ec6f8e11482b081daa79a18312c2973b1274045f123173e2024f49858ab8c56ef3e4eaf2df301de7803be7fe543e0644228c22f3ea1a7a6ba682f0ff298954083ebc1f4c4eac1f4c64dffcfcaa10db2a4b8cafa443a33ffbea2aa9fd07ffec4cebc8a79ea3f112039f517a463b4633142d546c5c7d9f419b2fc08bd0a8f53552d87cdad41c74220c47ee731ad72e41097b18bb372de56bb7106111a41558f5c9088539c3fe2d72829d85dfe4c8c43fd6f151f5ad4f7cab30d28aa7ead512fbee3259f18c16b604448e962275b7dc49e07dec589904bf6e30cb756510ef2ab70c84f2c36d772116797292a8b937a51de267156fd372e5825500ef4d3abd56f640fd580a6d973e4f0b399d4c88c0422e3d31982d44bde5f47c69d9c1a6719e4f1c4422b4c31b926c24d2ce2c6485621a7f021533e65a004e90330a2188bb2024a2f2936569894fad95db33a02a1e44b051f36c6bac69ed0cd3ffd6fd7df949edff82a7c5d0424d49384c75a7c8d65b7a6d761710ba1ce905f533ea045fb0e994fa32fb732444d69081f8c4a48b28fc475e45df888015dbd04c476412da8a2802f85782e96306ae3aec55deb370c9412def7e1a2803d14f19f30b469af87fc8ed8ae75fe91424b0d24b5dec3299481e63a9566ffaa97b75dd0cb02110816180533a72b203c1102edc3dd49b1f1f2c32682b7ff843fcf945ea195e53c502a89c897a93e9d6945d0bee95530794d639dd00fffd11b16405e400ee604b61f4c00bc0d56e1c21e33bd7d528ecee40a2cfeeb16fd80dc5f4219054215f0843278fb39bd59e1c0232a9c181408b1a7cde83e48608c03a59efd2ff0b089726420d93aaa8c98637fcedc0bec0bae3db2b785dbde2a6fef56bd0fdd593859ca22d60df570dfe8d313c33438e5834ceff37c9cb8f0c68d36ff6fec62677da38b7583e994f2228ad2897a05f7e86b473f1a6b1e6d8196bcfb547788088ff4d087727f1f087c42e5911ed5ce7a0032426fb1d568e5f7b2f762f5b2ad37d0efc5a613a38710bcca0037ce86838c030935e67ba6f50f216dc20ce5b0b87de17ffe64f9b7969d381a5dc37f9928d7d8ff3e2c78eca574ed2b9c283f561cc87673ae4473728849b737a737814e1533e1fe3ecd6d5d606a277d811859eae81c101cdee7ec8d69bc5ecbf8d707cfea4027379c4757ea7b94a2e4b84c8aa5f17db4f0fe1f665c91684a8e8f5f95c52281560e2f43100eecc4545d44f7b6ab3718ca736ca0cf1dad2598072bea1873384baa930a0c26d5378995f16077a7910aed0a307d31a968113a5851a6f12ede9065311ccc45c0933970956a23193ead2ab1ffde0b09852c4c9321045659763e16a1cda4f87e2d529bef6ebaa21370d059ccbfd57b62baad54105214e1b69c4a1095c5e640d7da73b3ca4746b1a0cb16e094e23e421296a3305164cc9a49ef64e91f68a7644e66f8a314edce8372847eae1e432e6a8ff54f3f46e2f7fc12c6864969941958e6bb30e55ed3fa4f6f3fb0eb0ce19267788d5f95fb73f50fe73b0ce36a6cd702d200ea1d0e46fc7c89c97002a3f351250d32e2dca2b68c4e522171d1a10121179140ae59af7c10719e787f034d2e1d2a536c21bbf9bf12669b025c6d52e7225bc1734cb11f9b68af2aebf172e31a4c9d8bc38ff806b1290fb2aa8c3638bd33e24121332f5aadcb2ccb531f03f0f60bde9a0394d84733dd4bbe73dffac03f691603f7d3a68162ebda0d799bf5b175a0f3f49d67dbc17f4b0756da3a3238054ab093da7dcb33540a4ba60f8f52c62e44d79a4c2be05e723812f5241b6faa152289559b6ee29b9c48785c3880c62b6d8bee204913e06f469a827912f2148410ae4b66e8da13a5c9e7b6aa96fee41ea1ba32bfff7257e3529aa672a889e2f85ebbd2ceebe796f9e6eedd65a121640ed067dc21757d4d98e8da7bc39afabebf41934a28b8376b579ba651cf1f142040697431518f6ba0effb2d404919142a18750ce7fdae989c427eae6f366968699628868ecd4562536a663e9550e30d41835269040216ab80f0eed10b3401f488de88d0e25e6bab28c6bb47b34b07d565521bbe350d42a357eee9425908e826649df849e58fd802794128a1831a95c1de9f7f3a07611f7083466a4a8ff047aa87235857f91852980f478b44643cece42488f7bb021bd169dfb4dfef3750ffa95e52ddfa81ddfedd24fa375af60311eee518dac6a311457fe36256fbb084e8938fba55938e8dd7bf4616507beef575957acd397f85fa0e264f06f438d324e7c29534070105581a9b504af4f7252b75ee73df01e17cef6b83b4ba04de76a6eb4bbcd20f1ddad3d60a7129460aee7f6325b5f282e0c692d67e87dcccbb2f7d1f6a941d99558f87f252ebaf28ae7df212055ba1ab39695f8f75348443c5ba95cef9df961d39cafb59eca0b6e1f71371491d54b5d02c42838c70f455fd6d9162c3db0569d6f4caa3620b587a9416bd3d74e98446f172d8c9bae41ba1383732a52f1ba408574c6e57ed9d98ac22e8c284f6bedfe6c573968cc996c892e95d91bf33e82c5438269072220d99618ee7bad0b853da87ded75ed7cd37d3e40d18fa4ee89a7d5350b423e5ff4398d9e3954d38237e5a82d721d32a8b809861a303635853321201d01f221b0ba1d847ce660d2d8ac86a98ff37f0aa41e782a1c642dcdd5de8d42d02d9da9d50c7b561b904139b87979635cefddcc5ee70106406f22a0dcab33752cfc705269f0d5e224a88d350f28417f33ec6516da09b40bf4629bdb291060029cfd2a07b0dd8df08c0b4427a0905616a23e6512c21eabe7495996cef9d175a40003fe0b08f2f2bb75e04ba02579dc16314993d52f44463f7dbd2d6382fa04876431d770fa08668c90feee81fc9123d5cfd8d36c6109d678ca4c9f543b227e236ed17e5769969e153f6588cb75b5494b8b8c7ac68066d9ffd757ca6b6c407d493f08b36afedbc958d894f8d150a0cf06288351da83d9ccecd42b62c61369f764fe42515d3088826854d2154795b52b594930b365a3cff466bc3b780c495e34e34e96f07add1d9436ed5675c66a5579386f580242c105c465b978e04d91178e6abc78b2fbd224cf214a151ac85a9fc931c05ae25454e13863ab1c7d164fa0f30f14b0c6ce00ca9449a5aef3022b476a431f05f9aacd7e038f5d8e1b128337b2c2fb3a828bfd07c63d78377fa784e168de8226fa3f2aaab972e3b054d2bcb32bd738c7225d9d57948059f6957456b1afa5a4c2aacea406706f0b8ca311ed62f02dda28d524661d805c095319aa1affd2217bd7004caa605921f4769faa36d5600d0d8ae1de4d41802a565ba61fbd50da73dc9fe82462bd914be0a8053638deeae4829d73a4c32c784941b1601ab30b3c66d8f061111430c43c95f9bfa98ddc812dd63ace89fb4ac7be7f47aef28e8a647360f428f96b57877c3f62fbb9d0feb78d68739a05a550d84ad3c53fdd7d709323cea9c849aed70807e7c75477795f4a92345f5ab979a239c9415e26e4572f1f9debe502e2ea6f5254a31878a8b06f61e9130636d8803cd6c8d92690eccc7cb861f6c90520ce7ae8bde5316801a211504e526cb71bd9d348314b9f2879b50ee8e198625282c18e26cb7fb0eab14992822a9da9231b5a6f19d1756d66043a0a2f426e346a5f2fb9e50a9d61712ba4a1ddf216b7c21475a0bf4f7769e0667da429fa46ef8e0778f07a8f494a70a80e6b42385daaf461f8a7444d3898c8784cc4441a65e8bc4de7c212d140daaaf698af9b220930063298127a2982ec6441a1d63e00f247b8ab62f9f5df49a00a39e222be866cb5df23a6d80e44178f52abfc8396ddb71e574c9c6a230b8959f2af85ac0aaba6e681a8b4a8de88532bf7c50524779c3c3054dc660a38ff0ede4fe513d7f71208f90ae9e5c1fbc8360bdb09ed353ceac933004a9253abbd76caa360ec8f1b0c89c167baf3bd496b9e20198f9a509a7574456637182689bade5a848a7e8466d5f002b06945e2bf4cdb5f4eec95af4f672a71bd6a7f04628559d5d9fdc42558702466b38ca51a10271d554dd0e4dd5aadd0f868b2950691080201460e3d442a264dc382495a6c7441cec29ef226ff04a2aeff27a749cb3aaf5a94ed2a65cf1a70ebb8a5310cde5eb3e7517ac1444756da8c1548a8f6bc136665e7daa303b66fc6242add0108bb6222d94d01b835241201fafc4e05842608b08e76adb447112b6bdeaf785ec54a9736373a8b9a14c0e47e2c15b2344c51a568fec3daa90b9be1e3da6944860db9bd8ecf416e58cb85d64a48bc373d043cb00819d4671e9b38a56ca5315d7f24f6e1f0ed6bc51ce230564ceeab26588422efa96db18bc8049ff40b4a8d7dd2face06c16a7a2589dac5e31bd919b188e4ee2454e015799ef7c900867085aa15ec545aec8670efa91064df376f26e247ae6f453fad269fdc5be004ec7dd6d75d02cbc11fa43667fa6b50d2d200d88323ab90dcb287c3506929e7321c238ce5eea6ce81c743955be42de9b898e7e7524fc84ec344ed33a3ea9c689c61ba7c297898ce46734d438e9f971943b30a16f9c92d0485519aaa5f057404c6fca1f823199e457b46def1ca182138e8baae654a5e4bdcab984235a1be231a58f94cfb079a4fd0897f92189a804797c4a9de58c3d4fcb32b1c4a9f222099c4aaa2d868b9e9acb7144698987772e92ff5c855bf773a03cb19f74912c7027f22716de829b94ff7fbbf14a0c657fb144fbb67614b78114ca99081048d991b147508cd922c7076b56b62bb20f0c5e9bb28a588d094df6b2cb46f26cf5ae766c24645c56bfd26e805f8f8f867e30037fb09ba805b88a9c69800b00281aaf089652f29000ec7f26ee03984f0bcfa9f561adff6043a1c453c886812d8b471b7967697fc65d99382fd477aba9adeac8395677d5ec3afa17053cc6ccca716b94c80b573acdfcf8a3adcc4897802881817bb3868e612ba1e98efd2b197ada716d00be87bdaad70010a36709c10213ed446682fc510528351b54622ca8a201660abb097c5b56fcae22aecc478ef3b59b24617dff16219c822dfa391a9666bed538fea0528b2697e1a4f073b67466f4f51c05a400eba04d53a65239352bc0a46689ed14004019b744a7ed98804fdbcaf747eb2366b9f2a70648ebf7e311a4fb18f69deb511e0192a73f08207822d4fa537f5e2d3fd3f4b7e3cea039a75d078e915d06a7db7656991539f22f5bb5af6e67ea3e90470b497fdfffbb087e4b30a71a3e77e49f141fe73765c8ea104bd778ae4e0dd2ff2d79d3ba90b1886a04fc114b13b5c839b03a5a054810fba943be499a59639ec27e6303bbb934c26468ede63d1e20a7124013151a376e0fc935bc2ea74da73f269277c1b96978aae2d9d8ff88c851ecacc38a58b3db3c01b6edec6f9148540ad0c6cc36e138177527dce8f8e204d92c1e8a0f73651629c2126e94aac284cc80995256f0f1d0bebf303a7c103cafd7453b518ad1c0a9d84a1f7eaee39405e387157f2f78829f3288cae26c0c4ea278a2189986fb5a2219de6079d7340a710d351e48bc73821070a1a8349784c69cb12f450feb139e8c57f6a7d0b71fce30c41e4e874dc35276a700cd0d607328d099f71ffa5271ffaf481632e6c540a04b9bd6c52bacce6627db26203f6d442a6f2b0eff173b3d571ad71659a259266bcf7dbe65b9466083a3a44ba05ee072f83cb07feb086bd856e90f1968b04c3818be926dbf33177550f3b7b331cdfe260eeaffe27c347b6ef132670d5cd09b774abd7d507410460033f51e31702817ec82a2b2ef07bcc685deba0139a4982ef8f6624fb7f0f9dd45d32aadf35c83cf088047dd0de4900492e433ba64a1f51b2ba6136af69c5a5ebe2a06133b740479046cd5da9df07b9f5c8030cc7c264c0ff41313478c3975ee107ced60d687207459e678499583b943556ac08fb8d815049475500922aa01875d7fe67d245082a512b74278dfb98c9c89de1b4bb4ae44efa2a6ca3e40735df6406ee0e962810c76cdb06988e325dcf716c4f441a819706f4ee3afd5802b02d97204f97f907f1c1c6810ada2794223a0d984f5d06358a405ade5e7fabf51752e913db13a874a266c3a59f1c6d8ba684e8846310347c754cab7149778b9222400c5df21ac9334c9ea1f1600fdd8576ac4be54e6876e27abf93721e0d111782941f946c0b884d9ccfbd0746a8d99003bbe14a9b26a397062925b19c32381374d564082da30fcb7ba69cc875e44cf42d7ab2bb3b8c5450f7fea8162a863079acec930dc9e721106718250d62f8870993b064203795c7fc8bdb21b69378afea5d1fca4cc4be32998d39aeb9a20eda826d22b5e088626eed7cac7ba1573ea17d3585b5a4545d9ce0a3112c860179306910759cb9facc30625dd6c705886d4ff20e263cef2e5efbbc1c7d96756cadf8131b740c68eb1144c72cfbc84a6febb44e6d75210eb2ec5171a39a4fb7a6d30eba5275f63e0771c402d4eb2771d379fabdf289b93e8e517453e3a8b7e4ab59ea9c1806ebd6633d9b5edddae1c7bf74f0adce3db491ac37ad2fc6265d56e4d8c5c03cd389d64fb7aa72e7079428c3a13b8faadb9263a33dc7406fb4f160bb718fdd0fb96e556e48b21a9babc9a95581070d857c0394acdcb2b56bba410946d19c064dcd47f834eab04d179b516802664225008980648424f1bf1b6f0989dfd531176adfc73c891fc69eba5b40419cc180749b652e8ca052b5ef8dd48070b8dc41fd4894876a2039634fe14f8e41b3ec748761b5dab84052b9244b155b89974113f18590f5e52497209b5aacfd2fe7815d84b9a967321076aeb97b9fa4d17da2981451bb2cbda73f965f34e3a38a0a8a2b594857b7dc364cfd7c8f913e996c01aa2c490b730fee2effd143ba217b1887ef3cf65b7675f7a2c89307bd1827cbb851e1631d0c38bd1c97debc2c7019c2a7f372fbc63c6e7bbe643640197e633281c2dd91846bf52b95053aabe3840cf684709df8fa288af2961253b52cefc5451907f01cb70a29acc2a26eaafa2df20180582a838ad5ef163734849edfcbf5c4a9ce8181b9f5311618e1c0fb8913471c14aee9942b0cae5d701d24ae40d35805ce06b644c44aafcf827bf59b0b1057449da27a895ab16c2203a5c10f8980b56ec2f73f1455f2513e28001e8d1fe14f43bc34d37f6e260fae20330ec0e114c1c3d4891ae6e4d5ab15141eaaf8de9de03833eb4856e2c513f97e29070ef2de312a4560f400597642408e6beb1d3746bf4bad488bd946253b7bf29d5d27777612c7b82272eddd8d0a93c37b6d276af528f5e77099722ad5a142c648ba7458f1519c91c2bc597ec41cf2ffeda7472db597e653394d23dcb0757a59aaa211d574b44472d734d9ef650fa04443d130bf269c6bbb6ebd49e2927519fd7b7304dab46ac1ec501ee979de175aa9242d15cf85675eaa6353020fa750a5bbcea78a764e2d0b6b297154068f322b193e258147b947171dd4b586d9215983f05eb4b49b73679d182c5d663e3f3f5d33693901dd101a49e076b715c8dd9ae0c7f21528bbbf6e830151c46818efbeba24c24e81937e6a85d98ef90a9517ee89c8206193015f9cca5e2df1b4b9b999eea5da06d1aadaa9b897f2c5901748366099b6428142c7c3bedd262141cd67d80281142fb3708da5a64393226b8f317896bb0ca5628deb999e5719d4bcf5390a08f163b47df116e25e4d35b46b2b668faf7674bdb2e238b7185e71269992540a1b4f955785bf8519641a7ec2abcf83a86175fd38ba08dd40c945d3803cee25dc4f577df8d3f6900198d02f06d0e13504560254cf08fb0f80b7a99e3876d22004b5d7a101ccfed0225d02d4ca048fc8e0169f6040498f49ac0114e62ea0928cca02b65a698ac3a61824ab83c07afd6afdc2d5a43d10328f71d56738f01994b023b475ffb4acd59eac5c248d71a87fa691cd00314b6077a0a5913ee06c586230893c3f23a97163639bdb4734584e016e2658daae23346c65b3f457da5284eadcf292d270615bfedaa90d1b0cf10866e36c6cc85bb08a5574223397f40ed2df6a54b0fd9b4a8258c20d9924de7b8ec26df0285782278818485959d1c5a9cacbad171c2a798963962a952af62b713066a90de07f1840501cbfd297bf303c81f304c57ccc54747e41cdbd4a86c5cec5e460664afc7d800064e21d043e4986c0a8b0e4bebbaafd20df5eb884915e48ff1949e5cf1129b98499a5a0f7e65e0e3e20e4ca58568bc42ce448b89406de1ba25b54203b147e689df31ad80e99201bb2113944e048ace0e684d68de8c93d63e1e81065c4f8c920bbc00b6a2039f05d4350619379bdd2a07bf61713b0554563dc2c0ad6832b2e4cba12cc3930fd70266c385df0d293d4d6f3fc5a241d315a65d6110969540218fef38b83a4f5e1a515904e36e76667abe78427f9fa4d1a775ac14be211cdf309412b658cae0cb24b14ff1ed66ca9c4a0964ff74a075a6b5b76fe8deeb25b599d888822105518ec402dcec672a86c6f05cdca9a18aaf971985b68c97a0315f839b105183537697241dfd3cef63488e9e0208d2c76e7c59d699f9481b2af2d3a4db7b8f1520e1eb7f085b2132fc64a382dd1126e981d7fbe3178279f87626576f904551f2f9f2c028bd51effdaf5b5208da8380c3355dbb4d670455975cf222373748205835dca2b1eddc3dbb391c833a3b0b909039b3c3ca58b36545e5ef211f875dda2c91c1ccd8df260d23c38156aa2838e8e93985444ff4b774c8ab87f010de4a71cd4ab3c1b17ac6f1f88db7f54eeef85cfb09cf357e9498c4f463298fbefa6d624996d6bb2945682977106f92d7e67767566efe3dc4206ce24aa6614dfe3b20c0c941c47d6eb208caaee1b9661b98cab646962705a0d2b8510cb7a0912bfd4ff68b021e4a2a2f2b5119d325633481281c426aeaad0f108f532e1923fa4a9e1905e4895c3b38e8da2f501211a35e36b68ebc6a667e3cc292ea2c9b8eeb6b66febcbfdc26f27ce9cfbbba8fc10e1707d9e9e890eb7690c391e1ada6c26fef0da4296be9d057428ab4722d340494c3d8569af82527a1f3bb7f2544d165fd45eec8c70fd4ce9a7e976e8413a8cadebe35115118808770613337851bf29047501ec6d0e07f4efab077c09c549186cb9f40128920913278c28a0dc26ebd8a586d96d955411c0e2173e16dd4ddc114fff94f6f9b9005ebcf56e8054ca9e1228aaa557d04d2850ffa0adfe28748d274928a3da3639b10f7e54839eedfcfbc815c0f68e81f3ae0ee944b8cc2e292dd977db89d2f46907bbe3e1b108971213433fb13868c6222ae86bf152155db3a6eecc5ba1a56e0bdd3c0bcb1a224ab24333952c1b99db26abb24118eabc3cf8012170bf877dac223916cec07adae5b029da67f91857cfe282da2000de1c74e922a4e09548c6a26a23db90096237d3395e8d0cd34a0c4221d9840cb4d4bff48343f3ab2d88e4e2d4241327f731335e041ad73256a5ea39d1ec03c06d81f35cadc49e5b27d626a2a0515dd561b0237ee121f402f4ce4041e2cd6da24112fd107ebee0b77277d1f4b26f97a3c948569586d20affc32052f56451c1a4eaac2925a7f031b7e41e8235dbfb8ab5d32647e4f594c226d2205a0f57080f00d3cb2dff4aa2ba0703de008c84dde901bdb25b254918d3d6f1d4b55bc5dce692715c8a934c0884333b325a2c8f0875374e8021b034ab8f8182669b896619ef9ccf28d0dc1c464420391f4c44dc0a33eefba10a65171cea7f72146ebf9b494f3edacef9962829ea63e06e176f729c14738ebc0504c53aa95b73735b14f84c14adb291076a36b3bc07a25ae644bec1ca5410e9b7bbe42d162e861dec3d362b4465215be93f96bf2288a8fecb8d4e596d99358653930ecf124d3ec373a3989d84cbe3533a1b5f90a734b57bdb7a6737b8f758cd751bdc939f30c68006d51cd71c8103d201e48970c7a552b42b3ffc34728953831095a712cc3f82c50681f0c9ee6259dba6596e71e6951683ef2d7eda2b699a01eeab48b961fbccebddd3a2f72caa00d0d6a766a8e64a6f052cc0815515c95ce6b0a0a063e6d489ee4aae82f155679cdf8b60460309e95352c04e8f0026e1a7a8f96b393599e49a9dbfc4a833a500c66232ba4f55f84177e936f4d02e5040cca086c5717b66d52231ea54233c17f02047da19a139065a4f0c642f5add2611590d923e886754df6b657b26463d001a50059c0540152406c55bde2e6d66dc83e47f6ed7800af950e235080b1e9dc689a9bd4939056e3c5c08a60409fee294c442dcec5894c6959ecd4ae1de176d8c82e706d378b02aa758ab8d03949b4aa1942b264152ed7f45c246cf111365d8dd984ad0c5b3210c86b5db647991d4750b4c5178316eb006582ed26f1172c2312cbf9e7d1fff0f2b2c827ade88144378f02357987a0bee94c8983149f3afb2a624c2b19cb22c18e93c95498c0241bc9aa5463b8793d1eabe7d7e11d34c592a1f529fe0313857af97a384a0b0dcbe0ef91f25b6b54d8f3ae45dfd85751ea5da71ce604902a610ad438317f71853561ab2bf1b100978b1bf313bc4437f5b27448a7c951cd378f8fc5085e4a440a214bd71622920ce014e6741fccb47537dd0120e9d6e9aaf94970395421c8ad3efa796af6fa22ab6c588fb2aa8a83ab8a53e4b30354076d9a3e924d258be9dc0e5958492d80ad3501938bf56b83b3a97888c572063d60875a2905e9ffc1c9849218cfdd1f5b2607a05f7b9feed07c0c0fef6f0c90389e154e9b0b19cceab5837723b77acc78d5130f5514e78f9cfb1ee56ff8c6e893f18702ede77113c55acdf19914639dea2f2bb825cf8a9fba46f2ee8368e94284b14a18864c913084182676ed66a3ee8f88faac887c096a842453da3a73d90e5b41306bdb3eb97a035d198964ec8041b860664d11917488ae2d58833d951030989b622110833cfd29d097a42cfef3ec34e1e1aa9869e339facd9041a8adda23f49cbb04b9e630942914fd63a74ac94a6d6d1eab278fcbcbd8ae32a14fc012252371d4901f40a912c6526b37c43812964732dc61174f9a317b247ccdd7a50f7696d5a52bc0a2294855d17c53f8f4b53581cad1525c5248946ff49c56c614bfad52f4af886249ee369db7b53b6227b60a212ae7760f9b6c44be58de27bd68956e6ade2a882d592d9fed9367e916af3c3ed3786875b1149b7d21986c63469020da0db4ae50ab209710b21a9766757aedee812868a81392c08a3e2fac37ca095c77e794159a2d1442f8d2bf21040962fa9ae72eedd70a94bea87387353ecde03b8bb905afa6625dfd38f3b3acc38637f4a41b803d8a539b1cb66ac2d1791278b4894ac74b1f668a232430e635c1a83c7102c7aadba209f7ee357fe7510859529e4b6beb955f26c57c7448704133f8a55e014a65fab665c5ad2881275bc6baf06f678015c7807d20a7b49ba87001349564afe31587693f34acf33f4cce38855603a24a1e7657d3f4cd0c324152d0b2531d49edf712c5a626b6f3965fc8e23fd16a5a2b8187e8ed9dd7a96f018289d9d8e5f00cdd49f95a79687c69c73aa7198aef609b9a371a4eee99196ef93e3c6e212e46fb37990e27cd9af2c8ec4c31be4f4d9228fac5f0c8fce625d5ce5e3f05d94cfe7cff8f24f139c5a0b6586d25a4e068c9aca9a804c6770be024e417ccfb9690006680431fab15117f66f3dd39e8937e05b72a08be93cdcc9274e687ef2078cfb2c5fe149701b4b62880e53182ae57a12422c0cd90d345f2737b4370a03a8869c4acd9202b426a26255114119449cd99b2c21ad5f29e9d6dc869498481191c843b1b856319fc565ed649896dcb13b4b644063a1037b9efbb02bdd341b51644d6e4fbb9603b7462f5803aac91b45e7254be20da5042cb2bc009887d864c9b9a7e182046e85d52ba7656ed4493eb49ce3c086527971256bc9536af9b248834f1d47bf275619625c28407eae14d261fec9ab8387d517c37a883703628097779c95c34021949d2d3bfee63acb6dedb89402e44a9d9c8b08429e15e0ef84c3f5977ebce8c136bc322471060a9c25a603d560433f3dcdf98c094f722ee2f58158f5a945a3ef4e1363ef7759be5d5d449091ed74939a635d8ab74feb90b7b28efa2231b7e1c5de280bd87007deedc284de6535d1fc96da948336f0af26e5c3de19c4389247feed59324244840069cfb6fbf7319c4a3a0c46789406a36c0aa31fe3f3ec57e4502a7945294b74e0d0d4ed35f59fbdc9f6f7cd5714c979074aaa50cdba4a8cea679ca467eecc3200a51dbf947bea22d4dd515fd4ec6eec3a60108dcb0927880d39f59a59271c1cfcbb7a5b46e460f5b5309a4cc375e1358764ef0b7931fc0d813ab925a3e544069c8a21c1cf3037df1d5a66032a76cca5ecaf2cc403d2a4894005853188cd472d867cb466e860e5b4c31cbd03a087405b051b7271aa695cb2f2392817ae4bead2da458de400cd043d0a36caf90abe70e1453a3c220b639016b9420ee47464a20353a40765da5de64b033edb81a07b21608d91881efef5c61715243adff81f83045d0431f2bbf2c1980fed399c8ecd0f22263c9520de4d86d102b466429e2945b8b44ce8af95c44e02c2e838b25dce7a2a5c776b5b82e1f613fca0d75fde143b9c0f70a3b30d330b64c89729dc07329e806c90ec7eb4f5f45522f66ddbb243bde6776b5ae77f1e9e2253657ab98650c177d51915eed702f18c4324d3051d7315f9b28915e1d9ccd92f9d22488f592c4faeb4539011d8212a6186d5d6c69c534cafb13f62ec6dd959db897c7ee12ca7c91bc452db1ce99841e9dcaab6a0076cd2c179c5c1866b5812f88fde2ae6142e580e9173d8a79e109cc79d4f4835f5ff06a95550e882210ae319be0e5f7a55b22205434d6749f58bc42e2cb77bf99bc94c4efc471574137d2c9b14ff8aa3326d72edeb5bca67c255ce22981516b8a41043fb7cb780e70fdd8a577d131fb0d14b6cbf5fe7399c48aa70b1d745011ffee6f46de9da69e550c42b13ca1d8205ba9e98a4fab333eddb44d8c57fbd3f90dbf54e7bf52f7eef23ee6b76404e5eaaa23c51e42ca612517f62e5b3bd6b543167212d54cb5a5c61adcaabbb85f9457377905d73b653f544c732c811d8479760d568b65bbeba585db255bef52c508e8cd6e36f5f23e79aa2761cf14b7d3312568ef52e1171da26339a9882442d4e28a62a3de2548486297d7fa45b7e6de2a7d088b23ab14fe6c976be77a0abcdfcee29448aaa385a859b9181abae63699d1bafc352a664fbc51b58c1f0e739a70503dd1f1b2d2cec490715f91df5604995e972068f50041331fc42b6a2d1e27e23b7bf89d28fa621a5974780d3a34af33690c57d5bfa14900da1904c6daee6963236e926f254f9403e7dacfc3473c1474323e769f19906875ac2e364aaebd60b41a7e57005b34139096dd385ed814e97a8e743d536fd5c50534c4d3b0adc9bd25fd3b24dc2a6da1d7ec1a81540e4c3eea27b1ff8b4278c316e41a00f1620791ab8f6dea0a5bc09e4094ccb208ee6fc2059ceb5ff311017a8935f455c0f0eec82d89aab872ce7d0883b250ebd861a4e8688966569fc6f24052d503f6eeb861d94a5fcbca7f206ec5f9129e9e671191fdb64036cc0d485ad61b951a2515c33218c7002ea139538b2a75b34638a9a7332ae5bdb64f5136a4606e69764147ae4c4afda64e8f606480d009e242893053496cc599900b6f4cd5c57e72ba4a3f8db7a1b6090e86b147a2c308704d80d9d77219a91665df762239c4b6697b87f709ad1d122ddeddb6c8bd79e21da835705a716278107061c3fb0785a1235458b6a36b88d0c945b476ca87c369af948f66b40428ac7e3766eff6ca8a99c9ae7cf1205cb8b9153509805862380f48246200d9f2d8e8b544ec2364af1419480c2d27c782aa6bb380a9a91d7011c1c78f214d4203585a1455bad0c21b54672da84c7feb14854b9641c0606c05bbe42a1818d363ab2e2323566a0a4a82ca73af988b3b472e4847d38ae0880b59cd538953a5eef2442dee106464394dc6569df6ca6a5662c61814a4fc5c6c6d78413f9da82164e4044b50c79b8f1dbacd81773335dd9d98ea609584a3961cd4788f3e121e2aaa006a7579aeff62c1d4d5bafda4009b6b0d2007c442a0bcd4f2ee067f94afc7bb5e7ee8241932499cab91b884dabe98ee41628860c88d9ce0f531e912fb2ab29bd85ece44c8c4999a135750ed8b76ffb56fe3065144696f6601c3a2f30ef257cd25d9d3f62d9015efe3464558da32359804bffcbcd0dbf403028a182aca7709f6db8831cb60459ec6b5aa8a761b496bd5c9aaa20b910b4e5db3fe1e4149d17d96e9b9543250a2300c0dc519e913e5bc2ede2ef381199b39b10e2482acc7c826cda4d8a754d936b13415154ff0a141ad9c6b0380a143858a476c8051aa78d936aa0937098d18d1a07e017a551202cb0ccd5fc7c0e971bfe4febb7771eef7df53bc9798ebce03314cc5e3da5831957d496d99e05703c0d0157121022b5c6dc34956351574ca7af0f7853900d62ca10ad8185280744501619dafd10f193ffff5a5e023b3af807aaf220657773790e29465fe88202e571123208f36397e1988f48e5971c51bfafa5da46e4d24838f95813bcfa8697487b3bed1b3a17a95dc412c6d691d70359900aa9d2824d70474c3a02660ac6a67e07584996a9a59aaf41a1827ebc78e8bafaa11a8a0b0a9c4603b097eea609e86fc537df7d52db31d5c54ec900758ecfc95feab6a3a293b14e8945880d88900502703f32671700830e85ebbc9ed094f277bf902f409adcd039c28ffef3f516a85eb7439bb40db6d651d7e116f08811beebb09815c7de33b526051a74c343ccc6b7cc28fdb53ae5bd150648c2673b109e88c32cde0e08c304061a23d052feb29813c679c2fef82f57bcfc7bb3d29afbd1cb1b410838c6cc9385a3fc6a75ae1c449e1fe868d160f080068cc8d8e46697c23120060907feef2c5d485be4b96a28c458cbb76a639953f3b49dd444c404be00382d89ca6f3036b434f96809479e04bafd2c9ef800341398f49ef26fe9ce6c4f003955c4141b6a8b2557ded7d2223c7414bc7e44e23f92a640f7af0dda4a36dfc130c207a89ef87c91e741202ffac6b993226d28b99f75721f0b123fba0525b52f39f53339ac3dfc2f3072dbcf1a485b71ac71dbee9bdea206d711e6707a3c2821d9babfc680b324c619f95e3211f289980f2e6f79bd044d963d9a36cf64ca4f9b5c08e10c440561e43464b5d52f0248067b79fd1fa9b28cf3d52db6c0e4effbdc1a1d9162326bea5160b90466e2665a030f3e55a06b9f4459ecec5d9e3791e5033145bf0f44148fd84eac66806269612a4b5eefc7acc126e6760387aa86b0947c50e0fe10557db5613c8a0ed9a8d2243f83ba4d444acb82359020fe7fe8f9b1b573d2f661fcd47cdeb236aadd99100024d1972b550ea184a3b237f64256462e3b48cfb2ff9fb831af2716301513e5e78ecc5c86d0cf05f504dfb24b0db08607d653ea31455a844fa12057e945643402d92d8c55a309f7610f49f5b3bf73cfe708c0e2cd405fc8071c7ac09f030875853a48ebcbf8be0a0e63ee236bf162a02b32b71b8d5eaa0eab46d97ab23b41e9e8964ce5f9804dfc8f514866e2566ead7945931d1389fd646c0db5fd6dcacd0d812475950e0066db69d2388401597f030537c897d1b88752416aa11294a8f8775621b977fd23f3ce624f9650c29c1af36e20e2d49b18d159fea57ba70e2c2c17ddf08b45826cb4ac4020dfa54ca13335087c254444232610597f2d22e8b22defeec49171c448b1fc0612969f77cec00f0687a7336991171ccf23724bc25b8fa531d0fd3eb5e6edfb41fd4fdec61aee0e4a8241c10c2d07572cc8dbc322098ebe4af47ab756888392c7b0a4136bebe3447a996ecc25b310c7127506701edd620893f1d5989301e9d33b2ee8ab82490cf4647c628230d365be5d1d69a00d4dd1995672d99277704bd1670d11d6838b5150f3e8f4ec85869d5f468c18acdc04ecdec9b7d64105f05ae5106e16518a5ceb5ea92bdc7d8a9936ac980358dda9609d825bf30ea4d6f565620cc9a2acad44ab870ddb95e91645b6116130da06fa68ecee5f97b515abda9b0a18595f415be17c5e3e3fee9c2cda1325a46ef5d10cbab82881942e081a14d312d09c8436064f4c663ad69ec995e286b0c5e839c11036ae2d88a0573fff1f514ede44493afc19ca0d4b343e37a39f53cc8994f9cf23fa14cda332ba14ef5045157e723e4f5901cba296920ef3852631c6d6685902a7ce7ec0e09017deca4a2e4d082505f085fa1e946b42ca6d16ec21e8cf15900c17161398825741765323b592098514531b1c8e43dd45281ffb2515a8274e6b47a204c6fb9f5197159c38b7b3a9443d849f4631807813fdab448996c04525f85a3e9fc0fc4bba01f10a02f49ba3702dea1352a66d87d3b7092dff0f614343a45740fa4c090d7baf96104ac40a98dc75075155a02867c3410652c05910152524d2db407ccecc00e25f97d2a1ebc139a83a76b0f123132a532193604b675a98a2481a0a543a215c43fc26c0f59445f8832ec7424940249e5c05ecf4d66860124f23ac97f7b96bee4fcc81bb61bc779b164193d895f9401a3bf1f72a2df5a494648f0d379007405a32a23d18a4bbb7a5dc0157e42dfbf0486434f945bb4da32e19a349a6fda7086933e5cc02021e9dac08fead4ad51bd84702d611730a976f8858cb802727b16733948e60ccb50ba458a01a87fb12182e14bdf0d768fe91c39e99b2921637c86b83fca622b66dc0182b48ef983f30d1133e360a2203eaa83bf2761e6db467e677b2188064176e7ec1b69d713d1f952b142b82bc8ca91f4dd5a7d5a6ffd8a9844914037670710151534a6b702b2ef6eacc3fb152c97963bf1e6c216e7e4c74d2669bdaf5f834bae833a36eda21b9da86210d321f39f44ecd8c35923d9d03d8f09fe438a5146e8fc6230a20e586f6d412df39c96081ec9a1d25a380b7fe5c8fff44003d3ef892b3390746a79033b46829353af387e3a45c3ba8460b4f098ac21a75297065d08577f6641c61726ace0e6276156f9bece2d9923df9100a12edd0989e11a92181f649c9f3f09829972233f63c79c6570aa41d10ab221418de06e0bf05212f220e0b5e3ea890791054b5ad5de9e19d1a47755ddd3ae0fba35f3a0694d2946ef7d8a18a30c21572865f0ce4788b1c82c6c654592c975e8354e06c67fc5fc9d475645bbfb6e5b8d971bd91bafb3c395dad59cce599fada312162b5aec6e6647ec3767b32c028b96f631bd53b667fd682776c7b6ee4a50fc1993611d333473b73e36ead1ad6789c5c43ccc4ad2c6dcf698582c8c43ad23dda8645a8b9e563bf64bbddffb11c3ab14c5558861e5bbc4e6286a1d5c0d7499d691e9cb765500a3a20bf4cdd81dffcd652cc5e0a245b499ed28ebd97eb613eb934db7262cbe4dc4508f1d1a7b4d7b64bfb1f5cc952d8f931823fbc3e4aa70aa91c230fb7bc7958713635b66f62394abaac9182e495796d98fa3fd74fb1bd894fd233e9ed3cd7ebb2508559bdc122a64abde15b68ed3d6e20ad0f426f3b685f04f075cb531a0ddd44e8cbb07ac90b8918b6832d9518667fe681756473bee4a58789a688bae1fec7cce4c83669edd17a489278a444e57b318eba5b083d06618bcd8a3c06fa6e5b44b0d1db0b27af2c26c2ab6b9d4cfb4bc7fefe0b63fa44c6650dd545ed935c6ee63b554de5bcb4d1484ed5d94a78b1c4675a2837f2a73df551d8e5030792a5a5916f09095e88ad96288a04f4c656b556173515a5413f96babe44d7fa3a6da920c6355cd0448f48f0c18ac80082e7156c5d2148a078a532bc9ea558dc004621d3c3685819d3a6729f63dbb5479f09dd5855c844aff746bf49b51abb7c4431db339d27e94a1b147b82aab635c4fe72d435534fc74939ad5b425837c48ac44a84dff942bde64580023e8d1e1c307e64e4e316d8eee542063e0c604184bfad04988b02490f6018d9dc48e32645ba035c915d147bae863732b0a075dab52c80acaf358798a079d59888cbaddea54d7e22235215c5553e5c116b35d457dfea08122a78b37666ea8042698f8780d00f468324833927c70ccb048facf98e284657008623ac392792905ababe60ae7e23f6140609a78dea1ab7dde0503146376057bac7b49fa395e8e7d2e84913fbe106f8c08003c09d428f43986ab6e2cfd92d2758acd7edb97f40f59281a0c55e8b7e4772665d3a05fd2541f8d88a668db4c1fa5ce77836d0c2fdf46328438620af31bc18666b7ba82ee2c0575faf074e5f21c3fec8fbff70c178ae6eb13afde888a36fcb071a51851dfc66bbf3fce56d23d0faa6665cc8300bdc0db3c8b7e4356abd58e462a4d23c66ee8691c288059ad9eb3464eb8998010c92a4cb119f77c6cda98265986f016d5f6ebe4252453f068866a6dcfd92d935525407f42c1b9c8dab2cbce8d200fed88edc8d65316899f09b06556370a7300ed58b36ab7741015f44893c6ad0de97e831773eab58a05b8339f10847070562c0893c96f18e2fd24d43c9ad799b2139860276abd9b71e8777b5266e2185d2fa1aa54d62760777d0b4d11e3bc7b856816240bfe571d4f17299a114c27a969bb0e6abf54b7923b41c00cfca96c0882521d3aaefb638e2eca2e04d351a93e71d7998ce1468dbddff0b96e594bc27d0b844d493837c3c7534b827f1dfb09690412249286d25deefd9d74e3b550536ee9ad7640ca814251f24c91652dcb37118e152e455e642c68f69856d808e92514875252a47da2bbe62402dfbf23343983301219731091a0c142982fdd8b38bf3158621f4cced469029f0e76a3960b9c4a6fc356031859e4dc998249665fde64a1d21e59505b926110c48c8323cbe6a7865531899fbe074a239fec1a067e2e55c514754efe1ff9084e724a3acb69933131ba58e3584303f3525c0568de010d2c8712eefd045c6e1a8e3f8e8fa468694caad25a3f4deacb0b559e0c3ade96774a9902bc7b72b58838d6103591cb8d8622c770a62f8c2b2497315b8e81431570ee022ef332f543c091bdcc0aa246a1f0585d5c4b53641d5c53efa46a7adc81a09e17a1a1b97e363deee58b47be1c119a38d238b2e9f9d34d99198b86efb75da26a013553718072cf2b051abe18b942c7dfcaa5edb911706ca203b476e5f07ea4034ee36885cc78e5f92dc2cb64444e6b0b98c0b24ff43659b67c3633275d668216f37c350b63e6b92b6b1d3098cd2e60ce44007848c43b535401843b443e4b073796fe4c0280435afd71256717a84e1f2870abc73fb59072c3b1e65678f009fb42bc0632c1343581992e27ced92fee1c09d7a73f397852f897d4e36105c09a8493172ee3cbfac01ab5ee6b8bfc51050ca86f19e1a2fd2c1560a29637e903be188603ef72f75b28f1f3d7ac5c365cb2c5d4a7978a28c55e86ce7af129fbdbf745b2bfe06761c9b05c3610f6f35f9e91cdb1168f98918a7b356b1f2901288c644b0823fa887d8c44340303598c060442d5a58891ea90de5380248d264f259b7399b7f41d0bc8455b20a7bb7453c1787d6003498c857b87abc8f4f8cac266194df79865fead317205ed6df2996c4ccdd39c2549e3b0c7c401cec3969489d4c774f4c046f391103ab270d8af4adcf0931fc5f449390a880e195f88fb9d28b01ca9b5ff4eb7741879739e9a1d62c9fe40c479bc9281a37a181a46cdc5bbf6d015bee3196d0d4c1efb99bfdd84103c5827b0cb3b46a9606b80b65d0a77c9ff220dd480b6fb161fc033746f57b1b6405d1edc7c95c9e3789aa79a74e6e995370c76ebcab9a73ecb86bb80afc8d1accf2bf7ff390817e94af23f9f83386325fcdd99791aec9993c3be078549ecb13b2cdc43eb3bccc91ee8434d7f457219e4ab3576c61c00173a1b68e415306571c15de464357f3210449dd0bbcce112e0e4f6cb72925f772d15e504606d9fa403d1dc58d441e6048c71bfe0cdc8f2526a7c47a18e94b4738004ec0cda7ddd22ddac92b6dcefce21971ea6ef58e38d5a0de35bf39a7d90200c4730c5af2f0f050917b94179ffec668925b8b557542d0fce8b5b4f4c6498a681561c025085e2c2a0410fbfcc6d8173cd206480ce7c967391fb3d78f9ddffd9f3497ee3349a97c807dc62531a1f4185bc32a677dcd683cb113b324605cf3ab4adfb7e5660a760f9c0c4f42ec41cd42b81b65226b5270a1b583b61ce640ada1c947414f3a231b36c32a601d440ecc264babf6d1e1f44e53ffa2c65be0caae00d64ead1b66d993d75d1fa6717c0315b3563a3bc571074bb941122950773c8f8d06d9e7da8545e58435621ee4b1db488e2d5423acc486570a7796a93ca39630288807b8e31eccd2a012e44b6513fb6a8ac2e9f372e500cacd8099980bc78353ab5a5e2210950d5d3a14f1b134e42c93283e58860d88822c10fe39ab051218f9e28614de1ee70470e814b794173a4f33203a16e86580e93b90e44fea8ee42471482f71d22930dcdefb872585cf97883180ba2147a215d6aa2c012d8d6d58d09a7ad5137be8e4e72807b4cf2baaa105450bc1af8914750220e1657011f44e437a8ac322ab8927b72fd75febcf244642684d56cb9d403aca4a133c4263070b731c315b47938d0023a35d1b883ec02976367172da45d5bdd25700cbbe53085de542adb3d31e604393fd265059a3801afdb384523510b12b3ef725664a802a431f2e6b3fb231c6e3fd0f4f3128248e9e2a0cc0aa4a3eedac3de3c4a810d61eca1a5ed1fa9fbc792c32131376cd0b5b25617acb21e77992c418352d668b5e3dc0414eea8180594d78192e2424a69592d08160a8a8c072251cac9908c99623b23c64c1c0fa08b15e9d546ef096af3bfd523c9b7b1238d24c71e2b9aa14226d698c6d3e36b6b6da875fc519d9055a4a41b47f48621e1526b14a1a95affb61644ea57f2b9c20fa42af13c9fc9a32df65ee9c1e87f50607422568b6df2b248e8f4f7d0fc9a828b61f47906c7ed74c2467c9e9f21bc09bdf261380fa2d6ae5997aa40b3dea2513d37bbd2e3d60c34796f814c68e6955e22d77ccda7e07447a595a4e76de1138c14b0cdb85df5ca54ac58ca62e420b58c08f8d001d4fc9c7fc85ee9ae73979d3df2e6d4d5ce0d47141f55be55c9941b3b447960631d106bb9df456f91fc4551e3bd2367cc4f5ac58d4af1891c103a3a668b4309b200ab9f191f6640a0a3ccf67d5da47f9345e2e02076b2fbe1b8a0a8f3f85ce67fa2f671f80c92bcbc895652c1310a91cd9886e7070d431a40bda83b9116e96fd7f46344a670752bcb99f0e7b3187a99ecf8e48e02a19a29d72c759c1c1fa6c03681a756c378bf1bc761ba48ba3e0a59ff5312ab6ac9d73f471bcd2af271488f9473aea8a32044a5462342e927aa1c5a6f58b449d672e2e1a54b2516693b3aa0fe2d009778348b8ef85044d8a1f00d416feca68de00894b477aa1e06ddbeb072d5a1e5a4223e372a7e7eeee2860ac0cff227505d6e559722b820eec31c59ce545cd2751300d797c645d0fe6318aebf9541673fc6312daf81787a0187b6321bb2423ba3e2499c81dc4a345da582d4836b793947410da375d3f6752be9b41e27c28da9a3c1153e7918daae5689ced25b09e107712458e9381dfaa07a9fa838e537626d5d8ef313c67b8ee3ea28bba9e5b004b2b38b2189df438ce1a4738e39996797859f3c24e74302d3923ea0a32c7f6bf25b25ac4c8f12d6375854326fe429b2e04f0544cac73e427dd387614a72fc849f74e70e41dbace5dada2ff20b02c2ecda6b7de44dab83906b70ee12528f982b97f22b8f876e4806cc8f1a4c5b01d141ee9727404be3b04655f17a5db6dd95c3a281875431045b1c75e97201b09e60c78d2406502a896b7ee2b140522000f0084585be405498febd069c37654d4569815e6efd892c61135c68876678361015b19e77a590cc1124a8042b7882c5f4b4d752fa79c21936d6d87c7c8cb0f5ff2dc3fc1f5d769a411e858c2f58ce48216d18897726b82f8946f93d53f707fae25d383bf31c2e26d68a22e31251129c18d1e38b2c106c70935864042a8e2800d10630f855943ceb727d911a06a4e48730642442f9fc331ceca2ba9b57fc4a8ce50db3465a0d7f363798e70e15a9d0f82cfbc7d04476bf714754af4fa514e6758dac14b309ed41769ff8a3154c60f101895f15a2724a856128af4a8d740285dc01af65f5ba96db46cc887320270239a3446cd181ac055ff459d3dc30953fdc90e1075657fbb1c8c9491517fc77fa81d47e07e3fce19998570ba399f86daec3c090a8ab3402a28017869f6366765a7dadecd78fff19ed24fa309f9f3e0444f5110afd98b647eee4e75a790ff798ae28810e3c88cd544985a62c3dcb637909018a9e786cad8e8daa386401eab7e7b7c5027f5e1b89085bccc5963626649faa520fb30832eae3da6f96cb5737339f33d66a09ac4bb60f96a1d5a953e41c8dae8df604e4547476b71d4376709a7223669a29893c89272efc81b9250166a53b5a38e0c45a5646dc140e9e7c256b22c9e651a6719628a056378e4733ec3d4f9824adfbbb4f7f3c87a4cb2b55bd306fe984598cd785c7925587c8bd2d6ee944a4a3044d7af0aca96278c75cc7f49ac376a1b9672bb3ea389da83487c07cad069166f5748650aae8e294e2a4e1456945dbda2877493d586b96494abb46f4654c918b629806b024000d35734df33c8506b51c7062910983f8c46e91d991626ea3cb7c600c530fdef7f220b81678f92deea97cb98dcaebec1630d969d052466a30a1700f18b1ec19eef27cb307d1049e0de7ccfc242116a12c3c8c9441718f10e02145f639a85db8df042a0c3a2be87053b38a88e0e9c7a432a412d4f2c52fdde1d925e818ee02f42d385117880b6e10b2b56e610244c4ef87097dfef70aef69731c0a1040973db0b4990d1373b2620ab135acf150b0225c6c318ed9053f5e026e311bd9d33ec14ac1813c939199dfffd06f4f591a287f548751367178769ee02be1f3011f22584d3154828d2ea285842415e3a64ed996f91e56fce55147323f110ac6226353076705d6c55786feb6e5e986bd672ebd47831c4451c14c309f320349cb85c68fe1487e96cfb8119dc554844623821b1009ab65da39c00f061e1ea88e1bc6c1665220ffe48504ed6a63dc56f3815c7aad0f772b0eeee02397842f33023c7063bc704007d9be7fd63bc0fc388dc40b33b023a0bff033dd1fc0c807ebb4f0c9eb385afb1a6cf5140bd1c5b0ac512c12197170a1235cfaeeb533f509ec31580898f594d346519ef639755625088bd78fd9536eac16c234f9e404cb55528ac33d51d5b8ff8d14127f6997bb5f4c29b79c9e87ac5d559266c59ad9342dde37b385350a815da4c33fd929051d7c8ac49934a52d4c2c2255aa791843b44d44128deb3f6b7285d14e51267972f2fe3d70a41127756a1dc71bca87d9152075c6bba7a051b7fa6a0a7fe4e81b007ec829a7e60405a346ee8ef4aee745e3430d57ed2eb56f5063e05c83c0bf7e35d9c48b4f20c9d9381f9116805110222b67ed3042f05f89b91659e453d0d73e9266581e2b12e51ab7530e6f10df0329787a9afb9543579dd4f9381945eaf33bfadb5122170e0ccf194a5e14f775dc20c8e1d244202222597c91b57c9ed129ca71288660cda95bebac7f6ac5acfa11d4172b556efe513b96e0f58e1eb9150fda2a70fa8520f588c160010ca2d14e8746712f73de3ec10638ea5cc5f593f76668cf0a30f803d1912fbcd7cd9aa0698069c760d8c7a06a39d1e67305504b0ee076b1458549a728cef848ac1b173cec47da92efd9225638cfb33fd9ed82dd49d8a0f0d60caf56a472d7dcc358fb5805f2d335ede924fe389710154abc104e2a7b8eab85ce5357d4dedac3eed6cffd3ab5ea5b8a57f76c0e6493f76e71fc370be44cdde6b17016c5c6cb2fc76c43788a7e84c248b62d53e2f05dec857f4751b4e8e05f53e5f1c180eccef8be2d1f73eee1bc2e43312d27ccb6daf2cbec169bc2d8a4ba9ac046203808e279da06c886a3b449344d9b8bfe1a37166efa668bda76334dfb5249ddda5d12b012a598c4a40280b6f08318b8fb2944449c3c11de1e67a26c179c041765c06bada6e0fff483155f08d48a89e0d458e45f38839710a9b74c69aa41fb9cb2ef4afcb6c1d75b14f913d3d28cf20fb9f74ba9d37c3da05c82ea55ba82997491c4af1a72a29729b035f4347e1d5b44900736c706d48dd494e2835cc1e053c6868521e01e89eea9c42db803d26870cc40d089a26fda1fa23901ffb4285a992454403f8d3a4037d0f8b4d026a092243eeb3e69bd04382fb733785688d8e5b97ec52e6155ce91169e07dc44ca32b97f7a5f97430997fcd151e8e038453b1f85e3d8dedb1e80deff2103f02e3a3b8475de077c581f3c27d116f7f681a5bbd193fe5635a1179666e5ab1cc1e807e25540c75d7f088019ec2c0bcc167ae3a043920ff3c92200fb86281d4b39fd4633955620deb7e31258a7ae84fbd9d840a2467d7e386c9c59e5cc27e83eaf34a696e279c5077368b439666872b2b850e3ba4f433f4ef5666f5e1fc136bab77e4ad183dfe06940513628371f606b6333508aaa229494291d7741f00b38b2c5bc334eaa11649d67d93e4b3a26d31f8270d58fc63c08677e94771b22bfd5fb8069876bea55bf25e00cadcbdcb4bd63f8a955b111b57527dc3959ca9fdf96138189e16b6b1a643b759b472087487b99c3708561ff718b234773f259ac3605eb48b491dfb410d0ea6b526571f23a88a10120a0d63c8bc39b59e382a6264a2319bf4b883cf653aa14e3439f71d1d1b7c95ff8b4f6838c1de63576ebb1558f6cf1509e65d48444249c5f4a93629a84e101662dd863243c88da55fd5528a1b406fcce08ad9fd28388e3a1db4514da93fc5540bbfd4b47bf4694353c7e004690962816c288dd524e2226eb44deb871d5dbc20fd0bb1e2723384e18e00cdb278342dbf24b998c01f840685c142f39639bf8e378b6ecdf1ef455e804ea0497805ccdc9cac7acdf5ef81ba70523d8b4707a31ebcf7197199c5ec54af2e4a6545c2997089d01b068188a829ce4a505afe62dab9c81b7cc8e9e9dc62593f9262ef2a342ffb13e35734fb166d31434d9f8183773122adad7b71b59aefc934f9c4d95c378caeccd475b38fed1d1dfc8c860563dfa22fbc9f8ecff3115e1ceb59c14ab00b1459a09e70fd608801c655d02137e3a27ba443d72042577304e0c2c3c382f2d65615bb9824712c466a7695952007f83c9e8f87046000b427948bd35bd9912bc8937edbf9622e8ebbd9c3a72031357ba70c2a89b6d3db86acf9856506d1edf92c39231654dcb0d4dede6a892bc7cf4743a1e8168585470d77352c02455e640088a0264afcfec7fe349af0da5ff0e7b4b8577b2e1a3fc40b655d9b3e2775f152ef084fa151eb57cbc25ff582e26f63fcf9ead16e721307bc18fecdd0393c8d43fd728e2c17ff8a67568fd984da42c4483d4f579c19e0712de8dce7e1f94e1cc53d8d5d68edf2158952d0a31b05cfdda9ada20a97f64c807ef8802605a7da04d3266c375c0975c6e0b1db440454bf10a81da1e89eda384b54f46c69b02579020cc5bc17d9bbfa39558eaeb35d0920057fd2d2ddba049087102b2029e16e5ac9312921b6732f90c88f57ca1d637950881d334a29dff015868ea4737f0e5d0d98231d47f8b65df1809027d67604df9065ebc77241dceeea211a3522e802366b7f9bd790aec9cbb7f6969acff45c7fd4b9b5be9f559603f6db8f5208cc3dd0fd946d46f3197f91514732285f2b92201c7e1e77d264633fb7e3ec4c1b9868ede48346949360034211be613a84fe474b9e9d8e24f5ab1c437b07adc2404c50e83563c20882c4dc38bbd0217f8908d44955c6c32c713262fd688039f453ef80ef7f610501bc97a38d8fecd96352ea8a1efc966d188486038db0da8b68bed980bce4962146155000253d48b9455fb2fc9a601b77b0ac2c8d55493210a10ee85be64752e1a11db6e275893e9d80136edc84be49311301445564b2cf67f27eebae53061c4750dcae803165606b75e46e4f0bb471b3daeab37be7d55e8e42a8c2dae56869e4f8134851c111d09495f2ce10b2da66b1676f40212cf607db6a0778c8c9b3b5ac2b9715535b4e22528367f01f224551a89a93b2faf404b900f9d00f495103c1b21c758e0105b3c3c01bdf91713cae3e957a4f14f583aea2921cdea58674288ff4385f28f45d1889031e3d34c6b36d5d52527b36485110337fbb22859036370fe2f0a1f9df5b3c9d75215e2d193f90bfe35d6b2429e384fc9437197a1852c41de48003ae28145c83360f041f3f08ce72530c43eaf73ca5dab0b83c4e837fa2e0b09f17a931dcf9c6e333d373be2a300fc8b84dc69ec74c04c777aa1e1afed4b3d303b962f83642469763cb8319e890376bd750993a81ada1f6c1464688712f318837be6486984b4f6cd0da9db33a07969a65f505ca9b8712066e44e95a9ee9097006bb6fc256b2d8829cdff213fec4515daa9a96a310d63d42bfcb20ff30bf4b1fa433916055ca02e56aa3f65f3f3d07dadb8c336b2ec8989e8d41555fad18138ffc2cb9f6ca7c14c4409e4b510aaee7fb7a6d68cce94eef0fbb1473d8fb760e4d0d061d9a05f262e4a08899b24f93467e70c90c1c4fa1df8ed1e172f5abb2716495c2c9c4ed3c1e4d5b227414f4372a5643ef44e1a5f425d47d326eb86e9f3b10ca2695fe8c959f024314b348c8f8742126705cd1929216619509ac90055046dd54db05d11b9b8d2cfc49671060980c3ca1996d02b8c7602da1fda6d5d4052324e07651195a169676229d67a82473b2d4e62f2ad0a61088e2f615d353cefd2cea4b22e1181756b449fed56f55cecbb0fc8be41a52fe0f631668eb001f5534bc11a4ff3aedd91897dfa8847f00df88f4bdadeddb6dc52a694a40c0907e506820651aad0729a028b32854a18a42ba7dc800339a032454c5d42860e11e33ec0748f1736ee21ea4125075178a590165f4c99dd51b4454622f0a4ece007d5d5c415f14a97142b5298d8a0460d2b30585d1bf8d270803b81bf96bb6ed0d9b4c2e75d29048691eb570a8181629e4d68d4f20b95da51ac1a052501440980f94e9858f7c1e20f3a53ac0ce12306988f189c98a095e36b6bc7d2e5709c73c8373b3b7e63c9a589bf7b9ba18724e4f87ec4b9fda3cced1fbddb4f250f7d12ee6637abb9dcf9b58686539a5ceab85161f613d184131044b9fd24dc1dccdd4eb254911353cc40053f3c9971a087240eb084104b18f132e292c4055efdc7dd3d35e2804b1521ac10f22289309418a003557e503057ba827c5097b03757ba82b0c8603eae7cedeeaeaeb2c3f07a41abf64b01a94e1ffe92011683a594524ab5ea72f28452eae18d1a954644100e1a1362d0d1952e26720033c244175afbebd5e385972b5d4c607147913930a4480c7600c40c64328021290015266274f55a39f8961851a29284106ca8341962091e3e55172b2c413321825c50440a508e48d24407a40ef0804506a650428b1141b001019a58d124cb0888116811eaa204457480a5081d473471224ae94c61832c56a2e82125458e2a1d78554971c15de9624205a418586922b6bdc210f920bb30a243ca87252d2d3de8713da1eaae743101856b2e4d92b00f9606a92c8a64f1c50e2f9e2a4b18713191c413aa1eb2f050ea2107525a304ba2c51076a64811c3061349f816d1955570f8c05685c633e40453aee4608b0734004494d3581ac01dff082164141e8ae8020ad8105b7840618a145862aeacf24382f9db731b2892393eaf3f96ec8bfc3b1c27bdd26aa1943c351c4bd7477ae7bb4be6d9e14443973afa3d0354fc20e5facb9e6fbb2e71c86d720ab81cdfb4f6fb66f8f2115132bfc89f9424806b07e5f450b27773c82cb98679e56cfe5671393ec922b318c627991d056ed674dcbf861edeb8539cfdee1df2ec66d7c2128bd3725c387eb7c3aeddd935ef589c2b74387656ab3f6a2f35d06acf5a6859e4faa39bb28fdf433bbf6a45f65f9523b7d65a433a821f589064e184ea4811590800cbad5dc507ea302020d0f241750508a4c46470aa01b8b5ba8254b7528f210a16acfb5de90a42d9494190c5e5062e273c5839d2df26dec1279ce0012770d08108216458d4e084cbff996043650828a838028b1fb2e8e834086878c10a86f8e108089a800100a860e245151df0600a1213a0a094504109b48862052d1cdacd95423f30e29401a1166469c10f4f84b851e34a971329b7e630e5096c0859cc600632224ad89030b1c3ad396c48ec94a67e7eb7b7c319be4b8f6421e14ad7125a36216a0696d8000527a0e2850ca4ccc086900d8090a2832dde95546a7084f94a293ad8c22f574e992282d1955360593aa003a88573ae74352972ed9553a88461058b4170f4af08395604cdb8a165674a9715472eb37fbc3376974d974bf396aa90217ad83afe01d1558596eb574aa1040c22438090628a255250c1054a8a1a42437411a58928ae7765951f54114c82a0c3c4c582af2443bc72d2ff9a876e1bc8a3bf529008ca9ea826350b447f476b0d8e406edde48bc26d9b4100570367a8e10d7de57f577a2dc82eae0c816eea5f40ba4e15f0af00f51d6f7e972fa5945fdfa77cd9fed2bb91610ffa3574419e1a70001d1ec24da17050960cdd9d2ba12c19e27272aee01bad658da5e9f5e8679f5a411ef23d1c27ca9eda9fb31a50ff8edec0d16f90eb9a0de90c30b782337878c3955e0b352e0d812ae03bdedc63f89453ce2bc718e3d4925249a904ea975e030e70eaf0ab903964b66b7177167daa40e89b4fadc75c295d4af7ea7ec537f95d4a29ed05a7c421ddbddd5bca1d29c598181819a5e6c989bad9826fbebb53702cb9974adf274df26738facbffeb2fc29da1d96928364fe9a3d9b9bbbbb4a2cedddda5a8737777297a2182e39856cd6e760347e99acd568c57439d625a35ab597094aed96ccd18af788869d5ea285db3d99a315ed14a67b31563ead2359b2dfe1ea56bc6e0285dd38a6fbe741fadb4dbc8dbbd7b889d5b1389439d3c9347becf8d7d79b5a72011943dd1dfde41943df94b7014f202ff9ce86f60919e936b7fc34374b5f006bf344cd9d53a1c85783736ece1ef823cf9378074923ab41088b6e7237f47d771fecc9f4b4129411abef9a616c243d8fd09d81d2d16284c5e0ef8241426ad3bdad1995cb9fc5656c141ecfea0d194c6ca8812362dc274c41ba2fff895e07acc7577a7a2bb5bea83fb4948064c90ec9083106e707212aefb97beb84e99e8e09452eac3dd65d7dffd637eccb801f311c3cb955564625c992b5d4bb690d510c8eea654764b69bf299db3bbdb9bddbbbbbb760c8e7e9929a7753d5bebbabbb999db4ac9dccc2d7dd224219fa79c53ce39e79c73ce39a59c734e29a953eaedb3631c57a94bc952b2ef7853963f32334b29e58fcc52ca1e999bb949d38a9452063cbfafeb46df4b8cb6b2acaf550a7a9728a4c3af188bc562b1582c203d3d3d3d3d3d308ec966fdd3281ebaf22b75eee9e9e9e9e9e9b9fcd2e50506262646466686c669689a270d0d4c27d3d1d454d94ca552a9542a158bc562b1582c20cce21607b18b85e45367b1582c166b0291322993322993329a524d8d8dcdcd8d0c1cc7c1699e383835dd0d0e6dd9a0cf5512fa9738f49a30d884b1582c168b259bf10fa338c5aa19bbf2bd43168bc562b158327072724410e11f0c3d0c9b6718e674efa7f933512a954aa552a9a6fdbe52e95f9c41d33585e66b0e4dd86c5df9ad52a9542a956ac26013366113366113f660188e30c28c1924d0701a349a270d1a61d7271d99187b18bf546de2b73f1faa947a95b89aacd995cff67bbd5eafb22a8d552aaa7255ab46e82658837333beb8fc24c448a0416376f96b782b4cde72f9b91adde417bd15e6e52ba4c94da6e669326d237e491cfc7c62efc76f2c6d3fbed4692951935fa370b45e38da2e1c3f2e1c3f513896b6702cd970fcf16b388aa287a3ce1d1ba5430247a3ebd4f7954affa27875eed8836a94c481c4377f6cd4e5e734bb8dea53898336cf760a9dc5d9dea401889301f86c8eaffef4b06391ab6d137f3fc65cefd975073f0b83cf3b1679cbb5df9e0addd54247b1c8cf447cf3ada32e47a067f76367ee59f7cced4f87c1c919230cec7675d5750bc45c6544fd094ecfc743d273bba74dddedee01f87c381c87ec78e138ef0e16fbbbf463cb6a7eec998d7fc724cfcdfb3b4af2c4bcbfa7248fccfbdf802c8c9ef42550b689669471dd7f4a1d33efef72e77b7f2b775edebf933b2eefff491efafe25b903e3aaeb7d7dce0377803daccffbb1270516fbbddfc12c348f07b5a9dfd284a3fd48e1f88d4229343a962f6e3fc769a0731c47813ebea363d9b4eb41dc5bfb7ddc8fa53b7ad0edbf723b0a72b236cd223e1458ecd761b15f079c976b3979343387cc8052e2f09151807635390a72b5f78f01a5348de6cc53a1bb44d44e03ab942be2642c9248314e4641d103fa24dffcf12995512a5117cfc67c9ff7020303a3817d29488ab5c9871463b104305fc748bed1b23c4e36c4373b4ec626f8e60bdd9193b16effe731603b71b236f573326e0b378be164325d8eef7b19cfe747cfeecbcb783e2f331c2f801a7b76fd79f5f9f713fcd13317705e9b91125f3fb9f647c74292790cd84e3424ed6016e29b3f9262a42f58ec7701493216fb653c9f2f24c54af0cde7663c3bd29ef43ee48ede5f03a5c441b29ecf2874163d94ed8d1d078e24a11afc8e9cecf68fa458774752cc87df7a2dd84f817722e0aa9e1d3efd4acfe5f51088bef480507fa2a110579d94dc781801575d6751c2c058080f19099943b8c22499979b3f45c99c838eac628b046378475eb95ce4a787574145e73ddcfd09232edddd407a40e9faf54448490c03810591d910e4490a8856c508aed3e9c4ab4d1256c50e2f409c48b5495eb63664406cb071a510111a983fa32c1b0f06d8c2084c96811f7cc0648a2760387cc07b70e2891d708882830e78314505585e5c48c9e23b38181e98b2c50e3890250c2b3f54541184117032a7a2a94329a594524ab550d4b9318ab76b574a29a594f6d8fcc5c51d45d9a44abe27aed00fe04091c4c8122a88f540032125988861814b134e5823390821b5012a487a008410aa003591848804db918fd5055d71c11d45d9e4a2188d8a7441feb9b02e87231d906419e2881a4cb1c3084e4cc5c9ac4a9427bec5c90dc02b5d5796b8b2b238e0643e6825823afb90011643adb5a93ba9b5c2c0620e2fa0c28327442cf1811050a6b8466f883e9a670bad4b0a0b83d55aadb84e70b52badb8a6b0507ea6e603a14c648cda55ca919612444b49d25290a8b4bbc27e7e7e8ae0e0b2e65416e50b36c92d368a181f919211364971844dae4329a5f5e78f0f1c952c62ced40533eee325032c06195c5b5c6250ca94524add9d8bd878d24388d43d6030bc5e80c165c4750448114ec6823b3333333b576e62a451f6f1920116830c51ac6814ac71521ddc65155c0441768326405a5c39b994eb6ec535c5752db4eedbcf97d31d885685f5428104b121c86ba802699ef9c3ae797570be5719c1757febf2ba98da01854adbc11de7092fae33fdb124856ee9965894e1fef333895479021367ca720e1447341fbc2faaec50ab10a122834bba92ca183f5861def9f43ff944947458e44f960740df7f769677c6fadc0429d5fa35d08a9e96eefcb639c351145a16e957ea976e5fc9e9cb1fa0aca0dc6e6e4ec6e11b7b52609e294dbd4971b9d2eff26d77fc5ceef8d5dcf1eba9836fec2980e4a1df9382d421ed948f8a4bb1f0e6e92389a39f562d3211704f0031f7bc8c780131c509302f623c3411a2880f272905ad6123a2030dc0005aa180063e4012c58a285b9cf4f0c3104f80d0c50a6010e4012856c0b274a81d1054c101952501200834c228047164b1979787f95183bd845836ab9898981f2ddb2bf39279645e7a2af0ad79d9ccfc0caa7946e8b6117edb981089b88ee3382aa35412715ce7755de737047186dad42f03c479491cfdda167d49dfaf0df18e9422e9bf1f3558500b07ac8989643efa62148b19c5be1c958b1cc5aa4d95cce5f83a6f34658f3ccf4bdd23b7827d71c09a112a2708cfe726cc512df18d62a32f98c7e6089bfadb26d5a4eb6c52392a2639aa25df7c9c21a9c3e6fb1d7c11b249350ffdf67e7c11bafd5d8e2a4765d375dea8cbf18d665433aa6fca1ecda4f8499ecf0f526a74779fee3eddab3fcf1c61119c31328362b12b96ab3d08cea458ec7f7006d52691ac7972545feada1701b471813614b451b5a93f47d5db7b387edb7b38a10db75c06e81287cd0cc70bdc80528a5e63234f05be36a924bef9243baa6ff373da8435e0d8b7148e38566e3f0d38d6cc6eff0c38831afbca1d3923a34d6bb4191a71bcb8fd2ee02836dab8469c2a6eff680635da3be6a8aee546b1d126e8bba34dca46689c39a2bdb497f6ba0ec284f8101a2173086f33b2e0b81c9f54f2a580f9434ec1175aa7b4d650f37c7e689ecf0cd2bafcbaf379e89b3fb4d7e59f3ce78f3ee79c3ce79ce0d8a1d5acb5dc484a1c9d10babbbb652d4b424a6ea755eae8ece4b8e9f90005d1c099029aa836f144b1129fd421f27ece63afc39eaf65b786e961973aa2fbdb62f001fb2143cc86ce0322650f80814513c8a1f6a92160872b012c08bdc0223fc9eb31a58eb953270f11ed8bfc490b95f467a77de9727c753a75f178749882f798c006312940bb2df4a55f69e5603a56e2f321de91a5ee0a19f475af0ff9900fa1c031a9837b9eaa55f368cf3ee4433388a9f2a121c7c23c36895db1c876252323532b8d77dc8f3da4b9ae9d6197a242d4cf8152e2108592455ba5943b3d25cfa6fda5df3ea548ffc5e3e18e854dfc309ecf8489999247f56da881629b5c988686a68665944aa552c966c67c5f8ecfbfc6f3f9e1a84bbfc6f3a13f3aea76901e4339be206e5f60753905df7881d5ed96e0f8c351b7dfb92ec53b5276a92ee582cf3a16d8e577195ae21bed6ae8f2db954dc23cdd1176f17c3aec5253a42e8b36ab8dea7bb77fae1c8152192d90c9523225323064487cf382e15d2df49f23fcc77f6432996c059c4b69bd9b93b93d9f1f9de3fb7cd8553570d5f7a8d96a869aad66f247fb7038e7333f6ff1fde818afbef1abd4ed1466667655cf24388ec448180923d13ae69cea726c8b1f1d6b1bb3f2059f7f3b8bddc5b53fbaa8c05d2dec99c4d1cf5a7cf3e71d7b769b7927021dbbfe6d9b3bd6318dbbaf7072c6c895ee06963e764aaf7c223654326b28b9aa759c6c489bc17e62a8abc55e5acc3bdb3192ef451bb8031402eae9a1dbf62abdfe25beb4db83888ffa532aa2d6f3a912856fdee9f5cb4681864cf27cfa479e0fd0d726fe36e29bdfafcdd015accf7df439eaf5479e4fad7d83bac8228b9f8be6227da5c52e6bb136b1167bf968c7bcd3d11f790be87e79e9bb74f55890b743e79d994ef2cebc9f0b69eb46f5b9d69523785d70b27994d4b72f38b5c0009abe30ed4681cb539aba1d0694121a7aee0ce21d72b2cf498f07fdd08244ec17514243cfdd865cde40294f1887dc5e61c8e57a72701472fd6aef5e0b30d7bd05f4edda7655c90d7cfdb9aeddadd19116dec0b50ae121957d0927a59452cac92d9d56598cdbf987726a8666ddda762aab9d39ad52db442e12354f9188564d5a11e71cd73c39ae6a566e5b27459cb49d04376f85799b75e5739b481474e5735c27c1b155577ee779cdd3f364fd031b0a126216aff88753b298d050d06ccdd45ccd9f99504c48ba66387efbfcaedcec48dea8410d68f0cd0b8322383969e831c450c01c83b2900bf2b81ab580064e29f6b3c7c335f006e611d6e06f83bd35d8f0dd2901d0f3d9e3d1973ddad51bd8534037cf1e69570b69e8eb3fe48252e2e890275fe1e6fcaeb368d9f3912c6a1af82829c7e79e4f8eef8a2b5feb211eb55f57bea681cf5a6bb9d1bc0127678cedbafcdd6c5a35bbf9b635cf6dab7613719d775df3ec3a5127eabc1189d4915c5e6062645c46a679cac8c8743234252e79cd0c1bbff19b9be67973b38d648fbc42be5c294898c4e24aa147ca8ca06c501d91331b80b0a4b8e66b5e6921c19ab029c69ca188ccd8d4326193554c2e3fb7b8fdc9657e1a44f55a9b67addb8855393ec9c9e8e47393bbdd29ad9a6b5af3d4b4a69db671de0c122cc338269b358ac562b1582c16101d99187b5869a8a755cdea5607c9d72af5eee9e9e9e99952c4759de78d46a4cfbfaf03cfb974393e9fd60b4d0b66ca1ed1b05e5e5e582cd6a84183c4eddfc135409a2415f4ae00c09b1f9b998dac7b81a9a9a989a1a161429384c5fe12409a95cc4866a4eaef843a21d5fd3e0778f3ba11ba69b56967002670063155fd2e9e0a7c6f5849bc749dcbf7772edfab24486c424c342d00e0fc0962c28b0937c0f9f2e2014dd444d9e0822e89850493efd5a6272c7a9df73fb71f66bb36c0187cc07ec810b30188cc043e0086211b200276f4970026800513f8028bfd335e0f97124020fa36c0d70189e87c913fe9844afcbf1fdec9b9357efad79f354e78aed4e5f84ea8fef29ef0339ecf09278033e6693c1e1edea0f1c41e0f4887c66ba12f0a5ee3e7a300d2783ee273a552e9861523003047966302980393387802f0fd9de8fb3bd137f763074b1d09a2fb711404d2246153dfb0dad4342b28be192cf63f8b4b726452478defb7f1fe8635a259d1ac6a944aa612bec6f329c164e34d2f3d1f1bbf83b998fe5235e4f51a21d00dd7b52780382b1027099bfa0100e220c162bfeef623cdea46a84d5fcac3d48df08675c332a17a4d8d4d97e3abf1369ecf0f1bcfa7b2bbfb74f7e95ee319c7d778e9f9e0f81d6ce3ad2053020874e36d8040a83fdd7892ac796856fdfd7c4478a7c6f77f28dea925bc65a2067883c44d8bc57e1ce00d1316fb69562584a3f554f0fbc40db0e4017d5f05f9e666a6abe0942183a60410e60a16fb6d8030432c9a429817cd8a2609f3dc2081e3f97878c36af2cdcf29d1ccc89462604a2f2e1f69e4759ca82463547f8ae138e4d670eaf9d4a0018e37aab1adcc00c76f0470144398d748031b6d7e70fb4500c78692038e1f0e388a326856635bb10161c6bf23cd6aac59359497a159e9c0d0ac6cc2682b77bc61e990c61bd6ea8655bae30d0b67959345bce30d8b51da0d8b99708b834468694378d210328730a700281c47b25a7c63c3e67466eb5dc8cc3c9979324fb65a7c567b0d692fffb15a7c3525e342066eb9f2e5ecca97b22b63b25455da4b7bc9aa69dd5cf40adeada1ff481c5aa46dd66afdc0c87559db269f7aa879b89f3fa774cd847e82da04ce930814cd825497b5202ea5827645b324a03c89400d04aa4f7c4a1ed9dfc1b672cfecf3cfd8c25124a269b5ceeb326e65ee473413cd58c8f4918b3aa5c100dc3b9cd2e4de4ddd374a4fe87777f78d5277efa694863bd86b7b11dc586bad95d65a698df1cbd151b73d17e609c680791a63d481cf7a2acc31aec782bcdc02b4df5e7a5c386af2ddb4a0fdf69b1fb9f58ddcfa2ecc93e8d9053e899eeb4e03bb5de893c8dd5df093e829a5d4057a12d55a6b75a19e44cf699d066a9aa6699a0bda49f49ced34505bb52a06ab2d66cd64ae208a9a3faf5b7f9442e1c803dfe8aa5b7ff35cb027d1732239b99d56cd8e1a48e4a95b5ff3b4f086c7f6daafb08543f5875ce9690bd85e1b2d30bb3f9adff361db9c122bebde26f6efa1e6a1efa1a6c5e09bb7c485a31585e3574bd786e3dfb174d9be7bd75aedb7b52ef089869a8c83bef963c3eee8aacb8eba55e3bc6af5b932aa51d797ac2aa5328485bb4f89837a38a548697ba59476bf7badf4bda360d9e46e774a53b39dd25a35cdd20a1b92c5a248eea69d82b953bbcda169379188e3bace1bf968d43c4756c475411e0b914039925df9dc8844fa99215d5efce5a579be58fe8909050d05c998ccddee7472b73ba5d569ad9a66ad66b74d24e23811d7759e371a91e6a89b245237bfaf9b2e2f300e03d33c616264e40c4853f252a97996ec045fba09c2c0c4c4c8c8cc1499aac9a4c5ab20daf5c45741883a6f44b2ae145a4858bbb5b6d6d6da5a5b6b6b6dadad65b7d6d6da5a5b6b6b6dadad65b7d6d6da5a5b6b6b6d2dbbb5b6d6d6da5a5bcb6eadadb5b5b696dd5a5b6b6bd9adb5b5b6169d455e7e2eff68e5d7e0776c18901571f3689b1bd5e88f5aab61ad45148ebdfdfc19fae96fa1e4fc6dfbbc75bac74b6e05e5d5445ad065976876f9d986a3a0d637bd250e7ff67cea733d1b032c713837a533cfe8099bf84741e328e8ce6f2d0d6391612c79447f07cf1ace0efde5a776f50018a4a5bd9c703979ce59f3458d6cd6f4a881e5f8668cb038335397b620c5fe517b72fd352772870516fbfd3597e409df5f13923c24bcbf162475c878972f168d1f3de53f92a761ef2ac993f3febe923c22bc7fcb240fcefbf7acc588a9336e787e07d45ed7e67b6cc01d4d7cf3dad8843b58e01d6da805b9a36d21c5fe86358fa846c36834ecf6732dc6ed8b858497504d49d462c16c529b0fdd7f304795b36251ab91d1d0d054cfe726b44939a94b66c8c9a3192e1298017e12877ff57c3e202280569afcaba700edda20574a93f3b08e62009f7062411baa82f506988fa8544c596a7a142a6324020000002317000020100c89c4d22c0bd36cef0114800e5f924a5e56329486a3b118856120845118c42040082080180000428829643b00e211ab4f6b7e47efd53a227b62f17fccb0b585504019ee7dfc73e2282dd5aa917b0b6bf88453f8f699d4f68b2f9a45d84a3434b54092a0d942e8193c6e2023f05bc56a3334975b37c1eae9c718803a91d6845413c4c6511be0ec3e14383d6119d4fbdf351b832ad231bd8059a5c4d1fcb3520002ef15d300b16b7ac712f4a7cec7a222858e68d04f07481c4d7a3347a1e9045d02987409bc5d836532536052843342e4d0106d6483ace1a04a81907cf160feac65bf23e8079243d82f42271f4174340ff13d055b1b1342d4bc0fee05cca6079e54d3fea9beb51308018867f4bdf6deaa847a7c1f771099d5009fa7f81e1866fd3075c2d7316b1772c7877aa10ca7758cb3fbf4d0bc738ae638447af0a6bd2956a90336f64cae4d82ad60de02366572cf8cc935e2e52df27c56ece564d39088284cdf746f6c6a15e18bc677530f69e47df3569f7e8d62c995d0bac76933454af115aa372741e074755e19075c76b93d0942e20cd1f98fe59c4097282d0f245c8e915999f8c0ad2fbfd326c16e07b687ec9313a4c805944462e76c66aa5c55f6f33b8136a13d0880ee5963702b843918962d8df3ab07914e82708a6357903208fbeb5f56a3d64463d7327fc0c09ee7ac02fe671ee57e7656bef9d788c48ef4110cdd4dc892e3c082f2bb33c1210df4376d8175d6e0e8e17a0317c5af76557601d35ce2df8eee829a370b762b0fa76dd634e3a43cf799ec37f2da00b82e6a48a3bdaa472aaa889c05df08a503c1828cc5a49063a6ac53b50d443e3f324d4d501e7fcaff834c09ba1a9697c1fb37f5692b172ea496666b94baa2e2eb01c95585b81c0190ff47ce10ff06acded36c3146371831e3d6961371e70bbdd3f3cf9e594ef8f1b5c6f34cc2979d853bfb1acf32712709a24645ec86c83eb9b390c1c0a6c7b5b62076212b514f6062f2687ffc7e148096d269c06acf724d9f2ee9b27fbf7f64a9829ca5ae9add3fcdc9a49b9baffc5e0e3228c2414fe1333de2a089f8fed2d9ddd13628a70d32fd8588be7a46887097cdc8d3a0a3db5ed06a2a6a0dca92ecd62f4886f18a9cf7dc350bfed7bfd1193388d795a8cea05958947d0e3528e9e592f8cb6f65308cebc0d7913659aace2c64ba75c552bcd1dfeafb84fe63fb0c450bb58b73bd9b9fb882d27fc4930486d41de80837634660c6d0809c60d466462f83eb7d3d4cb339e7bc509c0c1a489b814719008992469add944e73e5239417019f5ee3320023091e8d8dab5268f96f4c423b7252a23c6f8363a95d6311833ac860314cb95274ca51d139501ca3dac90b69f81c9d449a88706c5709639485f0440a344a8553e76561c387003c99ffeac762db23a46894f0ea647f64b729f3fc9429b436e2bdca64b209b7e36fd3bb8665c48bd595fdf75e59f99fb1c2249c0c6aa8193f88ec67835d1fba17cdf842f50a7961b3a9557f1c38dafd9bafe27d96a271ed44069be6a01895dcbafecb280185f92f8ab531101e078ae5cb2aac80642903acf53d9fd58e601323153ce8478cc4eea0ea02bb709f31f0bc55a38cc050c15a1d26976292ad8ed50f0c1180dddddac7ad2015446e86223c3d173c3cbdb46025b8d6e3930ae946bbdbc93e04abad716b1815f81212b4507ee038cd14d08d7f4f6701d9619c5101ee92182c65e483dd164334ac180c2df356b014036b92f369bf9561584f5b32aa74be7baa375f30c8ce57eff9402be9e4564c44987a3ed1d0c8caf477dcf99cb29cdc955bcd1618f16843bb878a89153cc1f47c4b81be5803803706c38083a7906f2b4e60edf6a62c96aa218bd757b46c151c17f621a9858ed5c65ccbdb2d616ac825802735acfa05386f0488899372d7a01252ccb55709a26907e2623accf570a6411a10e1a19d2854cf15a66c8df45eb8648a8c0651139c4a0132af7265587c5544000aac9ab5b88fb2f44db1fbaa798bbd65a8ad52a44dc5663712e688de2e17f4555fa7b00289c5354f74e4e0b2f80ed3c951409f10c3994f64830f9841484aec13e53750a802a263e01d3c75e9f0c0024602ad634018f0690a50e0c82fe6d73a3faf7de2b539c4e634755868fc080a053437be3fdfc9a7ac7d2f7561a595eb9bb085a8d145823f61e19b8126cc1e7d306b6b9a8d6fa30799254129e42e999f40cbbc61c3a58623f544adaed6a818c352137f360faaca64376a6d378c10022a264f93fe4e48a273020aa8f7e75c170a8da018e0f55a1c8484b01cd3412a0d31c870df7281e0c084a95d2c50ad6ed665f30c22e922140203f68960559f000885fd16bde41fb3463c0fc43dba87a473f035849700bc16900562d72320f58b4082cb9bdd2b251809ba8a12f6c402d0e160d8dd05a8e746714424e0270f3ecf3a2e098b9cfe57ccb32fdf197ee5962014df847b74f5acbb7cd68cdb1f281776e480d86cea1208096f26090e686724fcccb6707f812a09d91d4eced1593dee70dd1abfc37452bac37d7825cd7c70de87697e2a78c87bbd9f0d33f79ff4459d69202755539b0e263d3c342fe421438e4c33b39785be0d0c34ec2f3c24b0fca1254c6d5849dc12c3f017c6fb13fb54dbec93618dcaa7cf64c967d5a30fdee9f9d08d4226b734c06e75c872e57a44fa53f137e6dee64298c56dcf39ad847a268396a9ad2f77a2b468b36724d2cd94dc9832def4f5eaa2643d21ec3f3732b10b76d660ef2c3d5ddfa88fcc694a855193323a06105d6e2c7e928f769c392db63fd135965faa69be55429ef7afe451c94bf5a6cca555db745bed56396ceb661d0974f1021ac7a0a85f49dbb7b030b75ec47261a1a835ea1feda1a1a84decc14e0e454db29878a6fc3d0641a3cc2f1287b2b41f12fc1f8bb857e607c96367faade4584a33043419ec28c8b1ae475a9d1072804651715fab9c731409e782019b0983eeddc7096415517586032ee0483a861d458ac221f9db22685e75c4a7dff97847ac0ef5a0339b948bb2fc6ee699a7471cd5be23be30eaf40f300de60cc33c102f38fc6161752c81ffcca047bac79ccc99a2651cf693674a9eca7676de2a120a786258c9cadeb8a524b3de1aa4b150021734bef0d17a30d611c9fad6ae404038448ab79e309278fbcc2a0aa3f5fbbac6484865809879fe1a2105e27d4dfe60fc2d34976d6b568885e00bea8e4cc17fb07b21112e29eb0f9da6c319f411b5136593074890d7bb3750e72b499ace08721a1978feae28f7da2a865b6c67b917cb2448f8f1a9a0334e5bf181b118b103e4509033991484d67d96e723885aa37235b85ffbfc861f22903131ea7ce82e41c54182f832dd047b1ca01bd5204051767ad35ae6b057a0a3d26138e85b6398e2de9a0e9914e1a4571a730678e52132f28cafbb42c1aec0544a35d82b257e8f114f187c191496676bc50b5cce31da4e8a898c26210d99c9f7ed391dee1534a0f6f347cb04614b5b729afcaa93bd48caed86bafefb6642998c311f808c87038f3cebfe23f068e31921440dbada6f1a3254411aa6b7f9e77b4cd60085f6f4f3422ef389e82f2c354c7665d28562b161007d3481d6ab370c05dff50bf9f2ec502a9fc72f46dbef93353587e92bf29ace3acf2312201cfef99413848751899887692f47de50c1a087111c9d08e71e2698ebf835c187392ecf29973e0cd3467e18378a022eecf91c6edd3886d16fe3248c684bc1ea189fc618fe304a7d425478f7ef319d95ad1862097a7d4c52118b2e07c4b4f2d0b9a0d771b037e31846bf1f9130a228e7811813079c2bb4d9fb1863bdf5c618dc20e082189959980af47a077b6388e1b6713e8899799a2ab283ea987f9e73424c1b2d2cedf9f2edf88b1b502c86d31c447d21064e108951c44463a857c19e1a0817a886def36ee545cd2b0b7a5edee5de85825bf93e7eb5c4230f7959ba5b89f8db27e4ef6b0fe11c324a57c1599ce6ddcee1f2ecb9a456d8bbe5fd528352e8236319c1765a41ab571c4b205c3a0b8ac66315edd21f7891a8ef079a4884b4c52a1aa505a1284ef3098be2bd1caea1bcbff6954479519b493a701c3515f4d8278a45f8fffb24abf9c49d6b3d1a4f4ea2b9793b82cf86bbc89f4d85d8e8f3e6e57f7c2d9a713b9444270744b10a728e91e87654bffd997b58c52c7debc05b32d05abbc83a7af0d1776843b722b67f43d54008d8d722ce5baba582a6239e1a312f49551a293f2d379f6a5069bec80380ea809f6b38614dabf64227c25a3c14d12e803d1c0e88959de2a9f627139d28ad5d2286bec7be754823d2733438597fb81266435128f9e6fccee08064b1ee19950d54d4bd43d225905cb5e45a0334200a6c974358d46a58acb30fd8594b9280bb6f9b40c3afb419404cd34464c459d01996e980d1792bdd62a6d36b913f52d527d1d3400b22a2c5e58b2f472027faa1943646a4a57fcb9a594b3504a80ce9ca4d636d52917b63639de568d08f1ddad4fd170677d7a66879a70066a076178c88f4bab92b34d4bbb8818459bbe5ccb5b7056f2c35acd3c802cec40bc0673c7bdb546cf35dc574b32ff6fbc24b4987ba573a20b4480c22a4f08a448208bc5c8e2d29584ec50e19348a38d992e2edcdf91dda4a914d1e446e0f747b1b7ac480786633aa543cdfdfcaaaaa266565d02119e1c49c87a08814ac8cf3a2546202a3059a06a76dc4ec55e4788cbeff1c2a9e6828b587fb03a26d7e2b3d09cf583e546e21844771e442f974162cf1e4b91f601161bdf004d4d2ac97c008d1bcc45157b1f092818b41e4b28c470c96ee10b9c98f9afaa8f407636c0fa0dc5379d81a2af7f92c5c7e32cb189572785dd80418137e4f9645f82c3981d9fb26cae5af6a1089148506a272ef1d2dfc6ba2d3e7d1ae41aca8607811a7f952a4dfa3f488283b3d57b14f79bc4300fe7d0871d55d522883264a09751f24f835b877f47f45e926a1fa8c9a593e1526c6a37a1cd0d7b9f06445243e9b995df0843a6e5872e90461aeb28c78de6c7065f0924c648abe04ced7a48fd7320d7a5b8cbd26205c1910694cce441d3f6e00d101feb5f69ed9f80cb805a4058674150448c483d5361089b740ac9ba01987751181fbc370996ccd122819dbc58b29526f629fc0e7514a8966ab6d47853ed60a07a4cebb273ed24b204ed08a42c89d69314cd9b893e130d3d3b4429de3c788188866b3080d87b95bb9c061cc1eab17b9024a1d5dfc09dd369d9eff1f6beda2a0810230c72745d07a87cc061e1d0258f0269b7ca9633a3cc45ca0f614b972a1a233b027947494c39fe50b2fd2abbb0911a7b2daaf6b15699895484fe035ac63444d876fa3763ac6424a0815f69d83ab823a12aa5037ed323e9e50f72564479fc70dd331c77a1463c79c64ed3b416b45e812597f34e387ccf9226f0c5003092c1015758145ae44ce88f85f72c8b5ddccf17ddee85219e60cb1242f9af464cca2d491b64fc56a54f80371091a0adb22a109c32ea0d188633dcd4b04db0bbebf81c13c375eda978305246f595d36b5c484a382bcf2aa1e9f5b78d7bbf1a1bc5c294f6768466feac6e6d8af2280244c511efbd024953acd40401b33e7594f1d48418e38ee8841c6e4b7dfe1c5e8255a2ef06933258ac1a37efd8f88c75d5970b8ad481b35342e5b6d061bbb9120a293294a93fe36dc4b3999b15fb81e830c515166fc75f2f1806653318f5ea259b1c7c8025748a8b3766efc2afdf5e600c093cbea946bba8cd9c7dee94fe0acd9f5a2349808a3a9b23ea02e1165811c4c2dd9e4844fb0f527986ae6801a462857e6de0c057d7533e73f5e29e21d88118ed779e400fa14825da48899b24a060fbb6989c97a6d57af8b1ece4e3535ab3d084014d5940eb0a5a025e3a378f24d4a822ed6c0e7f54cfa083f9551a3346ad6e9b96c8d4225426a492cd4e1ed0afc884367efc9b504ddcbd8717e6470eb744052ac07227bfbf2eb708c2258e7f6679b26677a2137a4f5e2d47932100c77592cfbca1d8ad8708c4cb5b03608e1243b99821fa1583dc36ef2280c3fbb3d9849e9f9777d948aaa18c155c6ae6bcc90f5cf10fdbe188c3d631639501f111b2db9ca8436996b726038e3854f02391c98c6d8b4e4acd0aa62a73d710f384792f6eb7a7ab3e6050dd2fd29355ee8690787c6726ec5f5c0afe991b3b259d6d30256c619d2407fca7273c6b34ee0c882ee5f76f53c5abd6bedbfafcb17b0bfd7b02032c367130239e10e0a866d8d34305a9707913d819a89b27d0495e8b76b07e86479285c95e84c41279626be8b0e8d1c8cc9b288e3c9d88c0f549890a9b0800cdb408b7b89bd5d55be2f1db9e283b83c728e5c26f66a193e20c1ba072c8b8cebf6648adce8bedfdb7585d0c78153a8627557a376170a81493f6170d1c7847ba6d30a4ceb7593359e116dc649060389253ee0aa37e4d1ccc4bf6a8eeb6f9cba2003adb64bfe456747a4fe0ec0298823fc7783f9d7b6856c5e9447ac07efaf7adc442e1de7ef620a7f42b1eac1a71be20dc75a441d68056d2b6569051a492b44c3bbfd82ad0a1d83dca85658fce2ce1522a899552984be0c07fae3d9ce6f62c78783dcee18b769b6b6ad99b016ba57307ed3792c4008dd989f3bf89447105877fff10aeff1f3359facc3739638940cc6b26676593d6f4ddb1d9a8a16d703fe99d29b4124a88de2fd6d87f2bfa3cc43ceb5165a97de79201fce507f915ac6605207986dde9d070c6a10dd917ca04e43a51a8d2ba21b8fc5d995d799829b9bb2af9a31133a4683354528383b0183e4ad0849d2e4074967588f1561a3e8adcd3fd2016469f20626503f55f652c78ae340be655ab51b466387d0694b1f2f0f1adc359f0282354ccae307d7e77484308c437b196f64a8db239042fac29762fcce18eeb2a1cc60a047960f4d5758e04b5eb8da449e185ce7cbec00370683aee566aaf3a5a460974a14ba2bda76f8f1a52961450ae69b1cf5753eab7632c637a0ed977d50ed53330f1b6d6b56225e0738de925a6a1a256d0cbffdd6b1584fbee069767538123d5ea2adce12446a6b4b6372966e3132e72ad17d2e5db0fa4a26570fb12b25100fb092eac373ca329b42143fba4b2f08338fde77341b596064880d9f746f86966100d0665d903807e21a116a38a2bf497aa183308fe49aa3b97750880a48581b8ab584644a8d25436e5243b229c8d4bdf12001c9affdd6c6aaebd00d186c1654ea755a024685c0982b3a682bcffe73546ed7906c46811d6f5763039a5a9736d3b7611f77d41ffb2e69aea1913f4fcca3d71c4c44975d5de6f69d6eba8a0c4cc26dd3e98e3f1b2592f937557c788576d81a9948b3041825bec056229655feed43a271ced5780ad6b55a055c3b83dee9e38dc984d7e5f5d599b1b24822a70f40d08654a1c96c0ceeb03c6a86e9514b35f3ff94f573f0b03780ee89718ac5c0f64dbc3a598b7849a5d49b8ef62a49646fafdbc4bcd00d3c06b8b308f4381591c56299e6e1cf43995033f56aa4a31813f2b4ec260a3354dd49467305aea1c8ec93e2d1a5c38c71f421d7324702f9d2a0e54d8872b95b1bd6524bf49e0f703da01611280a75a8798dc872c736471a93271ee2cd8f3608faef940058e19ae71e36b6d7f1a9a331fda9ec184e8f010448d2f6b6596a022eac4d58051a3e94a41f6cc6e8832c95ae49be4d58fb530a515de8493474e66ef37e9841bf660bd4159e72735af9b2b004e22b2ce38c85e3116dd5f294ba0a0a28a98df6d81fe71cd3c94887dd4ce90aeaed4691a49bd4b2b31fb40198fe795155a353524b4a1239388f28ecb78c61944bd022939a80345a17e418a182be46344b23dcde38fec7c89e5ace9f9fd628a1ee84401acd0ab588915dc87cac5f782313b04d343ac57d6b75071eadad89c1753c57d8f597911407ee37ff44d45eb4111b857d47b896f65ad411a095dea0e99a6696b078072ad3a0b87a15c4eb12ca0529c621f988692cdb536437caad174eb5fb03c58481c4319e0d7695c360996ab0cb041ea7b1a3bbf0304f57ff807b20ba6e01c2a443150a9e82c9a8cdbad9cad8bd5b99686413a384755624762a740d75b06170695fba7ad848c560b89c499f6d06496bc98f878d546966299ef74d6c3d4083c2e59a6e1a7e3c1ea85452ef04af69234071e05745a40c3e25ae097e40a0c02f4e778eccee534f6e24f51d4686629b724274d53d93c1eabba9085a2fd202bedb0d1dfa7d1fdba67fbe4c80b41fd1ab06b84e66e70a1af4f667bd30344063238489c1dd6b5f2034c2749d07870c152dd3232cd80f2ec6ca5c91f9aff86d46d41bfeed253d4b8db7bf0ebd0ec2811a47a8ddf86477c086f50f9277ce97f3fcf7553ccbc5728f2bb663a2fb247d841cf30e38f9169e312b58c544ebadf73be9ae9de25f6b8bac15f0986344cc166a35b4f05543535b8ebf2decf11fbda84dd27182d92dbc8d67e92f12d70f166c8efcdecca9cf745ecc2049f9a1e67d04a2aa5d422078f9d5deb43580c451bfae4b2bf5cb9f095cbac14966e3ff1e21a26aff27e4c76ed22d2428cc739a288d7d8494060b7aec8b59d2b2d3450df61f325d6c4531db55482bcd7d857d7578ac95473efc8eb6692c60239b72ef5edbb056f90b118a4c922415805749e93fb3431a8b99aa7d48025c6670bdc6a0aa833d0dad4348b7da1ce23ecbc7896f69ad757df1679c0a5cd7523a03cd030fe2c7bbacd2b8d77e150e047095c1d4bb1255f607a09b8a11e3ffa397a62d9ec6e91131c5432effad80a321c74536049fa3e59f6a5687a9eaac72ae5df1754dc9343a1eb4704f18669d1eb32f280ac1d50381d8b31a0fb01edc8d9583e5a9965c6f9cb46c2c5849ee838f1cbddce9bb7692b31f25b871dae9b856215f0cec230197442b3b6f52bd0ccda75d71ad12cb7c7485cc38555ea98b7a26e4183ab652d06a8224f94294112569dc4c9cde2492653f88f8d9135c1d911d79c37f359b1b562267d3d72db5bef10dccade5005a26cd3a08a466271e9d7f136eb43baa1b44e526566363f37930af326f2ca312c24fc78a500e9b3d402f498460c685b0ab21827688dd49f2379c60d4527b83e223947e4fc1b23139e135c28d4202034d62eb5ac20766028f9cd86ceb07a5e016c34e9fe0c2c7e1cd7640b0285c5d4800d469d389b821ba2f63b720c51b791b22be50aee8a93de48b532e9bf992513cc1a0c4b3e4a643a3aadced721a0617722a310ee54759ae5711cad04a128a9adc7860b3ec0954984dc0e7d37f9c7f3e8216fa4871efd04971191869b1402d193bbdd01d8dbe64ecd446d06ad08c233782453aa230031515600a9e0457dde280ea851d4e27975535d321ee0660484ff3f525c05450584dbf82ba820b65ec18164aa7c54cfdb3fa21b42a372b58ab5c7d6c13df6e7a82abdef621c4c460a7f73214e387ebf0e05296eaad5626da343785d301584dd9a8b2b75299c8fec42295cd2aa5e571aea4e1d29beb3ab715b18cc8ccf4aa4524fe63b9b6ae5d6efd3a38474db7a36545f928876bf966644f54d875d7e351efe472ad479bf6fc27ddfbf6c031208c4542ae0c0193f6c2c4657e9ae1c6500194536e2dacd49618d98137eae614ab27ff05d8b9ccdee6e982eb5065ecda940a0b4b45a98c355d432f2a2d0243c4148a2b88ba3c0f3b95d8825db01d7e1108da856a660bc8094ef4e2c0fe11ddeffa41bd9627324d03a2f91d5f24711eb386a9238e17131d52b5ab1efa985bde62b687413c7fa16802369f05021c5264498a643acd00e1cad7477077609b845090d1693012f61f24a5c9e0ff6e282912ef97ea95712b4438b22848696b0c992019f5c1856ea100c8ab791a72570fc6c8359bc22b27ca7210d298fd6549c0d6e27ba60d43822b2a6c7353f0590ad82c47df2dcaeee4e2600acfce259d8be09164986b5d5436f2b6a520900143d83e8b7232f8272f55c73e43795a65b54718f5754124e4ca38d384e9f9bcaf036857666217dca8f9537122c201b6ea58bda1ea616536c936725c880a426ec76576c6ddb0678b4ca7f841268c0483d64f3154e7f52818e84bb69a05ba9fd0ba25d45632583d0365e4f9d9ea4533342cd2e064e6f3e74d40d513546c3fff52866ff80db245168ee15c85a0a7764b8e611463418d941182c30ef4ac48c49b6a64af5084b87e0761b009660fc803f94395c73e803cc71448305086201ac445c0c9057493e480ab236a3dc088f387bfb4144d63cb2fc60371524c5c4a7cbff75399d1f1dadc2eb0b08ad0ea4c05814f380a9e6d410895c39a0e904f72d7ad5ac4a11384bf851ab5759b04fe4391219bd388bb1998e4551b38a759d1d93a1c492125adca9bd7461fce2c79f9922c44b34b6a22c26f65c76b2a0fa8a7a0f1f3cfbc629d9e2e16eaa6c512ef051254b0a3f5320b8106178b7bf81efecbf97f5d5f459dd032bdde532c408ca204575810ad37757a2afe50325bdefa1a496b6bfc53da21e0c0b7763422a73938b4ae090f3a7e1de28f5f01b65a09653591c9975d0ba291513a0c26fa9df93caacbffb88d45d856a4b73f398939c1fd019bed2f7508a2c26021b4189a315da54980f533702008f59fd4318b38e18184e34c3be1e27451e6a1a3ef2214ab759a577f8f2668a6c2be957c5d137ca0d45199f050e1490993bf5ad400669b1209856ad2cceda13a370338842514179ceb01a2010a90668abb349fa4d184ff1c38825a13db5e4409f2ec658b738ba1bbdee1cab0a35f6913396f067a1b65c9fd7352f72abd444931511f2780d15f4ba7c0d5212e0521cb18930b342c54f74caaed073c4276c591aa7a67fd380ae2c8114d2a7a4ae9205151be7ebd4dafb632eac000cf3eb5ab7678f829314967ddd92e683700a3ae80f789a3e3f903c36e8dfe3402b3d614719d6bf39a127ef9c795810e03f5497b6b837d7154a22bdf1d03acc0a58267e4d2871c748a3b6ed26d9da0b0bed0fba902c6d82328582cc847eb1c56021947c1bd542f4b653a44a47c90a113453e63817400addc02f50e000a25ec99d47fe4809a846412197269f8dd699324c84b54aa23e6d87d086c7ed9c6d801c8dbd1f873508f6fb838d9101c5c68e3c007908f0117554b7904eeadf93b2a244b0e9bef0a8a4f862fecb78a3efb971027281f21c87ca14c9fa357e15c59192adcc056eaca0aa4ae8c3a78f6e6380e1a6034dd08e31d8d18d6f694b7883eeb1fa01aa00499202f28370ef40b75dc3dd4b580ad6c5179aeffe5e9ca94936c8268d4d1abe5af6639373041754b6df60d5c6f56ee45576a0be458ae39d98424da2610e3ebdb854c9881e0754f7fd2823b43f82a47b46616439f1ed8373b998efe9f1cf7fd453bdfdfd135d28ad7a085522f0f205e05be2b64ec84436e45e817473b2bd6481eca0f01dd157310df19f2d47b883f0e70c6f74087e7240fd949fad24b6fb4413d549d53ca42468676b27cd863216b6f1adaa7978eca6356a37c69a48324b9433f8b0ea7d3a5761763c845ea99fe610078f704f4fe949e094fee0f9546a856ef039d55dedfad2770f28144401caa4c49723ce8bc55f92baefe535a0a12cc16221be9dcaeea5099a3b01045dea85147db8674bdbe2e4760cee18715af18d929bed101d1dfbe42423f347d6a110d59b64609829fa2fab333746c05c9e82f57a99851929643497ebf51fc1b22d14dd40304086c9281d7ec0b337d022b1954cb579ea47674849a507fea5e9eed0fa2534801daf222af50b68c59d90d65e42cc25b2cde65a0d3dca08d9d05ef047042ab0cc7b95eefd0e675ea270896703ac8396f0592f4d75379e72b55de7d7701958a12e204e697d2fb51ad2ac8eb4a00fe94c665d9e87f8ad8dae94338cf2164a84578633e55cd60ea4c4b6aa2a880bfa15665e8393d24fe1fc179a097ba77e624892737d04b63d3501f26111bb9cdc16613d552aa686e069147d85dbccdd83e0483eafd050c1516cce891ebb89a13652f5a12c72b884c5be0a0a88d0427cd591722aec42cc553267926107eb82208bde6e0b45c0554d8f2f91dcddc0e9fe4522d9c09a76789cb595d00c75e8ba9d68415d7c4c18af294ff39d83826175c30da48127770ab067426155432d4fd96b97ceaab9cc4a5a5d5d9644420ad2242f4c2e5f4fb4b16eee072634e656918f85b26f9fda2b63b0d09ffcc1e6ed80ec8386ae7f4d4b65575401d14480be653e172ab6bd596e092182c4869e548dc35da7087fbf4abb8f9739b5d70a27eaafec990e321ff32500f07044e543805995263830ba5696c44e4d01a3d63322616563a0f5636ba5a2012d1cb10796d10a6e9069b99c0ce78f8c887724b37e52a8c947195980ee780192677ae6e4d0145a5a30584652b962e30e438ad2fee1f0592ac4727b2a710b23a4be9a1fa1ec8f132621af8105a4fa4613f3aa9a6c1d0e27fec1bfe73ddc8327235186dcc2c26dbb2613d682ef8f360419e9fa178cdf4bef503e102547526f4035f8089b33ff9d32b51840a71f0fb090906691c4f89c8bf1faebffb781f05c295b1758e2501d32668c7db7ff7ea250708249fa2f5485645619598e90a0cee5120549d1ea5a28205add02a97b05040900a16756c494ef2a63a9402d53452019f9425676f6f2f8454888360b3aa414093e85c12dd9bfa673d2f516790536f3493951eba6481814b7e597c6283d0fbcd43319a885f91b8354bc80abfb0b00c4408f1b032fbfd4599ee38c47f34c0f2405f8de65c74694d0a5d15577ca927aa10c04c39e67da7ac47972eda319d24b8e96d9222aa7ce79b9473a9c81a6c96e1ae310e9e1637da4301d72e0387f287b047d157e08b229ee0ce8564432871d5b53d0e0e927457c040e07b0c3cb56b7ca02836b3641942de44dfc68cc9630c0f568fbe02e03211993f7f64fa0c1f04d99fc82f16e724431a37080bf03afb64cf0861952a6653cde28fd9e9ac88f8060d398372d631900de919547037c003e905ee769067ba04b7d2f00d95545455306354325b159c747d0a0e1dfae095b607fc29f7a332aacc16a552f44423fe276c83e22868629c91a458f5031e4e95b1a020997d408a75be7c70a138842f0212a1165e8218055228781d2ad4bc3029be3b8312edc2026b9019e214a808363f5c379f08bcb624b1268be6c5976bdff40448c26090060945f4252042233167976d2f3041c81db8ec984fbf18b39594ce1f477e58e3cdee6198175386d168bb7c216ca77354e37ae7cfc21a6ac989756a87875e50095626cec0b0e6a3b675d72b51823d136691580aa323da82943bc6189f777aba9a5754a357265b864a80cba978350432c78f802fb9f4186ec1fcb68ab61efc9ac07863bbb1eb4b0a823d21b93b629141b98800e14140532f4de9f4bfcaea6913f7dfa3fca71199d4e0d270e3a1a110173626aea0e7193affcc956cf0861b01308825a14ed715d08cb807360196f1bcb47174ff5650d1f40acd9f48fd479d0fcdbb6d5c912ccca9b97c1279d430d7844bf91cf375d9a1592f645517cebe81104f8f664f0ca154069c3a778379bb42d4f60028fbd386e6259274056ba8b02fdbb99a81f0591247d2745b422a9c004717622c214f9301c7f0f4dbaae9fb7a4ba40767229dfa9119450000a240ae2cdcc1cbe973e972c89d79f325432e1d83375a31f7131a816cfe087d620b6d519a817b0d9f7605136144643cad52c1010df82599288a983b75494a7bc38d4099bae57589de1779222e500e1f1c357a7c68ff3fcf359ed10042982f271e40bc587ca0f1f576ac720f8e1c240ca88bd1251bccbe030532cf8601eb291e0e5471fa505f4422d766706eadccecdff271b6c2ddd26ac62ea3e95e55ecbe0be274812c0da27f88f62e8021f56cdf72261f25b453a63ff0ebc7e0aee46776b6657e9ad8d390672ca6f3f4e577a2ad1ee7cc72eec9adccb73ffdfbbb18e3ff87d90bf389761edfd36961b14a5e3e4f549ad9f249b266f34019ea1179ba6125f2c35211b311a0341909a629fc692619af2de59db8bb34199dd4adbdb67209d84adca8a67ff32b9b612dbf261c900210d3a9ff4816088cb615c3bac89d070ce89e59f98c392f617808b66240a5f104796ae7b57e516c47a0fee15b835778fdc92ba80c3cbbbb49cfe24af4f2666cc449cc1006cf58ca2bd4ae0ffa2b1163df45206f1f5e6c9107485f625131e773375fa6b819e43293efbbd009a83e58bbe19fc216296eacdb118f9386a5289b00e6b40a95a96c86d53ee12aa9ef68d32d1871ce08770d9a15a2a3c45041ce5d5a20eba1405d2bd81b2be15b959c16d6fbc9aa7df7eaf42a68c6b20557ebab2d414396d70a0815849c58d651d2acf441f93f8ce7467d46a88e4e8d921dae1d0cfa552963592047c2573c5d92bcb107b1e37ba33436f91ca32caf37f5ce3001745f596701e5c4043bfb5c94dca82b926a9c8d9ec37db63dad2447c7982c35bd218f6cb1809e6560f1d527f76451223316d7c45c04b17308290441630e65a0a2b2e155f7d46b7782f3b1e160a38374b0d43434bb55e8708ae1e62211c74801b5b84f17605191a38a2888b500e1d049e43539b5c3a1826ef5767a3a0fcd77896a54c647bbc4ea38f3bbefb4b560bf554e0aa7eb8971db86c452102fe156551ef3282a85e9dcaeb6200098244271fc39dbf5016677d6c69504c5502225694e73744330be3d86ccb85ab931308867dcdcc56f2c318785eb4d2f6f3e648c92934076d128d6b7a1eb4c5f12afbbb131e48bf297c39d76efbeea811b232a5208fd9bfc7a253d304f4625cb88892a28fa937c2786cf868f6a1bdc8b039a3c2d59c753055b884611d11067c9efd7a3ec83eb4f50f71fb404b4344ac170b30c4ff5242d590229feb1a9da8076e261593ce0b0af681ea7ce715377cf946196a477a23647274d9b49cd2b7d901b88a8e34c65e3520aed9726c0c0e44bb670c293e0c6b3d93e9d3cbc9afede02ed57fc155dbcf9029c7f1b65031c1aa53c5776bf8fec6a7d63aec509b949690b6192db15ab590a3eb485ea34ede9b966e91355d5ebf1e733217c52aee760559f0149d0f9b4cb25d526282c74f45f20952cb59edbcaefa4138448f7666084ed9cec4b884c323b70b638c0064d4b62b07dda7cce439a000c4df962db42f0fabbd4b0167ce0a7987a489560a10527a1c4279431af37730d4650f94074227d99b847e8ae043e7cdb1ab21add329b1e77876466b8cdafac79921fce229c3cd9abe552a03f31691c51616dbfa1b34fcdae74f393625934cccc6f3afbfd34195d2923030376258cbc91c4288a7e5ba2b71c4021a3a38ddbbf221474c64ca973e3ac0a42b220928190ab9079bb88530a2cc4540c1fc234424ed0aa0384eb3eff356f62813c8b42e10a5a5f0e21ffd3c59995fbba074873e156250b7b3fea32acacc281e8a276d30da18f62238d6b8a8176f1b258ed71c0f076a2e317c5edbf3ab4782792c780091d61a1e4bd8cf0acfcc4489702ad4cbcc4d1009a55dc85d40867620642c867c43589c870741405c00578fed39a089c28f45316f5bcadaad8d34a002e16010224d96807c0be605c3a8fb4b4505530e5b18903bfce78ba86566eb97ed94d46b49da6f1e83dba68c0f68e14b3cb9472637b07fbab2660a60b6a26ab05d8bd1e5ebff5d4e3c5cad0960305f57509cd8ffbd08e33dd7f869df1486929c5546993ea7a622a84833ec44033edd4c631027b7e5aab5ce903a90afb2f94ffa70743d4cf0431208b68f96098250329cef6358525653a0c2b2a7504d78589c052b09530ec68ce0a301e3cd8433552c672000550328844b5a751575eda4b38edec15d91548e5d3c9c3753307dbd262ff1e2129232b35b74b4b39d08e8a8aff66ccad5c4737b9662605000d2e8f7ed3b1d628d3c8eda368d252de8d3662c2caeba70d81803d184e1136d4618319b73ce3ca4c784e1417e6ae803ca06834c1837eebe29da76832d9c668235532ad98587dcfe37d824c2782d0e344d9ca26cb46e1f524a772973eaae721d6a436142ed92d3e4326da78dddbd8c558a6ed54ad41c5eaed8e279f51699c5f49a6760d8bda4e7bbe770971de36335477f1a77a05623b2cf129a841e0138a8f375792f2b88878bd7459a9efb0e836af7623495bdb14ed0df5b348481bebf514635bd89d550357214ad4839b5876bdd7a451a97464c0ec20c31c75ff24a1aed680b7afc1c86e1d0f50e8e295112fa849e9ed877f3fba52ecd19b0ba5158ae2834750aeb00389ef13e32d3942a17bf74b3c34c9836a23302df78aadc8e21ce1ca1186e744c80b7bdbfdb420623303d6a60ce8a6a7fcaad38991a2bd27bc33044fd42b4c458d5f5f9a5a440e679f906d883c9bbb1b1807deccb1d67c1d17c3d8710a537a582b6317ea7e531b6046ae0a48c83f6d20aec535577c7ed3c900008828cddad84946123258f2130edb66230862bc35ba1aa72cc6e5625ee9dafcd48ea5cf1e1b3b1fb8c04ea047e79ee3c98d989c7757b5e8ada5b75eac86d823238b596f554c8af76c24144c00455a73519dafdb167e2bba737c2737129ab425981f0d92b749c6b082276bc166caea6004e918740fb7ca99774777786507ab2332598c70a8fb785a48ac3182b23fb77d8c6dabab4dcc19946c722b6fd313581f6102a5843d4d6f653d20ceda798dd06b48ff57016f5c51dcd1bb00e90920e416bd0d35b3fa77d39397377902e1bc37ff988d89c48a0f6dcd5aaa2fab619c6af0acfa1ab8a9a92e3b9c4a0fdc8ceb23cd3f23140777567b9610ffaaea5019ebb2b1e1c4c7e5257b9433acc2f3b004453b06e9c0a673aceaf485a4f36689af657bd5212464913a1c6e9f5efa08070922ace96c9edbdfeb7ed05059d9466509367189150859d556528cf51100a249c49424f3d85448ed7379286ac030e575d31f5e2b75cb799560670eb05970259a26c3ac41e4edcde78cc88f8767e0a95e3de04dd8b9ecb77d33d3436d0088f56c3d4078404547ee9cb13ec07aa9a5fa3fab46a3adb21de5fa4576746e85e2085fa218767b6baec78e64e82eeb66c7ea38e20386b90eb1d3dcba1b53cdfb574fbb09d0d91a5f80c12b71eda7b3f7c262775482349e19597a838a1cd3f6e7b745725fdf870559640c820c33a3b162735530aca063553c7e8b5bb3667f3659dc5cfc9591dee14cf5c68c5c7fd77db31e9d00a2891852e87e75286cac794a6af306c986fb29db10e51ee97dc0c12118b5129ffec561f20bbda7b6a3036d7c1df1eeb748f681d4406b3a02aa97e1abfa5967a06c3b0fc4170e6597758c2dc9fb81f94a2a10849c781cf881eeb191fa1b9af7893618522b1c709c6e4c55788f87558ed13421a5057041a9a40fd3f8766f7591e99a745891c12f45d0ad07a37e83c97c2631d4621ea0846912f0dfc756680739e58f170741c2c7dcd6ad5c5de4e5ad3c38536dd4ccfe82343a7d9f36a7fdd85b7fac6f492a170622d80f52d9696d4e29d1bbc91048ba3134692ad3f149b77108d8dad82f7e971a94550124b5ea4385958cd14259885f2bf0417c38a44cf9e931d43148c63973d5292a0df36779d8a3cb2018e7f9bc5def854d2d2c9f60b14de08c6b7792930111f651b6c3fb17bc20bce3ec3edb5ef984cd473b26e063f33e2964f4e2598c9b0f22b39555c12b24555b8e1420067435dc4899134f2efdf7b8e3134ab070ea9c06d985948014261325d508b91389d0f7d59d4c24ca2ac5ca865a5ce687d17d8acfbfb1b06baabe9ce0d734e182cfa2954feae8c9e3469e697b88e6db002ce87eeaeebfd839ec67f6b49317b5ff9c89b3984db1dfe762297d21292489d510b9cab062cf719185d0128768fb52f1002c7ed092bb7271d0fa2e73008fff1a51d01c80c4746946aaa53f5d35c0b5c47b558132bd5377ab14f36cedb8f4a2ebe8962d6568c7d0ca67e0965448ef022b1906b18b4266c70b708e952064f49cdd2312352a1b7ca9307bfed4762d6fd9cf2d4d15749e548c81814c9e2306fd8e0ee8f991e02263f8effc0fff2be117ed8bf3436b8bca9698a520138b22ac5a36daf27fc5c379d5dc0a40be5fdef049844603c09a9ee36e37468ac5639d5e24af997452fa41974629103ba21b4555e8c10a61000d0f80045ce3eea1a67d317a28f133d3701c078f4a2d0a5debc92c6a11d093e126638ab66019e24aeadfc876261475fc6d2a37beb6efe724bb3ce6b2c506f8e10951296e241a35c93f72c81864573a9ed15a9155a042ef966b4ddf68b4a03b9160d7e1611836bd4fc0b1a24bab953a567cc84e8232132e660d943b0b2fa40eb47e87ddab45d0f9a854e58ed07052a90aec88955dd3c3f35272f4c649e49228d234777d51d5dbb0974922530a4121e3f352e3ac4d8ebc98a886e2af20051725d161976d88f5621d6b2ebb8996c474e61911c9ff66a99c67f1a84820218d993e44aa4e2f0c2ba61c29762fbe9f9cc7f4dd84af0768338e4aa1681a3ab12b9ea68ce54848978a534fd4e52b2655d45fdc1c6066c1813652c797ab48bf322fac9a02ca499e745b505a514d07f8080abc55e0efa8609b5580de55496a1264dae5fc4fc6f64a2074a520f508eab35524af3e51d1858161c0100314838b0b241e263e873e42b595fa066a6c8e0412ed561cd6c6d86e429bacb42677b72db794324929039607f3062a07daa66da32490624831a498528c17e3c57831d853fbf40465d48180c480c880a8806056484888c7a32121c6c4149ad0901093c994dd9b044a3f85994c4c9c361919fbd309c34e98890c764d4e4d9c644444464642264212929089f04dac09865958c9a79f6444e4640a01f14aa491a80b7119f4c19be6c9ee6336a8e0b21826852ab4a05a99252c762f76b125eecdaa4cc5ac5aef8b5b7fc32cc7f762d91e9165263115d8c41f0c642328575c3722f2fc10c1853ad10784ebcbadce8d0c59c05a46a0a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1f1d078683c343668b11846dd77605cdff09d6d5b1ccc5a226e629432675af24042ba10ad83a71cbfa74b242b02713984514afa601bcab22c671bd26cc886b80c3a82c84556a43366650b8cf48d292bfac00e6cfcf23bfc511cb68da3bdb0cd86becf129f1f18818825b41fda0e487b7d3e99e3b89c6d48098eb346c8db25e2724b7019a404e83bee3bcce2ac05bdcdd98696e032480991fd0ffe601a316ec0acc53d481cf3869408c3d05d4696724e774a6b9d1f08698e2cd01cd303818befc0f80e11eef58c408b2631564dd3344df350da92af7934f9c5c81e6e0c48ffee0c1277467e2440010f11202d4b4944be410722701a80710288c8c92c88068808cf0652f441f800d8b60f9a206e9b37c8b43555f1cec41ddaa22dda32426b65a55b405683b696a049509c4d5bb4d5759d88ce786a894f64f17b77cc549554ba8effd168549a27cf2391489e14e55c2ad18ff1a5fc0993a57fac55bb33204eeb9db93377c60877e6eed0367b3e6846892ce76b1e2dbb587d6dab1eea824b0b6111b410e60889106adb221186a14b4a39e71026c8c78eef1eeef8bee55ceb9c18262f4be6ccdc031e59fe867118d9d365feb0e3678c73442090273a81700e72e7cc71a11066c9af0b755ceeb28b755dd745904e08af1cd14bc90b182c562e6a48a162a545ea69dd51cda89ca4a094949494dc04a1a51342b1da5e590e5f6595c90c0c0a752f2a1586420853b4c9c7ebe43385420893c069996e7a849bab8536e5e0b46e6c3408a4615c6859a38612173ad66869da86b76d73bdd0a696e926aaf8e9f4220f662d2f87f752da29bd4aa14be74723221b12d10bc90b8cd015863a9125f5a297922b0c53288c3fa0cfe773c4cd0dfe7c40190402b9c2179ac466e63e98b55c5a5a3736332e98162d4a3ea057c86b92cb39bb56b4a975633313553c0fc46b09f190cc23eb4cd4c997452f2220e6cae4230c435718fa78bd4ac21de697502817f1153153fedfc378c1220b4276d33d98b55a4c3bad156dba31d9ccc0e888443f2aedcc5bca9bf471ae4aaea75a940388944ff492734a0fe61cd18be8a5e4247485a18fd72b2c094b4a7c94e8520f970a6d6a996e4c36510504ca9e4ba9872eb9268adb3818d14b4bc757394767fbe9e5e4d2429b5e39392b9f290c599c84ae300cb7f003c5e7dd05064b9172b95228147c7a710f4c8892727282927292a251de6abb33cc54adf82ed043cb5ef1a847798bf214e5edc909ca538af2719f9c7c3132ca090a0a0a45a994bc7c1593d73ccf43095568121b92191298a8b24af1fe1b14d9fb6f61f6ee79707bed78aac74cb929f494872f2e17894d642911bd98425f55d18babe42a39494939797b82e2a2172b33e32b1aeca703e530fb3e58729d5c3cf512a13e5318a6c2b0a404e54b5052b40ed4a3a03ebff8aae4829199aa92f7cf3379c754a17c8936f978a168d30f578a0b1586295a04048a16e538f9442f2ed18babc75c997c84a14949c997614c3a7e0412d18be8c53301018992abe4f22394f44b2ee2459d29ccadedcfb94a2e530ffc082b5b1892c46cff1b862f8bc37bf04f072434149d74e62cf20d87cfda64f9d36eea81ed33c2a02fb10dba6ffdb6af30d14ccdfc59aee8745a9f6edf02894d11439837d36608bad9cc9b9422cc160b0d184f27ce064075792a0cfec4a6ef5188aafa9a288f21e3e9bb2bae5c7c0daad5d3779dc8b2e269ddd9f4a74b54b578faf387b85a79fa1388a862f1148c61c383a84d270af52b71555799cb29aa54b217a91434a4fcb449d1f326c553be79d39aaa6c661621aa329a88f2f7af2e5f6d389e7a4dd5a63351350c51b54921a200f06d7567fb672ebe02bdb21cbeca2d9e721bbecc0595e5d821b9c557f365becc19d73161fc41bee98275cc96d972eff554acb8979445217776b68f760a6dda61f26056ea882c7f4c94bf7c997c60995c34534b02427658a59989fa7cc425986eafb4e9c5c5d4b2f342d1626859438696a1eb902e6d46393f293174aca1805983a4e54646d636bc6d9bd521166d6a09d9892afeaf4b3aa59cd24dc9a63403e32990f79313906f84336a62c4a3a47b754f9874392634b4c4912dad9423b2ac78ff90ef72361d1d3247e660fc017d3e1fabb9236e6ef0e703ca2010286f163df20aa30a09c9670f6636382d53cbce2b4c156163b35a7d4a3b30ab64335143e491d72427a37f72ce337bc744590dda2a6d6ad9798551c5643a81e40009024446a4d42aed1819c940e41c1315f34b97d3f130196102e5cc85b84d462ec970564a69e5f7d9345860ccf87c30c1d76079128066bc7f4693cd901ecc6c5a37aa1a74c82b74e1944ade839b0be405040890204058740966c228dd94643e1faa3b9d145f9723656060f24bc883f9a5cbe9725276cccce411c7ab76c1173154a10769ac460fc61cd183514764537146f7f15344969226f5756c7facbd5646aed2926056ad22da84a53838d4560ac4cb0b0d22470e2a034361a80dbdd14167662aa6adba5dd31f700cddaea90f18a62d936a8fe262dfb159fd6057eab9b326017686339ca1467ead94823d9faa60cfc72bd8f3b716ecf9dc0bf6fc908e11056632a8c19e9fb50f26c835626c01663aa801cc74ece934394e9446f24d1a69776916cdb00ed7d1f11f19f697bfb24cdf2d4416138ae885889aff094319f67cec0c27d8f33b1d250b4f7e8fef80d32e03337fd3be636666cfc7da8bb0d1ded2383afce6c679784e8c6b7a8b53350a7d64f1ccc83e6a5174fa189bf685b4c7909e5b93720b69b9b96d3ab7bd3fd631a2b82fc698c20fd2316ed8021bbfbf27d3eec762d546de78bacbe8da57e2f5520d33d9a41d9fda2da5d4ae76eb95544eccaa936eee54ce5ae57635bdafc90cb3e87d2dd23a3f32cb5e7ab2e8f9ecbefdecbe47cbeec7ad7d0a66695f8c7cb5fb5887b8ef4779643467a226cdb9f743de6a5a8259b56ae9611de2fee81397ea50c7ecc77e89cf64af2f710e735f40a26c2bbfe315a2d21fb94aad516be46af96a7365abbdfdc72c8b014ab7d4a4b5d7c7f6f2abddf50d4b2d5f653ee480259cea3aae9ebb52fad57ab52cb11673136fc7979e52d217eb042583a1b1f202a5e24de60d6f08b2e35f1f73455f2f3e0faa003d68921f3cadeeb6c11b66cf03fd7f50a86f6585be7290254aca16a72ac4b381be605c15cf54daea731257d4c35267d0b775d29de9eb03060e3cda377df9ea6e21a6e67f61cfbf64d8f34540357843ead1b37ab4dc55df2d44152e48163eee6bcf14787f44b1e77fb2963dff662e7bfe0da3c8f63d1adb3205b54539c33e68579869c7a772867cedd3070dc33de736917232c13d048e6dcc7db5a4730999f698a8f9d445eb948e4a6d71aa4e3b7ec4d9e00d310edabe615491c9291a34397d084a87c8fe5a0b9b4522775f9979f657fbfb54cb88cade836dd08d5fd3229d1fcfdf30ddee385574aaf007e2d85a54c93c98a57db6a21c27b2d8777f16395bbba1e637c8e0751b64f0d60ed86c8ae50c81caf98913e596ea4aebdd94be7c05b3763606e877c398edfacdb0a6c9c8da6b525e6badf657c3b36a9b76ed7dfbd25e56fd1c26cbcf1c22cf1b64f9112f20d6c8bc0659b2fc731a64f95ab65f6d95db966c3232084a4a300b04d2876a12814d5f6a77e931c6fa0171dc30d926aa8ab0d734006ef45ddfd876a05b03014aa32fbab9de64baec9d0de6cde5ab4bbff9253f6650e226fa8bfeb15fa2628b1ea9f6682b361979071a4858601b92458cb6b2494cb35d2badf76d7deb5f5fb32930cbfd57b00d5aed0ad5b70566f9174496980bccaaf73555d94b851fdcead7a7373c2dd3f725839c3d78c31cae8f899af53d6feb6b6f1f6bcfe3afafd5b0b9c0f4351919bfc43bd4d75ed374fdb8f1b7c02cfcc5c8155794fa9d34fb1addb4e6f916d806f53c0bccf2784c5c601bf433b12ef0c7adb9d8a8bee101eef531553c78e17d5515cc72fa61ff615f0f5e0d214c05b8efef1f0fde75815128aaedc6f4f53153f36bc038cceddf0d276abec7208397ea5a5998601db00df989e80b9c33d5d4ae9cc0c036e4b7c1c0be6f0754544f29dfcaa75fad0df971fbbb90292b6c437e94ae70a45aee1878077f020a2044b0fd290862601b746b323c1ffbd5d6141573cf3cda863feea0cc853a178d4825770f24c4dde424af659cc0c7fe8883541c347a9838bc07af77b62005b445c61e5ce40e0fe9ee3ea774799b9037f94334b2b16fba30214b9f2e7267d377f719a3dc997287b63021278775032dba309928d444cdfa11bff4bc67efeed1b2462671e0d1b146365d076eaf8d3ea9fd1aabe74939a775813637ea13e3e09b3ef51e13e5e144cd21f2fd885dfbdf30ab57ebf7c374bd943aa5966249a055463b77757767825a32d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d458155010549794ae329117f5fe4d4247b6c8d6ec699b76c8d6ae9695b6a6699b686b1f0da4652df4d9f41d03dbc614fd0edbb8fbbed66d988e35ac066dadd344dbd6b6676b9e06a2856827edb4595db726a28d6824da6f254f3222723285807825d248d47ddfa77eb41ed8b24695fa812ddf3fd3924a1a5339af4ca6fd4a3119480cc3acc5300cc31430959003a396d2187386578e942c0cc330ecca5c994cc6e3f164f72621e5f130a121418bd990b0c5608c31fe72feb8100e611914ac048f47dbb439a788c808496b12c9bf8cc78917bde87c6440a0cce59c8fb8b901e5cc85388e9b739e4e59080212623221210605253bc171a6d764170a85e69c2020212613139c13a15027eaba6eced97525251e8f683422954a2524c4a06c1eca8e9890135d271a8944a23967ce5c0887f06785454c8ece892c7f0381b27b3bec29510aa5e50b6689643e01b8fb315193f423dfed4c95ff4475febe3dfebad7a6bb9d21f2f660f7ea7e74a596afb8ae156a71ad518f999a3fa241b947f4c885b70fc4b1b71f85334ec1090b78302681010f46251af0a00d0e7810c6031e54e15e91c54cf160d4c2f67f808e9e127907e806e8e829d333402f40474f81748fe918579beb04f560ddf66ed93b997891850b37fed26b588fc291ab07193f38728d7a4cd4a4e145527ffade1402d2853aaf0bb9d028df429fbc487f7e459bfc48839e852ef9171af529ba06dc6198c539a77dcfac06cf94b1d20f57a2593c488fde44affc478bfe44b77814ede251fac5a7e81abee3748c2add17432ee3fc741f7aef429c6f7fc3a4f8473da66ae49aaad2cf1f6114cc2a95343599c22ddc3ef943bedc5f65c32d34a848fd4732027260d8f359a4eec7546d1f0f2bdd6baaf0cfef7646300be3ae5b21ad903e1985dca955732dcd2591c3c8ff733853957dd3fdc1f984cf1e369e82f1e0d4d9fe5366aa64bccf99150f4e9bd583b308150fce1b9507e711373c385b017870260100d583b389ed3f7d982b2e079c3f8013087006b1fda5cc5c71a0dc218b00e511a04c02944d6cc903944f6c958b07a516542d1e9450881e945e5879508e61af460fca32b078709260d7f0a0c4c2f6973d22cb0b304601c61ffb3481b90ad90c60ae422060e4f1c4f6973e4416d4cf4879509680a5e4417903d0835206260fca176c972b387950aa60a33c284f00d2005f802a581e3c6193b9eaf4fcb1b3e75a13c5e1d8e4ec41aec525f1713813353b1b01740278185c8eafbafd81f9fb408f7bf9aa7ba53e1ab8570c6ec607fe06b9170dee650367e25e7b7ec8c657229b938d888d373f94e32b11c8e7e56c1fe8855ebe12bd3652e835800ff4ba175f8d5e3c351f7f6066f940af6bf96a64d3e5f86ac4f2026829e061e4d4e87212d0bd7c3572d9f88a04e3a91c5f916cbc0d1f1883004fe303570af0333e1065808ff1817f00047caa7bedf0df87c38b7ca097c39f3e30ebf0261bd6877ce01dc0837c390278ef03bdf9a297af482fbe2ab5b8cde63e30d7f84df4b281c68ccfbed7a0dc9fe22b66dd8848ecd257cc2a7dc4379ca81d999582f4f2b514da734d8fe4852ad086ed0f23ae3c1817892becfd64fba7a24ae4fd55a2ea7bff165195f25a9ec21f230b0def2fa3eaf4fe35aa4cef9f4555c8fbe3a8025179ef3f8a2ad2fb83445509895d3fc56b557b29b45793eb839ed763a2a607e3e1d768d0b2a63e91d3edc2fdc2150319cc9089a015ea38cf5b19e707c4b13d52e9fd3d52899539e9bd1e5355fa78884878aea94af1f3bd9044825929526829124524b28844f64d1ff06c19b57c5552c0075e1823189f80d1c8e5abd20e1f7811f081f9001fe819e003bf001f88dae0c8458091cbc607c620c1f8ca6bd1819403090752cb571eeb03ef0004f0811ec955e3036f8ef19be45aa1ef8f95be3b13355f858ace5a74e643007406009da974f63251f34b2dbef24636246fc3077aaaa7f18179c6c7f2d9b064f060c5a7f8c0acf2347ca0a7e2531ff8df07a244bed6a9d4e22baec5f485782d201fe865d36f1f78bd0fcc204ffa402f7b8f4b313ed0f35cbeca30a5d5077aaaecab9f976060945ed4e0a2856865c4c2f38177c50766d053f1818fdaf6537c206a65dba7e18bb1eda73e30c60637172a05e544dfd7bc3f666abe89be51e8ac44672e51856bf93ef08a7c603e712d2ed307de900fcc20aed67b1f78eb933e307b35c378f6711f78c1bced6f1fccf60fe74ceb1851d917fd31204934a86277213cf25c1253e5f978983fb81687939530abd66d9b3f46e68f916ffe3051d305b3aed603c7aebf8553b5851325f2606c62c5c1786aba0af0c5f607636c7f90c6f607638b3b6d4f7a50b4bd7bf0b4fdb79b6c5f61ef1f7823e668546fe1e67221327d7073e5b0f5e0607ce5c1b88dafbc9608f799740683109db90044672cd0770b11359fa46f17226a7e49df2f449418226a7e485f3244d47c4e5f3344d47cac331144d47c0f46fbf95ecb3d9f7f0dc89814418e1385b1c7eea05909c06c067bf6982aede361fee6da42db61d6fd6264bf7efdc69c1a732610f3e5c53e75104d3b6d17d7aa2b9594827c6a11d3c6a6fab654fb6bff566ca3befd1a522ba8d66fee983333b6ea694d1993a91666c25029a594f6845994bb41d81c39eac77e75ea21a62d3eb5263f45ae021f9d395671549752448bdcbd1adbd9f4d8adf956e9bddab35aebacd6e24d33b03dcb38b0bd4aeb79ed568a55e9f9a8743942b2c5c8c2d1aaca3c2f68b470628ec6e9b945da0791880b3db7fd48fb307a137c8dd12704a7a5765fd3befe47e374959ca6dbd65a2be5b4574bf16bdb63a1d742dcb66d4d84381c9cd073db731f12fae244718fb78d7bccc27884f1e066cee6f160d87aace7ed6bd769cd308fc56e66f10e52fb64952529bf79c4d5e6cd7cfbda5f9be9cf10d9be7633fbd56a4b2d09eb106dd86f26512f9eadd9bad9e5b425794de4a1bab9313d5f9e9a3b3a663843f7a1c57f707101e2c55f3c08893d87e7d8539b4fe8e8cc1e134fd7d4b4ef5f65cf830123128804e26660a4666066b65028f3ac808159a142249339fcc19f51124831a418524c29c68bf162bc18eceda3de7e08aa450bdae28b91690b4a2966eb8b17342444d3368cfabc6906f460970303830a0961c264326158e6995971c2b0138642cdcca050580aca8949c9a79f6444e4640a01f14aa491a80b7119f4c19be6c9661040054d8b3ad0810ea43083d0c318dd9d46c16ba0c568315a4ccc27e613f389098179bac8f7cced6756ca1817db6a31ad6e83981a54a734e83a775abd06d5290d64462312c99d569f414c754a035aabbb3bad3e8398ea9406f6ab775008a15d34746e982827e5705a29a5d6524a29568222627a3d427272aa1f86619809a544240444d33f42e2d9be7e23249ee781be5a31ebb4831a7312e5fc9c481c273a461596c6aac53af03ac61476b74709daa77598804a44ba4ea49f6464341a6112c90953c9e4139a689accb6e10fc6f8e4791bc61fd0e7f3b1b644847b1073d98cbc80be7a82428c09874cd889cf079441d68e80be7a62e2e38406851813fe68260dd32c4846260111b998358ee3e6b4f67ef593e927f1783e235fc88b0876c262768233996e088857228d445d88cba00fdeb4101c1210d23b89424a29a394324ae9eef7fee007d2bfede50936dbb67138140281405de5386b39ccb25e04111eaae34648296594524629dddd3d36d28d90f586fe56298da896ca1f48296594524629bd08228c9052ca28a58c527a11441851f13455418827bc5eaf1748ca70cfa8c2bab1c938a595717e44947aa279da544c54fc2ae78bd3cacfe93ef58d952da5499ef387fbcf980be01bc4b1294663e5e49171de8b73c0eee6494dd33eb33c9b6b797f5664f4cbba400036ba41a09be50e0f2a59a07880b08dbbc11eb6fc6854c995ce49e9bbcf396f987cf273b7220a75a2b96354a951a5075d488459a7ab93c14dc6b9b146a3393712694e6f2b792021269f2669ca3e208e7db72b4861081b9594d29c85c8e0dd930819bc32329d73e6ccf96db307799220cf584d97fa94d807c4b1a3c56ee6d13612267d482412099449241217ea2a2591a614a952bfe48edc8926208847016fcbec517d43cf6b545e91f78ec5a85d2d4ee9eefb6a1d9fa71317606efba1ed3c6cca45150e9b1feb52f38b691d3c7583cc76b74c5dbbf6e39f441629239d1f4db7c44131cbe3d93c9ecfab94af5d9be9ebe345dd7a32ecb5eb239a4bba7a10b4e3e33803ff267fb3da832b42640fc6f8e4d5a87bc919f81bb9240b89f27c31aa6ce9e5cd02987ec539ccbd69bbbfab75605f8c36cb3eef4c56fab6cad7de6af6dada622da68fd16dd354de6036363698f616b3ee5b9cc3acdba67dc38c72e4c8a1af8f6b331790fd4a44d8f3efc5f4339cc364e9a0807469912db225f360167d0fce616e3ab0b75ac7e733ad691d2e5fe3f39bcb57f42567945a92c5fc99c1b9c1910b0209f0415fa5969c71b71059d0fb411155e6db0f9c1b2cb5eaf6cf52ff70f56e3dea1686207dd9cf6fb2875bd3ea263dbe68fd6edcff34786901b61e53c5437c550db3ee8df1455ff4934d481c1cfba50765e86347d10b165ca6206a7142b793841d5f2a1157dd4b9620b25013c4195ee50ff2250829b3e34b1c4416fc333cafda1e9433dc8372c78e36aa50944774b16ed247796fceddcb7b927d9247fad26ba2d24bbc8325954a928725e5e4b464383727ebec6ce6dae49b3d3f73b92f39c7bea1e7e57c84bb849215f67c90d4b2a7ff007b365d4a62823e947557424297882059ccafba94c4444d14f781259ced034b4de00f2cf128e9ecf9195872b95cae56eb73ab84444ccd2f1d61cf074b4bd8f34b5128b54a2d8f93a4e7eeb2c862f2ad5769bd4a293b6be70e74df4ae547345bb67c6d30875801b306f6dd970f304a5de42f23574a69d537acd57443eedb09732f4490040a9a60010f183c91c5f4a09ba68572901c3e80d7fa9e6dbb3e3c1e8d6e5bfbed356d33226b7fc3e4b2af8fb92f6abec9c838ab744431f57cf2894cea481dcdf3374cfaf1b06d3f238759db1723d38d5a6a37cfe6f9640fe9d23ca43f5fbc0fc2ac7ba9f451431ba98f48f2a369ae5353ba46790a758d525d9f5813cc75c975fd65dab3b97e0ddbc8ae4936a6638c51621b79bbd423186fae453e271b74bb3665e93a84e336d72021d75ee7ba24724d1a8d36d7231269732d2a9536d79de76dae4320209b6b2ec475369936d7201b74bbfe8c90886caef1fee85803d342dcd7e40748b00dbab5d75efb4636d71b09c9e65afbdf5c7bb4de5c679feb5be21a3331d95cdb9393cd754541d9640add5acae6da51a8cdf54ca5aaac34d014a814941393924fa73ef6ab5327955c7a37e66c3d266ade88395b7bc72c0d874dccd9f63ed53762cea6b4ce1f1c0ed702c047cc52bd2623ab7cc4ac1b5456c4d5df302d9057bc6b0dd0ad42858c6d5719594776bd56d25e8f899a3fb6e72d667942f0c3f6f963cbf722f08d952d13b0e2fac64ab7d3bd266ad42345a3c83bbdc9ab628b591bf79a8c6c6388e3e6f48d95edd70711d962569a6da8644a9d89925a229a1100200000d317000018100a85635994a561d87c071400126a7c5660563e97c89218875110045118640c318400a3804186204343320b04986e61db4cc327d578348d024824faaca79c578f46eb3a6c5e169b7c7bdd4f91a600c7654ee94fd86568df1c9851d58f440af30e61d556397f97454a296ffed4c1a93e4e07a3c145a1520022d615136d3ced4815ef38dabec40cdca8d59eedb202e38a02788d79f1d8cbaac98cf81929468bd889b8c9f6d8111862acdddc862e5d2e6302801cd594805180204bc2ca95da843756a5d1b39efc4c6609c0c91d07c2fdfe9fc8543cd32b8626b902b868ca0fa4781227ceb62ce0ed2117b5efa3d1757ef4334865d8e4b50357087b5ec701731280cc6e28908b56586d87ead146c24283f0043f89b06ccf63789d84dffcbd4df53d47db518fbff28f24803497d62c92f7a236d1ff7d9c0220c00926005dbf47ab378b9e414f1c5d543683b65167897d6f3921c551f7171909186d6818ac089a01bc3f93c8d3ac10cce806a5c85fa766d30c50a9a97de8dbde457de0b5bfdc5eb5d2be0eb9437a774ad3a30a33717952b940c304b40261efefc886616710ff50ef62a73a0bf5d74df9ba02934bf645cacf3ae4664a4128d6ddbb893c75255e284eba99b0840a434653023b3591ee1faf93826fa3f8f0cd49995bb301bca70353d663de7b6f1192b309a958cd1727d38c78480c6efd024c8007fe24eefbc08c45039a4e72b40b575965d37e01693695c36a0ec4ed0b39e3d88278fc16371ebcc65020e2d93b3c01e4362f231e81329610e8b4084102ae791029b3f07ae229983d17aa7fa6835b084a169006a0392a3a2b69f5d011fb99674113bcd5907c7c497e3bf46370075310df859c90e21277906818724e059f62ca923b20c9c9246e32dac644a2a3380e7c0ad428d5c76c0911401ba3fca0088356e68972b1bcf695f85f13c3f074e751acdeaea2e89bda95ebb6efdfb6b0ec58757cda0cc8cecbcdb73e74d694a5f01924676ba0ecd2a2ac0a387286e29c6ba22d33fbffbda74812c9cba1ccb2723e2983120f4e9227ae1964c11102a0faf07dcc84e2367da287d5de73735813b9ca90dabe42b0d96d290906852b96fad0d8ac3e6c8b2bb1f5d5ea561f7083d28df46bcead11fbf42187a6b022ce74d8229382221777c66f59765a7382f41df827ff949bea5f4760d3a740e2e6b3fa3cb0194c4247198528b9b4e47f215366942605a638a4a2c2d9518dd88dd75cc1074fb6153f1f63fab8a3c97c9c5a7c384d806c56de04100ae24fec43bcae2c85420b9dc1d6b1cccd2b7d3249e716093b889742f39b96a7eabb94e86451f495e5cb5bfa906363f5d0273724672bbd0a3bb02f7becf876169f9d04476cf429412df8740452030be40f6d59c3a5eeafab089f475bf41988e4ac763bdcbcca1be2ae6d75615d548741deda44e5f90c3918446950731f9e67873fbdf8cebc69582e50c5232ff27f2ff72c4268fbe2ccca3ca3b1b62f844264abd87184988f18891074da07474b1b00b07de3baa55a94ac98413ea59f79aed208999b23f4af914d047b67585232bc477a010985970334ac9a9f71037c8db019190b9991924a84291dbfd2879d0a099113fc5129a04485f7528fa0447c143c150e26542bf78d024e4542a4fcc7eae7b2c553ae227c08a6699ec39d2f434e056031baad2221f7989df5059e13f49a0ccbd29ea5786e0fffa2cd91b19819995748db39e5d2f994fff02321d98eeddc36edeab90ea0439f501b849d562e950fb98f8f8408241d5039a92549c85250c06eccd87dd4a042fa1d919823fd92805dff62a6a41e00bc8ae09ef7357e2545961da14eb47e9744ab816c64c1d2194405659f98ca260e890c58c96638626d4554394a374a6306dae18ba9299245bf46ec4e6b4a43dc19d9c7230d30b5d9c943f30a8d4ea9c330d0f4911194b6885b911c8cff8ad0f9a31600e46865e80618008688ccdfcbbfd3abd2aadfe27dc9cfb070a2c3dfe10bbb16f46f50b8f2cb3bedc9226b51a6e83ec64d06438c853e8e0af1b3736924233c8bc3b15fdf053c30ddbdfdeabaf8906ac6db643e8b01a9eb3387d897a9089a0b72aa14cd70d4a0f25448cc06cc928ca8293e647f32767e2a72dc9c85c6efe4cc1118eb981808f022cbdda6fb168e60185f585c1a263f23eddf576377e571cf0f63c8c51b44e62cf135dbb34c8659905fd60312726b87abdae0ca3685ae8018f724824deef23566155f1a138d22259b5aba803fbc2b9df4f8e518e88792cbe38926139b6ef510a184649416ada5a1518096b19c8e1bdb6c128e8ebd49957c802de9f88f241da7f5eec4251d42f060f3ca5917d9ae9eb60d47cbb807b40cada370f7692273cbbec0457a93845a430052111c4c4f9e42fdbeba32513f576aef7d704270f19774793e01055d0528e83a3c2c8c851f7d19c51297d47a3f00085015beab5b72a863f08bd2a50316dae21a581a6dce8d5f7d3f629d1bccba307323918db3e10b5de702062444883c1c1601cabf8bfbd78b88cbf8e91cd7f6424cc19cc8c8aa2630090052cb0521e720d9cf57f04a361a7cec70b60cb15ac41dbbc352e29a7f13ee8a8b34021b9eb01651491c09e3c56836a20e1e04fbf0ca77622072c0f6457798780ee9163ef1b2a47e6ff4719b1bdc4daa73a10060120ff914186803aea9997002b087b90a4fa9ba25be83bc4e337bf8c56f531a18f192f7093af2c6f8d8826dc86b99474c5551c28def7ef76e4ea5effeb4f7dd216d78345fed7db505cf4a557529c9a31bf44e6df151fa6b170d48cb00238b12be7805ad1691f8e032e7527c0a5ef492e7ace45b6c3d3cb0f9a5438207ca9c118b71407ad868b32f310605c35d16ff82b6f906faefe1fb77de9a9df34adf4f3fbb0ce465526a394bbe093750f9399555946f8684d584f69783d0f6b8ee2744d852a80b79f68740519f20dbb6ed85b63cac528f61b375ddba6bc715e79a51355e7b07960c8cccc0b24757e481f23f73d2452bd68ad88359c1b18916ae8c2cd055804f47a2418bf23eaa045ea6c3cc2ee837dfeab4a55c59e3fdd50359e7df5976cbb1b454f1e5ae5666754e410283301b37e296ab966d140d793511b5212cb769109aa97e609f5da0de4e406c3ef4d9d6d1a5f2a2283bf6a01b0e2549be1738496cd0b84964a66a3be7a63ed2e60b4752807e7b232c988818aaca8cd4d740b871ab287b83b57f3e805988a2b2ab357b086160af28d5d7ce68d006ea2b337d021518673b1f85f264654006e9fcf348c37b87138ea03f5d9e9c2751bc291cdae97c01429cd8b06ea68fe9bdb220423b1f202d610f978b651b3598fd0cae1e3da5f06b8a85115c8a0b4466ba896de385bd96b58c2a7e6dc5a5ebe87758e9e28e307e420c93542f2f516cf8a5dd5cce40512109f1971843448f23a04d6aa0c176bee753ab414103bbdf206ee6ed4bc26414e13fe9ee58a848dd74f223730eb49943731eeaf9daf95706ceda1e35f4cfa99f469dd97a0f95d9cd36fefee788be0e6a21576d50fa237e024be4f589e10fe7c239ebb1d058409d47ba89b1a749be54c761be3ec9f2d4086890bbc6d85a7a1d17b3619d738551a27660c2481f54a7918b2ef3c6ce4a6fb2e7aa339d2556b4dbe55905c843f46e1e40ef82d875498b8a5935ae4fd480ed146de95d387480cebb7c97058dc0a694bfbe6fc65c8b2208f264f317c53cc6aea833bbfcfab88da30c1b07da116666596e94f4db4fb45651bc11ca59790b5e6cb919fd8d2e012514ea4ad339d5e1664b2b6c33150d11189ff8835821a21a4576d5b9b08b7468a6be2dd1e5dc7cb5bcac4e8cef9548d0e75e4865460326eac5093f076c2b75be3e8d2ed16b70b57dfd0956aea88db331e6d99c715579af86e4c922b3ce45cb08a810ff5cabd8d245be927570f1bbd54968fec68578852e3e0020b7e92af820978af4e2724c795e5bcf317e165d65341ed3a30b6ea395387fcaecc64bb8028107c19390cbf0b99f8e9399cc8ac927a861459dfa3065a1b6a98194ff1737f72fb01ed8feef3f1b4df4615f798f51d5a3537d0ed14180f00f5090fc9184a6400a9a6204db538acc8d502f3a5f1766cd4b38188dc8ae9fb2198a56233a10847e524644e3270fbb93b72900b08ee2a757435206447f92ae980dac7911f244c5297c3b535877f82b20a54a9741bb461ce5d7becb779f24a185467f88d8540bd2cd5d02c0f55e34ffd04b8588ab347a017d3fd558a9aa87440e4c69e349c5b44c7c1ea7780d19b61cbfee813c18c0dae7119b4e2da67fc92f74fd339c66b6c1e3d09ade2a3fa463a2bb8cfd45c2c4f36aacfdab458674230a06b28b1d18ced2e85a581b022f1a2ae9a4348d9b85fe8c0b9401c08f72a98822cede89df0ff22835fac4d268ed78b7a14a6a764022c9835b37a78b465a05a85e4299da5b187f806c9ab1ad28f85bb2cad9c7b0cac3b26f97df921bfbaf8da97f8b8e18a1e8de1428928fa65889cb7c8aae3164e65f0900a8b505907a2001dcc98788c0839f7907e2c55a1878e2aa923ef7f6a28e8815b2c7619151a890c5b2bb4df22d64afec57c6f3186eda3e91e052a5db3528c0068f65e26146b0ccca42e89c514038570e48f7536b5556bdaa924652804b0cf559c2ec45b2d60417d596be223d462a7d67a1f6e082a340c385cfebab6b12801206a5253457f19fb5914c745f3c5926a7ee25be39be4483530acc3bd6cbb85ad54a9e39256d46cda08420d2f3960f0efa9c6afc96a4d97e6cdac3c03cd2c534d6bc66ddd24f2408e0a926e56f272e269c2d9e38cb194bee60e5d8ce136c203b09a08e82d97f22bdb2837078fc8aa055416efa85fa8dba29780537f91a9486d308ff9b84a07a393c791f44215f7ec6970a5ceec311d21b37394f1335fba4f9451efb1a7905849798e95258bb837ca9aa55d16025f9acec937538e536e14f3059edfba567a87cfba276795087c560b2ca8ba4443bd0e984f829c0455af2bb4489ac6af589e5e028a24bda556e81e0b88e74b975d9ac265d57118374581762a1ae1b173d939b39019039db2203f20cc6cfd6a639a10814b5f2c5c4e5e6d976c63c4743838375128f16bab23f466f7ac844597ed1ad52f88f5eba3827447f885fb2eca1d579bb3cdb52cc0915de3638d6d8c03178fd8d44ade1dbea81806b5003821d8ee217454b465749b9ffae8f4e61d960e297707fa584519ae9b4ca92ee63833ee66c34c31c591b1f823a9eebb810d4b03ee640b9c819ce2a0935af29b18f44f8ac638628df9cf676d78fb30f34df660a798e44b40c84c2ca1c5337045914ce8214c1ed322b795edd295e5150a461cbf00fb0a7ca973865a1330289ed77108acd48de042bcd6610859a22f9cbce508a7fb9b41b657da3b5da42ad08e0ca7d019c2648f389a86e62695edb9d89df0468a9520d486397fcaaefa8ee400b4e0194ef02291fa7aef7a397bf4b13684540d6bc6246d3725cbbcfd2359f9d0273eea216e7d5edd991e874b4c9425771cb2617a08c1955f1268a8e596f66b58f7d74a49da15b1a9b05e9d1d2b2c2c954db3d6c70bd7d4e1c76f1b8bcb8caa14b5aa72e6b605128110e9d63f9e548a934aeddf6289abc66d734cb46f173209daf583a60f930e28435549ed0a996f6b50daab93c1b71330178972e371a1266f5a81c2640f64b89be159fa6d8fb01bcac26cee50d08b839fa490c954f631a84940fbc7d23fe36199bbf64c560d27c6af16bbb50bae46c7c38a82ce654d9afa16d79e48fd8526f47c68b7b9ea0b71d492f831965aaf4014c095694cafa1414cf3f983a38b4a567900363502362b6ab1ff2eb097e62c85e056438dd79c8a69b49508aeb86a146520d41b72a22fd7ce6cc5b88269ca24abafab7c3d57cb6b12bd3fb33e06375f722aa80f54865408ca2120eac63a9f883a8a6c7d7e36a0cba325ed009730ec9b0876040be07d2093b790a69cd544c841b2587fb430aa4e2e0d61a6bfaef34b142d0d2b126f2502b54d1f70378db5a083d6417ec0b95ce7bc9117dd04f09632867374f9438f2d6d557df18c80ce9c89dfe718a76cb158a4c79da4fb9bc01b94a18c8e32b9ffb1e632be6a1b5c1abff6fe731c0e5a07db7ff659025a1497e7d454eeb02d333b93f59ced2906531d5f48e97b6d2ece3f98028f5f4351d374e34459b79624f37e689086f6e9956079e78fc260a0b920638399e27e5e881bb2bf21ba7a212202f9d492128fb5791c900887a5c898fd3cabb0bde8810aa2739d1fdd069f1ddae7cd59cd16b6b2cbba8eb323dda1db1affbf59d85bfddfa7898f71efc8e81202d2d395a9b9c5a150ad4f5b9daaa33d634a627c85402c798922d6113f257c86c2b4051c2c7fa60933debec2ad2068e68e705c5625587de04f1ea83e3da6b70e61ddfd79aa181c4a9bdf938ed70913bed37d6d107c88ba20bf45557dd9304cf026b3de80c3f7bf6766143a395f5485f932557e5319f300b995c6490d38bf2dd1a44b1d35fc8a02aa4ecb5a91859907a85ebe7e23180ee458c382bf30f436ac22bc3dd09992756062407992061b1c7ae01d4facf14d5103aa12549bd9ef2296bea6652657d14ea5bd7b706ffc2352dd0a437d35705fe823012e31e4515bd0127658899053a5c0c05648fa5376fc731cc1f8279668dec810f002dadaa67961f41919eef8fa1e6abba67b4fbec913e1b399be66dc01bd9071f6e0fe44fb8a0c26728577dd5c0824d565e0a6623e92a31740983ff66c712dec48eb825fb52d064673b5957b6e445cf26b9ede4080720a1d45c64ce83c90dd1ee4963130f23139da71fe867802a9b384861ed58824e60100c9ef8341941d8a0c0ad638f3388792f6e36c2a03db965a7e54768832b93eba808304f065a3e413ea99845471c008a41f32bae5b7cc889268761765c29d08bf015b377f2a627a5627f785cc0e015e94d41ffc4442b3c3cf9831014c75ca1cbc812fdc2f57bfd5e3c7ee17843d2b3e4327a9cbb699dc9b1a8b68cf391dae9e49ab1e499fcea06b3f96ec3c2fca9b281a9b0fb40189034a1a16163fc2a3cf1aa727cc420064d619b8eb0ea806b10ccc3c86fe3049e8da632ab569bd31d88775e6035bcaae2a88a7916d2a8499407b48b64f4d9c6cc2ce73569cc0f5c2a4d67a83b435d4d5e2c2f2eae71af00dfd907eefd875561412c429cc2ad618ad197a441cb5b6413b5cc52d5a93365d6ce96db4d162adea919731591a1285e68d4b6823fd9f31bdc5db6af855d021734d741d905b9d809bb765c8c975dc7d95c037941f997270e0661ac92327bb88c5323cb3e97ae10c9326b07b8effcee6f0633c73ab23045170aa8f51c91fac5052cca485d7b1079a546d639b6997c6202ad1b0edcbea0d6bb2fda54591e3d392c50bb2bf518280747af9a8f81ebe311da0be24642a729c11adb39db123ef37d52ef48b6784cd2629b8eeaf1c2d8d767014f1ee86356f981154fcb72b46c698cfc071cb5dd50a36570e8bfb89cf8ec5d8c620f449ca4b7095b6a05fd9372aaf0dbf3d645e101838d4b543385641fa2edb1ec4600cd9ffa49c101a61c29ff3d5420dc076919ccb06082691097c14c63797a1836534a88af6003b97537900ae323d83884ed9535ba8cd5829fc19c5467b1396226cb22d4e083710803cce59d16b9e898b65dc875fa8bb1a06615b0756811626aadce4182c357a3b3ed90599ae43f631d0772d5b22804279c760c0f85d1ed7f112d968bc7c28cafca1a0588a70636b114c655da4913c6ae837c1650042acc70fcad12db956fcd71c0289957d58c4e83fa98f24b2ab1a52efccd1c3eff98b415ab288d80c65e754d1427d15e5033adc59044085ca6db1b39dbc5a3d0168a0cfd4ccd3e5082ceb28bc65a3400de943e19d46c84937f2dc06d5ed4937fb853b0806944e08e5de97d03857c10584fc4610a79eea8f7c5e5339301f6123b6a6706a3b775b816135f58f87a090afee41efa3c1dda799c43006d74e3f40a6f7ef8052fa09ad7cd7b0c2806b37f2ab41ac13604b6591cdc91f96f012336c9cdf1371c108d8b86ad20b7aef32acc74b2b8451bc9cd8ea41cec707ce02ec2870e242bdc2e70d5f15f9ac136456c71a051e15fd43a2177b257d9068cc35eb5040156c32b14434ea90df459aa01a5ce31c49cfe789d3508645a11ed65a2ba93da7d598400fb6cf491653a305b5d3c352c6b4c42419a72d6e3c7a2c26cc76bd742a12c8fd17cefccbcd823d4e92738b257646e91f1e500881b087ad42ce91a0b0a0a24a601869496d904ada0631314d5716e027bcb678652326de63bdbe037e5c9085d798d83a9771601746e3672c59e5212e924ef45b67816a4ceb856778a2aded4e9156d5af7c7795c245f35c741ac42e3b72bc12296430ef1f20647c912ecbca0a8fd1ac5e4b8706b71ebf57f1a7bce7bfb857dd6e2795d1626d5ea2ba871dc66021453c258d0361a16746a0ca7eb3563a9b24c3777edc12d21a6630f447631b8eee00c3e0d8612e9f243c6ee3a1ab417b9ea3c52c55248c30a42a1eb91688784d8a7b07b13e5707af0db2e03c9f7f8c8135bb136d7fc1ae62af2debe0dffa9d52dd5f01b91ca7c8225bee01d09366b34f73572486520fd21fc4438a84f2a5ac7ac35a320f68eb4b27d55d2c4e10c231f59c5ea7eca8c31a0e747a45685a185b39dc326233a58c1bb0cd51e55a4bee52438d0fda2f81b21d23c0db8302a2ab9e768f4ed861713873fa634395c79cb5dfb1fef035d3d934c7f36acc0fbe86803d54cdcb987b692f4de6bc81e186a94f1cb04187969c3468a30ae3842272255e83c10be8c9b43d35704aac2a78ecb56109d2deb4a99167c238e1bc2154db808fe06a0f07478600b94326de4f942ef696cfd8f026e8216050a3fafba65f72ef0e02cf25892d1258e2ddf252e4f07cca2176126fba1c109de27f637bc9832139015a5270a08755e9cc34ccfc14c8d1021e5b7252f2b4028c7209506442593f3eca86dc8e68b01aa5844553280fcd1dca8279bcfea093c6e5ef7e91ee9909b1e40f3fef4306e33abed482e76ae666fe5b10930811f3261b4fbe0061f9c9389e6d7adadf1a6151907f66013982f4d91fdbdab77c69d84f5c9981a08dbbb2169b29b28479a3cb214557897dd8fcf9e62398bc81a456357705af8a2408f28d45ee02f670df5e70ef40b6a56223605c6c61e46778877adf14b8fa5778dc96bc544cd0a09b68d93c2b45d77fe29a7d570a9bd8158480b0303b327e97e85b6d71d2da8b908159b6dc225b208790a63e00451a33d7b05a4c7028cce5630ce6260b575db5f696c2a4a40a0ba86a4321fbb0de9a4f224352f42a1714a24499734503962fc98d219e0a7a7ed5bef8c2d15051d4d8911ae54d60c61cba7237cd9cd3addf2a4a8cef94955b8750fcdbc7b9d6d3b926a2bc46dc59f633e9d33beae0d436bd8a9e744e59d0716c15824cc04900af9cb8dba21c363a03b5cf6a9ebde5c6ee1965f03ed9a883a7a9165d7d3277d3eb1fe810509e419cdd8e8b41968a31fc09e92d3b56da0c3f4a43ea11e53d6d2b39fa10bd483556b40d35540dfffce772c0d3b7ba74b385a83f4d95c3f561ad14359c9543a5d6704898b819a7be51b6334a85418f5834af818a0d3bd61cc199362239102ab68b44aee192b8004b70859b36e8c03565d975fd6fcc09c66633a9d232739c8af4e94e4025f2dc373429143b7cde9b61ef92dba5d51a3e3b7c9c981090847c53deaa7b6d041ae1c1f7b40d8d7ee63e387d0c095f75bc0060e47f58d3f735b9833d344d003d60a128960c0f7198803dbe7c4452275c8df25ee089e721f07aa28eb6c3a8b268097e32f23409963041f452d42bb8a9444d3368141d5e94721a758d9602e1262390587e293bcfa26fe139170929b2abe9b506d9a00f5c2a69b573994aded8aa65ff9001503fba086970c2e4cd0ba9f11af845a2e0bc7b788e4081c51f66b4195e82eedb3b6207417116842a43e18d03b073056398b0b5e784193937e1ada65963ca8ad57f88b5a446fbeab6ca9d9179575eb71154e0cd67796aa5092ab6e3a763d1ae9c0e8d43e484e739a9d5c7d7d3793f687a6cea112222a15ddbd000be1a20d00a5c0ff7ff43fc23d6bcb0797f92785d25692c62205142419d8bec076a20841f99e90553f1f94dfc5f6fe2b90a81f6fdc960d668f5e395be860c9c1a4895fa5f749e87e82b2c778d50a8c5111c03a88fc6876e0f061829f3f286046edf8f3851f6e796c099b4815ffe3a63afcbb056879418bd9d70a9a452bdd87976b9dc4fbe78bff5e49b532305fd59c78034dc9c2cd7c8c8749bfc52d3bc4311d52014d9e3c05e605915fb27410a0ad53023890e8355bc73cde1042ac82e54751171b363959c1de70f532148e23c78d4c3e3e5b02a89e0c34905ce91d570546498dd1ffc775281f014feefeb1f17fa15945996a875ee09f96ac6167c7fcc43e3ea4f95c51f6576627fe012db8f8fed0f8fae8b868ff12929dfd8242331a843f366aac81dfe31c6ffdd87d74422a4f68513848115403543576d82feaf53bb5c6f34013d90f9263538728ae23f5530055e896a10e67d2517d6cf99ac51c65aa3677726e5f16cac8b2175e2d2b6dca1fa3c3fd3a95a9386bcbd0015a565715998f0f38ff87e843bbb01e5d1864502a21807642cc2f1b54f861001f7f3c057c4ceabbcdd65f7756bd70ce2708b2d83285bc757a5fb77026214ea22bc4e8fc06e28cd18e1449a6fe61ac4fcbff12caff425f4a85c8347efd36f957cac3b67ceca1ccab933be87b8914c7dfffb646cadb8ef8681ca200db3140b0d95460a75bddd7c4e333bb491c96635ef2fa19c862e8b1c198aadd6ddc4f8a2e1ad7f1253dab796c21876cee3df4d7bbee65fed9c59162e01de6ed734bb35878a93d957c07f2b6400bb0a12b2a6316c64572d2817b0ddb4fe910394ed82d729a6e3204eb99fb42ef4c164ad8eed7ecdd6b675610fa0ba3cb735fd51a2e85b5d4e21022d720b1818e9210b7e9fb5793fd37361879efe3776491cf3c05317768bcb180a573d46b31d4c6f107ed353a02dd9acbcb28411931d6951911e9b74155f603de8ca87edc86ae72ff777034028eb8f91c9470ced67c76477a3456e04a5757029bc16df7aaaa541f3b6f3e0e8d76e6b05cf47b16a00f33bcf296c172c2ae567476885ef82f3f8343874faa0dbbbd6b8766450a16c484b316939b79d5ecff775c3ae10adca8319eae9295f9b1d5e8219b4d141fc99680825d65a84e7ffae7d765ef8d8c0cee8d3759d8ca2940af0cbfeae8418b936e473006897ac1521b3d3859b7258b6c05c5aad394f79faa10aa71bf95b0eb0cc944a391e0d4403eb8f39a7dc4813cd51e8ea19e191387da6953fdc02c8535c1a6e3dc5f043ce8dfb098c64feafb40c8158ad940e0c9236492e0bcdfb67994018b3c88863e492bef072f92b000b4d416a205dc63b2d9c8f9f10b4dbf8e01767be5a07f75221387067bf7dad0b01a512ea2d7f82886c638e4c8f82d6e32643d7483504005e4af58a812ae50d248c085e11189afc1de3060d68f817cc507e075ae1ab843bbb04f63f8410af1db79b8d1fe10e7be7a3c4dd4f30e66b7fe34b90464b03cc7d9ac005cb6d8eee6121e5c7f62cbdb97a49085fd69e84d86ce46f28fee5fe6875ec5816e29e505d0149d3aa605f3d153bf9f9b6dd108b4d6493682a40c729c62603be0259c8eba08069411130ee9a7b34d622f803c4b07af7fac7a74d8edbec363d190ab12ce6b77a57082c3dde39df9f3b1adca5697b55461d9f07713ec84734c29c2c15a6e2a232f009a85b9296c3cb376a2552e4da01c0df2b666219436cc1b9899137e4fc90f7339f7f71f3c2262409f958c104559b575f56e399723cdcd535bc98fa3df53b5d0052ef063f220bd470618d69071bc3d46b26a2015a37e606062f1130efbbe14510b33cb66bd0596fbb8199187cc5735bd9b366d3526a6dfb0d1208d5d63537d7d9bd5c282f4d9b79f6a53778134437f3fde2fd62f00a09d3ad3d2d9f1c58d59dfe8871b9d46867396a5814ad48c78e0ab7b3657d7fe9856d7b019b77c417997bf3f6dd63b52db99e649c97932b7b60bafec98a8e216405d4501e9362088184e96cdc3868146150008425f3648f44b220628530526a2e27ee24403a2e381a58f8682b5fbf3cc6bdf6f0bf23f60e8ae903480930e2b79712dd74dd99b3efdcc1812cd0b56ef26132d945614a3879c0897b4871f0f8e817100e4411fd52f25319dd7a09eb81ff98cf5f4d4b6b98b3a80488824a6b8c9c7b0e698dc17a31652cd7df7b873cc26a27d2ac129c677e1167e86bacef93db3e65a1d2157151b0dc20825fb3b064f448ab31b79ea1b6a0bdf8b80d95658aa6a64835d5c76626406e8ef3c903e491cc1a8492ff7a3d189be1be9aa63c2871d043fd42d332334129b01567aef02b7d1e16674d8e6de982ebc58481a35e4119e4dc2f355b5bba38d180b72db0f20f9187cf149da4d3a7ead22697bc8520dae0bfe4a5ce2d892ffe0c37e722f4b4727fcd4287818523019fbb3734f47fad33d947d6793df75242be36dff8302f5769fe9d575d0334066c5c1f61ff9b52ad056e34c5424833e134484e73954f7cca7e4dbd6c4693084148fb590456bf2c4a9366edc2f45668e19f4d166c57ee0b1bd9464962e6b7b034186db7e0256ec78809935b0876a496fc6fe67b3dff70394f88d4a150e19699fe7ae3efc14acdfa487137513314117e99bc1f94414ba2a8ab8c222524c81144f5e44e7da7d1d83848fdf33e0e78887abd871429dc611edf719f6168f8302844d12fda1389bbf339a73ac763f013254ffcb16b72af44804eb4481a5f56026ca32593eafeff938fc3b5a2ab72aacc5ef5dc5e0f3b718579e8d0ba7c7ce306300d8ffc10ffcf2c742ae7a9daa3166c32adc853da96454ae32b2b5c3ad9c84b530c428119efb66c1c8fe313f25b7a570d09c41196d780c34dd4aaf3946b8a8b57191d4528cb6e2046cc4eefb116ae6940178067a5aec3aa2828d56085f9f173e8f204eceeabe2a0ca6654c2b83367a4a34052dbc106401d900175ce67956e6df19f5a366e54aea42585e4b98467295d92057cdcd8e5b3565b7ca40ddb800d406a4673dd02e5845c8b8c2e502d03e569e54c044a00b525241c7a413719d906e9425f3a4b027d248c59a77de6b664a0bcd07af2d10d6e4b8cb6156769c17abb9c9a1dafe928e81c12bcc62c6d6e4815c5d33d03946d768ec31de6e83ebbe1cc13b40d905fc24b80f95105ed666259720d282618503ed20588c01b2e5adc0bc15e925f4ceec1ad262436f0d4a3e56ebbc1527d5e2e1e82075466802b42e3a212a175d2f8ad55b977b42b42e8a10451735880e469f79be318a10ad8b224429465f713e215a174d882646ff535e6314214a183d2ef9842860f4e3f6945151d13f8656f64d496edfcd9fd7afc6477b7ce4ad3445576ee13c707c75294c8e783c327409768d4f43162b2e143e6e1af4ba83c7eb81322aac2cb54baa5c1c42cb5c2e351004d4cc77895e7f650dce449df313d47c42858916993c9296628b5fed817f8dd094dd30f56d6279e604b94cbd2903c2d955517817d455c29325897fb453ac638fd60a885aa1846a0b42ec5a804a874ed7c1c08132dae3c3568cb08ac5a594b8fca33d57ac98512012f94e1381a97df63f0059a1bae94cecfae4bd3b4c2a59ce67c8b1cf0c69f883e441ff5b257e3390c51168ff4e4b2bcaf255018d57ef1a588e2386022efe5a6017103ff1903cba1625c9eba7cbcc14d9c8d35ef6717ebdb9b9d0e00169b07be462bec9a0900787fdbe4fe10494c59d9c2221c90656e6934f57f9e0b1b3400e3cd03ce5e551c430a4353f09440c9463cd47e81ad21cd00f31204b416a29d56bea998f3a7f75e6739853cc493b88018aefa800cc6951c19cdd373c72a5982b45254e02ccf1de42a003978306c5e453e2b738e28934938344a3047764d3b4a63a84f92eb3eaddb8dcd3cce468144ae2e6e5740015031b56b93dc4514a7af30ca5161e192f8e0aed759e77d6532da9b43b57bb4c4e13f769a54cb83467ad19a1ad34dcaee1439a15d134507b16327cf72c5a3adc3d70394ecaa4f98828f30d60a6d60765128097aab3bbe68f7eabf9ac3bb5d681ccf1fc8ff4a847433279dd87bef1040beeeaa24872c327d115d0085f24242ad08b090cdb3073bc33c572e97017dab9d7c3e463bd5695ccd2bffb62817520449d284cc41600709ec3888354a1dd85c3cfc41eac5b2ca5aa71221297f7deb2122705bd8c6cada35bed0d138d28f9e2d0fff5f4151199ab0d79440a93f2285743b587d89b12ef0e152f26e4f37b0f3ce38a0fdd4338af338a9cea49a7e9136b385e3099def0beb3e61df6a5ab3b16307ab53a1fd10b6612b29240551fda3e2cb17e2b0c93c2e7461e6c8e70aa55489d20547c9a607e7a8ac9137fbb57e6a884531162d7765fdbebfe5a4e314c87a3c15158c22713264797bdf9cb6d4ab21396d05cc6432298d84d64afbc5900f05fc2fea4301ce657274bc0eae208d6b2eda1d6953b85979c40f4b539cc26f6ee9885762c78c8c515d9c6788641b07d81db08f44a60d4b233cdf9c0e29f5be282509627c8d324cf62008647d65730e5e42a5cac1fcb6f033325d079671eb83de2f39bbb6348a8fe5ae692d88d7c41847054e40e0e78841670b02201fd35593af861bbd84ee8b02b5449e93ba76232e85e4783e81d3fed08cff19328c2717b845da36ccfb31ebf878c4bc649effd36b5175d0b772b46577eb87a82b5879bf4dfe857420ebf84f3fbdfce73eace8b46675a1d604f46a5be3ecddbe7921fa99ef73e43a7a22556fe8137fbb4e0bd517ff30aa74c037ca0737acbc3e9695fc1f6e5f3d26c3ddf0f55a31e5cc9ea8c835d96582fab2c475128aa7847a0f9d738e32cdf0874efda3dcdbf923b20622f026c1360e2a7de7819571a8b0c64f958ad0e10802b09574aa05d529348ef9c351be4c5761a7f2ca41f3def3b328da9a3c722c930c45f550a18ea08cb351df96350a0d77ffea8fbe3fd0a7aa01ef4738a40f60aa47aae86719097f60abdcc838d64541d3638db921bf6d7feaf853ad89f44ea8c5184681d14212a177d271aa3d72e7704681d1421940e7a001584dee6f9c66842b42e9a10558cfee23c42145d34219a187d50f9c66842b4307abbe411a28047e7992a89a1ebdb5e877c87a7a34999bff752541980cbce59e2802bebf3089e9a1cf1a1a8571e017138e763485d414c1638d534f253adb21e7c66a35522c7567945e0ab9c0e47058d4cf0e6c34acbfcd910152bc140895f764c59b9ffac4ac22afe8f6e9091d3866370be1ae44c7fca035300e84a0269e09f2d0429220c96cd56e64fb772dda6db220db4bee1d7e51219cf19c181b8bdf6f55ff7d94afc399baf9f96309503a4a58525f3e540053d672be1a1caf2ffddff312faade4bbb39afe4741457f21125a45db023a047a817c8bc913b7232735cba728d726833f9ca14cb19b2c9530929e3ca94f4644af4b202df4cadb892582e3b8d3f56d83f0cb1d614b8c83468a52c157f2abad81e61884a5c49ef6d33393ba2921194a521293c1f8bf16fddf4999471956d0818e64e0b50acb179df385212e5de10573215016abdaf019acf3cb6db5c69029bf9f936322797e32b995870907b625583579698663a637b651407dd1411ed850fd636c822792b8c618119947c2c2c2dd280ec10fc8e183c4a156f90f4482364e4e8c105220b9d5ae20efa7b2498a82a984915bbe304ddab95d06a10e8d6c1d4373fdc72d48cb5a9fb331e62daabf435c9a3a9b83bc028ee0ef2e58b4e8c3d5ee59205648979265dcc0bd6b3a4bdb2c323774ee23a902d7ea286f8eeaef30b85821cb11f566f0a9ea58d026e0705bc0e86bdf9b19357bb3b788cc3e1309122cc772a44fc17f513d7991394643f709d0adb35a0730f4568bd9f10bf8a54ec110ec9b4f81cec1260eed8f2c0d4263baa5872ac0a4e60dc1baeff370005578c582169652a6c0256052367e947b130f65f546b9dcf60bd021e56e81de90e573b4484810c592117981d3eedbe6b85010ed0b574d06c3119a219a6c91a546f74b2b04c7c0533afa2dd48f98847c3f138e42ae2734bb002be421fcdddb3ac0e9a859e48e4b44d9944381968236b64cbe3d22e685fa9d500e52cad111fd65a1aee5a00cfb34e6d8163d3be1d1e0174b5ff077dc1e8c28d841f7c3ba62dd7df827cdddb57d026791bbd76836f0182c6a02e71c0a3a19aaa70c1102e5db4e7f25b8293d22cadb22102ab783675d91fcb7041330313d8151761ffadbfae27220e09642ff3ccee4e765d0ada983927e806f32e38ab7113f3c4fa1844288acf3b05766edcc2ef1155e3e2d2df73f0898dd7eaa3b81caad2a97f336fcdb874500a3151250728cf02336f1b43429fffe73c0dd61d1da49f18759504bfa0d2fd2f76020df3845be9641f17b5205a707f6316d35fb939cc62032cb3286649b085ffc582136a188ba35e22509462f47688f09687b1d1110aaa35f6ef3399f3882e3c9f025f390855821a4ff8c21ecf2bfd731bd22fa930f5f6263e030a2a79f4034d87ccc64201a6e29d159b1a9e2e96a4f35493c803e2bc668a19d5b5d6c87f70d24e800165092a419de11396b6cb7cd35cd0ddddeb3deecc97c6f715895c39bbe5d29c91e10b6d29b83026117a9b7dddc3cf9177b2b760f6e63facad7e428d6f45c50d13e86dad8ff53a74705cc43d623c71ffa874d193bacffc3fc7187de150fc41b23aaac96530773395438a7c4738549532e5704041e7cc01fa62185ff38d1941a4f869ce61c1317b5d7dcd18598434a3d098a2065ad756603d989787407423cb410d911cb133ce4081a52d3fd4471d9c6ccefaf0438fb9b3caf69d8488ca13ae1988651da2f1a444c69913b7880007d7f020e5eb3963ff613178c90fe4f00808bd813fee0fd40aacbf73e37619b6190f3abb39373a066bdb15c1e6c521e2100131776fe9b989c07f98d5a2a3f67c3a3c4f6e5f347a29cadab253c1512978205da860dd9ad1b08eef3cb38e915007cb772239fdd3ab248fa1c0c35edfdcf777dd29a9a814eb1b2eba6fad6d717a236e56ed310cf83bc459e685fef80203f7f54220f949e856ebe0963c927352c9f9cf2a4acea399a68c1da73571bcb0749d7f2693a39a2aaf1699454b0d3d6d9d152ea6e2df51fb4d51f1b0ea00cef5ba8976fa50cea1550de2a453ef3dadaa39c478a2ecb03b03e823a00b1417e299891d6e900bcbdee4b9b6e4ab201dec6aa1c30866f69ecbf0a28e77f68e9eec762ff0d12b314171f4b1082379f010d94d5584880b011f79c4b928dcf1d02479b0319655132a2aa725369e90aa846224ea6494ce5cb05241ea7261c22da3410b8b304e2d9827a2182d696be02d13628dfb5819fe50d9fbf8508ffd20a904d3eba05be2a4ad3e3012c50c63de6d497bb57a8f5471a458f34805a0a0f09e011290e4042d4458775d28461865104db7a70d35a181fb1a379f6c8987f746df267d761c884587ee9625ec747146f183d4693525773daa28df54580a0fdc03f8434ba2a4558a58639c337e4d9f1c8442768bc359dc435dbcc09f0a4bf2ec25a6becc42abf333ba09c34654103a090083f3ad9355078fb05d80e6b5f6e4fc3835ae1196bf4c8b703d8e7a10dbf5191642a44a8d15c128d35eaeb123a8933b68af1ab8fff7ffd653379605a257f1cf84624338753c487c0aa0c8792dde85c890c4035196578d1aa3a5aa7b20d43471370d57b2381aa0726921c99bf2608d7d4219fc01d1737f9f5de0336646f7440f0c812942a3fc3d242a52a8346f132d5284a4c2390d3a8322bc1be5410776afe84e185e8422acf83bd12d6189c38cf7542e847bf310888536c322c0509457e6e2af33f6d224fbe4004be409ff9e393a035ad3f9b012c621a2a54a413074076b91b08a358b148eb242081fc007c4e9782313d25a71c1e4aa0cf788ca47589e87b95fd494cbe22aaf68840681d411dd1f726bad774ebe2a2ac8a4c7159aab0afa1445942a2ac815dd726e759aa1b24aa2eb8aae8ff41d5da85b863ef92331a9e2f733065d7620a1a8a1cb3e98e41a886ec28a4409300974586421fe973c5842644ee9331329ce3391bab3c0c2148a54442dc96e4574ca53d0bea938c6423e9375e346aea46173d7716a110b0dd61cfd236f08463b4505636dd466dac6a4a27fc79de94d5217e2694c546d9ed724186e75c89dc5508cc6f9f754dd861204d9b5a3f91d26a53945449a8a829fa5b6e2c53f2b629b0cf141eb81965a55b9e333841fa5432fa2bf11f201775b024857adc1ec6cdc71a7c69d03ba9c76a01aea7e27bb894be6e16f4887a9413f22dbedc76e449865457f575313d03aaf9aa1a941008d495d676acc683261e22af65c68e30550c2503ce84d1490a07bc54a5450bb5f9758204be8c1a980401b531142405b5bbd5ebb92d61c91e568939403deea85d80c6b674218b366d32d66e26aaac66c1f3a10219316626840517a17cf91752d6b60c07c27d7221d7165f649d7003d99b4569d791b6538a69b5bbe265e3f3882af9d614f96de1bac4633082aae3cbdcf5e137cce40926c0e8d3d41fcedb23424364e71a1fa9b2aacc5dd50cddaf8d53267b90d9e7418e7caf313b7263fb1aa6b1765d6c18fa60db0255cbb1b38eed5586c074c7fe950dfdff47f36be15555532a916afe2a1f799b5dd14a0d3fe8783131e49553169a7a0cf13aea663a6b4774ff34ef3b5a07c0a6a908ba4b6ad6bcdf6c42ce64c6e0348e56fa82d315319f465e5d75a165857297861b79a2491ae319fc10e6f278d3398adcb8abd540da640da70c291138b817af3387e7f61077f92d81eb9acd10222788a114f1122232d4490cb4007438b9967ca451fbc7162551812af97f8de94b5110ca4db1de31108ad81db46184ba2370f3c206287d85e92641eea09e33fde7dc4db1981e1f7db3886e7b9a5729f9016fa2818d9b0e4640a707eb9a119b444d7494b50bca8c363a3593899990ab0672242a406ba4dc50740774a0c883c620fa75213720f5939e05f7f0aac400d56c6218b385849a4ef0d06dc79cff0bd5b6f749dca485f7ca101374d566f5a3d201045b853919670bea27b0a1bef2c4a8932cc5137c25a1ee99999ef98291a7959b7a0f275fbd2430dd096ca73b08eca6109a8bd4be3959941935dba662f76457c583951b9bbc8e0be32be42a1742342a184569cc2c0ec7ec338088dcabadfcf850ab321722968e3b34d6f40462c625bf42945e0e0a40241eeda97f5376c89a8239dde09bee9ae1d90d562799a91889fdfac2bbd58b312f13431cce974b659fa7cffd37d5a33ede3d42f3515603c887d284be7591349407be4a3a8c84d058cd5d0c3a7d29b31a1bbfb5a7749f6e5cbdea1a367dc13b5ba4022d6611f6b5170cd1f8babf65c263b559633dba96cdbe8ee85157133a7413f671c40e264d9d8accd9aa352393ca33222dfd57fdc6531380ef68b91ca5923e7123471c138e7a113f48a025ac91d5556509c11a5034b499b5a9980328f8812844c4db278cf278d698db933ff0cd688250d18283c3c198826291f5c010040280080d4dde7878795e627de3cb1c7dee3468422b4377d6dffb3f66d9f6c42b6dc7b4b99524a49a695052f0552051aa76fd4e77a6348187d78bd2c5264857c59e8425a370bb3f35e85e5f7121224b4e3f3d0f012b3574428b65fb98ab022c97bae1f4168767c3c0f44b4e3fd2b43ce641365900d515f2b9758446f584f32d337585edfba491f82d0ec78af6fe12071eceb5b396839749038dceb5b3b48de491cd3eb3319f2c647002de943660e195c0317f00809a33f5dd008704893d16f4943d46f2f31832e31836b8528448569120b0c5179c8a01374281c29c709cb9ab77aa9faa15f7a1dbb1394a21e7157aec02d44fd8659c02e4030c031447d953244fdcf19a20620836d68475a238a5482f2afaa093d25e5a49e948d212cf3114bbe7d0a4a9b62545322646f7609399b435dd08a942142c2234025c0284c210b4d46aa7ee0e83020a81af4088e1ef981040e12260812649950a2251ca9e5f3f8b3dbe7d4cc89f4f953950cafea32491108f4d5954d00f40dcb828895952210e83f57a682286962b7a93fb41b6cc6f04972fd963df6be6788692a22aefb5635937740c47c6d741abda174b997e0bf6caa9eaac54afa8a87247d25ad482d49ef151012c6365011430185fb75df9e1c58ee9f722b6e722b150232ba7715100e631df00d0edf7807badbb7db73edcb3ad6cd8d8ececd5a37ed5178d454f825e47d5f9875b3372016d6085e614d4145747f1eea75576b6f3a4f67048fc0111cc1111cc1111ca2379ece832338822338822338e29da7c33b4f8777ded3e19da7e33f783a3a4f47a7298ff4a6a7b330facb7b79d30b0e51110f19cc691cecd3d91b10093a4f88faf0e9c011734377413884f2c025447845d47fb048bb81e5a2b6b7aa381a9f4efb95aaa6c1d117dc8fbc60711553e04c01473e7077e79c73776a633547d990dc4dfcaef7a4c929942e1731499aa8b78e03a27e694a560ff5122555354e729b1383c86834b9a9aa7136d634036b7a0a427f58d3fd2a04abb3922e8eee12f27e7a8e779eb38caac69f8e566131c43152553f545a68114ff50315e16829e7a074ed8cf7a4c9cd90a4895af7665495e7e3a669fb5b6bad756bad5bebdf7eaabb6ba44bc8fbbda807a54b63734fd3d3a86a264aba322e77a130ca3b4fe761a137e010a57690b0aa690c8eaa699aa677ceb9a751d5387803ab9aa9f2b4544f9b626a9a86c7f3b1aacae32e39cca7b088240ef77ee3ee2fd28937577b3a37bd19d3ff819e2b77e45870046a7b847a3ecefb39fffc916a88ceea6ef77bb9cbdf77f77b1d7a550ce0e89cdb18558d63de03ab3d25038391ab31aa1af7548df40c4d2e558dbb4b8c0f31d3e350d5ac14d97d13f1e774bd5435ee2f38340e4fa6aa710c3a0fa0b351d5c01c9d99604eefbe9d2e98034770888ab455940e3087aa9d8caaa6aa645c362a20fa298aca21460e387088ce08118223987309797f3dac47488850946c787c171cf28346c7e0c877308ada3060e860a243c5316204000600e7b5264cff0eedbeed8caac69d870a88c698079cabc519ef14f5cf544070744fddd01e31fd375435ce4597921d7f2d67c873e776d7253ab65f7896737f81aaaea60eada2cd88d0d86dc4eae74f91638c5d203277bb8b63ab88d0e88d15a191b7691443d0a2aa2a5045426259564965529db8cf470a29a44043168d0a2aa8a898d8dd6dbbdb76d35d929e7882b7c084ca89ca89ca895d272c272c272c2724e984f7edee36fe7c8a142902862cb6b0b3b3b343851632bbdb66c108383838383838387ae3b596553564c8104a045890c1344d1fca6acdaaaa0ae49eb7d65ae3fdece7338319cc200a99ce1d0b468c1829722304284a8838e79c7b4fbc276a484f4cd384c3342981c282720262019da8aaaafad02829a1617282f241f98868442f94aa5e17b63263c60a8c1832643c3135e14b88a43401051438d4f87c2c906559554c31c5a70996f50252d5e933e9266704454bcb0b979717181ddcdc88ac2680402f24aadad2f2c2e5e54509a0269090949894949450544a28a4b2f2f9883c2c221813552d2931f9efdfc3b2f6ae716b4dd4a3f9706d66a0201037afac46cc16bbb9f7b77fd80b6b3a76aedb3b96edca5aa30a6d2ccbf7a732f3c5d68c2d9685a2b6235055c4cd2131fbd8eeeeb0acbb3bc35cb7f3cc2e2e2cfdf66f7d357558fac58a25670b2287c4c62c48ac3d6e4f7a4a6a9ed5881fdfb7f72c2b0b45e7b0ecbdd42f9362366dcec6ffda6141ecc04ca028f77919111f96c923af4c0c26375622d8b5d6866c999999d95a666b2db3b56cd9325bbbda677eaa889f7afc5ee8ca5ae233914074dfaeec6373772cf3cf7faf592de025f27817111d750bcbb1ed2b885f2e8844a218a28515b6fd2d3903f2ef3fc91c26293325df3fe58cc9f76fce9c7cbf2773845ce6686932fb9df29914b18cd9cf96e39bcc8ae27beb85c16af1b584f9bc49cb210ab51c359a4c4bcb61034b1c3319d372ecd064f651de32899e50f47c0a96f1e71b13492f3d8a880029da37b97e68a2fd926b0129da27b920305363fa7d1b2d47a60cf5fb3bb41cd964a085654abdc746dc7e1afd7cd611f4f160598fe8f9cfd3589f710461597f4613ad0fd6be75ace7e2eaca5aac920899847c42dc873a2384285aefa57f3ad643b4230a2144a01ecdc7ae4382ca185949a87ba9f50e7d8ca69ec9004ed7aef5a0731686086cd746b7a24d6e7aaf07ceee3569ea76dd0cbf559c31f0b9aa6923620573dcb67803d77a7276eb9e6ffbbee69aa589e22b58a7f115bc636d63d325e46199d2c42c4dfbde2d523ad53c23fbeedddcdc3869e21d9d918a1e2cc298c3ac1c6c3f697bba84bce74b88e7a94bd2d16939ac9b26a3ef58e735c0776fb41cd08a949930480467dd34d61e104c6d7e8a8fe84cf311c68ea868a73fe31deea227dee12e5c7737ccf5335fbca3220c0e51918fba709d39d2dcdeb7d7384a52d28f779cbfb96fececcead02c2b17645c3d1421ca2b50d82ea8cbb7dddee4db7696bdd134f58eeb25b752158d01df414b373fb62be65126af91822243c810a500bd00b900c100dd00aef067d3ba747382322f64b11bfe614b14471d6809e025194ebf7ed1ef494bb608e8a46ee5b7ba9c2f2492dfd54d548188dd55237d6b0601cca312120c8553520907390827149163ed5550d84cd3813fb839954b43478868c180ec6c3a44b827c3df51285702e155f2f3c2d1f0fe48b65b2205f2b2010e44b858404f2152a29817ca5989840be504e4e205f272828902f939414c857492804f9225151817c815656205f160b0be4ebd3d202f9f2b8bcbc7801f9aade15053fb59fcdc505f2055f5e205fd43fe46bba2ec897846190af0703468c0a088e9747d619193266cca0c1d78a44303090af0600949410cc9e121e04abb9aaac6ceca85c55ab26d020eecc558d5bf74688a6cfd7a1ee27f793f3b87640384c7fe028aff0a7aae9feb4f69bbe4ddda2e55d70db5191eef80a8b871d8bbe69726e0239a5d851537babbb7ba6c939ca510f5a26271424f98c32278990a8945c1d953d45fdeb8e4d25d74edc554dc90fcb5af9cff5e3f3407ec7078ba21f5459af7215f1a2f4272d0fc4daf103c8ef60f99337b18088767c56fea4aa59593979a2892648dea4aa2121316985421f258b4f6337496c2cf317e2592181b062d6232ec6c37f250b1b49ca0316519f450b51ffe40a511dcb347ac7ea536728a9c232f7eff7ea077ff83ad67b785573d20e7a13d0a35435208cc6025d2d965c2da2e812ee54751203658289c99d975c1ea75ec76fd21c8f101d29163aaaa35a14291206235de80e8eee4caa839b1bad628a8d4a3de52bbda9551c93ac7c3ed589e33887a2dac5586cb53a3a1dfdda2245bc370c46d648173b3b6ad823478228810433c14ea5aad955e1275c132fc251cedd15d0569caa38e71c8b73ce61e9fcb5bcf64709f96b6bb73293d0c7dc2436094b5b2e4b88572c152dd4161f6862be8d1a963b868024129dd460b6afa8f84ab3f08b7feaf2da0ba7b74bb19e7b0b83c2e2ee4cf8c5ba387d79ed65c98ea0afcf53545610cb7c3011e1bbbbbbbbbb2b4b2351a26444e7b2ad2a17ada3ab5e929c63853987571069243654d14b9f2bb3115b92a81e2cf8f9ec39cc7db0ec41ccfa92aac66dc468f1fce7abebf38b02ab7d1862f56a4445d53796a515b17bc801e65209819e24114072ae75acbba0159f4ab5505185858aaadf1358ed2bcfd55f752791d84fe5788e9cc66db828f48f00d0496b02ab7d672f8824027211bdd0f819970c2c060c18313019d78ca7f122b23e930bcc0b00b4dcc052e33db712a382434826c5064a0e273a9804a06407121e4033d68d0f0df4f480a3c261b5843007e5c3240069008f004e87c7dec1055803680d4c9df9e1001e1a1a1bb18962ffc7d65ac332ff1c45cf51f46fdede9c688657f2748c51ef8d5d584bc88225b0da3f1853c39a111258ed3d61b45489820195c8760456fb20b0aac61fbab75b9fcb46376f2e654cb28c9da13a349cd4326823880832b3e11c83dd9531fe0e736e254992967767288d2692bedb25e7307712d69e8a128657db02b1dafbfb0ce8ff19838516e63d774aa331532d5608ac9630da721b0d49e41e001cc238ea06e83dacf6591021005435feba85e537c0fd61b5ef46d5e098c501a6ceb8f7b7b6164665a0289b0de89a37a822c772c87cc4c82c22484d22918b6763688fe6ad309002c98be9b310a3489f81dea36932fad9bb415b0c8d34ed054d8e14e9c396c3a4c928cafb952223ba44fd1c35681af6296aafd6fb10db0eb17d8d18b1ed908eee9efbf31f56879e40e5057f861213e49f7da697d99250ced344f937a448ff0686f18249d7101cd5e57af12d2f2c2e2b2f545a422cdd9db2d2dd282a3cde7327ea9c334971ce95a038e7484e9c732013e79c55e29c1391784095053f94c7dda7cadd25e8ee6fb18c72933b7def5eec0019f93b7188328647bf2871646307c8a88f6205e79c4be7fc9c37ef15569a8c5a96053e2c9f0f071ce41de8f6007fd888f5ec115af178070266eede8c614fe2d03da24a1c2d637837ff35880df6f6f6761fac44c28f9c98a333d820de1013093a395144612f42fb190a8949d5ec37e43bcf497c89994ad4d7c6edf55fdaf2babc687196155709a5a09c9894344983daad8fa782d4243de7cdabfa91bfaa616cbf65741902f5238a7c206f4714fb29c4b1b730b99e3d423366ab848983bfe5db1bbca35599c81bfe260a8304244c105962e6b4810c312b06bc28c45f875a7bc3b17ccf515137e01307b4a5a81dc898feecc5f6804b1ccb4678e2d03da21347e3c4910f042a13477b9f7d32d08b9451d7509a483fa3dc624370cc8288fb0d2bc918feec256a49890b054848485e080102815a2a6059168b053e9fcfc3b2950b783c1e9521aaaa0a6100429842044551281998a6e9a40849924c34f0de2bd980738e8403ee0eea407747cb03fc6136623dbb4768a51a15268e7efdc70fe3f1521454268ee42166d643cccf4c8798fad90e38e070430c0d1a317288fad98cfc170088fad94b4c1518219598bd165093c9483e24314f627e6654cc1ec5396093d1f76ccca7ae4f8af4a72b0209a32f5d0f48913ea344fdf742df6f884d94e910f5b787a81f811cd280e521662f2e9669dceff85a8fd895ff7b58b6fefc2d0204344dcc3749efda7b5d98eec6b27ec7eebc1b379ad85605af31e6b02d02091291b1a4facaace8beffe50dea1bcbdc5bd17d220f07af5c982b1726394aeba6497a9db04cfa27ad24bd63eafe5d978fdca6cd016d073ff7501f922e118aa2f6bd7b7e2fbe7791c77b7e01d76bebec2367b2773ea5ad995f87eadb652c33a6d140ed53adb5d6da0269adb506446543adb5d69ad705eeeeee4c16486326a46c8d955898254a804c144552c4e5c4f626104ba38c69d611772b4288868f65bd499dba9c27394fc648b83f3745c63488064bff55bbe32efde4708bb85b3cb5462295bcd69c32d1249c83b187a5af4a0401d232a6bd3b14b83b967e4845eddd1ac998d6bc2ab0f4fd5727635a73ce39c721b840bc0696befb0562e9bfd65a6b16b5a2a22c2b8d6a8159b5b64b58faceb285d530cda61a96aef9909a4b11aabd9d21f3e36e6fdb993733134866a60ada3989677835be2a019a99bbcccccccc3a41c8dd8f791bd632c6252d5e376766eac4eceeeee6cf2e632d39487263665edd10a4b482cd935316567bceaf7697b0daf32e33b356d0c3cf32825054c26c4ada241e6b6ee6422566767777799777b9a1c0cccccccd9c028be276e9bbbdcbbbec547abbbccb13cc2a9389b80f9f60b5df2098899a7cddc2cae56c576035be767777a77d2c33267b341fac1e2738339b33737516a69bbb7955d070a4ee88a90653b0d32e0dacf62d2ddc20bbcbbb6cb1e314acefeef22ef7e05ddee5b7526626dcdccc85bbd4f46e40513636363636363636363636363636363636363636363636363636363636dcee9e34bd89dbdd939c64449bd0e176f7fc3523da04b7bb3ed26e8cb4b3432974555f8e8e402994a11456fb55d5559592a0a8ddd9d55ddd31b42d7637b50414abea332fc633bcaaa9f984fb3bd7d65afb7d1ece33edadeaefdecaadbd8f6e5a066ed6b922e613a17a0c89f9fa8d931b5be788e02998f999311bc47c4245f93d58cdbc44b43406fda35b0b657ea2fdd042b1178367782523509ff9a95876808cd9055cd4dfe791cf33bc1a5373e4102d661bda1035df61ee518bd8a8980f6ffb018abbbbbb69686237c609200010398a3c18334245cccccccc58b6bbbcbcca85d5767bd777b7c8ba3b7e0b937c65162bf3aa8feed1148280ca794462ea14897945bed1467c7de4c18d75d7dfeb8604c6aa6e77f7d7dd1dcbf81b732c785c58ed7bb0b4399d22461ad083a5a1cc7aba98affb3e8b6d6c12ce39e79c0bbdc8a282130395262625bc3d78999793339979b7b17061d811a8eaabae2eb68c6de1acaf431dabfaf0a63b4882a1afafc21af005ad33637c15b0ddedeeedcef7c1ee5e26acf6ce6968dc0eebda0e920d15652fcff03a6dddcdd9905e29081756cee39e4f7fb6e1c0248741b6de73d4bac06aaf2d682c485f90922c4579e0080759229bfa0afc9b7b3b1315a5e4eeed52ebc65a89a502abbdc321a5c06aef1283e9bcf9756791304677b973ce75280521949c444952e59f673977e522f4dcbdddafd84fb93bdc24ac24b026d3efd86d97b876da64fadd1bd69cbbfb9e78bbbbbb7327dae56d57c6f4377ff77d808d1705254992aa2b13c58414e60ddd5d7ace27772bc4ccddbdad4fe6909a8c23e911a41d01813f884449b8c9e457c14192d4246c5202b7ffe58abe7ae2a49427783b45e22466aa064dc99531d46f121617567b69dd95d530d1245032147acfffa5a97bcb186a0798423d46044a204adf96f51e7ccae102a48b88ae71936c0aa3f5e4b90581d55aa6acb6e4171313abdda5e7bd4a58ed1965539e2b6c2afdd25ddc210a4cd9c1862461d6c7df0b859c738e17ab21a5b6dc1728d0b9a7fa7c5ac55a5981cc24dadadb44fb3377ef7677ef6ee75c9bf1a8d40c9dd6ac74040000020000d3160000100c0c89c482611a47512af50114000f5d784a6e6032164723b1400c842808a2288661208410638c51082aa4d4d5260038ee7c5719f9fd157fd53de24537460adcb9475ad26b8bfb30ea1b34ffd9a461dedc397a7f21b121397d28b33ff960a0d105df144844aa213b2d7e7ceb4992c17b310054cac0d609673dc9418533f2a9a726148d35a91820575c0ee88018bb01256d22b16151c7c7d80ae9134be59d3c710a231a8c5e70ae0a11f511cf2334198b3b0196ba711d0084d64d71f9a969a5699d60f9fcc59c0b401ac4c51c71c60133a0af88521d065fab88d27d51997ecbba19db930aa13a822be4a8d3647e181b1425cbe03e7123263e11238ea5702ab2da74965876946c6560075b48c7bc6ec618dc10ea02c12cb7b2983919757b0e6b1afda443e26378065487b1853a54a7a92920adf773c29c887eb8e8e6ec78e477788b43be4317ba00a4953c076bdb0c4e7c2fbb6bf604046000e1f4a395656384e0ae78d95d15991a95a33ea997edd95be589a307b3888382916e70d2e58b911d6ba26ba5d946bc0a5738d6b8a04c2cc75299b46e4d3001105e9a7a0ef7c4d59b446aec15b031fbd61caaf79e0e99b129845658f0035a43264f8abb99c81dc006905f89d7c8e1f0262f85b08a0965155689e981e05c18c416e9a88a39cf5980bd9a4ad22dae59be9fb1c85016ea9bef745b8823f1d4cfb66a92ce8f87ee9b32b2133085e9afee332daa284b15a23b94042ee856b6e51c8f62a2635a0b90e9d02642ba6ba56d68f8aa5612c9894e539c54a9e6d0224ece5a4ce8e4d0048e6a5ac0a783febf98ede2934ed14ecf906f92e063239b81d0cdd0ee8fd2402b85446e4af5832098a32380b9cd577a58b57d741de2033bbb7543c6f6f6eef900652ce13ee204b21ee6405372e22a01d85619444a7f427abf488357970cf17915cb053c08b0d9ad919c84b3be857d96ee5de7e9f538050730ad8d4f331c6a154d7c1a4b23933eb2f1e01d128776e8ff31367bb0902dba1604515675dad7bcf802928cc221f48f7ca07dd7a261fab16f37b1f6c3f51938f64131509868400c2b7ea3c785c51ee3226db5d9b9949e38221ad40edb937e8b48e64ee18b0ff9a1896a9980f8db9fa03bd0989450624ecb3461c9028b0f5981202b362c608802b87e79c1f4ff918242f66f69a288c19491a672fc08e2679e7aeebceb950c6f47575608ee82c9971b3d7f650b3a47a110f19871acd548fa02c0131890d9f48aed454eade6ccc7d954341aa8d8324709a311404bed4854af06c78fbc61a0a38f89c07951fe8bc1331db9a34cefaf3e27f7c52aa9e178d4b9e0ff6ca4e0e40915fbc0395f43d919a22b0bc435cc1b0f0da40105dc31d949b5b61faac74a506e8973c226482eb5047e01df7c1e507c015f63baeaca43e8418643c25423207c4d4cd1f46b1e28677395572e7af38a18ae948f0eee66a1598e5aa14cc34d8833c7a7b129b95b99f0f8a0833667f6108f6a788f21ed907d626bef958684b36c560a0d27ce93704366c20d9f7e2e63dbc410146b2fcc9753d3260608f1bfb05e466b21d2bc35cd4139e27d01fe3e43f6d2d8a8bb1ca9c75a1c9dd0b2369c800829ce4a21c782118394bd303b2de600e8f0f505cd407520085d21906a3e0d2770aafe89c23ebeb8124c464657adcf211709ecb9e47bedf85c114437d5cf2d11f85865e99ed4035f2539889d2fdde151757dbf125e4df3e6b35fd1672fe2f47c6780570c2a7d725518cd82bf298d7a6a77d69817739e90cb794e310d2c303dca8cdd950fc64ab12c2ab1086d660908cba7d781bcc446d510fef2aca2185d9e72b63e1e6a1a25a0f430a1bf8b94b34174540c157e4b40963a96128fb0e2e6bd733fa091790d2bbb3d5873c413735fd931448e025b7a4427f7d5f54138dd140236409fd6961575aaafb5348185382010c13eae9c93b6c12b94894f435dccb1d8422f2efacec7358bc6f3d9336353e0877d711c541ec71af5123f3f100b4e4832f361f7e37a9d62c38b295d8d4d573ab886a30b10a78e7473dfbdd32f783a4d81c9e3c9ba58f9c4a062cdc3705d52cbc63c09a2ff4ff93afc199750c5106c1236d9624a1e491d260de0346f7721a6db910cc32e0f518e6bbf7af4fca4f41010ea78639f10198d55a6762961daa59110dd579bb26d2b23af170955c51632f217cc181959d398846fcbc86b7735c04541b532cfc8db217820b410ef6d5933d962e9b70d824bc364be175c05f9df99d81a273f393ced179f7c42cfdf369f0a5475c7c34485bbcfa786b169911c128c1a7416bc03d620e5719e0bec1c9e24804cf43fa3511a3b9f4bc7f0cad1b3a8661fa484a7b0fc82b09264777de267fee97bd07cc19f0089316fdc3949aca58906b6a804357910f02626e567170ccc61bf37dea4ef5a6f98e5684e50b04a2ac9895d8cd3d7ce966047702b7512919a8f58d392db681222062296e4141919399bdc20a12e85a3241faf3caa013ff85885ab5d2282955762b568b5a2b9a9438e2a5298faaee7b05a5eb74d6a4f3009779a54b8cbb51150582d61f772f4a2cc95b3f11c62b1ec31f445a2c12122a9b3321b004dd2e511b85f05e615582db2b298bfec33cfe06a9f71f3e214c61910b3a0c344e847cab76ee8ab86c35bf168240aadf88da3e5e80420c3aa96bc6a451b3d92d0c03504a71eb49acbbceda0f508d91dc0d9cc24e546e57202774cee3ea9329647890366a2cb15a0816f9d68256142869baaebbafc704b5b094e3d7e348ea6879befec832722650d62b2b744ea5da2a75213a0517fec58dbe1343f5853a7e121df1153f941f16ef0783725c5bbf9419c381db9af5979a29c83998801146d293409036fe818f72fdec06c1c7a72f2b60daa3ca686306f804aaf5b6f97e2a754afed22ff50d40c246ee694be39fa512bc618b9f8b7fb4296643668198672788aac8dce5053f69297ad3b2e220069dfb6e0464d138632fa598bb16c6322246d95f649a50200d9461e2972fdc6eaf4a61b3f94eec4eb9203cc9cdf550dc9aeb7b702f2d7541f2b100b251da7ea06ccfddbc08a1b0e7f912bfe257ffc312e02ab41aadf822e7619a1d3fd005966276c14b4917f111b216af781b26960803d414c0a9dea0db1a5377c70ba4728dd9394bcc195f696a16b872c0d093f8f44284e0f088079fb8034c3eb88ee269ff58b466cfbea73aff6716937aa57d8b2b4aac26caaa04b8b35218bbef30674ddb8d55d54e783e17d8791ba26ed97cd9ddc4b8c23f9e73ecfe391726339f443129c7aea2b40c8cb639ab365ffb372b58cceb6695f0deeeec62e7214cb7f8f2136c7346bee27c9007d609cd95fb873125cf21417442d3608c1af3140a23d843b128b41a48baaa636082397e5d24a8f5ab5d26717d8ab5a867a04adb7b547d7ef7bd4972f134c6dbb658823355adf673a7b595b24360519c33cd6cdadd2c08fb083de181345f55cea0962b357b1769d271cecbbfc6a5800267662099b277f3db76f068660dbfb6fc206f372d31fd8a92ed0948df510bedb16bffc96d6c98f7fd9b58796cf60f790918ef65ca67e718384bd1ffb2cc797fc32af8ecc40e998360b93159e4cae6a8757b602aba832cf2998a46e0d2fdc27aa9bfbd807455461c1bc82111574c6fb278affc84aa5880592009f3d00131103203b4cb5702866213d7a771e79fdcdcadffd60700b86995a0ff928269472373dbc9536c8d51f8f867c5edad534f307cc749f50fdf66fb81774b9834111b1cb75c23d1811f22bf89abe3ef9487d7855b4c65338015e1839318792dda583bad2ebcfd2392999c6f17cfa5fcef18db4ea3140d60cb748cadcf26be2e87441ab462f78973ce5c652444c1df7a7febc82ddb95c51018e54e3b6d01b87845f92c31beeda19003947c7833d9f876dfe5acb0d3c048b8948c0c59dc29a8957984f8467a87d201c99da26fbd341c1fb8d615c1e4e3f60beb6b973a5869eff2b8cc29bcced0caabadf92fac8f26d0e685242c9cc1325b57a893d99ad2c265c6dd40a9d512b6bc1e60e0ab4e58fa978ae0253e8b2a5eb116918d163d17d40e8c11ce945d16f26c74daa49aef3a0ceae57b3780430eeb186bf416bea41e9716b65eeceb94737ca7b52866e1787266d9c47b7975d108b566700549f4721a8cc7624e452ca81cd57843d165cec64b0c520938d765babd4ac94776b411fe44b53108b81d685c448510c31545bf46de284fdf0b7aeaa08f77e580590935a7f74355a661df287e9009962ad0960d28301c1d0939c25904f0bd10e69c226306fa11b565e4de32361f78bebec8f15e4833369e8146bd02e4c2b4cae7f240fabd3ef30dd7208f3d2b867014a61b3bb154e1743a8a6d116e5719c3e51244155673c981689f394a6fb394a95cd58020e1939c592a0289d926a898b831dac4385798ea33d827fc03422a2b2ef7eb9356c2b27f394d048db0232967f727b022661957b14cb7ae50f1660c7796c92a5e6d7a882ae869b5e8fb2d5d07a630fd410998c44f95cd158798a68d65177a5fe62be4a89de87ccba04f6ed5913a1ef0c2c0c21a18915c3f6ec6a2c9b2f8a80d61c22998a72133385ae7cb363199571ca95f49486b76f981f17aef09a7e5e267522e07a95e48a2c91cff3de7abea24254706df6761009b7001b8c5991da2380fcbf2982931054c382161dd64a9c0ee4c92826d068139842afb9f975e333a72435d34a7a0d8b183a57f6308e796813dd85d0a27af82eeda5a3914e1c37d181b108a2886578330271945fb392cacc01b2b1ef4d00dcedb48909c8eae85a87a6c0b9e6a2374a74479dcb73b52dc23cf6ef253071d7a68be296223676c02eae2225cfeb01e1919c7b3cbce4568171cdfa27b3b356d642f98747eb8f6e4236543db9001e7bf22b6c963f88fb6e3552be98e48fef8116999a652468703fb7b4423f0a8052e121a83b8650c6c685af2a4e193600fb52be2e0fec8e4c03e4b4656a98b2065a9451b98839a5dc35d59b05ed1e01d1f7edcf59d66a6e108015c825ffdfbaf242d3328f9162185b1cf5df7338a60ba31062d5600c04002161da60eac6ac75d03f5a56b91f068c926fb2111b6e37d69bfcb04995f634fe12adef168ebf199602b62d6c660ff8d51ddbb350d568b7d00527d7ba8be844aad545ec892050be235071574670f09f108dbbe903cd6355efa5a42f82b6622cb9810a4531a22f700f39d41b829bfae9a7971e64a72a6367cf02dbb1ec8fdc8d805bbd5d7e60508dba358d9b5d819762e0e3e05fa3b0bba7db63a33aca40e97511541427e55e757fe8299084abe9fa5f6064a91cfb05d63de24cb0d8fed79f6bd371910233e67cc88bb114523057a0f9286e7da2b1e0309c3ff7f2e1577be782a22de5b37e2e6861dad4ca51a6bb68664137cc0009c57381b3c9f0be41018bab143b65d90f13bb9f47c4873d766a297574d70b750eb721c391f48c598ecca28eb3e25f46d82b8ccd625f7dc2f8465afa51b5f01448edb198900c1531e2d1992cc7b3316c87967bb3d349e420d8e0641ac3c10f648357ef05de34dbf14214891ec930f8bac7e85826e96cabc148b3a01a376c22e4e1c320ace58f2be1b64ad1e350166eeb58f25967410678f432ced702715a285076321b158a3d0d501904ad0aa1417641e2a01a9e40f524516c088358d0b970172fe697b5594fc7f66718a907fa6903bd4f608985cf56d09aba8bd9cdadd88cb869e6878e72f4570e37764373e435d5246d30b31c18414305e8efc111fed1116f46d0501473dd32feb0f14cd9da5b824cba83e38a8a78f19440d224834bd11797d2a5fac4a753639335856e1f3500ad148ecc0c8b9b758b39f817c09f4f0bef3fb672e3b08fa11b0980d82f45e5b26326a4d9b069056a5f79754a021d90509cd94097d7b75f2c770751d00cea2001e3011c50a9e3543b266695d3a3ad411ed5e056e6123c7164a2d2161ac63582649dbd153fa05ec3517308e2d8bb0642a82029ff6ca934cc00d2957237a228448847160de22ca35dd608d9aa6693163515b592d35735f88c2320d224206a3523d2b7bacb555c8163ed1858d7b7e2e55036c608b725a9c00bc7bdb2ac7cfb36448cd0d7c4d3b9625257e2d3bc89f3bb63c04230651febbd3dbde18a0d6192c5dd53f8d100d683892dd3e7317ed5298d56f963dc726ed27c83d1d283c9b0361c356a67e8cf4c169666c71c8c0c5033cc5427554d90460053055b6109c4b4baa1acecfe2a82eb3fe241dedb48dea2629d30c9a472c4fc00665c828a925afac8f10af6b22d35eaba545160057b669ba0713447bc12a378dd57560c0e810a60c26bec1160b4b4d31c7b3706d6b8646bcea802e9b30c1421312e060629ac6cb45fdc3dea4c3389a92ab1042f5af6f2a75204e4389f5e9754e0713ac308037e9964ad90c2048e60a0cb3f1f44a6ae2604e91d6d80f028ad428809aad254f72e4cc285c08d79a187ae779191baf1fae26fda77cba563ee9b0252a0c615ca007bd2289fc21cd6c52ce51e2f6de00dc5f901d36dec7d214f49188a4e56446c9e7b58bf0efaa05e051af06b88d5619371514bc40a112c083efe8e6a0b7938aacbb2faa2b991db44c20807b0494b6fb02039aa336825fd0553211addd24d8c618039b87bf495ac61f8af5b2e8da7eefe2cd8ed7636e2aa85f6344e231af4e519a22ad616c6b384938f365cc07043bf5dd1970b2ccbe40009ca0b5f37cb5d17cc4b13d31f946002622fc76330afbcee300fff20fe805017319b23445aa7eff83a75907a8b04b8f970b40e3737e51b8606bc091c3f40b96d8c71aa148c5d598d31b9b932fad43af02b652db08318ff982fd4050a3d71e83c16c1619c5bee21b22c9e0a7e2226a5ac48a8c6302dd9cce4ba7a883001a8667d546d85de3527645a340f2140e7063d2ab330800da90030857cf8e0e5f55d33e7daa9fb401d8da79e92baff992020cb2d518855beb05fe5c40689a58b7359695e45f1b960d727a099f25d2835811c2c11f8f3e9dec9554ae749b685e3c4ae36e899f889e4f49248c812489b24724e8c376ebf4ab38c53d46a3fb0b27dc61158b56a4eb460251934d45f342ab25a28dc38181d169c12477d1c49ac600dfe3b07b024cf21d410ada3cbf2dffb7222a096528ef5fa78f5bb76abd015c3334f71f140c32d3777ab7235269f4b81d241e2989fde2232bded890489cb6fe37ca158d61b3303b12a995f5fa904427f0f81bfe651beb6c978bed99fb274c36e1b31c52bbfca60f52e4ceb59e693d52a5d3b0f3b6e8eb794b69a2e573d97fa57b6ce9322d6265a7de85684534db0f364e3e00428808a0ae4aaab9cc893331c2364f2b86fdcc610b141511e3840bcdbb47f66294a599d49187eaa7baf006a796c9c0d95f404d1c3632c84cb5b0b87fb950caf0efc6465b7e022a7266c29cfe694f69d5c2a7bcf4d0a1ad2df6df2695525041685c762e9cd5271bbc2bc45e723ebebfd9420c61f5534e93a502906f1a153e2a3cb05106407dcc714a7592e540d0a09683446323bba7f76a2b066d9ef5aac6f309d586c81eb38648366ca6ca0231a6017b486ecca235955014f0e5a601f510cd671b3994af1c0e93bbb61dc842577bd5ca22f3793483572a6016fc7277919c6ca27f641a69ca75fc41565da27e47e5dcd3e8366f608d2f3b34034f504cd05c6ef6f30eeb06c23dcf507e6dbd631c769ec1bfd73614dc8783c8a50c6e4421746343f0f170f6238002506759f7b1a8a5a84f677788ca789ccda78b8e9faa5b46edf8d26c9f9aa6ae14555c1a740713739d80d5006ceff09f99e0b10cdf7ee1cf32be67a6380bc7837018ed3c2f7549c71add0eef0ef1ce2e1ec8cd5d2a76e23eca4dca2664369f023148aaf602ac794fe9e6095517bbd789015edcaf333e85a53998f8854fb1f27f9e05932e8c7970f7163e1d0e77bfaefa637071a3827c6a7bb58a16a97c3ad262c7f076f81e127e33718fd7855207a792b5bbca54a7f73fa1859b6b6d8ec31d560ad37b6b482a2964502d12e2b2499cac784a2793f61d9910329006ee64add7dcb4ca816003ff15faac64dda8902f4a9ddb75eba4569af1fdca0a8dfcf3fae38641f8cff8c44c242ea5bea1babf979758323198080aad2bc252d4654bb096a5055039799e6bb5d7da5478a1f6bb44881dafbc821180d248b368827fb5ecdc85ab889e7d65d30283a7085e9c08e0b4fefd9640f1c0e5c5733dcd03451b2858fb15b8908a3a03370f05f6cc779829046c1fe6b5e015033234b828f6de47a973dc198ca0bc1f997e432c491671043bcd191495fc5dd5bf968f9a9990095c71bb73d2ae758d277f0884b7a6881296bf4f575814eb770392e94d4102b3a280741870b852ca141ae3150a6024d2e4cf59662880327a41d34259ddb3eb1062f23dae6fde55aa2d125ddd8580eaae1871fab15cd2ffcc41ff6972b814eb7e8769c28a129570091e8744b778ecb329a622588806e9770d1c73a90904899de60f897d0957ffa18984c200f312a426960ba2a6160ea484121892a33779ba604c693a841ae0515d0e8166ec6c4b21ac50a5089862ee9625c965353ae0111812e0c80ee98b22c000a2edbc883d1b37f71837a0244f700a015dc174ba0af8c9740b254bba74d37fb336877081c17ae81f03ef4d3d9e0853463f933e4a3e1aac7756d7b5553ae2941db50f65695da78aac84491b610845579252914699bc11e8b751fdb769593d13400acb739d39c4f50ad2a46c28f044391b73ebce9ef2fc0e527b05ad10c2532a3e2922ee2828e7b0f7cb48904b7f8e17c753c1171614214d413c1514680301712667c4184f190f28c106f95ff47f75e81a6676824c82851be26f48b52f9dc5b1d2641a05d77d5032a67bb95fb00bc8e701b11e4f4ef8adb12b6e6c8efb62d72c2077ff8b06f226f8904acff1710066064d5cde5f24be54d9d0fffebf984cd4975d8342e38ef8b009631b53e3eb4e1b1c58071d8db05bef3c2c41e017d2f2ec3fc472773878c39b8ac121ae0ccdd821d872d50ee301b99e0c110bdf268fb25b85d62250ff455585798506a94844075acf9161f85280b0c7d1757e7a9c8e8af8300adb6d6e6f7847f32842a6c47a81e36b5fbdb9fec60c1452a0de2b8d24c0f6ff72e02abff526174f8a7b2a28b114c63a9b15c50b414e20e4f16487af1d2f85c28d55cd18ef7a866f53afb0e9f6bd167dfdd8164670b1b0808f94efb1f1002f83aa5fe4019e286311a6b442d7be9c0d436cc7aec9db916ca8b7c42df524793b5ee8a61d859e9fc3e78faced9e6876f77cfb48cfb0eeeb11c944bc93e13aeada3e82da8802e867d23f0242d8a6910e4ba24348818f2222356881757651e28547c8960aac2a589710ae952a9540c8c822f8be91e4f83351eb6c8022479be7767739a8ae2b3951d2bef69117ab2e19cdecde980553fb6daf8106084f93f79c696fd423a88cb26f015e057a81ed04d65047ce2da3f16a56b72755cd2aa0c6496477a5461cfbbe58455c7ad2ad96fa01e825c3d83c5fd285226a038648c87c8b42082cc26a03339800ff9eff15532050b865fc72b35fc762c23628a430e9879e532077dbabe0b13a269e634cc5387c0ec60d11ff62557e48e3b62742f59fdf25070d8c5a03e3442b6fafafd22e4c66e49f69f2090a9394b9e1559f4b492c20847deea928a626a52bd14923dd1aed042f19006db25f96ba42123bebeb01306bbd5ed6867c540ebaf07089661715e73e0ccd21d305066064fbcbede04efc3fd8b77a4dddd393d76ba93a328d0fd74c7753b35eb89aaec141866fac9838cc1041f375bef9cecbc79c0c20a8a998d1b95252420255052b61269247c484ebc961e033ac5a12379a55130d95add1d11212b62f21e772bf65db59f63abbbaa28e048c9f199a2b2e23baba92aa260a2a3c1329e0d17719ba360f0bde3209617e97f4bd3b6f1e6583f4f2f52710189f85419e67fbe32ecb23ccd0bcde0bc03afcd1eff5525cbf7d7a0f00ba0b2d27deeb17e9da11b74fd9639919faa2be79c408bc9f317055a0b471d69b3bb8c206c6d9c1aaa7d666b8353051a5b3ecad4aaa9c85954ac67c40fe9200b7d968dcd595b08a32cc7a6296997055eb0e8449cc10a89b2fe70bb2ce51ab4b19459e3fc052a230bade57c053ec2808e292334d971815d9e01ae004aacecb39777f89e8ba7c51a5a37c31b3546931992bc713d0a52caf056cd5ca1de1975631f227576f522d6b46027244f3c5c1928d2fd9633f1f18907bc42cb692569b708991031572edaad0233d6d096b4195e5e69d4055cee4b2c9f6449c79a6571502d2e5012906352df379d84dd4a6857ae5fb6464a5c9760d4b7ebb054526b5374b114a1bd5f67d99914de95a2b2841b2c5963903320625a49b45a04665330e4ea75178d49814b2ffb238877ebed32180dc966112459f985dd45fbe9f4966264d89b8efedd3bee419a800eb167162d6467ac65a1cd47fe940dd0b55d67d772f42284eb904394aaa89328599a39cebd6c2c04317f0595cd39e654aff6152a643537ff6aebe28b98682b4f5ccf9167932014b317491b2d5842ebd763823bdbbd9525642bf733631edb45655388a108dca1583826a1b1964c20eedbef9ada5ec253ef87578be60d1b42f2562d6df3da5e00b705ca36556ffb95368d38dadf91f025a24738055430e3df7cdf32353275787df31d7211a02b3808da64bfd6f42ab096981c2544c1f6d0091cd3f8878b82c08a1a2b08a877411b3216a45a3672f34666657473e54d154811ab3b0ccedccb417ffae9a78ceb99ad340372979449e1fd7b5682ce927b79d2e226d1a9ab681e3a0cdb6dd8e9a55aea13eab56ee6dbe56c90c3d2193cf00b99dd73342de150b5a6367789bb3649348acef0ebed6ffd8c10c464b2b3f452d0f362d13157bdb32f263297c497c04df958a4c8ace304c865f9a8e571a13d404cd66c227f1257ce486fa52d84a7110e3222a0be2c72ce45ce94ad79227f124ece48d63c31fd664eca4c963c99ec2720abd636114244f762543b99e9750689fced8b5cfb04bee1f8412f07c195a9b81903412ab4fd9149f33594d3034b731bb41fb31d1494ce2cd8525197bf13118848489e0a1ed330832e2395186d71eb70f7e0196f5f5fc4d731a9ce5dbfae01e05dd24e184c59067fe5244ca7bc5e6d5a8e705e939b12245330acbbdd1dbc9f9ecc3840f9b7bf9ce44712f2d1db47c7beddb640559fb57433c9abd3cc9dc8ea3889604cb2be284546397c521b065ea5e9b2ba59526f44061a00b5aa5612acb4438735b6579422685305263904472a3a883f4460554793a0d2f8123ba5c5d4f4df9e5fd87c2383f071744607b86ad3a3f9bfc0d0969bd139d9a324319e0d3a4fe346b51a73ed70ccc8efe872b46df672303757b1415426bd52265983e99d5857c81713fdb32a34d8805164396303c046460dd2a9da17642e3c42aba176bd3068c33dcbcd16da9c79c76b7fb4b2dd53ef71ffb5b8b0c6d5120d3cdc13844baea4a8b02b2be821111c388c6dde51c7bca06c4daff6fdde2894f33266ea00047acd25a8071775d0a08f72f6a4ef5de8a7f598166c5aa2791d29687599fa97bd044e2959cf1a050cecd42da0048976ec5492a730ff35177fd44cfa8e1d876f96a16acf58ec022d4863fd9e505938f9a2255788c9b105d1aceadad255978d7bf663fd6073ae65b57de63d801cedef03199c714e02aded37892c66ab137ca44ae7ede140d56c84716965143059e172d9c2d1fdc20ada2e584bb275da8adc0389f10f21478d7d1a44acd14bc11c81c6fae1c9a53fe98822d07eb17f077307b3738c4c9e425349aeb5595dcd186e8c97d5febec634b75e26ed7c4be96785da87f17a728a354d0c0dae9c84b93325a0fe41e72017fb1e31d58e17c083821d94a6d10bf4c9d22e907c4cd0efe0eb937697e405bec070cbea764716083f8e7a5722a44b67bac96afb767f0be6abe80a72abef56adec245ad44605d4fd683e3b73ac82a639d7863e0fbfaeb6d7ef379178438900708d0caa749e1408559744592c9c4c14647d571d0b9d381a50580550c3aac376e76131dcc3d07f50ed3330fd381a926d0210d1b8528713298432cb64eb4c33585f8b7f685ec29ade7a4bd49ccba4be556b13847a2a6591322ad1c7a2fb1a8c0be82485fa9e4783927e4c415c7c25d2bc1dfba29df135e3e3ea8727bc8121fa389a1ca0b3b802e6edc724a9b42b31c56f402302cfe966c454837785bea3a5906112c8a6bf2274e6130097950e1bd64e2c8cb709915c43650569b53913ace4c1323ebb4ba5e83d10fa36c3e2454ccfd4af343a75fa3507de53d60e1dd65afab33a8072fa37a96670abec78169c8189365c811198233014dcaca06646e4d6a5c072d7a8b315e664fa11fe6967140a5852234e0a287a65bbde6f9b9fd8c0ac640dc769a7836f0dc3a7dfaf584c2ac45ff83a08ed906a747c08a04119a83f2b0b7f2913f65bfb57518d159ec5eaa46e50023bfbf18932bf92b431d920f71468ff4a49fb64500dad6902b629d4e13ecb09cb4bdc41f1a1acad17f5974df39e3aad858c5bfdc69aca36d578526e1ed0975577293aaaeec26025c83d885bebb8c2de334469df91345ca0e99601575ef77b8442a19ba1016b7495303784d281bb17689ef6ef2a647c86586fbc2c893d3bae5e0e09bb4c9e4e2f3b60f5d2b4c21f6f819b31b9e84a7390b6373dd6728ceb66e807fbc84c7c39f097f29f872792649dad6911b9f176530b655b9335721add91df0316e0200fd64ced8a600ede9804de1deb40204f4af075482d988e85a9ca917ac02b963eb866cc61c99af61123bfedb6f86e6f496ab97b7b0aa1a113251bdc86c5131a558eb078650d02178193ddb4a5d1597d382a45482d0c4b1187d58900521ed9a17f10794a3032dcad500b53fb91d68cedab2259308d082ac0114c5cb9d51cc96911638e1be38644fb39963be60ce91291924e96aadbada627326238b2d1a4af8deb346a3846aa41d8d4d23b940c970d1af7d59b143473d10c9ff9126a901f33c8e945107703fc7b9190b585adb5581f8275fe2538edeb245f110be7c0869c21ee35c9047a1f45ec268c8422704e153fc39008fafd84d713f447352deb1c4c7de6e432bf4a9c66eb02a2c48519b7a08823f537d7039076597792759ae530073d5b7ea6d434158f36af727b55abff20e01484a002d37dda057d493ce9ebc01cd69809c70c9bab5eaadf380be8a0d0bf65a22f4801927fd218d23ad7d53142ac091da3f81cff09c9ce575a72a61d686689662858c1aa3432aeff3fea9f904a994913f56b542833499635937ec1c755081ad3bf32d4912049be02442169410ccc6188963cb542529290ad9c4b798b43103f9e9730887a7ae70e44c5cb524229713d4a0e0ecf8d654c75038104400df1148704849c6b267eecdc584d981b0d2ac8a8fbc6d0d71eddb52101fc47e3a87481bf260939127a013a98b830696ad5387eb2b2293be3c231a68b61b31ee5d67a041bd91314ec16603c06ae514ce88cdb169913cc1d393dff3fb9fed462f0fe2a9b04dd5342ca4a45b3d6487e088740cd2a423b96e48eec61bca2c4a1bba560f943222d35ef0878b15687c20f4b993c8ea637801afab4ad8858e9f496c54ffa87e52a39473fbf96ec77ef2d0893efa53a5c4a61537b9e178161a1e5080ea55e4ba281d09d031b52f6fa6d60e1d352e7abb6ca425fb3f06926cfe3661d95e67828d6021d2a61da89a23abd3b1461b9056bcf5f23e8674f42453004e19462330ba27c2a82c56ab0ef827a38c6e915dcc1b5054df1aba2bb0eab46bd92dfb993429bb6b41bb31b8434d8ca673fc8e707bb9e288a4a40e046791efeb7d6fc40f5fdc39d8e90fc38bd7c1024d37550c88117c43a38e9b3dbac42c313278a5b1e93276f9c3ee5057f9ee5b34c916112c0198036f554a279ec3474e0fec409cc2895f604d3e98039e32734dacc56208d427eab4d3628f1bdd689bc45748ad7b8d9bf1e70c81dbf136d72ba5a701d87fbc9ea6b176f27c1e72b1f8f6d3cf6fe932f11c18c491f1784fd2748538e92a9289974cf1e6140195016cf63d23b2b13971c7cad8a09fc064a25aec00d7ec6c467201695090da73fa324851e50aed0cdeb05483f35f39621d1948f074d8241569b2963610b441d5b8f73c58c47d26a49caf1bd9f7c7d6d7741a477c82a8af8f298455e07fc38da5469a850e55656942328433460565971939bba89e9c26ac19877897304455fa05f02dd71a291e5b6f03d0acae46ea688e37873031ea211b2fbb861a120cb3fd02aefe0b742cbfaabb7a0770fdd00f7d7cb2ec5360d5c6d4149f9b5a008ec8ccc355a50d005d24338808e7a3cd6fd850c0a5c4b993b3ace5d0b4a9056f22a5afa7fa16ec51df71143d214e1c255ed605a6b4141436a12ea0d3009a84cc275d32b9310ba5f31902e3d2dc52d28639c889f749529300089246a2416604a10cc57e294ed67050e1a33b605e586b7c5287de9133165c699c13550dbfd256941f9dfdc823d8eaa2fc62780038529765db17a4b9ae9879eae30a44d42366e41f1a3853660790ba1419769318b20da601ad6276c1caf7e49c1898545519a5e64527ea296b8ebe4b5a05c9093d0bd213b05308becff35aa7f0e31227984e3ec74d0632a39f0a0f68b476b1c79c4425d8ec1b71df2fc62603194ccae8c5bcd9e7e7aaac18b6042401be8cc916d3acc63cb701343c19b0e85a0874e8daf548eba0177d6bd250d21b20095b1c1fc968544d8b1ad4c4662418b45e7780dc4f647519ca619979f5418e82626420b7918665859e8a2560c257abe516b350e57fceed7730bb64e154ad3a5910462b2e371b0d6000eaae3eed16f865a64aaa9a25d301413eb399fe33114ca991abd636cf59778af26d6395e8d868220abbb81a5ac7c49c9350a6988bf21f982f492e07663100afaf37dcebe10798118ce84c6d1fecba7244cd020e0d3743f78267bfc5a7e020aa8e2e7a583504eb6dc4eb945a8f1015c253ec59a811392e72c7b604c7bf39b3a3bf3008da67444cca10697722b9877b13f65e7e08b7cf1d8e6696a25e97415f583668607986a347d7a5a22c998cf75e96841bce44395410facf6f1b7135ede6b0c0fd32cdfb43c2b2ff86c0907d1eac8bf8bbdc0fe8fa99b526dd87223b80c4f1df342a3b9e1fd545e1efb5dec14531130a80336d8637721627f17dd2f398127d0808ea111a7a2d5283a529f98c0829c404156e06144af543017732ed5c45ea3d14837cdc7ff7e97494e4c3b1eeea2a3884e45ce7a159c5fb0ceb1449de5462ef2122ff03817979dc009e83111598a7cec71a5367269973398d1a1fd5e489f4698970935876e605efec0cf78049d630dfcd5ef05f3ff951e73a39e64a3d5b7ea19e66517803f0047fef88eb336595a352f63f144ec2f34ff76a8f332a874f3ec1e674e359c6a6f28ce0f0c00d1b2487a8319f0d9fdb0973cbcd7e55f2f2659237e96360add339544f1cfad99e07de4db8b9ee7a67bc90a27bd4c1d2cd2f9377e996a1f877c916957c02c9c8eb845b3d2a9c1b2306fe7842cad2285fc96c5ece63e158bd96c59ab42241ecdeb2eb2274e660a21c9d00073b117bedeea0738f2d6b130241a782c0bccd35660c44124afc24c33930319c098772aee935ea1f88b60679814d5331861fa2b52f7e57147caf7c8f78eccef95f61d281cd47da1dc2dd27bf2b82b25f75d3ed1b76788fcfc2cec036fa18b1c67ad517a2f5fbcbbba43a028168ed41de7c2805293be03ef7c3c9550df15c97d79bc2ba57bb164faa8c4cbe68cc867b81bd3ad651246475c474e804a51ec47e598564298692ddb80c0ceac82c0e2bd5ef73188f5edfbfc0a336fc449919621205304030faaab8c97e4ba8b703432502bce578e46cee3ad7a2f40588cb41390791e92a55a9c316b0055d264ff3acdf052f3d7f98bad4d6d3400c27f225a2aad231e302aa3a7fddf195f2123453278577cff64e4a4d4c06b1aaf45902903d97c02c693b2ce8eedd066c074e89c68954da04d1b72a597322afe09874e9bfbe71946c3c60dbb493a98ccb0e03d6e9e019f5d0a90e5cdd1059c4a672b051429fbcab489bcc06db10ff28b8fc963244a11521a34947786c072fb7ff9aa33b7e4cb8820dad26114aaa6fb65990e7e6107a5d01b2be56acf7667915880b908c1be3477d04ca07ef5000906c5391fcd0882b44a6614f0a86e34965315e99ae78e5f4c25161a80fbc128a1454d1c5d3dfb88380ed4aa5b72fca4151d529d88a0b49a05b83662018807eb219562ed6f4c94aac4def95c72ce9f78d1be3f4f663214a707f259e07a969ba12786461ed3932d6e2c0d3dbcf87ffa8e2af393ecb9ca5d49684995f914a1cc4b538df8b71a02dd8846d6267cb12f7fff87511809fafd87852027090e4a306f98724629e08b1710bc87696755a7db7ca0446cb9a5134605068cbb06f63622841f5344ee1baacb5568394edbc23abb2bcc737bc022012c711950e9d65f2fc9c24223fba84302bda22c59e000e7196b43975ba94fa3ba8a02906d3999a4d8fdaabea5a78d1727d1e442dd1510bac73394fe39aecf61dc01555acfe0340a7d2a9a07ea3c17ac4626e9f0829c0238020d26a0d9a05a6474057b3a0c1eaac6506c795e1986100d511429e24268349165504708558d487d3761c39c108ae0b93ef44c09f34c696ed8f37f69a4bc1a66806e7b8bf1d653090df18a4fb0b664e532ad5a9b6e6a5651ad9da0ca732ba029c35cfac5efe74478ef0fd83ff6b1f2331bd4bad25900745e4890ebdfb75c489cfd9fc86bbe0a46709042fff89781552c97511ac8eeaf7b84572d9288d540ee351a5cc68bd6229e146490c548e56263720f9697929ce41b530a4edde56dff20f2fcd2cf76ad22404eb55238df620133b643255e71dae2349cc5096311fafd63cd48756dc952492aaeb57309e5da3f0870a39a11c6740a48c778a490e160958d7e2995400daf463a4b75f5e1696668b37059d7a10be8773fe456aa00ed90f4d814500a90cdd3564a827cf56140519521b2b31269849a827461b5443dfadc690f1db782ef1404472cbb535015b0c1e6c93728530db915eb5ab4b06aa31a73eb3dc993d4e42ed56c10867499f9cda25240eaa0baaf03de40ec28bac42caec1e89468765b53c84765922cab64d91237558706c5d5533574e8a7f00cc33f7d3cdf9755f5f702e35b8619b6bae6048131182356f912e859e37f52f83e647559d0f6b8493e337853151f683c95fbaf9673e9e7850d59884612bda953610b9b1548b68bcf378e4edc7fa4105b03e645c9a307f2836b1d89b8d398c2f67f9795de4630bfe6a6a47d01e69761199f881e3b43c7aa9ec30ad84a03a21b92b73fd3de41bae9aa2c50fa22096a18991b5c836b56e438189812dc480e01bb1aca3aeaecda6fb730dd53d252d44290d9eca95bd8cf99f0b6f35cd462eb791d354a2f9e48cbfac81e99b4c2be5f3c0efbc6abc0fe185f261e20439fdb28922dc770ff18489052443288d06114da1fcef33c5d126420719302339307a2f8a905a5366f5cb676818544040186314aa6241b14957563fb9b8ff81d14cc50f52387ece0255b976de5141765d42a2163d41c1c4ad9e48c51010b8b554f2b27dfa1a8b0412811baae38df4ade9ce34bd4f8551ae652b7a8617001b779cacba8e23da3c2631e15d6af2c6b94ad3eb404a1c2cf636e00462988bda58cd91995e06b46c633ea0e9a88b278e6753c101826f06754911f5f2a0e7694aeca1587abc3c45eb1962fb81fa3e877702883151b848c1ae3ad80cf75c41289537c315babb0103abe498eab51041e074a0fab136c9a4bbacd2512db6c54ddc11c85b2de6c46051e638f9948e12a1c95f84c4fd934a9b36d8d1d71ae8ff051ea02dd86d396f67cf5e13e09d709cb47451ab7a090414f1f58810af6a69683056ac2504076d2b3b37313db1771f713191f01f2f44673041bb3c65d2be142e9bf96022f3285084c3bebe4b01627ce026c8016b86afd8df51a6b636055e5edbe1f0f51fd521056a112764592880f518a2171ed3451415ccff669789bb9190d3688169e6bf00cbed69d6c5ce22e7d02201ab495f291c45b2b569e9793b1dfa2ea3fd12d65292c288828f47dd7a86befbae4a054711d02146540d62db625bad9e94729f8e1b4780ea46b7c5ad144c53b3b5167b14c2f962c9a35c65ba3c36050e7ddfa3fbbd58e489aefb53395800dee0d7c6a7aab269af22fcf76ccb9097cdbe1321d373490a4bb15128325c8d34c7399a9b58512b7b854c80d76e905bde651502b3523d3acec8f8b078bf3fcff4e0bb0393ed44a59f2a9ad5f9f420aadb09a1b946fc1aa61e5d1b35a9f78d61cbfbe32a49b8306535ad057850d5f2e93403fa61644012e805d31e516782cc19231297cda3b44e03f8ec0fcbd88a8981aeed21f45a721ce55ed5386d3b12ea3891aa3a55ddc1933b0b1426d8f34f2f65e22fb955de0b202dc2dc9848ccd5d9cad54e67482b49358158fdd3c307a195c4cfa330791646a7c46e8f2bee94cb8bc57f16bf31f38b530dc125f7b28928139cb127d5518201b43f03996e9a693f8d48f0318f47fec2a3c9296b37bbaa6080666f7fe18788cb29b81eacab81752d77a98648a47227f0176e2366d419a5776b5c00b8b1a266efc4ed8958226b0f839cad4a19398828ebc0e9119343891eeb9bcae173997492f59fbb54392a9f2dd0ffe271f17cd7935b47638083133b5dd6f291fe46e5bb3985e64aefa14cb11aaa97bcf499ff3763a299b9477ce23796105073405538b0d93022c1366835953c7bae0c050a303f60a155e92174b2219664ddd03c820abfb186d6a6cbc0c2c78ded43cdf6819b52336250fb08436e5b85b9ea28f562fee39b72feb9799d60a0edcd4127bce06039215b9225693592f6efa418aa84624d62f732f37e20367fcb89a0aaf1d877187b328e09d5789b3a8818773bddf40744aaf9095b38b025fbe4aa93195d4f837054a53e1644e446decd2c52e730a7649dd6355682659ef30b3c95655180ef6967df412358ad067a89bb67f8489699372b0eb84ba5e3dd833a5f4344d88fd6c9b67e8188e2676ac3915a81c3286b75128e05a3266f5d633165b32f3ef82f6105bbef036aa1964f6750889c61108583733276ce1725aa2f30ab2b6012594499c62594fda3689b90d07ce97d8ed196873cbbdefd4807254caac3c0d5f21fc504b0928f48858404e3b0e45c3625cd2ea32f12a4e1167a4d6a5123e69c62c3422b17a32f3da3b0a7bdb57a3771d97958e87131363c1867c8e9266a847eb931b5a42ec819262fdb44971faf702e2184c8999a78828de7b15804cbc45b76e1cfd46da13bbec5f45144feb45a2099a3aa7ae618512307c152f7eb7b32c752e19c3ea3f258f631ce4bdefbe66e7d9c8d5257680a43452129edd43c66bba5415dd1ec28b632151dba31a7145b63055005f2f66638d512b92cf2b4b2a63a4b7a346159549af23370647570d98307dab0900ef24b98f3b6f6ffc0f8962873344fd967432367cc553a01c23256a15ffe069a1212e4b982a40fb6945b5537cc86034c7aaa9c7703d2bc598aba978bba44dbcf72454cd15a958eb2d6a4948ec6da014b79f5a40a94057b27b060bf20d21fdd1bbe86c61d33d3a21585431919e56694bb8556ad9eb52da98942c158b87701348ebda8bac0bb7fb76bdf68941f2c73ecba007cc631a58ee48f402065da7920c4919a24ac225d5f83cb020d40f48bd52cdce8618eaeeee8b04e749bc9eca89247600f1fac58c8789f9f951f29255f8ff2f25c3903ac9e9d294713aa2e9aafd184b1c73d4434828db1187ca25d0c6c6120ca222a4a103e3a28d7dc67881a91a93cf28740543503278415c0edc919b0b500896a3f29254ce740ba382599479d4369fc90a4424a6034e5948303c1bbbfebd580087098d1598fa3f82f042d9b0d5a5c19431fae2a380285697240a7b3574b568714a8be79cb08f65839a2cbfbfea5bc043d1ab4bf245969ac778206ee73864c17b08690d7431d4a0171546a96bb84e044b6a24d8b375d27857dd718fff3bd676e162f4ad7e59aadd7e97f6075b3c0fd5b8570e5794424a37dc540bad98780918a859c8743489be4c295fea7a5400bdf0f2a069d097caa159fefe6a4fb2dc4849ae0d30b44d66954972a1c4620daf81f9ff4951a926443883122395f6d8442fa43d8269d02372009d3144a5266be86d4f7512c2c9d8c691ad591a54460a5ab48e6c27ede120e48ad035f4e116ad91e2961021e42af48a8850999830c324e64f77852c1a30436a0a315975d7f4e8ff9f711da2292638ba887d777ed9a9028a66abb5201d33d44d82ca4e1e2e02c1b49f98484a09893717c9a4095f917c99c65e70b97f5d17bc043bdc8a8d41e4ae1373c0146a4c46023d26583875cb40dc2438f14226f78ec81441c25710b4b009f6446a7843b650d7787c59e4df09043886f573526a76689e62eadc3d9f6980edea8b964785c4a833cb7db549bb4ca68823cc0e936328eed2a5caa2cf81f816843de16b7666c350e0a4bbb47f8a33e8bc6f6b9e80efc7ef2971c319727f3352601c5bbdc617f0dfab7bc80ec3ffffd9f77a0e50e5644a67197d801b7ddd139b4c62b140b71e324bce9bdfdd1df31f122152c7e84ffe167d72968b7f84f44a88bd2470646e20440561d17627bc0d48e6cbb0e7ff8dbd6cf05efb0784e4f6b127c8067a768a00890f69610dd0952eb1f08ea814faac50c83d1e35941069184ea5ca42ba52127670f4e5b1d30aa9aa2a8a1503252169023c028b3cb44738b4861b9ad12686096c7b1c4420a3b4080b740d366e0c3274f462e251346dda8b5744eef1982b3e17d33fc2bd10ee05622f47e3545484f221ac280df407c75133d9d090bfa05cabd28690ff30360bef9485bbf41d67218c7b0dc5c2826b43cd45626cfc5747b7408c4e8e35da69db471da01d34878165fad93d7c49c65e12bd914c0b6ab8bae55521252278400892a7658efd31ff83d70b2f7dedddbeb2e2fa968f3876188f62bdb0ef16841c457ab658d0a18f9e8a79b730db149a694a8e686e3cc8fd257128d20099fc2ed186ba885ac5ab7ed79ad35c4e84f4da4999249a1b0a96627007d272a25e56e313a87f707ae1ad070b7f57d7d82d3800572b272dbb04583cb9fb71f26427b667b319b1bc68add90b3abee868cdb639da3a552c13eac8f9c0a1d9e04032b0555a2065d9de4af72676c1df57504747ba0010f0304a146e25ad02b6a5cce91bcb5baa9d62242d8028520e45c50e90aaf5b875f42313211bd6e714d83bce1f8d5cbc266192207a0b209286d8358ee4425659086710267112ec2851898383ff08bd9b8481eea0cd305f60bddecd3ed878a9059045b4c29edcb45c98dc35aad7628e2e8c159db2e8b3e7facd91329df451dca00c79ec80cf5cb8276bfb0b475899149c7cf814ac002565ea7e6bcea163a9612ec431c00a786c44eebcfe1dafbe23a80037cb5919ce176ef7be57df5af1cfd284c7835344058b5bc3a1e2464f370a1ac3b07b6d12faad1777d6d8aa94ef5341fc538b61a00db497de0c700b8a5019a950f4a76739a29602b85dec7d9814773bebd82f619a80f241b7f2ded768a1c68383ffc8f5b9c38769114c76034a023b9e5720942a520763404f93532dc2259725b45e847b2c5b6acd58699944db8a914d0125bc3d4f8afecf6f431e3bc5c80b9d9b14ce595004d0352df4acac5d0c4e9309d31e90a2d812f6f9b828d96c11d9b2c9de7b4b295392018609d40993092d7cee32da03f7739b81e519e2e75e41111360d92f2321c032b7088eb802f0b93b20c415007c6e3284800163e9b0851a537658c5b028403f6928354ea809a24109342ce1867663841be0b8218edfc103c1dc00860d540c3583204d13248dd026bc29d1946238a14e2e00b9b905ec92769d1d326003cb7623cb5ac3a144a2819b684191cd48e714f1b50dec7fa473920440cc2e0400c43726276b1b4c0be2ed642dcb5add366eab1b2744871d0ab0c6bfb0b002901a1a6e6eb8e1870a3e4e3dbe7390c07030d81f1524c8d6712ed454e2b1cd1ebc01004fe16448fd26b213dcd58aeb0d3b0749e90404086d31e413b2656edf84db6c1be53ada35e136a2173285f8bc223189f954760e12da394524691a57a269fc979033fe485a0af6229a0aecef51a41c2dc67d42761553c0fe493a070a4b481c2794e81c264d2346ee2ba480256d7e13dd37216bdd0240bf306105679ca182990233cc300305679c71c619679c71c6192b5041ad566b5cb7ba551fe40d7c90382dfc8b0f2fcca316d2d727202cd80fdf3f9483fdbd1889f2e760a801df9006269d9e058913003903d334fe3460ff3983fdfb8244befbbbd2f9c2c20a407ea8e0e3d4c3c554e2b19146618b08b45f68f36aed366eab74baf81753f1c5f7e1e229ce7eb781915d1d7c12266f3f33e52ac9c277b38ed6d5ba20d4946975aef0e7f47ad844756ca2644049c649eb158d25a37053470d1d2839fe8d531be11a2b354e34c0ac8078aa63e14cb170bbbbbbbb7bb270a5aa9ba9a64d197f52f8f9845133e52b0f855128549299f258cbe713eed54c392d7739cca75546e1dcab5ee17c8373c7666ac662b4999a3fc4dcd1683d682e34936ba6a8e94b62ee4acf63ba5698b199a21d103177e10f3187a7f721e6479dc48caae93163372e733553b53389b92b8939e421d2668a76dda869d863be3a9d44a2c7c0d812b0573bb03ff1d50a85b3af56ed2bfbd9d07b627d4eac4fc5d54c55d79489cd54e57e35572bfcc542312f76056d4a8d4ad076c56b75cd548dcd5a5d31d78ccd549da3c66aacc6a86ba6ea1c7509d455eda0aeed49a5551a37b71fd31673c55aeb34b7a9b94dff759aa3e41b68cc62780d18962af8719424411321f6979721dd5d360eda947abf6dd46da497ea9e360b023ac5c214d08dec640885ec48cdcd94f1aee2321eab6e2d47395892a9ced3e69044a9eea9989580f9b6dbad664909b7cfcdea2a51b2b4d417dd254afa0e1c3e930ef3e8d7e8b6bcbd1583dff2a3a72d6f9fb6fc2894b8e562e97e745bd66db88c3fe92e6112e2a6810c248d3f8feb448743b1d75881ecd74cf97b148f6eafd1b250ecd8e869cbd31f814366dbcffb60fea313b4210bc4b6dcfaf63a265d2cab4e05e5e58e3bee98c2a8ea3e84f2527bdbf2f455b0a351cb05c121a3d1078aa092c6583ad1a1104a51057d6879fb9fbd2d2f71f822704828de842d61cb833b48dcf222908716d1b670747ab7d416e989446fef8641fa22d0d22d571c1273bf81bdabb0bae536127ba51e9d74c27030dc1528baa023cd06f69740400d070dcd06cc8d181cd8fbeb6927db1cc180fa07244dd224cdebf03abc0e34949068a05133eda49ff712c651ee795e13b8bf13e24c68779b776a2cab57893e7ff8190615a48606dba16c833d4cdcd2b5743f7ac97d4b785bec7fd3da9f9ce55e4eda178be839fb1df8ddab6045f95f4836e803f7e07fa0070ef9be29411e38d18ab4e574112871d7896ef33028b709a152220f7c4fcc4c28ea3b10863e3f8cf72ddf79600bf8a21b452412b378ff59efbf0e1c0282fe813c7862e9ebecd779defd874185be2d14129950ec894e504c1dd57122c515a68a9d5f07a44cca5cca3a042e80ad300d962e604114646c8b2a9806cb98162b4f45c9c264e2d92f95f41d77dc1184ab9827306b6d59b76eecc4c474ab200f2dce2a3e0913f23619b2b11f03430d3760d934d4061e9f733a19489f69b02f8c72c2a6f19c52d3c817d10904d20f13009747a037745d0311b03f0f2a6d875dea930f2023cb06f60fc31960ff96521ad86f706c2f8d44c922607fce0decef491c60ff90a4010e36d8ff51019038303c4c0dd8bf1ffb4f22120dec89997e46d1e71ec53d6dcf1b8d7c6414cea88cc29e51291929f3a4b73ab1847152876cf049186fe4e34a19b4cb99929132fe3174364834b03f6a6e5ba558cae8932cdc7f9f43ec7d4bd5e7f69bd6bbfd8994ce6fdae3388ede1313e4a1fb8c50efe9a43f76ec7f7fc48adf1ff15e64822498d0b013951395ffa7a4efc0378af7df8df2bd9c32219108422532083399b886d4099e2a2f9f709ddbad600f33e09ac50937009d78b35ea5d5ab734e0a8a3ad109c7b53e476b1bdfd7d2ed3e27a5b56edde19c251bc21e1adbe92a596f22a9532ac49d86600f8d4724120f1e5e320d394d3ff5c9b36684938c39c64cc14481194ec6e6a37a3c423c3e1e3c78f0b0200f1e3c443c441e481cafa9281c37e9686447281d352badb356d08759b7e66a27bbaef33a5a6b0d0da2325a7dd2ba711de765cf0e04e46e000185660afc5c43ab05218179f0d64c19d40d37371508e8a353d664109229e3b2810ca1cd0101593ae7ac6e752b79186a209cb30681401107536db8cf416a54d84242a68cfcb633856476a29cc190cc94bb2165fce1a0cd817d09405ee77533ecdb7c0348030e5437ee7350f64918253958bad52aa70c938ae96fdb1b353c9df0cd0d5dd23dd45a31159da8b38e4fc2642ad1906a641b6a6298271f61bbcf49bda6c65d06ce86bb11f2425ff771de68ca6019039636e48b6591ec49a04dcca319ce1ec39266b7cee93e8b94eba1d978704c398e03ab53efa1a18e7beb0c3031f5c01edc9312874e6badbd304580bc196da32daa9ba8c84cd437e6438e6ebc9a29e375d0193a0e421f26eee648b6e3396b66ca652065fcd97003bbc381dd3ff45888c27a3c619261c6749961c6375d61bf74329c0c0e708003730c32ac7c12267f33ecffb98cff1b61fbaca36b355008930e9c3b3a62ae567383abcd39b3a2c63f4a5b9a20ec0f9b06303ec4c5c740283f7f8d169f6cce9e419c1c2ed322379b41681dd5df5d09690eea801e9871b329d33f419d0f73332084b2ff9361d982db315fc264910feeffa64ce26c73c66e732bae064edfa52a24c31d8a4d997ecf40283f8762b85d94928a7c38f7217c122677cd5a29bb654b79e94feb36f2e573b47e2d0c1a32c39cafa605a2386a8ea06eb59f4819ff2bba29d89b0af61f3d0afd818f49b6b87e5f252ced2966275e68f39efbcfbba7f0276c5ca2ddd30f7d62e8b71b657b2b5eb589596aa8bba1904b6fc8fc8a4b6eb384c5f5b9ef68f736a9a32a65e374f253cbac12357b7aa52dde697c686034b0fc5c1b8693a83ec5eab57abbe7b089d3677dc1f7e5fb32a9aeaf8c355d61156847983b90c755b4c584307798c3fe1e6625244ecd02c803f94ff284520633a00377df3d28f321b27636657cab4d99092465b631bbf37409f93c7f72f83c5f13863bcf5867af79900ddd79fa74f6170d5df3b98368bebbb3b772c302d02d6ba059af5ae8dcacfb9dfba7ebeeeeee9bd0a451b2b43cfddcfdf86d3653a121e2569ba9104d87ad3680ad86fdb995db705324cadf9f9322fdbf71a6b82e3c0911f3e97310f30b40cc281c44aebb41cc5d9823e6f0f43688f951376246a5c45cd3ada68c6ba6bace46cc5d588398c3130d623efd0c627e940c6246c520763562ee421a31872718c47cfa19313f2a8898512f884153c6bd9a1a948c98518f12f39f4e6100c41c0240ec60c4dc852d88393c5d517c113dda64cd54a8e5d16a3c9a477b8f76f26821cdc3d33f0a95e90a83ff956eab42b5907f880eb759123ac21c32e77bff10d04c59174de2cc10502944eb71433fef86b7d0f77b212fb4d52f0e3882e84807ee2fd55c425f1c70b84c1cba52ceb85c891d7b72e0fe2f0e3870370b5faa85442c2c881c27dadee56ee2ac6de94a55883653b350cd1fbc56bc2a4bcb6fe090910487b4bc101f35a61c6ba6be71648dac9135b246d6c8c2fe9c6ca6bed78b93bd38d98b93bd38d98b93bd38d96aa6bedaeaabadbedaeaabadbedaeaabc166caba3a98757530ebea60d6d5c1acab83595717345376e6fd745d189e4eff285410e8fd80de0fe8fd80de0fe8fd801e6da664a855538342fd9f4e61e8d1ba2e0c4fa77f142ad4ca41387693d52f0ebb0bf7fb57db700df767ebc23e5db546ed8cbe463783ac89650cf7bb7fcb75dc37cb1806bfcb4198c33c5918f7cd21d72272a14805200fde70859b392fe80aabf003880a131cf243bc095510e23f6e87c34b5510b1d06fea0314edcd3308db97ac039a33dcac5af8206bca842d163ff79fe87ed8c621719c082d1c3247f4fddf6ba6ac6bcaf4f7db99c4317d93fec4e35d7a7cf70b778b3c6e8f37dd0d9f7a7c3fe95dfebb097b907aec20710fd174eb89d48675b575992ec53dee1b73e6c203c874278f2be5cc89244a479d1cbbb49183c986e9363e5d897bb8f010b1944497d37511a59c315d89453784bfdfd266aaf42d52196e0f83ad998a92c5f42397f707abb84d8fe7f1fea018a2f707a9c81cd14fd694718943faebf2a4bb611e22334297efeff123971ee24de8d2c3a54b2e95478fd2a4d8e5d29fa61ea27414255dc7a32b718fbb8449c883268f785c895d4aa3aba467c426114b49fc364e341a8952ce90ae1479226e7618648560cb5f1412751c4b7437ec289035531e861f6825cc1dde2af8d9d16d79d1a55885fef0bfaeebac4824fef60dea58f0766f4393856b7010aedc1233285bbc5d4adfa9d8338354591a8ce969275e4f3b69e96927cee130826e5e8195e133c31246c614b007499cc6fdb5867d0ab85f86defb229ef7df7fe214a1f73eefad6d204f9485bad6413dc3fd5fd34262c7a68c8faf5c3ffd6a8db8bf1bb2440910df87be48e82508c40f20426fdf8a537c1f127ff887de894aaa7e14b10fbe5449504911508ce17e1ea9b22268e4fb1f4566b8bf8913150df7f7a82468e4878b4564b83f04842578a4c9e72fdcdf899ed8b04c5f35d6dd1f4078df7df7c2fd9ef71e9027eb15cef45557d567c4955557b299ea3ef49902d14efc0144f7a10f8953501aee972aa9fada76438acc64b89bf450216419a51c2a4fa4a2870a21cba8f29ec280aaccf3be135b4074ef8999be785af5143665bac519ce0566e0828dfd82010e66e033f6d31fb7912fe4e00940f81955db4b9fddfd1e3453245918728caafe39ce553f7df573415bd0fc79c1666c46abe1ec3208670fca33888e55cc14888a53cc34865be562a6b05ac3b2859ecd09e7768e4fc2e4ce67fe6c02a5a54916203a092598c1a8a2e27f00915303335a40c51e2a9e7e4e0dcc68c11d3de37ce3085e8caa4d14f2738dd0d6ea799993e1b0ebc66e744e267146b89f6b437240929bb94de37e8ee636deb22f861b85a22d2d2c6d08bf50ad35c4fda8df8486072e186d08ef090761a62e166579157f15dae8ae02d8bf65aa1ba58c7fa9ff03d8bf832205fb4dc8c9f0f658e8ef3065a8d88d53c645230827fde447bf6eccddd88d35e4893608ebe71b8f03773cd50ed789aa414fbca1ae980d61ff573f53171b61bea92fc46fa62cecbea8dce11b8428e9998a360843a15beabaaee35a765d0b4106462dc6f96479a97a4a184f46556bc0084a58a9be10194b0052c920b04410537df64a172ed50d9c5065a6fa446d38a18e18aa45866e10870e669c05a2c550107b6db44b0304b56e48d30fd41bbab96b62869e5e110ad260a99ad0ef9955d4005265e1de89eafb24f87d5fefbfeb43bf27e6be4266df9a77a21232fb26a1a4efb843621f6af05432b113144f31378199b404439e179a3498a1afefddff2f74e98fa3660d42ee337571ff01b799a21394bae88f121d84b98e09c55c87379008c78972f638021ca33763023468e117a2c2042934558f0060aa92d7e09d022b41322a367128556ac052f5d800d5587bf3a30b23b4543d3d5e2afa4e544d6c7290013a5aaa263d9b0f6ed05249afa1c79b8346c374116db9c53105328054f3f696454b956383515663af1039e32f6de0a3a2a213d5a441986f442d294793a25048f4552ce58c2aa70666c0543f8cd0df7e139be01005a6a2a213d5379ab79bc8275c6008a3aa67cba2758a6126133769294df0014cd5a4a774064b25bd869e6e0823ca04c4650d1ac000267bc4a0c50d603f74bc0d1d7811a4f20ba4c1054d25553208020b33992d6b508217d4548dc50850e0a3923650636ca93a8bd9173eaa6f85e92d57a8a2ecc4065a90a0a64213ff4941133830aa7a423c60a9b2fce841ca81fba51cb8c507d272ce2b714f8bacc994d131d20c81a5a262961f3cf4d777d284448496aa490f0d0f5c30aae8f7885bb05454eca99142c62893400420c854df0b5923cc37d89bb410e547d5c3d154d26b6841b250338327bc54f3eb1611d862e5d71292d2eb56f06641e4728d15b0004835afe3ce07a68ec6927e8ef3f92f2132316d9a7e223fa4ecee298dbf167f50fed7a2e3790b0f147f54369d2239a57783f1f9830eceabe34d9008104c79a0f8abb2ebc49f74e9dd55947b309533404a8e9ad8c9ec0efa3e1b42d18ea4a36c4bb11bc9148f410186b72aa69841e5074f60c1ac0e2ac6b80118480083093c5a10040c31c000418b0a5ef842f645105eee387c81450cbe607925b081034460411c41256002076cb0860ea8088e1895a0c50cd47823ca1d2aaf811761c4c00b31381274f1460cba8803868322e00f4b180edea05f10be1347b9ce76212db9d05377c238d83f34c34b178019a7c939a4f0e42271589033408200e04f27aa82762fe46305d16798cf2f849f65b00107a9068fcf9206a5cf12072e9fa51ba6cff2072a7c9672f4f82c8f70fa2c9960878fcf520a2f9f3b0a90cf2d6585cfcdc57f6e2a2c7c6e2b01b674377ce44ad5476de956fc555bba147f9b3d72a1bcdc71e43d8dd29dd8616e93a708707fe936764919ff169c472e39f2804c4d285f1eb938d9792191fdd295788e3335452065fae719b8670bce73f49133fd3c774e995c348d172c979c6179a3b5d65a6b398ee3388eabb5d65aabc96432994ca652a9542a954a2e2e2e2e2e2e2e5f8b614b7709ad5205fbb7159048e9bfb682010cb8bc3232604b377b2b9048632f8aec2bb4aff495e9dd57fa8a273af2e34c1d119de48da42f89de48f246923792beb3331e9ecf3c76c663673c76c663673c3ff3b7f565ede71a9873218c0b61dc73218c562badd22aadd22aadb6bace445b26da32d19689b666a5d2ac342bcd4ab3d26ce65d7872f939bafc1c5d3ed790782c27674c52ce94dee5e6ce45ece44c7fede72ecfcd0e94a7cffca427eaba2018d074cd9ff99aadf9fa71b55e73357d26cb54299dace9335793e534af795035994c62f6990779cd6955e4823ce63207aab5567777cedd3dcff3dcdd5b2f5fb98fb37c7496fbf88a63d16a41b3a01a6d16149301c11aa8653118eedf80dad53ffdb2266e7bfdb46b7bf5aa7d9a65dfc4f15831f7d8acf6e1c4dc2bdc7f6463d16a41d6c4434506d5a41ca941337524d757aeaf5267e2f9a6729b75ef910a3453fde4c88ff5654d549ee7c9773da27093fe881adc25313fe9bb0a49cc373c623e513999c41c76a924e6aeb649046921cff7efdcdc98e7bfd0efb4ca1b8b10e610b6f3fe211a12a701ef1fbaa07312f0fea11a6ef3c3fb8740331525cb1041bc7f389ba92850fa0e551606bc159d0a089adb20808e9adb1879ff3036534228600161cf1127e038535d05080367a251d412c144b396b1a5355350bc7f0b6ca6a278ff96d94c49f1fee1984f19956bf2cd119f652c4b59964059d2b2ac6519947b95e473fb342bb72bf74fee57ee586e596ea0dcb4aee50ecabecaee939d95dd95fda7c9677f4df1d963d965d981b2d3b2d7b207e5b9cad3274f569e2e0a7c9e3f2f296e17c5eda0b85c10062e07c4bd38d6b6016171b72beec6b2e2d6a02aa2dc1abbb5e77614682bdd4573d153daa7b7e85557a0a14cd1448585c420c30c43741840049448222391a4b5e82c2c40c593f1882a4da5592de51ed9f9dea1d681c009ea6c3694e30389340e77aefd4f76b2db3e9192be43f49d4fc7caf2b9fbc0e7d0039f4f1df8fcb8c481cf285c727daec1a5308862f9dc61ba010dd0f072a69cf81a5eced4136ff3dc8b03da823816199f434c2ae3738749a4313e777834830c31bc14f212bf54d5d0c0f0db4f92f7df5e15a8065dd9b6d6e71077063807cc1d979733b5c4cf7c90175c9041bd2cc04b03bc3cc03b1921edbad03eb6343bf2418a44f917f91026714c5e671173177e40cce1c903623e7d07c4fc280e8819358a61d04ccd58631183f0a8db8098bbd68038761962ee9a0c3187750c317723d7e88a98bb390b5bb3ce8098bb9503c4d68e98e4722ad3c5d2648a2fbcf8cf6114503c0cccfbcf581826b99bca74b11c6958c75a68e1fd473e5d3ce1c4fb843e13f89724b7b29ed2fc4752fc4fee13faaaf3f11f03e0935c0a650516de59e0e257f8dc3191c08b4b5a49eeacc0535af599a9a6d2535ec9e7b0897f7939534cbcf823294046ae991ab9925c57992e969632c5399212811f4bbc7f91f679ff17299325b9adaaa2820fff5ef9f81cfa8871753f2fadff386bba58daca8fa4f8539aff683553bdc523f119d583d2f28b2f672a897ff144588e78211ec2603c05debf6533d5e4fd1b68a6a6787f1f67aac3e8797ff79929277fe4fd1d3653cdfa1ebf9fbcbf03cd5453f1de54de7fae66aaa1bcfff499a98ed255bcf705de7fd266aaad78ff599ba9aec0fbcfa099ead5fbd3d64cb518df57cc5463f12ee5bdabbcb705dedfd666aab3787f1b3453adc5fb7be34c1df1de56dedff399a9c6c0fb7b2c0cdc1ab3722baccaad4162dc8d7581bb0151b91c8b7539a0302e1704c6ed5e5fdc2ec88bdb0175713b1617977b4db95b90cfdd5e5bdc0aa4c59553e600df59dcb6c06d29b7b1b872ca10e0fb8a2ba70c0fdfab2ba7cc0edf15b872ca10f9b6e2ca29a3f35dc5ed28b7a1dca6e2f693dbe33d729ddc9e3bc56d722970a5b8515c28ee13d7893b81cbe44ae02eb94a6e139789bbc48dc055e226712f12574e1954922b5547dcfa9a326eba251e1ee93f6a4d771476ff719f27aa2dbfb3733dbc805b7294e91570b318f1435cd307010123fefbe13a86c0edda1af13b0f81ff28380402e24d6884112fc421408df8a473a29dcb61214cffc30fe24db8f3c3cedc31fdb7d99dbbe18fb33bb7e2afb341dc076029e285b8dd0f97620584ab4e55c42fe02e31bd929e112fe0bf226e94236fc5ab8e88597676de01ff80ff3870c803c49b70e7253864e785f8036ee3216e63075cd373e00e120f219e1c65dab9132be0664122c48d92850824ffa920322344f23b4f0411e24d88e4253804c90b71221aefdcce51262462e828d3ff200e71b11cf906dc9633a667c07d39637a216e37654cbf000588411c114f53c6f409b8b269b263d3ef5c07e246c9b2f340fcb7734f6d776e388e23fedceedc6e1c4723bff308408078131a4180919d8b7294c98858e3281315ed98deeedcc63f98fe939cddf9213ba29433a6e7b93b2f64eedcc6456e9ed80771491fe0660964809ba5ac0037cb580f37cb2002dc2c6b3cdc2c693bdcdc2f2237f78fcecded1a727307e97073d7067073d35437fb0bdfec3f426e76570e373b90006e76190e377bec869b272be7e6e98373f35cd970f374dddc3c7f5237cf97cdcd4eabe166af650f9ae1665fc970b3fbc470b3b36a6eee18cdcd2d83e1e6069ab9b957416eee176e6e960b37a364ea2bdfc4dc254b4200dc251d4cc3b07f0b77890f2c52da927e879d300b735c12e23cef9211ce73b6c40756c1ce962cf170f6c625a18bc9273b506eda28d757cd9d080604e7f06694b7b89be52c770b36e25c5fd8bfbe664aaa9420c1498c60a26cc1494bcf8d13ef69279c11f07b23042a3953f235eb6861ed47d40a48560343ddcc15aa3bd18d0861fbcfdba96e3895bbb2ac6daada74d5da8bbe7aac2c958c6d3255df8d08610eb1ad37cf1556a9bac99aade99a3f2f58cce572b95c2ed7d8ad429f13eb5b28d74f4d10eae7cd8d3c3daae666b25c37cecdd5f479c16232a0266e4e8faab999b96ee6a672fdbc603119108bc562b1582c97cbe572c964ade62e97acd1caf2168bc562b1582c97cbe572b95c3556bbaafc172c26039ad1582c168bc562f5ac67b3176beb429f13eb5b2857cd8f8ac562b1582c568f2e63713541a8dad34eb310a87399cb5c26632e55f2f4a89a1b51953087785ea9fa64279a3827f89a106619dba1009edadebfdd7dfb8f525ab7219c9c711897f107ed08730df6fe999de0fec6f4d215ee9d9a9a1937367563830d760707c7e68044e40d3937dce0b36fa0cd61043a5e68341a8d46a3f1fc0c3884e7bb21065b13830c32cc3083a5a1061a6aa8c167d750473ead56abd56ab56c6c0d36a9d4cd8db501c7061c1c9f8dd3896cadb5d69a2a43ad41ed6c74db899121c7e2e4dc70030e385801e420801c72f0d93974a252ad74a4328ea38da945721082552a3b001d06a0830ed35b874ed4d65a6ba9d561880e112276071e76e08187e9cd430f2d9726f17025ae9a62ac4cc927ad1b6966adb5d65a8ee3388ee36aadb5d66a32994c2693a9542a954aa5120ee010d2e70387ad105007ab54961bc000ac0ef4b95bc37f72880e4386f8ec211cec0c2c7f8a40a6664c76738ac4d979f9930b99337af9d30b69e382fc99acd9029ad16a41e35cb55aad56abd59ab3d96c369bcdd84cd5d68c713a7608a8a363632042c4c6b0c30e96871808c0030108e0b309d0899ae3388e93e1fd3919381a463e328c2edc196552319f6c2395711c77469406b1b6585b0da61e2c01409d1e2c0c05288085c10006b00780e1d6fc277d38800f3ef86c1f3a91ad6470b5c5d5d6a88b914f0c231f3adad99a7233b40f3648911d5b04d4d9b1417878ec0f418cfc60c4c8f436d2dddd5bc3b08de338467114154fb891ca388e96c5d55823560601405804803a405819993b33bd83e8446dadb596da2d08e5482e54684a41d818052cc0c608218465404c0318d080064cef0674225b2a954aa5122d6d32148b2b565456ab55935cb88d67a691803a44d8979ba7031c605f1e10e501b608d47fd288228c30c2671b417b8ba15226655256c408cf4eebca18656cad56abd56ab54ea7d309880a3eb8d3e934e1903842e89c6a8a418925226ca922c01a017510602b1040d89a8023315fef0cffc9208e041184cf0ea226c0ba941da12308230ab0b20eecff2dc0facd12c84891b99a4fb07cb743a66aabdd0d89d30399b3f3f2fd0d6983f2a019cdf5f382c564b456abd56ab55ab5e5535b75015601a0ce022c8d1042581a0630c036806688060c3184cf1ea213d95a6bad35ef5f6baa0ca71ad4ce46b79d1819449f910f9dc184c40e01ea20b1418820c206718003ec03825c18fe93453ca088227c76119da834eaa28e7ceac8e7c789e62ea1d5256667a3d62586743ab16a0cb608eb821110b046803a10b02e1c71844dc2bd0b4824410289e98d84b5d65a4b6d10ea2ea8252a15861212769493b019d449c28e9488c06889082cb1c4f45ea213d952a9542ac59468cc388e63142a9ed491ca388e4d72e1288b67a69bb04c803a4dd8979ba90ab0bf1225f6e52e5103fb7f4bac045e98488009139fcd24a6a909068375bba069d0e081b160309825551af3d2ea55af7ad516682cfa8ad5aa75658c32625aad56abd56a4938384b849c43d68460950e48e48c6c128944e2e1e1e1e1e1e1b1d65a6b2dc7711cc771b5d65a6b35994c2693c93469ddb896c1ada405bb7cdf78f586ec4f997e8b0a492412894422f1f0f0f0f0f0f0586badb596e3388ee3b85a6badb51691b2d3e9743a9d3e25a6232c04409d2392244122c7f09f4c22279184cf4e0289ce9d4427d14ab4121d818e402fd14c50269898de4c30e1895a26032cdfd190a9918f6f7ec5c7f032a4cd08e63fb4104669b491cf4c9d4e231f6e091b015067093bc3041376a68926ac9299254a962cf1d94b3a51e9070c27184e3545607029638c2b2d2aad56ab46cc2d35a7132b069304ec12504702d605264cac0b13988075c2851be43ff984134f3ce1b39fe844fde3743a9d7e90b299227336e598429870948a50a1293d6151504461a10075a2b0282928806a4281264da6779352a9542a95624a2ec498482f2edc388e4d72e1e182f41451766eae3e324f5e5e625e603098bba069d080b160309825c5702fecf8e8a38f72268a53e14f381fa98c740e6a044a87db986854a8f49576411185144d7a6c9f66ad5ab5d65a6b5dad56ab954baf7a9cb01300759cb0dc134f580e8a2840228d5f9ebb34ff4929a290420a9f2d4527327150d852146f607f29a4a000056ce9369103fb7f4d6ce94ee16af4d09e9ee9ddd3e3891ce62c9f82e5fb15327552c99e43e2d097df469039dbcb6f3aa4cd8eaf6a412f584c06340b61a7992a723a7153d826a0ce14f6859e1efb821327b6c717eecc931efb493f79d2899ae3388e0bf2fe5c100e06dcab202e3b1b8d31d1ede561108b5089a131a1a8a0781e755db082fb817b5c842b2265e5f2c28a3371eff23206bdf44a4c8b4aabd56a971712b732ad562c6ea6db0a50a72bf0c66a15d2ae08e5c08ec5e8ca48692c5a4a4b9112136342c5cc66732667e4f02904973be1e066acd96c6639120f1517acb5d65a3bb3a339ce718e3c7746995470773e318db3c4c3d566a3d9f07ae6f54f8ba0cd6812740cb7ec45691cc7711cc78de3388ee3d8b08635ac61ab7e02ea3415d604058a3545e92a486fba2f58d155b4156d85159da84d51aa9851b0c28a0a5480ae5634ca6ad2ae987260411b8bc6028bc6c213cdd9acd990a922b44520715e5e7e9b2173625e7e9340dad096bd60415df85d189e4eff28544daf562b2933f50ad4e92bec080b2cec488a14db16e07e7465b2680b74169d45169dc89a4c269309f5fe2694c905891b860a613c34e6c5a55f62482eac562b96cb0b59803adbcdb58d2d369f9e0212e91d2e7a4a73d15c7021c5b432ad569d46c3787e09859968a6e7b9942667e888b9d4082f97cee14263d16896c4bd4934c9b8b878dee6b9d0166d792d97b6e44c194ec7e0b9f48aa9d5c229e1f0740ee736f565ee8e68e3b0b32becccceae98c26a5acfd146689aa6c3513e4e997ed30a66adb5d6da71f4d1471f7df49102eab4056c6741e5bfcec2b616bd0548a4473ebd45fbb48f4f27b2ad05a56d51a3f8f84c99e2c38505b8a0b52e281d5ed0f6a2bdf0a2bdf04494d657b0fca622535da39038a4972f85cc7179f94da4cd4bb37aec959dcd66b3d96c35530db3ab553717a04ecccd360a5ec47cd160c4dced3fd96134181d4687e1b33b8c4e54eaee6e8ef60e94b13ea6f5555ff5f572ab0a2a0aea19af9725b9703b228c0acfc8faa475eb34ba61ef0d834119ebc7dc2574ec100693336a842e20dd100d1e18ccc2618560b2332947a08c8ec6388e9ee78d33e56848997619e0769937b6ae8ce1303943229148241289878787878787671cc7711c478739cc615c7461a3f0850df2028c2f6ce96670150618050c5bbad9b240228dad1c8e6a16a8636ff6aa60699635bdbd315da5adb4159fdd563a51e96d7dd536eaacbe51615505f595654dce81e51321b1c4e15ebe4ae6f0bc7c1da40d89ca4cc6a46c1cc771f4b161a586d9d955b8aed255b64abb4a57f14476266754d35a6a6db576b39683e2f2fe7674793bbe84a4170a89faad8b98af4c4dcbb53339e34fba96e75a21340d1c72e6a5dc23d71b254ee9fdbd271287e7fd3d2a3a877b7f2f8adb98fe45cc3263f6c6d3c788b93b0265743bc671f4341ce6b099723b9e3890bb21677ad034fd269f4d19afe1feea41241289442291c26055a1c2a272810b882146152bb4adb495e9dd56da8a27f2c6be801855aa9cac58c1000632d0a2ddead6f4ee56b73c9137ca197f89c3e13c63f9a66564aaa9bc2cf1bcfc909536f5592de5c88b0e9b32de0e2b5dc7472e94960e7f6e4b97c3df0ca268a8948cb74549ef149a19000000006317000030140c872341968759928b3d14800d62a2625852348d08e5990ca378ce18430c0000040000000084a4a6013e5748e3ef21ffa97d790fe7d0a098f4240bbfae98874ba1dbc54c8a14f19f38b0a30c2c0a70e989a52230d72402343d3e4738b7f34880abafce17772c538f596c0cd37df18a13d6c997863111efb931b034039eb8b424102e377214f12729520d7ab62816fe9132aca294f17f7fb5f28dd75bef59f4dc34e78f9687cce76f7b89aec73dbbd7e1b0cfff1932240058a910b3800062fc411403162000ac19221906425d1c1c4720225d88ee150dc6d528a004303f786c03c1b8faa8e378f131728c04ebf236d55f1f56b42c48a8f5770f4ec99f89a0bf683ce7059bace8ae792d867ab55a73ba9d39fc7cd6728b461f344f4f3c8270de7015effe02b27221971e604349cbbf9b8c439a3f24de04ae0ec166f6ee0d6cdfb6b6e9eb201808fe3dcab46ff8d63f37e2a4195441761715b4338e28a66749301f8aa03d11c775d530c4052372292ff08c759922f444cbfdb9f86144607c72f1839e9bb9752b0589d2d8d99a9c7a58efc9e39a66bcc9282f57d224234204c9e5ceb864434cc4aff9724aef263365ff9bba67833eeb0f117a73962e035ed6136f0cce5daa41148a23b15fe72e4584808516246767efa002c520caafa037a2538762877351246412c5ae6e12cac4df48e1b4a0defab66def68940a1caf4fc74069c89e48df0e198f28edec0d0f359338bd18758a3ea2bd8f8f5d7ba41945e800fefc49cdb53298b1168d8a690a50fa9c0ee99b05e13135043ada866e181eca345aa24a2d03431f4d4333661b5e36840075d079a097a8180fb723768373c00a8783b10c936ce99b98c9b7929753d2bbbf47ccd4c346be0a7b82ca900e307cb496d94f54e284898259f916775f33cad8dec37cc3051a028a4f996fedd97530ce68cff0f0f43f37909198d849d98acc486d5e8a319b6f2a5261aa541c81071f8a588f06294b608ab387c4c0889adebc9a25491b9d17c0ff5a95178fe92de6d0fc3b42f354a6b713d611394e2273620773c37ba713cc37167e1875ec426f597353f3b4207dbe81a499eaf06ad656fe64c37d86e94f1bd41c893b0369f51841e758466943add64760e4e76e33114cb7b8822a0303907602e43d1b4bd15fd4f212caa4626149cac88b5bef5615951f418465ba79fd73b902c6eaba1912bbf491bf2a688429dd729073726a6a1e72976ec7ab541184d744422f259cb0525391ad97a0936a456ef755291d7c707d197f729d4f701ae262efc4748b85485d1abab79d46ef129460840208984d0a4915716bc04a6ec9031c775bfa1373ae6f00986da8f6a4eee4e31d28b99200e1d4a9c1e49291207f946e30002170287ff8832b0351e59206955349852a3a9a325725f7bbfa04cf89c10101ed5060e8d424dc858d39c1e0e09826793802278e816ac57f87eb677f4a1bf61fa260424aebd28a31891285349e0c2e9b45b947a7e8d2514c3a5129efa8d381ba7d305209c7bf2fd4eac5bda72c3ee169d64b20a27b0aebcee1227e930d141a4f6f1f75db8bae6f1ba289235a644fb3954f44c56fe9dae9af5e15d940e4576c90a0a002f47a374e0eb53243213946afb5f8ca11e321634fc3a3a714c89304d09cd22b7ac97d1dbf2173729446be507bd7a4a7a374f1cb43ea512f1ef44acace9c8ed2d6b87848c9879fd4ba76e34b9c71ed4c5cd850d57e24e2191fb7ef5c89771ff8608a3eed0cb0239244e2cd843f47ba39d6746ca2310592ef4b956395140f1ddb92e69822c2f551ae787593ea304ec28e5209314e075558d5dd81bad91e8ed774785a9c0f882379b8fec3c5c3ec3bc7a4b99f239284a89fca287f8e6e109eddbcc40404d090bb48546ba50bb98d35e066b39fd387ec694fe1661f0402b9f0cb6f76e8ec2137fd092fb03c3d5f1878a84d8ca3b6e2cd2cecfb43fc8a0a14c0c3f1cddccb2360e5c047b1f719d7d601e67049cd6ec9468299912ef77dd01d9d49b35e8d05d6cb8e3bd48384d03c952ffb8449448e5344e66587c48ed164efa66872f656f6748e47542d0ccd3bba8728259b20b88e2af08be61ddc97ead64cb0a61fe0be161c8192eb95de1d57c60226fa39e32855391ca07d79b4dd517655fcc84bb080565f6593f89c10010a86e55436bab0d4c4f9c3e41b3ec869482898bdb31dd6270df79e8075d90c0385bf00901f2004e780190af15e80546c4fcfcd472f3b8e51b8c4c4b7ec9411ecb4a9ba0d97cd8d3cca443b60a59860074ecb00ec124ccd441d78051bedc4e791e4a510880d676d84274d3836fc322192a8d8d9b74bce6c14f4f1b45ddb73724e5cfea8b19b603928531cc89044c236516de5bc7fa9130df381af71fd337f691e5a55bb29536c73157ba8713e091ae546c2ce6de22acdc6427aabcc795931e39fd87a9a815ad5f6297c6f48d8e8598169290366ae92a0250f8aa1e258a00ee657cbe52d76bf60ce2a70d99ec97628eaa133c2a99d8f7031b00e00371f755848156766f6ecd135e76b122ce9ed20ffa175497368bb9337c4ce9dd4ea0edc0af6b4f1a2d8449f13e24ece237c8e1284648a9c051d62a70332872efa78549543d48f431745e2e0820691ab83d760317520f2833294dea175a9224bce408857fe36a5dcec6febb45a3a2be3605b31f4bbc7951b6c709e54150a8e19c6074eb91b7cd124f8fe73198f7e65c74f46fa71085946358c3458cb684fcce251d2ee32fcbb283c5f6afeb97b746309426b3a489c9d9e43259481985f825e84ae1eca1824214b2d42573a9253fb71ba81570e8ed7f337b27d8c1ce669cc111981f26424729491cbb58c228719f51c280e6fead8b5186722c542e1694bb1931eb61a5265afdad36d908d333093c908fbe90f68ac210820f66cb72976e5a1a358c4c2de4025d87bcbcaf4d7134498189b6a9dfa1c1ded44af272868e8b6dab4c37629cb168ab54b4c4d27ad676a71e562393f1177da15a180ade8e2a58569773300619105b7392c4e61be00902a5729e1dad2846dcd1806d224d9d496e6a3b9d5d2620d65d285a8e39b6557b3b618256b0be12fb7e3d6ac636c96cdae3348c0e1bd350bf7c28ffa2e35ebdb6635139dc17de2450a0945a0d5a0279158b968595f6a745172dc9836eba4da45e08a8dd15009215076fa68cdc4b8d435d31d36055346c83eb1b4e22fb28a3e124f451df2788de1f20e614c7888146f6b9578baf8b16cbd34aa77f1bfe807da1295c7ae596d7d37500aa91ec8c20ee49cb1ccccc0b0544cf2f2e10874b143da9684d4ad09b715e7284c8262e4829ca4942d956bdec2536f5ddb33ed7c39589e3fd89cdc2caaeac5c512821c5606c4e271fd27d9ddbe344fd9f219630b98272b6c8eeb613d6d14426755b441f627d1dfbe7f846e3af978fdede4c166ec4ffd9d1a32c519c75cd130f8609b68ab70c0bdcce1b992e2165b852770bc4cf669eaf245c0274a548fa0c7fbc6429ecc7de2913fbb35279be78af7655b26f4f2c91c7952404ea96b445c7c8ea4c6825ebd7e9ca4862f3fd7cc61830d6119af91106eae4102d98bfb25f99e3c380aa906ab04a22027c0c674512a588ab2f37b9106061c636e5a4e4607220cf5030380605fa9812a04cde1126f98fae36341e214c28669aea00f8add09c7c018b0f41b5390223a8009243f07c3c421c760756bf0081c48e95f72704d87ccd123c5fbb101231c33c64826762a05822886e2328c6f2e637d0f2aa1f4bb99ebb241539d9da87168260ff334dcccd17f9460ceacac3361539069c727aa8d823238ecd4ad39e0b8de69a245c82423a3ba85c869e4dfdd95ab1b5bb416a589e2f7803f0df89a5ea6e3228d7912b1d3572fa85fcd6ec064ad2a5ee97c5bba93c37bad6b64376199b4a7616f9e524fc38653c8aaa123a9ab123000dab54c8ef94e7c1a4bb0c00266f92037c51a979fb2b1384779202dcd8dae75b21099c1a714cc631f28eef97861a121bf65ccb07c2f55802196dce4aba386f5074496d5fcaa9094e5b45f161be1f33668dcf81cb882a5e090ec874a8d5f3935a03ea8d4808df4bd2befadb21cb86aed0c2e2ade27606925abfddaab89f2180b92b794aba653723d4bae937faf105aae2b71fa102b5927463859f3b5ce4a91a6165a82c5222b41a79d3a200fe133ab9d0d4b9330f29107a87b0fa8c27347b73f152cbbf7fb6703b8342d1b23e850ed8f8a229e382a5dbdee6bd21e0c8e63188bc78f78bf050d9b82bc3c362d308842fb48e6e7110373caf88446f986cbd032042b35bb272583710881dd0093fc9bbf1bf0be6cda1581bd71a4673552ea0d14d90e0df924cbacd0082b30103492cc23cc7933698d1b4c006aec8acb0639c9e28362f0e4d11a3cebbf3f81c045032f561768070d18a4f55d08a48a3c0028ad0b6c220fa7c72680d559ce06a6c8853e2dadbbc04b9c0689839df46b90b32d16b8f6538226067088b6f4bd34bd322499f7213e3d2f1f13ad0aa3897bd31516d061b86465402093ba30777931a6f3b6f84478d25343890ba3db924fc0437cab2363e2682c586d9b092d8563c4dcab0181347682ccb94b1f8a547c1a0b5eda264fc231b242a548b48f62ffeca6c08c13cca81e0772c8c11ce5a07353602e4af766d29713b3cc025bd68839448f972b9f38d6183d50be4e5b025ce32c3055c939049e59d06c722ccb762f4d3bf3e107c51e110e8b4b685bb1ca0213fc8908ca8fd880123153353be834ecaa2bec3c67300b971ac3e6aa8082a8c0194739ba3a0330106a81465deef72fcb5e2aeaf82e13f82fe02049ff0818141e507857ffae26996fb1f3894d01a3d4d6585fda6fc55ae7ef821c1c3c8831d6689438c398262bdda5d9118262f17cb18399ecb241b188399c3979f2f8c3f34657cd02460e1ac2a4087e745e3620539b7050bdb0b7ebacbe03e3f2fc582ceffd253323b624cab93adaa9b9e84035126f4ab51dc6a690e38f3c5f7121f43192a431a12539229f42a8a637957f0720e1c24d579164ad5cf47cfbf763ab9811fa7540c7a1a7ab1e5340352f5e376180a9ff81c5f3d8d6ec63ba5d5b7070875054612acd8a8e6f6fb2546712a7a7f6335946370745773fabd7e05186cd0c92471eab33179b6ece7e907aecae267504fa7cd6c2c8c34f99b9a8ccd46b2b61571ff948f293a65c37bdb883c3b9206f2ea99c11816bee6caae1850cc22668da559dd329d1a3ffab92a073b092a0dba6234197588b04dd1751d95d0791123717c8453b1789606316953375ac4db03a7e0ca1e4be3961547608002dfacb1fab203e0ea4cd2ba43962bc4bb1f22ce2a5d6a760eafaa90d1e41c0f2ee52744822ef50c99d3b20b881e0989a734633e004f80c16d247221f120e4eb5668fc4810a7ea761b6112d18c5267a53318be41898665e77615cd69545c9e50974e137a739cb5c39a7ad1bea82aa83ab812c6d3d4cc18e4048b75fbd8b43faec1150bab354dd9b5bac92af3eb6e39d5d6cec66875465c52e41e67ac084273715eb40fa555bc3d5db6b8d02d1c8f385d472ebce99e6784e3dc12da6ca753feef0cae55ddfc37bf5b3e60a8f236d54dd5e05e25285464ba94e9706a3c844a25f4b683ea04d78067d342ae481b7e9e2cb58e71dd3117adf73507a0f0ca6deec23b6de952e5655a4aad059c3791c483459eb2c4d98417a4cee7ca9e91eb6090ca445ebe92ef025105461975e44f4d14af58ad608fa10fbf88267a24d6c31204964a28fe07fffb96215a94413b1d2be13d2de296e3caf340d2b9ae5466c4049de8c4c0ca1db8c1c7132ded32cd006beee3e76bb0dae00f584ecb1b3cf135a62102f077b1ff144d58ec67ad4836d17a925add54901af7b54e703b6c6ea54d349b53c894c06f9f0ef6ff3480376d20715c62353c39d38a4c5e93ecbf3805808a3084c7f09bff54a86aed7ec13c0fa138aa9243b5e4201ca04700c3594245d9dbffcb6016d44493802998f16a8ac7fca140a21c55558b96bbc7056915498b5d106de2f73b111d7814d9d953ae8c29980422121e4020c7fa701e002b20af0d1af152c75f24bb18ec00b0c4807848934482b38024b9d6b051c43ec60fc6f6707ffd0026520f683c4624b5be60b5c50f9f31cc83ab105a35ba35f0233101c637b666816862551324b065d401f711467f39c2994df639735d8293498e3dc514e9cf145c1855c46c651108a11ac7c08c094d51e3a7c7cb9e141c45de328943461413c11e8d40619c81b8a98830051a1e1f7927c913a7a02039a64c51bd30ec20fc37ee28497003e0549803a9bee002924f13841891b43683cefbeaf1ae6004a3522995a0cd0cfe9a849b11ff1ff23fbfd53f5a3715f363a2f66891429c309ca917f6d729b022c59e3af8484c71d7000346052813dc72d2a538f18c82ab421fba255f2883a61ac59209f7815eff88bb0c92b4dfbae43164c160dbd33b25d4b939808cba8c42470b989187b12e4bbd1d4006edac9482ef39a2086404733870d124dfb8dd3d84407810e1749219bb6da6f93e22444a054c6581530f03cbfcceafae136def18863fe4e12a9bcd1cfc8360d91ac6365e8229c1dd97f689b416520461f94a48e097828e3d2def9bebfa5e594db796a5d82953d905945f98690e1ca452a5628ca3c0969145a5fdd2cb2ff997044c8ffd7c063d13faeed0223077bfcd74cebd02b32e023fb4f309c891b8f3892b8731bbee4c1a5e14199d05807e6196dfb4c11369a84143979ff76eb0e1359d7c09fe0f6c350bf81b3db0de0e8186e98a864caa2a080bb2e3f862655b82b38ff5fd252cff2c6ee38820bd352d1bc3c8cce48a17507bbbc0b9eba6fa669d586e7d1210af9aa2475dbbebd827a47c787457f419f3620a40116688486f2ac6c3f323c375eb6e10aeba9a8bd269781b7ca3160b10b8abc8f06b632acc3b6cf2f440bbd11a491fcda0eda478b19ffc24204a2a49794d8d15d3ad2fa0d54f39093909a0428e858359ad1e22191fae4e85c44413c370c6da26c42eeeaa31987185cd4217174f01952a40ec67e09782071e952c724852c3490b8747a0796680611feddb8d76dc5c78dd4c3104cba0a28587e96b52aea7879e4591fd1ccaa358ff1f122bcd18f94c9cec6437fd0bec05a7c44292a647e2b5dc1b5d48e0d60a5a5902ec264a76e9c8ead8441df03a60634d4f04abce3e27a7cb5a3951bc39b19ed75c60a20879f244ae942f1797f8dba554fd785f4c96bcfc0966b5ad407593e2331a70f018d8e5c144316f59c743126e4a807dc5134f8021d0e53661882c0dabd1d11435d7d6982e77d199efb662d3676825cc022f45c67a9805185c3106b35baa8548514c090ce8aac37a8702c0c3ba4ee2086fc2c12bd74eee8ffdea0118c971f1bd49902224d4ff728973c1a243fb3e7a0c2fad94312fb3d65d7c7df7b537cdcd02930c52f698c381e4e31390b753bd3c18e1262cd4a6b62fe12c1fbb5e5a303a5c7fc4c98c07a2287caff64617a6c52dc85b725adb0bf2b07535b30d688553838aa1dea983c9a831ab51b54e6dbe93aebb0bc89b8b0f968f7c9ce5407fa5edc2538491b5717c4450aa067cc7658b9e1ba344fc24b66f9ff8f65942daa46404242fcc4fc50c24df30ff272f411cda854c3902b7e9651cbd7bf415bb71643056d1b28dae48da651d5b272057c62b3142a9780476b60948080cb78ef5949b08aed4a77194abbde580a821193fd796c139f3362f11a66b5446ad3ee74f892e5888e12582acd6f0052cb141ac5d82c5394c9ffe218f9300e6e199e521a2523dc54d2d38644165c4c6dc0e772c2fd88969656cc7cb86529036a55a52f98bfbcf6df03b8f32687235c4bbfecf19f77c0f0e6e07337e45d41423e1924668c4360c034b778fc620f919124ab938e3da412ef2c962c390793fd49325084f364be97147fa1f3f2d072866652fe56d88a098a9de07bb8a7da55142df1ee72960763c2d34e2aeafe1e02cb6b8a9b669f4758327494578e65a0f9e29307e6c9310baa6ebb635b334bc4bbbe05e4f606e833bf654211e72ff1d6f6cc034787ebfd15f06a601c04d36b610a4f900c0ba172e01eaf64b6f9386c41cc7e4d363294f0c25acbedc1496c898e93dfd991bd2cd89a034ba2b80c91a795b5628d90a6ff1067f3a62193eaac275c9621a21995631ddd54026042a002804ff942abe40edd68e3e8c7c2365d4142805ab25d8c40dfd203f74a7f0e31010ed095821e974bb34ee69332b61e2eab885059e502cc5bf2208f503f6907e375de437af821ec9ba04f62afadc44c421ca9ad819d5edbbe6d2dad8197090da9710bb03a31640a9bf1083a010b423000d6ad3c69fc1e401fe5b2a1977fed677e2138e38750fb867bde60fa6ed8e91f02050fb784839135611c6542fcd29b2c45755ebc00ca15de41a139fd86d59f6cfd2ca7c0782604bb2234a0add2cf5f7597c6ee55dac11ecf20385870daa54e7105105bf0615ceeda61d0a013124f8102ceef8718fb3627151a267d1ecd7e3e9abdbb9e572634e4f783b934a509a4ea5c4e97623329d853032da85a4b18a0f881ffb31d8dcb7d0756eecf790a1cdd1fef38c874681df4c1187bd40ab83a0e0087f8d689bccf73c58a5905bfb08b27fc21567217d87cff92c17fccffb3458eee26eb18d0c4c64d6b2d8c1dcb2f2cd50c59c39dfed82c9d46513342c4445798101ce46b4241d490d8001b047ba61262aa9b3b959a63f53a2a4dd35327960eb44c37504fd7441edf2c30b09f1c619318e3c5460fe01253b0e556119b3e00ca302967eba989054980db45ef4b7a75286fbba9dea98cf859571d985975f17b75bae42b8f527d04b32bda26fb467009843bd355d37f3a7c8d7df89be27b89032fa8fb191d625e45fb5ea36814b80e6bed01e209110c2ea6931cbf98b9d8a8a60a15b08f962ae6428d2ad2e1b0144a6497448013073e09e225ea028e9c8a8a04d48be9d660633e1e47634e75b8c20a7fba865961f3d7bb9bc7bcdc4c863bc8e42ff0a7ebb21444d232b5d70e2b0122524455114ac379b0208bdcbe527665390944346054d5e4e16fa77c9654be894e058e476a47014c4198de4f22035cfa5584ca16e0f9c0b22217cb063ed76829c0fc462a1ca14d5d1e2ac4527de486aab43cd2e935a044633ae8e99d96912c3afd9ce560e606c42002072b270a3fc3df75e09ac6a19390752e4a2de790e88588377bbafe952f11c895feee6f42ba9cc400d3d1e470d10c0633d3e06dbb093516d4aad18ec1fd9387e44665da1b7a09196b585aa51e8de313a948fc830b0f538660bb9a5456f0b59721263c40f7e020cdeee2ba25c9b548287b29be1a81eb1072869520cd4742a9c967e99a09ede722ca3007712af06707f0e28ff3b88a9bab8e15ce76530540fd818a711048e0ae1b7f7680e577650b747cbb954ba7eee9acadbc40b53666b5d07878da8c679b0a971d3ee9bc5d24effca362902bdc7287d9c4e9fba7e3901e1dcbc92e720498fc7c89e25fe0e3996f26faf49d9da3979c121694e51218f30c434f649340e7058f7dd618d99d2aa95f2f2a9f4f41e5d6a75271976d767e84905d44c5bce8dfec220f94bb048e757cc0f1840b038ea1a40908729340ff2657465091f1d7cd0785a2d586824f4489faf06d683fca49c96eb945f24e884ae1b4a5e8504c01c453a2f7a7dc34540134aace512ac43615ed6215f4b84aac5fe55ac62a4eb36a599a382098052d6d2c212b350c6d95d86ad99474fca8c8df9509ff588880e9c01a32caee06974822d04b7fb32af918a3286a408151f4c66dbaf6f01c7c49f1909aa2d363363a23ba0c25ef838f8973d5a436f1957223736beb20c2d8708324ed5cd0dd5cfb5f14d188ecad4101c5d9fe463d499328ba092f5535c0f3475d6ad5a100ef1d115ce4ee54cb5a53710756449299fd34ff937247bfbfb6f4fc7dce7023abb87ee967ccdb8d04d5d3fe78cec098f20eb1457a68ab89eaaf130bbecf7b2c66ca44f1394d0085d41305eb51c63b969c653cfa0452f0160840f7637781bcee5277966ac6859e50f7569964096033529d58494065aa06b9524065a80261a580cb540d62a5800a86bf0e1766b1da20d53b9e55be90fb3713723bbdfd8e1df083853888946433a4469a3be8eec6c51a7e6b09c303534ac078b02d56d85f43f0b08beb817eaf14858a9dde7d1a3dff62710e0bb60d3182735ce3595197fb24133fe0b0d1274c8f4c90dd6d811542a00e50e68ccd073d0eef9de15b0221b470f48231e279e3bb13e509b9096a118789c231908cebbf22640ee258c5a327be5fa914428540729e1d7cf4a5ce2cfeb1a8e04995c1409afd61e4ae717fbf323030cbfbd5cb402bb3ae9c171352fc32b4313b4438395ca4a51d3277e3c4ad5b5eead107b3971eb679ac6fe101504f0e5815b8f84b7935983e1fc51f6437b6db8e39fa15967a9c1bdd47026daa614ad2a2e0ce63b27895afb88e4876941a749816fc1963f4ad38ae8470dda20a6ff36641c1b7c551268ba39f68064a962218b27a17440bf77c0b648af572a4b15c91cb974b723c5ed8c66e256f56390abe475c2bc657e43aff12a4ef47d9f600a98dd0d02601901a388be8168c20037171ca45823e67cd336f463f9b108594fac991906d787ca50460c1455b6d063c729a8687432a4dc9aa4e0ccd31c3b0d001fc36d59b655b9a91fac00de3b5c996c1b9a1c4ce779c991e5dda65c0298122b1cdcf107b1efcc3a12badf54e161f25513666c2f3d8e51db38afb89e1c92b1e52a769e9e7dcb1bb3b534c674636392280585914d8880070dc3015002b1241ec288c9c2f8008b03d0a200bb8989841b0da7f535b96a9e51b90104a2ee0443d880be1a05d4462398c9ff3382812178e9c0024b285dbce352e0f8ef5500fb6313199cf87e39792bb13112422fdcfa94669f888520d8a44a26223ead0b620eee475c858b19a2a21740c4716d1b4c9964566084501844df9516496b6095b1a2e41b3a5d2730ac2c595558f8c5c49e3d845ed335e14515a360c8cb9f071e0c412752435aeef07af359f1e634b5cad11a96264644bdb417c8c0479b5f43c9e2d3db45d4154bea99f6de66c3b93a308e61e1e210ce7dfff82fd12e1bb3d9d78fd9ad83b6147f1028e029e6491ce9c7d42941206d28758d04a8bc7ce340b4ef5329ab24a5e5e58d0c603b952753bf713c7662cb045ce19c934c99e5e88a420b77ae9e44c188c9458969e2a98587946b161adc66c104fdc62c381ebc5868143f58c95aa563231a3dd031c1342273e8023e7c8d78c1b3062199eb18115410059302144bb452c6f71d7c8648655e60af1f3cfd7e78f36cfbf0d3f7f907bfed9f5fdc3d4648f518cc4d14183d50c895a4d4fe589e8669eaa2a08016d882f8335cda62c387d4ef3f8a6c8c20d839300d149b755b190505240fbe6f4e64c594f6f9a258c57e7578a4256c7290a356f2a0a815564b8c819b5a290fc87e5b507666fe18c10e5f7a78e9b971e6f1cfb030fd00d3a407e65371e88bbe30ca180e53f0196d67f3abc3ab61aeb70d8c16c15d8a9c09725ba81c8cffca3d4edc8a70a6dab91985dfd389fcfa639063cb315b4138f52260d47421169449b4b8e8142fa26c91334362e54526c8d8eadf0e8c3de26beccab90d53126d7e8ad9972e0fcff0dacbef1265613a342ea80a3517144bb42c25aba82a3c84c9ba844200145fd060f35da4f533c595f05531c60c8312e8ad7e632c755d7c48ed437922b1c3aa8b06e76464ae3858e666e122febf4b7f088621533abe62d4104c2a60249d6116179bf455d4296103fc75eb8f2cc6240040e32259492c6d684d292e7e1e97345e15187ea9497a492008498ab16fcec199867da7507c7d8de0a94f49fc8603aac98f8f814b9ea549239b6d67be20476acf784ea615f3316ddaa33291afa1e8ba26d510c9b6c3b2a1c4562c2c3dad03c91bc092adee8c5e765ae87dcdef562e119957a541d9c95c40b6d1b64de88e0ea0c980c82af2d8c6af2e9e484a21b85ee691d7ee33bfe39ec17f9f05e8c05cb1304f1a7dc03502e13ce872218928ef4b89c47462ed37435d20ba643a9eea1f29267e0c005662ae077efe80bdb4e9440df14e5d57cb9fc2857f74f402707b731e78a41af5dc759e54fee593946f5bd4f9c3c19f3000006d4c900274792e5f8cdbe686a0738f35d46d3d333ce0de71c633dd8ece20cf8ea4b2ca9690e61c85bbdb43a3c1834997e532361a0e0f7796a07035df63e1f784e362f547e140a18f0d7f57ce2fc3696f2978af3cf37970f599c7f88babc4980e667ee0924e4451d4701f29a1725d48be637711c40e6290668d9cb1e271302cb1ef731c48675fca1819b7e41b1a4904944dbb5c2919be617732d0df55b87f15c101f05ecb05c93f934319e8d85b4c6e187dbe5d8398157e7128e32282839259c914292bc66f05930130fbea4e31b5997381f000a54d7d8348e42dd30206ca74c2e3e6bfb5c095c9287c0d1b25da88cdd22d44bd150794d08680904a25a39381e74db3f5a678ffb6d2d1b19299cb94b0db017d27ca20da562951e5a61ccab5db9fcf8c4b2c7b78fecdfc606e6c2537dba4a1ab401010847382737be75f8077a3a1bc190a94c4c4926db055da930148c718ede4107e28fdc8f13b51c6810bffe7d9444f05d754b6f99402011fefd4c686e3f79a5d2c1a2536effa65e1a043af24fed9ba26f45ada58b183ca3969e08a0fea766ecd923265004cef6a282162cfb8416b036ba105e7f6e387c8c59ee4610ff4bd08fb1a4e209e441f3972dad01f83b25bf581058cd2fa00b2361fb296aad014a492867c57a8609fc452192b0c42ed20fc3600272de43df112d8b6382fc627c7b2758997b9b78602b02f816c9b5c9660d62c5abfa2f6cf1c0bfcb1678661edd0e4d719ebd95b0aae35db49f66732b79555d9d0ffe4d977394946dd74a95cd44b998c19c165fd0a9ef48cb3f8341afa045504960bb520741d84f83cd7e28a9f6db05a99168623d645214f55ad4bc495f41d478135055ae64b282da18e94b0f3d7e4cbc763ba9d72839d656391b2d32a47f94ab2c705348782db24a36f3526defb293ead7fc5d3aec1998c8e1d919d1bcd81f6f885324c0577f31a322143f458e2878ce74db6589e89cc12e4eaf585be064b687d07ca9004de168416888bf21452f14d4d896c751b9f2a58a26e52e933736901a686c100e1e76623ea951b15aeeaa0ebca6b72ce879121fa0327ec6b2ddd135b6e247a9ce6e3742b9ea05a211fd2984ffbb50988f2db2909099a50b7dbe5b8917e0c21bcbaf080924b8e8f122a92f0415465633bd31a3eac327f7716e758e032ec8c51823b6fc11b0ce4a937f1dd40be007ab772d0540496aecaaefb2d1244aa5f84eb2e44441336b17da2908885cd6881e3d6d0c4997b241024570ef9f44d4c3ca2c3f207fba3796168c5e79e9063a896452cfae3236091f01c3128defbb96b885616a2a6b908f798e96674b4e88c967018788f667f86e586046885fda8dccacc72bc5a167a6479567c2fd6e50fbb9a5b97a52f4f38b888833b5faf9a07f74c6766bfc6c660c8668e2382c984fd93d1dde92fd3495b35fb78536cad269ea81dc687b0b1df20be0dc35e1a7ce69f8a73ea08c9542cf1486fd748772271d080a7c178f512a17d7c07da4c4c965db4f9f7ca6c9a655b48a6045f541dc64089c0d87b8561396510986e060eeff0c0dda4854d5456e165fd37548586bb1aa52b79707ba0e75ff25387db416b195998c9c12d677895ccd4a3b25008bc9c46248ead735413a95bc055c4899f4fd615958eefcac1636d117fca18cd2e2356fda25e65124a4909b3414f0e7a616802cc7ac616834083279fdb01a1de3140f3709e2145976b12313411cc76a66e75551ac68fda8fd119902b5f5a2894204a74b8512b47386af999c06342db8f03d7cac966ba5438442e442bf331c9d31327d458802a2624097a01850f4ea051ce52a4a5bb326372330535abb83a501d854563410045d04b948d1eb196961d1c9701de4850cd8dbb4cd78691b20b81bb06df4a7a833aeee9947ec5af4be80ddef4c3a528ec6c030e05d47985699aae88185610a40331c66576afd5532962a6f115e5bff46d0cfaed73cf9deb36241e9460a65037345a81e293831abc887c41066e49245643bd38e9f30a467d98915d78f0271f1d264c206f3d573a5bad46ed1e3040bef545c6b8e69b30ee8cd41379b309d8d34aa68509853eb91ac27f595cd3317a54ed2871e69dc4f786942b3254e652aa724cc58e2e17028f4964cdf0e9c1fe2b8792fae59d2287c87e041bd207d2a159e5dfa66cb931fb67c96fe372767d0b57b4489f7667f291e299ed1ca5053e00d6075393db02e1732add4cf7e1fc3fdd1e3686caf56c59dd36cbe04c44122e9cceec3cf95dc09dc8e10e80dcbb0d9d691eccaaa6ebcdd84ec6a8dd148c87ca9ddbfef9d76929ac78a9511b72bf83db2160c419f5a30bb111df9e25a3a561593a013791ac7a2ff4bf873f28ea4349a55271e0da556b8e959d2b3e4899356d70fb794a20fe90bbdced2b35f534dee2fb6d0eedbc786b1a2f647815ac00c34b71475780dfe31715a43e9e36983617313096c25a7e4d42ded24034e07ae4cf4e8575c1318e51c28d0042ed6e20362c5fe15749e3ef6f52c4962effc55955e2e0c4f745f15d82ac918cff0ad5c53313d9bd4318e7a88e5e7208addcca3ad2eae355a1435c9ec547db1d9d9f34eba1d17da195d86540de166d4a0bad55a8db2b0a69ae865eeb1f8218c71dc0cb9d2331cae3db79a9f6f7e5e1a44eed5b57ccc139e6dacb2a5d963115b7f582c16b3c856f1ca89856751cacc8baafee4ef509fdfdcfbb01bb7af00a262ee79765e5f2bf99f5b74a0dd38dd01ca9ca84b23f0e85a3d6647e056a772190dbc22cc386906a5dae01aee560b9d5be03a4b9ced6947e9ae7303457830332d8ca401c80f194d6ba474459a78388b9750a1645804db7fffb2d6314c42cdded5abf05e747bff4674c30a17e92aa77976ba7f5c894a69a98e36f47e4dec24b47a8de8462efe288546b6c29e4c7bd6a4ac7e46f657bd47e4b596598fc29191aa0defcd7575b0346ad25ef0d108e32bdd12f61158c943a923051df83e4189b771f0439958f5366299890f10c8acb3583ce4e69bae24448f4be871115d0dbab4bbc3d9a07175e477d39cc785524339caa16bedd09bd9acd0fec643328d7026a3ec90547904a5cd83e87f2aad0baebecd9e8cf2642307691bf305d36c90b7cbb1320e9162922209aebd0562df28f2f6b48ab31bcf8e2dc75d322b038161bb070a05e9082e142c47206fd17ab9496f464f9e046dcbb6e7f146443bd229f2c0675b84e02eadbc489c94e78bdc649059dadd6061d2c582e5c1601bca5f4a8911d41af9dad5276a1da36d83f75d247ba11ddb4207db8c3915d311558b96a1a841d3e778f50b010da34c46d954138c629d8a5c53b435d99ab5a650c64502af44f3139b6648c441bf439704e70c8bdac203a5644724983d845e6d1857c89c41b31c87b2644f024603252408670e56ff708deeeffcf3d89eb23a06a8d8c8bdc0d378539bb4b82d6ad1b1a28788951bbede2ce62f38778ebce9d6572dba84d45c089a507d23f43e6f3a2f8d2f7c8c0b6c71f48f9da6937eebed2f88cd77c0fd50b148ac00ecebb20f034addd4249bf6dbd7748284634aa6156561c85a3f0e3f3a5cd19e8e59b0884bbe8e0f2511424024d2c621114b176f31b491e9809bff5f84c858387747f0935cbcbb1cd5c1a22ab0622455d5dc693a8eb0d586459cc142f0c8d549c5c6e1390b7d3bfd47ee2d7bd5569525786a86080381f11cf6f07b18f9a7aef1e252eb9722a34f532e7a8227a10b98bb936c4f2550c26b8bf7b02517671632bd45a88d952aefce71c2128daeeeb239edce3fdd15d2dd26b1a055714717f19d4faf976d0469071d9d2299d0e2c341d4604d4eb5eb4f463aa6db04b4801afde8ce0e2cd32519f29a6c6c6fa258db64c657393af46b53c69a321bceb4345b7db1d9338c939fd24c06e964a54c72ac33a7ef2683b6c794c67772eff97293b961b4f2d6d025481ebceb7aec8e3861a8f2a2dd1a75996f244723b7853023747fe86c1b4ea1efefdcb5110a56b385353edf0238032aae42e8aad1143a3e1be789f8ff05bb642de755c5500cceeac15838340dca665a22593bc8f2c68ab2ccb0b4411a03143ab23f7f5008cd9010ecefa4cf466c18d4f2151eeda79d9c80acd3526f42a94c81be0ee869f6908b01efbe8e57c8d64801d2359cea7a5c5d3768e9985128f8fa65c7c3704293dc5ec7f2a9183604675090958bc0df958168f632102bcba10367385f812493bd4fee5054d14b7893e19912b942e25bfb736d77980395bb8461c0de191c6468e72e3950cfe6fef0c2c663d54cc000e96c4e065c99b8293a47e0a6961994b1642e676815aa9e8d893e19ba1bf5244dc36c4548b3e23d20838e631ef920ffd7bf59dc1709e2a1d17adfcf2d397b04ecd56bae13dda06bd9f06fb61599590ecd18539eca382ac68d8582b70fa4d429b4892265a1b1a6f306624229667af076b7e242f92703f76bd0b5171ad8b8f97210262f2ef4837cc242fd12a77809158b0912b70fc732498ed966a0a32d09714e019298cf2b1e71354d93614be8a591a76c9c26baac439c8b83b88001850e2c0874184a131471177c8e798decd8c2112137bb93edaddbc0543ce837767e7e3b201e14e5fe603a97a3ab9f2c2aa986334cabf957b1a1dc7274dc7692fb0ec99c356d0a56b76ea11a1a4a82ae1923d8e956daa9190f4b2197cf32f4729baf2bf144f3e4e1fc749792afe6dac7d5c6d165b8b027b8bb59f249b6029d953360b52926b68c857ad2b85c6deda9447d7ecb38d167986451094e0a8630e67d358e9302b0aff40c931dc22fb2c9f06d4c802e884fd188e7373d454af46d14e88cbebe7be34584de8cd101eeba00b8d722d5368b46f17174858e97c1d590af313e34ce677fa1a1aee4c36ebff10c79b141c76f20a1f28677db5c3e6f07dea625bd967462e675ad7df67244e294ea0476a5f1398d6c5492b272410308923589d369d1ded4b1e2c134ff7d57671fac7a2de1d594b341d54b420be4a767a8fb6ff1d5a80a7b1b43d78823fce75d9899d9eaa6da89b15e973bcf58fccadc56093b675ef9d8e9926d664bb64a7e3a210233b482985c3004645e7d4ea30a084a8111260bb70d362ca460864c7bd3055e43e0ff2277ba218ec09401593c83df535c7544508cffa392368286cf48cce6d295c482219f6c0272f174b10a368c1cc6c99d1800aafb529eb5bce29a2953d0257174cda87d4507929f1059c702344b91d9e88c9ddaafb4744ebd7898a225d240d38b12f485df026e6e27d0649213555210f4059d173c7a9ee76f310808bc11d91cc469d2c488bdf900974e8c7b69b781758c665614811f8f452cd3f51f0573992222f514a1a1afd38bcf78ab52d1f6ab138c30e0b7b58db3319df476d033745805c2a06c37b0601a03fdaab3bb026109c98db8ff43d2a3baebc0e3ace47622701e3c0e8f2958c02acf2c7c6be3c03d538238c73a671ffd9aa686cd0e7b076d3799877c97ebf140d6091c55a3363e6616dde35a34be6c6b4cc89989de1ed87f2a58936defc85b00b114d5d77761338d1884137322d3dfe79a98fb3e33faf304547a1d1180c26bd6d2b12d88b45687cd155deeb7d8bda9185d309450317754108807f838e51eded7a05e917bd8d18518952c930b1fb4e17e1beadaf416e95bd21a9ec3bea9514dd32293427f7a25da5439f693e043fea7f75c559bce5a5bf3f6491f45820c0c09a1eebf55f882ce46a4aea16ca77fc1e446fe04b24b9ea3f08d62fa65e9ecced2adeb26b633537d1df8bd998bd9f3908f29e8c2f1ef0d3689c976a401929c7319d8791e51c2d416fcae94b72892c913fa5651c65cc27b405f64cc588348a4390566fea042782c58534a24b8ff7fc48903207b5204b22515e5c3ad1ed3c29249788d36251331415802dca7de9a6455263904fbe2b842ad598e8a76d0df4e6bd2a7a0d6c8f8e2525996f27c2f3e91e2b581c0e0097eed2a7ef54fcaa360dabea9dcbde6a86aaa70ea0ef7aa8b7809aeeb2500d9511981157b861f6eb8736edcc7b9a9abb77d802692432fd462850ff4fc00f6c92dec68a58fcb9be3408c4bac422696231fa007457e63be6ea9719c0228a445ff842a969cb762bd3092feec47b2c05c56fb491b72cae1b46a9d2a796f6931563872d559de1662b006aa46ff85d448545159c5f7e76c35631059a2ccbcad1ec603f56d51f603337ed00d9408a626ee6d7b5c24e1955791a7ac8b66d59e5b2c8e2ba62559ba070ae3b3b4986f05aa7d569f485b1a08facb24b5345676cc9ca8cfd0a7fdd165680c9d41c3d0393a8ec6d130f4b14ff4635f4ebfb9ebce301d47e768181a43c3d0183a068da1f7852d870a07dc3144fe56c4b9fb340c8d8ea3f368383a43c7114d65a29b22ce839a9b49cb53e63bdc96079584b9e80328dcd4dbe74dfd1e16bd685a19807d63ad40d28d5c636bce0ca6dd9580252843815d76e7d5b08a9ce064d95e8355972d37c064835ab3d024479f2104908cf1e62e82c77135c288e7e9386f5a7e8f8ff07524c1b2c676589d884932c9afe5ec72aa85f715b707bd847f17f8015ce01b7400d6450104fa72580ae49535e1107f25a5ccb4bcc4c42c0ae3ef40e14f4575de5c81fdfb8e3916fe47901e147eea2681be5aaf0f3dbc14e38d04c06087f864561670d01de016dff420b9cd94621d97a54f1824aadf36136e99fe9852b84aae881800db92953752452637185ae7062be8bbb9d491de1ba611fe9da50e0907ccf204d1ae08c863507b0128535150be815fc6d1207e49043ec42f1cc9c130d84cae32da5b70b909068f9035af12179eaf3a8d6f99e526e0d3d0c94664c258a0da938c984ce066ff96d7be50990cb2c0be13846da710935a32a573414d6d1fe65ec0852a882918f089fb302d0664af99782ba07131b404638f7957a3d36698f3a990a9945c56ecad18c1f499bef2fd1649aaae5737df5b1dfdf587b3f91e12f9bb9d32dd7947f477774a70ff66164a9186cf24b6d9e2b9dcac4b258c4426f22d900764951abd5f75bdc19568be694a46545a7127e0f0418ea96568f79f43982340811a0756014b7fe5f625078ecec07d2112dd7372babdd47418c72fb38fb31e545d394bf2e2f6cb16023105fc7bcd3a7f5bc21e1a7646867e394b455d6d7638d26b84c00b16d12649edf23ad6b3c8500835504a5ae22bedf85441173f42d761b1819de25adcf1624e5fb3fd2438e0450fa18c602b7dda8a9d08b58a8d9cc573c412280fad7d67cd63497fba425677b4b282d3ebf4bdb4342a794edb2b9bd737fad05777117950aea7f46451cdefe8ec4b36ee4132249033512098aa9a4601d622c284a18d2856ff4cb8170dbc4557f7cefa6aee4dc65da9ed9418bb8c573f5d60c4122bb3210e7c7a94547c2df00b0bff9593e6ed7f8420269c7a18c8bd35a414fbdb5b8669678abd7127bb6693b3c0ad1ef2d92e944948273975aa29c4a9cde3e5bbd2f0e0caf5c5f1422ebf030f78b0c0db3b5e2a845525ebd2b56a5c4f17e1bb41e10bfa702408cea46a78884d90dda00e988705bfb16608e74d64d084949471286c440be3750b0a41e5d39fa0b9883643ba2ca6af1e83954e28519850a9181a58468116c8a3ef573af40d1738c26796c4b4d3aafefae6af338eda3ebfa072042b3f29b8bcb8598212cac528fea0379d63d289afe712ea4e865160e962a3197dff53a49c69f99c350c1a1a01d58e0c4e197f23a7613aaaaac712f2793ed51bb6a5a9fd94dd5062f0c7d723c00376115650aae63fa888416d779af511f4f5202d20554d90697a803abfe79fd65ddf4a3ee45a2abccf3a962d5970ac6b45970a6fa992d2aa7bb5a64549f33b53a2dd0d5255ffbcc67b7f74026aff1d2b7ea11961c7ffa636cfb225deadb00ff3c3f89547c036956d4187c9ebe16588902da93b58896cc99e58518af6e736c30b5a7843494b0a6c6ee5cad88399613a6b371c5466d0ee6dce1c55028bceab01b9a3530e2e6f3828e9b6834a13804985c2991fc827c826a5af6566753d377af31ba493fdd4c7d0689ebfcd6f91a1019f51da23ec5baa7e9531127b4837d2a39917261300ce2124fbafb7430e0e04e9b28c1907eb87f35490c141ceeba8ff855dc9edd5c44c5b1097ddefcbb018447d460411f9b876cdcdd86f173acc4e99c1e9b1036ab700756dcc2eef52846a341de08e0d053759914caa7700d7507af9e6f2f9de007dbe5daddeb7a3348fe275bf90ac6d79b4049c3ff78b47df95978be6676553b7a2d4c5b56cd4cafcc10f3ac1d749ecdc1981f4f9f0e31cd81798b60832c80b5561e35e1e229c2f8795a854f801bb1fa1417f4a061fb4fc88c3d1873e6ab66fdb0beeb27893024cd265b9a031733a158c4ba1a94a8103c4024d555c2f634dd649ce2f18cc1724afb59a5dcc58f89a78c627224b66e8bcddf5ef0199068d8b015e482af0f6b25e0a5c1a7cb13afe6767eaa3c8a259c656da7429633b8a271311c8f5152450dcbbe5ebc2c94ebfe1de626574fbe3f23efd3c3a58f39c713311abbb3931e4b3982ddb3505091fec9bfb22e402a1dd9c661fb71494bad8c068f693720c9914bc79296c5f54b3fe0fd3bc005abd4c7460430107c9e28b9309a4fcfb36f20078dcfd52175f7ddedb169692207cb70add1eea7e172dd2e89c0c0711cf0aa826febce97969c701694f1aa3d84e93cf371ce4d69514bf9637e4d8f3d4582a19bb4340b94483404d46269414d7a1821c0242743b084d77c919ea5e509c29ba3b59bfcd27b3686fe719ef4dbbe2265ec2b8180b5212e8645fee72d14d2b63d210ef9fa90101e8f24cb9a4cbd804a31caf05d5b61feab943ea6ddd1f5ceb4e7bbb7a452525c438b1804209a8f115bb8bcd6bc7f249b10d218c4112f9f687510d5c0aca4011bd31a9c16397759a7c4b09e87b92f90f8652f59ea7d4b2a7db80faeeec02cd5ec8c26c256135f139574958a946e5a43ff9fbaa5d26e806d8056fb61aeba07678ba24f46c10c1e203bcca1b40130d546d8f960bfae6da7789a397b54309a0911c9572d1a84e3aea07a2cc715afc1fce602616708fb4addd7bd3032e92380ac389ec96da307982b19c635b0410d615e2e119d12b0f176f5148033bf108dad6f37d417840ffc4939113647f310f765677fd1cd16ac1a9ef5e315e9e477b60f3267834ed3f9c03d6c34aaa17bee60fc72153a1d486037f6130fdfb423fcdcdcfc97209979b455cf736ec0542346719628b85bc94ab8bd1eb5a563607aa2cbd6e08e5febdfb8a2e1ea485affb64a4613dae76c4a2de152c8d9924e48d0c8a68ca51a0f101e7d1c8144c0eb6eedfc7e0aa2239a381f68addf10b4dac3db0d21f3c9860ce7890b5608e38c0c86d16e5995cdd636d5f8b49b9c74a4da203a515a8aae3a06946b8427b89c37713a5c40fc8c1d11653114445fe00b9db86331d638309f57a87de176ee68a8a19cab5cde82ee4591f5d0fb306b7cc8a0483817eb4e265f61f8083e0c51edbf92301ca01c8e5bc9e5258c107037d2a3bf925d131362e40aec6a6d392a1c23272636fd5861a7162747bfec9cce98db1fc2788058a57e3d79137744dc26f0b4f38ef3e303f3756900f0e775870d8dafbb00a8cb7688868a1b6c12810bc015bc414ec4a9897f80c1bd7e3e745f5cfbb08d0870c339844f864b3420590116b41401d41af4a4aa4fc00f49135a7ee1077318078060bdb410cc574627e33f9886d933f827de39ae6cbf0e9eda5dd2b19025c74839bae603b013a46f9ba76d88a2a50d4808f319e8c5f846dab23d4545fe7eea8f6e5a5d50b86d746e558fa8bce5ea46cca577103a185b2bc8d50a26880e170ee068f5c6f80ed66a370ed86612e17a9eb521846178632f69cd4d5ca6ef359267e8a0bacc139a6f49b304a1c18548262dc808f1990ef42a55cb2bce48523776c89e978a0fb080ff8fc8ba6aee116b689efa440d9683e77ec6adde6329ba7591474a2be6a06f57888eadff38e24ac51e0c9ab1ee5a1ad69948b5dc3dcba3b60bbc5364cceda056e31a78d1f41cfd38f2784b546c875e3a2ca91f923f91e88071961de015a3ef3a0e2bfca5386815ae256ac7c6642562dc3fb53a3394738eb27bbb111492f15912494250d4c3bc262dcf6a26a739f749189bff573505ddb567f95ea7cf32394ac70de60c70d4651a7df948c8a908b2fee9cc2d13e7acdb68fd4360ded3d2983d52e6adc933fae12805068d8fb8490046b75fc1ff4f2b734681f00a1ad78e20103d7a1e30186ccc147925ff24f7d5886afcbdda35083295b5281abed235437b882ec6770f629863b5d9c5d7f1d5eec94e7ab5a06ad4f2469769f1d833618521448ef91bce68771d18da8f23e76a87a959b10ea24a37ca0c2dcbdae193ba81e80c9040f44714908dbc10c86f49640b7f9a8c4ee83999fa35d6083c2109d23077d72271250692d616e804f15e5f5ddf80b99bb9f6eb9bebbd13706d75113f9ceb7ee16b033520737261442db9d088809854d9b407181ce212b31a116e0f7f5b3407fa47d4116273b24bbe8890201f15df2b61a73406e52ea54843b713034a9d058f68cbc7a922c8c1246da7e0960ddb48b4a888cb00788b400c48f58038a178859bcd92e1367897fc62cd871a9290f7097943626afa569374e81eb8948a88805f3e5be26e6e9fd8a696f23c48f831a25db9e65b5582d3656913f70a7ba1604dad207e3153152ff006421bf0622c9d32ef9322754de4b721329817176fd0eb6271a06356c6214e9a4fbbd263b48ed2e7b340b9b45793362d972bed76af4c6bdb6f073ac135c71941ebabff1bd07a9795424920762349c90dd9e3a4477a39aa67f4dfa5260251785015cf0fffcff7debad621939696019bb9da56bdd1323ab014e2fd6c7b7d75f8d1c986d51bcaff12ca1c93cb0097d398c873c775c604048dd6368679552ba5f515eba409686f4faa9dbb9048d2e248592662911c2de03d83315dbdb4e2739600dae1a6cda6df06f8870e10b1ca43325b1137fa6807e9bc93d4c15c02b063eddcab7c9abbc6eda813a85450c2f84ab7ae4675e3274742356329e7aa5d65527a68384590c344ef2da7b8efcc14222047968b990b476d4c7d38db6b6782e5d0fb3e8039c307f13bcd8a85cea60620c176a093651be84899342567342cc85eff46bf7ae057ebcf8a1daebfb22e54458c1dc87146003509cd984d5bb9bbc17c7f98187aab2c9ce440afe75a02302b7f8ebe137ae3159aea16ed257fde0cb2159edbc3c089822f799c36a08d09d4b754b46611ee417f64f5bf119df2a49eb5ca930a1ab5578412624eef9d033a1bd02c89b5f348828333d461d71c223eb10a7c5cc3800aead5f64b3e42600dfc61e3f16e2394218eaebef185b5fa02c1fd883e6ebdb74f977cf6bc7866d9c4e580288e99ad017242c50b40e17827b40d0480d1e9b632beccac70c12a2c1d8ea14927b6e165bad2c781ece0225a633a3a90be4e9eb2412f7e03c7da30bf59d8e5f2dfa651faf99fe932e660c3c72b382405a5aca182ef18635703a9d1498267593c6dcb799727ce98495ac742bfbdb17b18d8a34895b9b52147290763607694f6a79cf1cf928b070049bc0a1fabad6789d6422e910e2e0371d2de71829124d244261ef6e36b87c06df12e92554361771fd561e907404ecbd2a6319ba109c962a9d3bf10382b8252b90bf470e6d4ab28848773d216509ddff392d8f159251b87fdab0c2d30c9f47ffe620a0b5772ee0d5c67197fe81cf528c78c73d28e427485eb35aeb14e62ab0322242d17c9a073db2f2082592dd534611b29eb05214e91e0d823c73daf6262956e68a9267a7f13a9e496797c25bd36faa36bae547ed5050642a6a746f872b74e3c207a4698cc7a223b83c479677288350e3c0a418aaeafeee273b78dcbfcb7fc2936feb1bb537793aae192400f16dacb6c7029dc3a352eec26a5a3d88ba23b912f596521ea4941abfff836d489f7b3215edbe2d73a9d12b87f2d063d21e7414849eb9aecb29fd989fa4cf49c8d98f8c35e92729ee5e45719d41866a00c2dcc4593909e82503d5cbd8fdec71e7c27f2df4713bd8da7999f850a07c45253f07d7c0e2527913f51769dd74cba5c09c5a9f2b9235c227e4b80040d1eaa3fb383824a7371b1a5f7d38b850f2427571fe0254b818528e62951793db9bab62f8965c83897e5230cec8e08ea4c19b5275ff74c28d2e15c452f03504babd98c3f8cef0706f65f40276d41e9cf013b7bb7e5b6c0f6fb8f532db7bb6774085dbd15f90a99bb771218f82001195950fcd21c4ac14dfe924c7c86904ab065beecce1ab98ca7c92265d1bb56f00eb1e2b5b39e81b0913ac02d1a10c6e5021d8f29d62a436e68d10c5aaf7ba95c00ee8c75bf1ed77c122e811b9320554d78b5352172a66cff3098fe38e4f539023989ec2e6db92c0de63a161248c93a4bea2eb1ab1525374a371aac7bd130d4f09bf175e976f277e0422e4e7181497f5847de2354cccefc8800e7893d30478242558e5d98703d5b696a8baccd2ac7089e6762ff54036c176adff9921c1401c5433d6da737cd697bd6079df515bd70f5d1de078acd8025e796be2bb6bbbc1e59539eb346c8516144fa991f484124dc09664531e62db1dcf7df9170b31a4b0804c33a4d706908c8081570420294cfde36fb47f00927d856a4ad541a6b16ef82a81cd2198f4ebf950d689a1944e96e1a54a38b26c9ea64c4eb5574abe4e22f3b6a7ba5297912051810edff6d8663b74a6c6e2be0004032d73af3515d0e932e24f5dc221740b4dec9d1d5397229217c9a961b79a52e888b933cc699ae1285048c8c3df1618544875f02e698c0f431da9963cb83ec1ee2484b7f7c323d9bb4956a4e28494bb9cbadba6386bc6216bc95620cfe8e64138349f1289c4da59f85189ee3539e2015b333b2b9126301965d36dc1f864b3a6da9b3becfd5dd46e4f6b31c5c83bb808b6db730f14d735ff863ce5525589e4b47047dd258f437c83e9cb4eb42d76d9aff719d4e1b6ea762098b0ccee172645da394a76271cfd84b8738c625042048730db14fd0b988fceea179d04913223e63a410bda63f1394ded1218c30bc8fd8698d11594700034e5f6cb7aacd6669dca9d83374e6f964af4c8b4e61c3bad9c2512ae7ea58433ad37801b599d0ea648a6150174ec2801da8e64e2d25f5df626df000ce02c7aaeb3f4376ced34722e97e1c2785ed499112f3f7ccb2617973da34ef4e1cd18603864cdb15a51994450e34526ad8d6617b331712f697391e8fb1f6d2a2d822f143bf757b2442964f8a4b6ece9aaa7ce43de982d9722691b30d5e300153285f9ff2195fe6956805a99283267651cc63b8509000c55470af0a8db80f7f05448de72fd4c54b02199739e66d4083ee2bf56f25c88f458e3df3c3d644ac4161a13e7e6a7ebb539cbc898f0e8a1ac496e770287c5da6d37cdd893a250af3e84dfe428154336c67d1c7c6acc45d740c97a3597c2119adb1a04bc3d7355c8cd61404dc4f2a2c9b8fdde2a404e19f4cd874d2bf23fdd5983038fc0a027a15448e5ab83f8659324bca8c63c8d2002c8aa245c69012ae3b42c53a0d2913a00bcb6309c25d05992477f18f250c4a796c2eb69b2814eaba0c7a9f7026304f05a30becc7474b6b376d4b322b2b7b1baa3fd60f76fe6d300b125b2f708d002bc02df463eb761dbac11ca96644ab201b8029602ba020b4321178d36d2b62debb6ab647bc16925df981a3d83ca4499f0aa3251263295710a5893d564a44822851a924835d30da6996936fb76777777d8a1508c22d188b4b066eaffffffff50148946231269737777776729a594522ab0aff324e6648570cd94430fd41eede155edd19e1167d229b190aa0db4c332ecfe912b40ab954a85ac549bb2a03c436c8f0e692250892891655522224eaa547974c812e122d06b7a04ea113dc2ab7a448f8c38a74915482e11b84696e11ae12310899a66323f4d43fff48ffbe034a7d1fa5d2e3384dd2129e56a8fb350610211b961ae00e930eb018815201d663face81fa7f50806173c8992177ca0faa88f8ffab88c8c8abed80f625f24dd4229964495905ef0d1254c4aca44992cab321171d2610d649a2d89ba44972cd1253f3fa659af4c37b869e6a69969366b1afac755fdd33fdf524a29a514815eb2c588b4955c804a5e2a2d6b49c4b9320d3463eeeeee0e210dd2382f955a70be4241f195c9e45d9fbad369594f0f6b5006638032994c068180b5ff86b5100402d6600dd66a1f7f9328a6aef33fa5c8142997558a38fd9d81fa87d997ff5d3e0aa5a2e22b2c2b2c2ccbcac234da07572994a656a71633fba03c1de12ca516235a5a3ce4f212615e6060961586613ce79cec03d39a6934cc4ce3509fbeff3e4ad0b1c4a2b7148bafb08c18d1e2f2e2f2f2b2ac2f3a03398cbfc0a452eea9541e23132323b3ac322e57cdeeba6a1284e00a8652354b56363fe332a5163324489828b900ad4cac56cbba1271beebadeeeecce7a52c5fb16868bc6bb5dc73792ed7b2ba4ef1bf8fdf77777777ffffffbfbbbbbbb388feed22e133244a943061c257ac158bb5acac180188c65934ad96e7b9ebe57abd96f515638cb1269eb86136eb4ed4f8abc6c6e6c4094701000a0000585600449cfeff7ffc980ac19544a54ef1010840000f40800106700258290848918257536c01524a29a5943206b46203e98662c9858a4624f83eafcf359e6a5a5951a958ac13270a98b1ebe26c67b039e72cb97789e33c64ea4c5db7acdd0c36679c73c2e69c33c67e77efefeeeeeeffffff8f0c351443312e6b8ca2d168674bf21169dbbcc495386e59b939a72fc30eb1b2cf25ddddddfdffffff32994c269391b692732514ce64ea4efef27f593f45fe4f9e324a196a28250f31c86432d977777777a398baee744a49917f4a91f21f8552598132994c8821feffff3fc618638c29f21f8552515961812c2cbccac222bbbbdddddd5d4a29a59411059e30ac58550e9fd5c1dc8407e3f4803d7af06a8f1e238ee74d89450e2e826b4cd3850ca10c4d64faff93b746779dc6285490bae7f948e187c9890a4074429d3a9755a788932a164bb569c985a70279aa4dbdf55415e30f2033c80a30a83085c1140624c80a309c1ca8399a93a339416038393a3b50777467477760393a3b31215085a8105e55212a64c449699ac998e22c0ff7402804112532e2606d057b155a45d1b28e96198642cb1a42126a21b691244aa02a5125bcaa4a54c9889beaeeeeeeb4499ba218642d93c5206b59bfecffffffdddddddd1772c35047d1c837dfdc97d5494cdb2d6e5ba8e1b6c52093c964b218644b64dfffffff1f45a31189b46d5e226deea512c7a19858e633777777efeeeeeecd4b258e43413175b0eb78b5ebfeffff5f4a29a5942291c9b4b2a252bd0ab086097f82c015a00c30d804072a8ee2f0aae228ce8803526221a7e34c233d5008582bb17016ee8417f26af782145662b1294ec94528678765adce8ec6a0c634b6ac1a13715205dab463d8b07b595bc4f9e7ecc484b0c003954779789407b42384059e9e215087e890213a444a213c3d438814815a448b14d122526e8f760f5b848dc02348a0225124481489ba4a0e3536d0c686576d6cbeeffbbeef8b31c61863eceeeeeed3e9743a9d4ea70b56f5429681063ac306da0303c280c1ab30608c388d61f042555555753661f089e1c8d02486b3b3638cba0c02e93649c9baee3a57b574d4a00da4cbd0e592363629950729d546433f803f208490aa016bd458d61a22aeebbc96ba5caa4d5d2e1b1bd5a636dd1f845043041c46b0016dd8e0551b36461c948520829422ac8d25614b58136ec01b3778f5c60d1b259870e3041c10070e5ec5810354c2cf9e80030788c20dbcb9e1d59b1b79020a373974ec803b76f0ea8e1dab558eddb13cb6c7fa80298c38a6a9f6d814f6c7aab0407855a7ce11c713a4b2eb260c2bf86c0eeb40d5511d5e551dd519711c45a30d76ff38b327bbc331b833095296e7894624879ea7a3183fee93ad6d0e1bd398e7cd6073cec962c1e69c739ebc3ba5a43cea51a86545c1e69c33767777f7ffffff8ffef575b65d37e744710ec564ea4e29a79494654d7177f77e7777778f31c618637777777fdff77ddf77e2504cdde9949222e5a3200ac5ab28d4e4b95ac1e69c73c2260f734e7777778f31c618e3ffffff4b29a59452be0a6a45856565c48816178749c1a452cb9a7a8149a5760661220c4ca8210ccc9c1336258df6edeeeeeefd2c235a5a5c5c5e5e60523095e2d554cae505a6e7c718638cb1bbbbbba594524af97ddff77ddfbfc0a4522a554c8ccc0c9c99e1d599197777770f7ddff77ddff71f08bb357645d81d61d7c6421246dc8650c3b5b44f9cec8c63383cffffffffbb5f97a10c4d4052a5a107e9326cb5f4f5ba7182e298cb9200851b0972c01c3996358788e5ad966ad3d6eba5daf415238e9b1c3a76f0803c78f02a0f1e230ed66e74ece0d1c307f4e183577df8d0b13cb6c7fad8147ec01f3f78f5c70fa7f1f09182911e08040201c2ab4080807cfc506106811a448304d120ba5aad8093a3b313d35877288a46cb4a52a64929a5cb722bad5628cbccac9af2b2eb58baeeff25c562b9e795d8d5b29846679ea734ebedaec6664f9ce48043ed871c70086000025214a002aa50c1ab2a548c38dd362f7128cb6a7abd624cb12ad6803d0022004a00269000af2690c0888b40ae640965eb827419769dcb256d6c16287128a60edad8b85869e0c43af000022a1708200410f02a04108cb815061a702d495010a0da04a021404e2688408df4c4feffffbf971b6e0c67c618638c317edff7e9b71f7f1dc361ad7f93557bd3d0a892d423486b6a1c050a0a2a500b78880b703078015fbc58d617a2d5caa3a1516d4a434313f372c91a1568d31a478142b5290a14315a80c18b0c34801b8c38a6619081061bc0880163c4e0d51831a4cc603758181b6339900165c8e05519323688c1818c0e66c019337875c60c21821022082963c8e860860734200d1abc4a8386ecc0031a1f80004358ad78aa76dd8d5d1c8bc24d0e1d50870e5ed5a163c42d3333333377ddff4e29a564b9e7ed6844da4ad08b71f6c489cea49452f7f5226d5ee250200acab2a2bc5e7243e183a2f549489168d41654a42e6812a8493409af6a124d32e274455f4b5e5b4dcd891311b47c5affff1f9f27168bc562dd29c54face789c562b1952ff6f7ffffffc718c17a3e9ec66231d612967ba9105ca5e24b7a4aa985fc47a9aca8acac2ceb4a777777cf39e79ca8538c632a8e5259596161f1112d235a5a96b5e583ab144a53ab534b55519eba784ba985cbcb0b4c4a9552a99655f5afb03967ffffffff4b29a5941266448b8bce608cab6264646648942051a2c4b2969873c2e6bc6126e3ab87befba7bbbbbbffffffff743a9d4ea7932a664686c44c0912264cac58def25a9eb7ac1e4dcbf3b6b7155bad50c356ab5736c0e6f7f77ddff77d254cac562c160d4dcb839ec7ab9ec7a269799ecbf5aa813535bc5a53139a4da6d93923a287a8b9bbbb7b8c31c618bbbbbbfbffffffa594524a793a9d4ea7d3a99fa6e5792ed7eb159559a854b1bbd98860060000e31a000400c23010868120ca3ddd0014001522252b1b3f1e0e934dc4b1502448c7520c06428801ca18640002c02845cc507200738ea1565b7ab19d2ec2b8208c808aec288f5be93205a2b46528f8c5c8fddfa4894a2b1c740dfd10dd66b5a25f87b2e85e0546a87b4f9f102f3e2faa186a693b1dcaf820448389acd14a2b73ec4d153040a877db9d8e0c2e66fa9892241fc218002838047ee413d1c7e4c9d1f4c7da1300cee012ce2706251c6417493be1199956360c6c0ee1e4a3297566a6c436c205ccfa982c20a4a76b0e2d29d396b2852dbdd9bd9a9fe96fd6cfa4b06b8186c23717d2669cac39a397e01564207894838532848e26c43a361a27014e5053b63733d2d6eaa0d525d7fae4b65c02ad386d4f94c48d0ce8b2de58781c43db2c967a5abbe2ba87cc1d7e855b8547680e4f5bc37866df75c7fc0e6189f9b6e6b3fc76741510ec8bf0807839026b9a5f7f5d06d0c05dfc4d672252cf56997c9ba6da811d580af465154be1d217d5548dd209883709a53c942632542d0f912c6b1b35880040fcd63f1ccc0ab8dea12a134ff794274aa889c8a4c77d010eaa49462649338369e3de5fb5760fac0165309464e2501b90288eba3925d1788324bd394f615182df00ede1e50e9174211103485a394cf1a38699b58e22f2fafbfab2db4a55618b3561891d5ee2fd9d77ce7d217a3ef12e3905f3098210fb9e5f922840917b084e80a01b660e502923a66a6d78e27107f6915217730e1c4123a6255b905a175aeb5e80d5d3658477ba8c96ad3c27e042bafbaebbd3ad8b4040172d5c7473a1765d481e8bd36de4debc20a821feb3a45c02a11e86bbb9788be3ebd22320d0e1bfc2af5db511507496df02a76841d7bbdab191d001419591de5dec08c9f5dc5c245419599dfda97332763d1d6fef28bc5c2cf4f53f0a08c0ac13611c05821405117d25cfa85c2aae01934e5d550f02d7581334ba99e4a515352852b920ac5339a3e3eeebcd6fc90efeb5209e382308b1c366788211602a69695c266c5709e10e3fcbb6102756d6e2e882a7f033ec7aa80a6434f06228e886883712f5968b0a0c3800cd693909683ea31aa52d8b753c8d403eeba8b7d0efbd511f20aa5188f5885070515f10ea78f8790b64cc63ed7b228ce07c3785cb617988a7e57a86944eaff5a6fdcc2518af2994f4a34f543f96043700f710fac497fe0cd7b4d7611f4aac4f44cbf6899347489d02eea94823f819ea3cd5e84473cd5b2965f60c56025d34849f75b9db06cabcf9da4e9c6f8471e4fa471bef57f12cd0c2f69e1c72fa09c486d20be685b53c40300fd95dfa20945e859b8a245298bbf3b2d0bd39c7a7add694100314722a0c08297939026d9a0bf4d1808f9b9b08a0230277936c1409b9354a0243281349d61e537f84795e954f381b22876dccdea3b1110ae82480cf2057345d8c03af2b92fca024803444d32ead70a380705d39f1c569b41d5740a281689dd2714106d19383a9e29877763db3ddb92fe83e00ad9d53e78f0de347868258509c1e8303126d1537b17ca441758a0a690e0e62bb15c1068d3d6a44af34d9ef305dac023ae83ca5a13c9b335bcdd79221d00aaa116117f4bcb26c1887751b24806b0ec920d21ca1741f4c0920371808e6c7228b831c34d028e809d56625a76dce466e6395c38d0445073ed1c12f7a06542c34da5ea97f04aa1bad058c540b67ca4230895684c50a5bf78198d433847bd4d3f301ea99cbbd861cb16d54e537c8ae0bdb7f20c00dac77357793395a641aad04b2acd1dd5a1c89e4e607e71aab11b515510948117f504a32f49295208121212031e7010eca9183cbf17651f543ca97f97a09142fd27dece23f80477bccf9d6375aa6d718fe375b293b50e5604100f33c91f46e4077330377186af1e4756772a01432167dc00c842863b6083c804dbc4c129b16e560a3aab9537a4abc26e4a0554a96ab63554747c054f3e1092e1d03db922a6d4c88ea890d755a69c708f7ee2f5b583dc8f5b60e3f5cc1a3e60a930404c2c0a6e0f87b46dd497ca1bef97320feca86b0d24bc2c7250a40cd392cd6dad75415427d7732025d104ff31d67554e190a2b300c1644812a040f0d835b0d654c37fbe51d5cba09adcf8e5b96c4f12a58003bfc61907068bdcdcff1444dc2e1eaf126432f02c899cf4f13fe4acdb70d9d36fc1ee42bb90e109d6a9b751c40f0a0611d731bd23f77f559139bef8673dcaef41ff11469c1091dba05e9bfa537c74e64388f748e7b6e99dca1b38ad01c450e4526d4613f6b6227c2dddfd99049521ef5f67538172f3fb71575441a4cd935cb79094dd47f20fbeb166a961fecd6e845aa1b67b3c86ed1b5b4b114a4ae7cfd10957e1db075ac9eea56090816dd95f6497840dfe58b8f1bd96d589136aaeea4d4af3f34fdb354b7eca3b5a29261c2a2583bedf8e8871655f702dad4de6dce499020df4c0914ff416673e05ec143ef53c35d973b8e224b9040a317e457d510c03d0f42cf6ea397ae9817cbe058191b68c65466457624554465f603f5bd8d77a482fc82ed43302a111d56ec2b48ed39c1cacb7e820f401a0009e008f1dc61414005c4bb98776fcf55837f7dd87728154cd9c562c1c5a6c7b375d5e663ad36f3ee1178f72c3c8a20f0795561a355f93fe347d5be3763d710ae6e36025398fc22790a6a4076366a0068787ac067368f929076ed91cd9c9ab2d2b4c45f861b6badae22fb2310d9d72214a478981fe9434edffab95b3ed053db8d054d7507a5d908d843be06440fd403e794083ac553f6877979a49d0b31e1055241b6885f9014d22bb9e846bd0d6101def20d4e0b06f3726f44b1a6a751da160eaad1697666eec06c951168a41312b44ad1acf00668a8e1acb0b849a17717d4b18ee991aa824b1290ddb3668d87651ae8fb6b2c157aec0799bb7c1b4a8982666580dc2df89ea3a57e590d71082236d1cb13dedf07f30c172ff6ed39a25a97a43289359c80c3acdb0576051ec469a484032a2a9be175822056715c0ff6690666419d4510b8fb870aa6132c25d688ad5d736e238a85b8b3140ec835c956342936b22bd9fe436857df1591faa3fe5a8388ea962bac17540b248a82c537468d8f6d5aea7b6b962684c20a74d0e44c30df19869baa11eda59ed35c6aaf213ca95d3bff9bd8e390a15247b2bbf2ad696a3b78400aac0d4132d7580d6e38f079a56dbd3da3d14045c5e496d8cc9efc82faa7c98e23f7502f85f537044f54d5bbf40e1b8a114a024a9fceb3fcbb82a28ea1267f809e9fe3a2446695f4e9ed0f6f956fcb895727d9c725207f08667137f9967de4ae63d572c0bfebf63ffbf70fb3accf58d328e7d651a070f5320c5c014bb24c9925608e29cfd42da576efc0f8bb2b980cb81b9d5adec4baf0c358430e3fe66b6b70908739251278e971bf8aa6f05f4c24d44aff624481760aea1c8ad90cb3be68cf58f715db8ca5eee55c528a9341571b7016e90a1d1cab9ed41c25fa3dd5f5eec5cbff748e9457f73044b5e28f38d407b1874e3c0d281c9649e7802655bf8ec56abcfb0cfc0ff895fa60b7ee793a6b2ff6b36aa55a813eefa4143a2ff03d92cae3387024107554158852321ded28bed8bc8702cf8209c6a2d547c7486c0b1d7019f5500da7e90d37fb905a50cf53a13baee7db1fcf5b946f8ded77aa4de74dc7f948953cc73feb20a9a822450b558aac48b222d80d64483b7d4925262fb19dbaf8e11c6bc238119bd8a1199e44a140624569526c6dc719cdd958a165c7b569c57f3527292a48b7a7b99589d645ca2b7c104e8a27ab59217fde805cfb821fa8e38021645d8a048507e052200de61c54bf819ef54162e95e5e09eb41843a4c0376301137a8131287ee889a0929253d9e99c244f590354ed827d7a4590a9d083597abfa7957e2404e270ec25c192872f0387728b1cd00eec632938293b7171889333cc2d71cd732ee062a8c9320b0a423f45cd28a9bf71ccd9d5f1e4bf2b92a88fb8e4ac8ba2c045555903bf5f431e7ce6450260bcaeac50009432276408f88389d2c9ac9f1d52fbfce8ef4492060187aa4974c99718ac82c843142b52c829b978f6e866a74b3a9027ac420862d1fcd1b6783e3019ed6691c533fb415e299e0b90f0bed25ea9637c84a87cb90921630f342b48e42d7d47f8202257911873107d2a96b4118c7093613f9a82772c9e78d63450d616fb85581209ff4fbff9c1e2f10d693e39c3e5ee4193f3014c482c2f48c67e081448428173b94841dd6ccb17f7cbd9daad7a3cd68a0640b49e7e84df80a1584f924ba48a90a6c39455c6112133730ba10733fbbf9a259b47328ab5a8f0ed343d88f13b081fe1c817d3155d17b831632f63984f075ae89cfb18d194035f116b03bcaf0833930474ff82f740fa17830560321d3aeeed27ea4935248e62afa068c67019f5cdcd05a30b3d725a413a916fce62d40a701720847f8e8803159cc9cc845991a88978e73e96411c7dccbf0020900e5e928ee7fd351b45f1e8ceecc8f04879f6cfa21b67718105b0119ec124a02791aec894993739963015022975a3dd1536a005a78eb4ae2dda2236f0ff4511c824567bba33d3b0b03c362c0d798e1a909ded8a81155ea41368fe3c4501e875d05c202d8805f0ae5217060044ae4556d02908b4edaff6379af15398f88041893c1663f54ef929ba5dbc38351387f71a0a65d24bb6f0d231b4ed3007901f6245f783540a77c2580bd9979a64a8a0df03178a5158bc893574d1b71f0ee7258ccd9dc042ff7af39d6faa53ab4abe15c0c0250a79d1c495095663852d7efee037a0b6b1fed8dead6d2bc854a86be5cf9c37cad1a949786dcea3390111293e8c702b5766a74fd9c7eaee31fc8527911bf602e88b730d2ce75339b4d9639df5171c33de31168fcd1af4db4b1b791814ed433d3230339d33b1e7123fb955694fedd35bdc1e0ff50fdd4a6375e9e07c28a2e6979302b1e6fe2da5d31d6788d0d3a486a2d54d6ff8f3644609b8650d7ae7b639530a55a1ffb9049575fd8b5d3e74a1492fc925a64f7ac59991a91c1b56b34339533d45f94c821466f2314c1ef183127391263099f5cdb721dd3cd0cb5a0ec1aa6e7dee56925f84078ffb11e1361ff8ff5e9f459118b5f16f31c9162b3f6242ff75bdee4644a701c5e44973efeb6e8feb1770478092eed327681fd84add833b5f7a20860b9d948abc40bfe53d6e6b1ec72d3e3e8ba3aebb8002829531ffb9037d4534344b6c3aa9cb467e2a13bbd6162aae4f871bfccbb865841eec3edea291c4c6a48de5a1e1a78ef7e7e9146fad5168e6bb2af36f140937f8581c7a39ee9748ce87f638a5b73b149aa938cddd5d3a801db8dc8747b8e4643cc1d25bb92ed7b24f5f55d118fbfc7af51534efd9826bc372f6b2ce05d5c072664e37876bad72a7d0e79e6f883526b8a46a2ae0f9c6035290993f4acc7a18a505f4fd00bd29efb3e18425243ef3ac21a869062840c2a52c393ee4c56041682709cd741f4a78d73bebec7deee6fe57d2bdc8e0cefc6b0ce564678fefed2b26810682ff953431ddceed45db62a9e830c853a4a89b25a6a3f7f936490abbddf41e87b5ab4ecb2752fa77fbe1004ea90d8732083864e27be422dc6a4bc8ea96a64201325652ec369ac67a0b22cb10e4c78f2ddd61a81acbdf4117fe184ae1a4b2caee7e90f76a0d60741715fd033ba118e2e9b35878493a04e280eb079efd70f7b2ae7bd0befed80f44ff9dff12f3586d9a011a82302508ced268d9c913d7aa61cc606bbb7b0db8d8677e4201dab78238e4085c9e3db76a389494e31d2f6150f4bd629c6c53e4685c87a3f9ed380461345df2eda578c9fa50ae38a5f838d84ebf98df24615865b9e09a1176d1544d0570ce62a9ea0fe853768aafa24fcaaa7edfb1947fddd4d1957505a5a34b7f7bb28b494da5bcf547515744e61bb2983a36343ac894829b4d1fffe0e7198668708b625e681f9c4068f6b9243ab00eb6b826325f89e14e50ecd87a421ba8a38d9b44556a5ff1acbcf6f3159ad80c233a4af415c56ec2086e949f8b143990090f5bc39c321ccc36c9d42f040216bae4c80f9676778e531606b2d11fe6207b969b96201f180f21e15d19461ea59b28f752442146d7d52a09e100079e224ef9a7dfed87337312c8985e578afd3c1f2e265e92088c1058a03f99df9986bb0e8f0cf60a04f7c4f0b001ffdcb26bdf80afccb8fac1cf4027f57d5befcb0261638b3caef435bb6a885e9d7c1a341c15ef4a77c96d886d5524d8fc1c518c70230ea12ee67f3adef6342d9c9348b2d4c5f772576ea8b7403c20ffe475dff437afbdcdc547d4db17fd62bffd8e6f5872820723011572a74dd79f6bbd6880058f6730af00794e10f3e7bfefd6836d7f1ace27a6a34fd9814be41fbcc81436b8ee6d0267124a47a8885525ca59744e2b5bbf28de2411b044750f9f88933254b9d309e1388643849769e28f4d96309f5504a059c51915c6baebda779127d07ccb02a857795bc8fa6da7f81618d0663bb227cf83806acc831eaa838d0438047e4a5639a68d6f0d8ac1122b0d9f64f98e69b00159eb079190b37c53408fd718c1c772884f99f8718e31581d87bad68009d8f314b48d496bad7e6fe553e196b25f13ca3ac59c2d45ce04c9bccd324b4cd93e206076e901ced8558687d31d1e1ae7e346acf5d295b85c43bc8d1f68c4088a05173d518bdf75617f8ae6fbc27154d326152946ec12099e19bc8ce7549851f6dc11637588ced13b3ef7ce427883129ab34c608fa915b0cd745ef718d9faee9f3b34ee5c1ac5d435cc9faacd62f3761e242d350dce0fa082e81559137b7a0aea959926993f9b7c1945976f50675f3e67df26b3a296d7aa87bbbeda752dc92312c766425c19ebd5cd0b3576ca434528302082dc0dc8535695ead423252668929e43453f20b53cffdb5a40005410cb5e4de418c08fd1c9fa7231d9043e28e6b383b2cee1291dfed75aca19c540954891aaa3f9fb2a2b04c43d211f9bdb6f61b5d3e643fc8cc253e73c31e20d5e942dae1c5fb8445df1e89332c5b0166f9e1f4dc6602005bcb03b34d920a61d5dc9f404761913da4c06ed80ce12f3855c416496811b10fb0202a78eefefc8356ea97161a74b5ce780a5432b2afb3227d442725b30ea1a8c4e5a6c07782ae14ea4fc8c7765ac1fbda35a34ac0b23a4a8774791ec9b63e5786e363e9ebbd8cfa319b309f5058258e207b314872b1f17874dd9d777c8094520cc73fc45ff3ecdd092dec059bbbf82ce63248eb8b669f25b96b4b98bbea2e7397d40a0fee1266e475162519851a67310e05645aa646b9961056cdd7b5f7d2bd3216aa190349d089dc3d6b06d7b470b46eea8098260bfeba9c4b7bffc328098ed1a2d725a23dad4e2290a04ed9226d8d641470fe30eac9538c2f98084a292be4026a08e4b0a3c3ab3dde29ed4f55d4f1f7aa325d860c0fad781803a5c2bf05a58fa9c3591e469ad2fe91f02dd0edfe4dc05fd868a0c9ffcac4e3d19aa9213b753830237869faa3e342566782d383f477817a1cd45b7b37b3b10896671da89114f3009d6a73c48065dc99d768bf18f70e8aa7762c035800e6a973281a63a9044e98905e60f93372e118930b061de8d307f5312d30a81c28d1ff5634d315f1c74fb6db98650738eabcab287e61910d72c05cedb3f784bdc7525692962c70389aea2f5a6431365eeaa544f85338324dbd4bafd1bf4b0f0937441f1d4b307a6fa71bcd8cb6fe6e180ddd563a74aacd6c32d4aa6174890458ff8f883c30311bd3747e11bfa448b017397112ea502b8f725b4aa5ebe208c48305c60803af08e54d91e92a93e9c630ea83e4157666b02aba4e489504ec33a1142f40061638b2c670f6fe7ec62871fc68db6c708f15b86ff1cf82a0829888cc58621bc9e5968e5e4be3642a2e23640cb78dbe94ccc72c4ff035e235b6825121e1a305c34170662a5e225ea366d6ac94a7fbd00ca1891a0c2e3a7bc09c0bee9a8002b9bade7e1d0735623443e9b27f0e36d9be246798f4826f5574372a45a1b1e65dd63f6b637c363107f38bbee04fdbc26e2827ccd331fbfcb0677ee458101bcaf1e8830ce0db0b002122378392992bc603efc75ceabe79dc10919f005cf43527e1e4c1cd453d5d34ee6e87daf3a0d80b7f3d237a56e120c448cc93a8dcbdc24ab7db0bfa20579ec12d6efe4106c2a9d67a3667edd39103b325b528cf1b76f9d067256d34d33e0d3739281be425e4f0eda42adc56c1fe9af90748a446530fd5552d054935f8d4cde815fdf48f8a403577e2045406cedd4e86c74853b06911079b74cbcf94f5abf917be3700945de2dae347eb392bc3f6ecbf4b165f14974dd9953a791afa4411d1ab72ab80b29616f693d20fdc9c3364ffce0e9dbebb016772603a6903cf47adfdd5ab266fae0f5f5fe8d290b3c9e111413c9f5dfb3959707f83eee814baa62daea979751789559af73a6cd81244d86d09d6ffd71529ed9a7c6223fef2ad34ddddbdb3964cfd906b78195cfc590ed10f7a82ed8c69e83ac9fbdb92644afd13fb3013d7f39db3733cfbd76b493cb4d1c575d2c92a93f1e8c4791431716c208fb827caea113c4023a1c16babd93a360ef85300ddc57d36e7fd7a091d5ba4b578aa0a71bfb6eb89f289128b10b61027dd63dcded9270f609b9a27de67ba2f21aebf306e64ea7c0a9a04a0ee5391b26aca1a52360066ba61bbbaddf9c425dc360de12c2b6b6ff18528b2cecfa1ecc6f53df7dbcbdd36140845548b3fc448f36f88bdef4b8450727aeabefc9309804d3aea627226fdfca0ea283a5e8dd086b04b1464707473c99d710559fa35e720ca2e8ffa3cdf7841606bf812e889bd85916d11be2734981ef68a03bde5f5c486c5d42c9f34a7435bf3dd102cbacedca873d001822fa993de97ad76310a9be057defd33a0acbdddb003e53239de5cacbe215d27070ae2471c1e98452b73d6932780f96937ee21978bb0aa22960e56c81b6a8708ab706d22469ea0ffae3179a59d43c2890983794e41f8a5167d2032f392d99b4cb40287e507052372e5f2c26a3b877c6b668e30f315773f0f7658e815bde29cfd106a92adff3f96958475c89c2f221bd504f57436223a95816a1b3756717198ee4ed6e304432285abe75fe29bbc951f6101c93fcc8f440c01c95f694932231717f86d47cc62a236639ba1f7354cf91935c23838c23a2e2112f503cb8786ace162c20723a1b1b6104c50ca573a671613b31923863b02422ef388b8e7e982f0589a7f31663ea242eb87b12c76aaba5d638ad0d96c39337f43c271ecc0c3be2e81147fbca1564df7489e6902fc00f23951e1a8979dc0f139fe08ac4a3a7ed202795f20df726c59c55e2e3c47c9169d270bf2d304426e29d140c24b859f16d55042de4424323dd9eda710155dabeaf16b580a09afd1b0194a8e0527e787583332abbb88e140ec5254186700c58323455bb6bf4cf8717a06c1f0aee0e437ce308eb145d185bdbef3dbf6c30924c5400d2c1ad4e3a28e68ca9e46c32d9cdc741a3a4daea723fd149c6dd09257c47a1e3aeb4d13a31d95934a7e00eb4ce5e0b68b3e0e83466efa0afecc18bce795f1a1494a429d6c7918b7f30f4f9a8998c0aa7f5c0cad3b0a49c16718680b4ebb3b3a3d016095b8a2bdcc643a5cb598964e628409927240cd53d66513a5ae69afe902bcbb425e6661cf6ce48d4d773f7e5eddaebff8d3ee2e11df201799bc2c1bdf9adb38915834bd4bb7072249a578f6ed7974d61d8e2a405a2ecf1069bf663da217be4cec3de5d6c0299c634241988fbe35946fb64efa8a96005205d938623382dc84b5790814069fe1a527bcfd2250da4420f4ca060dc1c4aa5302573c1540ad8bbbf7a6fbb42d135f5fc777439db8f77b10b11c9caeee9888c9d3cdd901d145038653634291fd229dabc796d8b0c7dcdd58be0eb30dcfc40597dd99be5e3935cd1a5414c32a8949c56b2c61d8e74297c1ca9a18f669e1c0bc60f640d217d7113251424df598f523dfa7e8d2841df4a1d385d63c6dd7cf13bc043977ed021ee7b4bf01e4ac4fd572ff8a1044ddeb06c9fc0733a40103267accc13b2ccc705b562c4bfd66d40dc29437eee9de919c607fd6aa6bfe789bee98e6564b9d03791d9a747f6e768e4558a0983374007337c6467931bb5474c912f401b90500887237e50e4efcc27120123a8c1aad434141ab409d32cc6b6641cf2cb5d13feb73736826d5d9c68bf3c9230fb8ce449f11e7ca99dae8962f401b770ae3a3e683b97349777f1bde71a720547dea1f70003b92a8ed55449f1677879d17265871878bf9ecaf27a7b182a155988a6ed437a89805401fd4a19fd4fe1b74ed11f6672c88161a41efe647231e80674290d01aa0b85414f93d9d5fdb9b18512273f3a3c4e97acebc2ee26f3d2c581f14baf5f9b3f6dd71b76c2a0c9bbef4c6e264b73600773db75a26693ee17fff322a0f6e3930599474dbaf7feb6d341ce5f432f9eef2aea86ab09f0f38357e21a25fe9010485ddd6389fbe2ce53ebd9e0242331abbde0ae1e28b6f4351501c6aeadaf148979e147e8141ff3c4d6b4e03883a303854ab2bfbec555654831eb0ae2a029fa91c7d55442be6c3ab62218d75a2d6f5208334b427edc496fe5c0760049f303c9003e381701c57bdaeb6600c5eabb46213e8685788c058ca48c3a597bceb4910d200a406a7e3be5f0522090b9102a67664c0efacf8c9042bfcb1b7aea4b2ae6fa6bffd7f40c0dd6e47148ad570ffd649fa43c494935b88f092221f433db8a987417eac8a32091e8e50c779e95836c7bd4da565e59474893fe33d245f9206eb21dcb4783440c55a530e134587171d1f4da2fa69b9f311f19955d18eceb5a03630e132f7564c4345a363cc79d194e37a36f36c2583857a132c01c09fc858fd2b51a779c97cd77b9924e9251e988d251112db18dcb1ae104c34b9366d71dcd5828af50d8c34bc21e04103808d27868b816a8c55097664a7c51ecbe0e6b377b3c11ff3bc972c5b1cb03091f8f405a04dedea3a046bd423b39e103845f6bf9fdb31f6650d4423ae5ad803c56d999f4b4fc207444f7c43553b44c77551697d87e9f2c04031a15c75d63d85ea6885cabeb897da6d58df4aaaf8118f1aaa5e6f867540d559151fc22cab5a027f39059435c9dc0963c1a454dd96f4a25bd930936e9b6cf09c0974d599de063b738300cf54b2d73303573e93a161e44e638f58798da3a5be3725e4a306e38c56f5fc1d48d8aafa4ae982c361a9c1bcf25b5837418c12ea9b4e3afefef6550966060aff37530c8174d71c86aaf1346c8cf0e22c1879ca5b5d88a1cba3aaad5708b7a349e566bbdc7ccfac03235db81748fc71b08a685b36cb0bf7028f1da5a700abb12a7f8d2784a396a8637134ecf92c71129538296c209053cb2aab02b8182859073507f712cccebf21543368862e4e80efc8ace91ff7d6b32228afc47676e3f859f74c24e73cdd5ef84a474af53d8e7d7c420141090abce28ed21121cfda51c8c2778b79f0db2a4de97f46535082274146a3a2aba8faf9147f77cc00e4b59149151722ea4fcbaf0de2597ddb70713031477d11e5cf1214bf96214050d0e0d92e8da6dc055bdf5d4a58f52e57eadfa5f514bc6019fa7bc92d42ef7002459def46b465b58d465e5aa0304a96e7b1ef6985d1577effc93ca934b92b88069c9fbdcfa3c1e2429750b906899a0c96653d2abbb6cf4356b7313ebe8e2bf91b0a138d3c749c74e573ebdf9fa921a1a41ff0a7090a82e997c60505f16550547a0a4e749f5b732299a549b41e97e47bc8756c08a8ea2343a94a692be6f7d2077fd39614bd0d526c2b3eae6a5f558968685a15332e9a37d11eeb4b4b28902714e7bf3b9403abca9609a5188aa0133fbe567aaec435a6d7c7bf43e3bbdd3a140db9aaf7ac3fd4119cfcb8804b81d66e013260dcf23b7e321eaa65e1f90dba5184fa3fac8e02c8ff23cde3c3124a7e1da178bdf59a5ff237c7e97199a9f59124ca0a1b2612e059641ab112b4d8372652f1aef2e9eb2134b51b3c259d7d3f02895a45e518278bc72afefb6633081fcea2e037c8409ef9cda2b53e536e54b01e6d7c152d6ea0e1e99bc0e23db2780e253317dd2246c3d9467fdd52ef924e4201ec5e5cd74a9c942faf52c52209da4931fe7f0eff93e2d494fc8a94042d5a81af18d7864adbfb8431ce743e5ef9ab32ac73940e5aa4710d3a3cfaea15d7b850cd3881a9b903d46e045aa3bbb659301ad6a603ea744d50a48c0ec854d2afd47bcd9cb0682e244eb9458404c9f4027a16e3eb820bea1bef82066e9a070376c10208800044793da6a9178eed326192404c298df5fd5621a3dffaedff7f93ddf6de7bcbbda59429c9370b910b5d0b34737e93ae2ef38ee95a441bd2397016218ae42c81c5f808117615620fb147d3878347f724c2865a8abfd959a8fa16aa1e4d54d3344e9b7376f334816da72abaeaa6aa9e744557aa1621a1aacca736b3393b3223b9f9b06d5a582ce1c346f584529de8e4744ebf5a345f9f4a9608e0d2490518c08c4b0fb5550d1e6a38353cd45e321e6ea86f968d7603000f35d70c1e6ee196b2e1a1d6a2c1434d67e4a1b6f3220fb722289216d1155579f53984a5abcceb91942cc9204b31b214832c812e5dcb9125185ce64459ba7ec3a32cb9bb803cca120df77894a517dc7a94a51921ff78942518f73ccad28b771eb9cd694efb5cc9d11480936e01ae66a3a9341618801be5e80668030cb51608ace14639f2803334dc28471604408d1be5e8038e40d1dd6aa21c71a0ccdd502fc170b3c9c9bc82f444514dcae889a2288a9e6811f45429aa66599f4e980c574b69369a4abbab97eead974e6f5e3a0d18725efa0bae971e82d1765efa4bcd4b6f39bd74968bda6c5efa3cd9f6e96ad17cb56b1e6a5a385ded3d689e398fdeb44dd3b4cd5fd335a14cd774f584f2dab29a659d840b9a1530b20bab398c8462ab733cbd5eccd9c301f3687ca8f1ede1407da8f141daf9b58b79bdf4db7d884d7ca8f1150c92393f8fc6b2da9de5b0ec8c79aa4559369dab73cee97cc35530dfc07896086bad5ad56aad9a4d76b59456a449596b291e4d96598ca301f871e63170bd0505a993187aea6609c2b0ae51114954d5a29ba8a3fd03adccd152a924b42a5e623409ad0a8d8a28925e2bc845d28965c71cd46ee20c097ad5a22631283dccb2cc3350d6ca2f39929873f5de38815f350963ad34d60d521d22d2882ccd11d8f9d3e9c71b1dacb48f2d2c5a1f36aa6b5a5290e2e38cd96717e6bfbed873392c579e43ecf4189a14c6d09c16a57451477b3eeac7b7def9c73dee798a8398c94fec48d49288246d07918948ea41d4c1b3c5363c508ae7f9d8603f9cea3c9a352c9b4258fecd3377ead1a405e5820a2f4f272cf3d9e298c04063baa62bda901eb9ebbd37456019fc3883a12d88f7381b704e8b9cb0ccc2ce0fb5540543d5f931f66cf1a4453ae0cbf371c96b0b3089a7aa2892eec49d71c0ece3cdca4649ab455236e1e9304360c35ec9302c8bb778a8a558a5e56a3772241b24736adf50c379e93304dd4a6e9a5445d4c1f153c1f9f16898a6e8499e6e9418427652669c79345e8d968a3af8bd1a6f08936f4c75c44a8925a0f842cd08247440cbb02cee9e7f7cc5eb178278c4ae524f3c0aed89c11ffa19067146f2e84d53a1b45b52c0980e35aaa773d36b80e721763d06e2abf50ca545d25b2fc9c0ba6b5ef6cd0db888373cb0e2638a5f8e5141eee392970deac7161654749ba64229374445454545c55d5c9e789ba6c25131723eaccf6ed2d12e9fcb61690e0eeae4c2fc7787300eceec7050275db09e5feda3e73c9a2ff69ef78009d29c16519d1649a72f3061a2052fb360bd39b960bd4c8661a97fdee22c1ed616965a5740bf21772c47e9cabbbb31bfc1867eb457af0dd29dcce78de71bd607a4562bcf400cdcf8f65593f865ad1554aba8822eed2d47a8b7783f1a47eed89a92a32dd8b0574d6a3589c120fc34ecd2bb89c66952889bc41eb614b48816490ffb869e28aa4512c783401fd7423a50ff1c0214fc1c02518e54b4603f57f1937beac320cd5d8f865b00067a9cb01eb2675dbd413cc83c601b193dd122688e070c6bb560687f4b0143d06f605853b254e568a6664ae5de0871e8d026eae29f1bba6836a0ab1571c982f54ad1249d7a59d7a5216c9324326182880f63be67d0437e143bbfccf94a27c4d212b8cfe11d5ab4b14524792e455b702f5ed229bcf48c1dbbf1dd1b43774c318f0ec6a0c1408b81268338239d5e4e4a302ce6d3477d06b5d417b6bab310927a18431bc7942452f1831c7c764398d797df1e0de6120bf265a74d4b2fe829ce488f3af8e515ac66c399877af4cfbe1b92abbdacd07d5ce2450a9a58118fbc8c624a28e6c4f9c0b373cc91abe7797476e5f3ed4ce695fd0704282dfa9f173d03eb80e1a3835147634f991ca10b3b57d0858f8ca315a98265504b51c19a3e116334781df9dfe9d9a3912e8b39bd4ca97f1ec6340d3e3ac7df8da6befdd9771bd5573ebd49e20d0b5cf0edd1c829588c9419f150533512d984b5988131442e46992903eed9b3310ceb6e8ca5bbbb6b9e91e02598776ca09a20ead800e82711310591b280ca60662187658f29c24d11c299fa9b26cd9494820db514bf62d0ce3b70104bd32583a8d52092320725f1529b814d7272e2a573f46483d3112f3da4a957e2a5672ee729456d5e7a6fa0fef4b6b154553d4f7259c795cbe855af7ad5980c33b4c8d0f87823822f3eaaec746e761145d3d54da2a7d9051139ecb45147fc0c6b0d072f3fa71e6a46ace824c419e97cfb8a3823fdfb9c5e2132f081dda447d2b3c6f936354b8ea4f74a8ee4679257743b2e5a8a77c497ce9ec709eb1fd21c8ee6c89206833892aed51c598a26538e968a82d552f26310b060323fb6b0f0e2c346a9542a554e18c457bb1203afa47c64120328a87c3e31254ee50e1102012dae7287a8b4a8a8b438097098589c85a5a53acbcd9c8b69267a1545d23f3145537dbc093cd624275d9a353535353626596337cbfc3e3291810b3e1f99c82007524b69a90a86b5da905f41e877738221fbc755ee7763044366f79c87e40dd0f77cc5a3f9704a10fa9da7783e3aef9c932186bf710755451bd22397e23c7aa745d27de0327ea713a3491f97a10645bb748d0631e0037c2e5d8341d481b9d46c5e6a3678c960a8a95e6a4720b1c401543cd46ef0d2231be0e426150f35235ecee71fbc36843a8b73396c3733d7f63955422080e50e21c10d93105c8629c991d30d133d72c261a233b6ae683d7b8b47c3edd1f8c0653c36e79cd3072ee3639ce92729dd0c4d791e85301ff0db3fac8790c04d9107107a0a106ef2098b5c14de78284821d3c927489d193ac9858e0db554cc19717451cd402077ae4604613debc5e29c13c3306cce897577e7501d598aa62877746013cd7182a5a7266d2e9d16d1a4ead2a9a444faf498875a8a1e114b2bceb5f38b1e1195f81a0ce91335740955c51929b150d1f0edd6ac46136ca8a5e24b0f352d342b4a2a1e6a54684b5e9eb4cf8bf6c40ac82ab57ed6822fc6821671245dd3c0b05690828c050098e04c43d74927b69ba1a9dd4040a0ef1bb24f20a00ad65083971e8a6e2c69a9906ef1d2c319ff124934278aa4f7693ea9499a9197320b1bcef6ea5c5fcde66a29ed6a4534502ba2d934a9c1707e839a8d96fa504b494d3ab1dec72526e0e219b411455df4fa395187cd66af477d066f744cb58833d2eba54b8833d2e7a55bc419eaa447fd06698edca24897620d35d490c372d246065f2fbff4708853a4e03d7c638b0c27be7a9cc882c96b3eb0cf9c6b745ec3a3e92892235a911e491f7934d639cd46b3a95ec11048f7d5ad73f56af66a29276cf5504b6945a82a85aa6e2b1147d26b783fe67b3df87b1567a437176c48555a11cfa56ba9265997aed9b867effce8791e78e473183e10045df50a62a0fb0eec465ead5d18c473e7e69d8fbc1ef53d1ff900c4571f813d6c5e9dbb1d4855ce6dbe71dbe635bc1f1bb852c3b376ab2ea9ca39f768340d0600783f32700648918098b02155bd74aa6a129226e9bca44e5a249d068f86419ab3049bf974ce46d734b2c49c00a41636a4bd92392f5de6581b7ec952a3e248ba5c72059d974ab0d8c7d615391f362aeac05eca2c6c25438a8fb1449dfdd68f5e9425ca26672e879d7c694e9c912eb10869ce003a8fcef5eda7974d7c415147fc58a96c6223768f50b06339a9e7f96cfca4a8c4b8c2d2e2027aa1e1382e4134086610b2bdf9040d22a0790581d85cf379277b3b54df4020b013d898aa9449b0ede194a3eef8f1841e3069379a1848e6d16bc0740cec8182a06df6828b3132f6a458b6b2323195119511acaeacd4de9aebae3d0f17ac26cd56144d28f6c55b3c7a9bf3d58ab448b3e931bd98ae7905e9fdc03e84a6fbc060e8c57990c166075394616a712c95b23787214356fcf3212a4eb554add64e30879716f07316dfe17316108824ec40acf8e70cee409dc55940205484b0f88a0b797115157f71212bcee24254fc85c5577c87175761f115e7e1c555ac60852411d2e29f0b81710ac50a49b203751817f2798b0ba10ee3ecd184d87768f1cf778071ead10b31a8438b7fce038c5357718cbf57a10d390ce00b357506787ae9a0cbc432faa2e2610c378383a10bc3a67a899c5e4581eab05667af6874f7a42bfe5113d0d39c58c4587a324e65c5a9f3f0f9e714149264071530c4ae2284fa03a289ba8a5350081049785001857c4e5d48921d3ea7601026212baee23b50577176151088240ceea0e22c20102daee240b038e5d8a3c1815fa3d19ca8a269e5521650c88aabf8070a49b2c30a186267f11557018584180ce9a0e29ff3c0026a2c50bbf9400ad6e964bb9a534a6bac758bdba6793435737a449c4122ce248144d5cd6d36bc94547c072f9deb3a8f6673ce8b1e4b0f5d82e65088a55ec951fb8076c1de744eab60df23f41ed9ee91cf5f5aa2d77139ac565bb857b2144dac16cc03a209f5d2b193e9e54693c7a3c961c89028472156f3d287d01dc97dddcba52c3787212d6094231890e6c891eb86180ce5f0f98ac7df81050482ba8a7f1e4db30a52f8e945042396e68d1cc9f9846d48c70274d38597d5b99498c2b2c9cd9327ff2b2b1e4df515cf4737a6c25d58fecfa95741ab2eb621dd099797f8c2d293f9aa5b3db0b0a196724d5659093d95245e8c63ddc7a303892fcd797477cfeeba5d1b868b0c5258b0ed7d05cbf9e48c2f557937c4ff7c41826d9b1da78a5260197336e7cc3210e3b00bf48079c95a7a8238532a3916b99981c46846e8aa00cfa18e679f7959f10bc61d3244d2e6eca348ea9c552e83a1009ce30470a98aeb76f659051bb23adcde0978b7023aeee21e6a823873621bd2bb4b5310291151247dba523c03537c82ec4def2e6dfd76579eafc709eb930a36bb61104aa2143e04e0cd61acdf6efde83980a31243fc76533eeea0820d83f8d9e4a3d70006435267bbdd4f97056201970b08f480aeb7c18b589041cc79481e8dddea3a6e084ab9216541697ae5c0901f8800780a96299295146c4855a10c0469d1ebd3fc213d45ec13760d7b3e5cf9330a36e417d80512ad264578efddc86405e5bbdbef3560fbe93cba7fce95d65882d01a9284bd8d28e1e9659c0a055b433f30cc83f8507bf22e0dca4baf1e2ba83d81e2d261b552a968ce6aa542a2522159552c954aa5322d1567b8afd799ddcfb22c95ede4b0b014762fe637740c04b21603e98a4df306a7491a7633f985d338372daae2e6a60a9cf974f20e12dac40d3316bd0c7c62e7cdaca27d4eaa62bf91734eba6a918a2261deb8e3e78c27ceab4592a3109937bf3561339deb74cc7934c879382fefbc38cae4284dc282ec3469fef38bbd62e00ff3dbe969d3b40e44c20553677a9ca8d80e1d3970b8b4c1b17b7f7a3e7adc528a478fc60757af00bcef7d7f7fbe295e6f4873fc7bcc1b2e20cff4f67a4ce76a57aff5e9f9e8b100ac082aa882cefb478fc11e136c25c10907bae909058b397b6b4f5c8c61181b91e219e01881fa22b772c0e256461c61ad89978e35fff0c226ea18b1e2c3186c880a7ccafd816db8e1a6c54bdf71c3ed8997aee3861b0c422d8c978ee3869a162fbd7443ed89edde17007803740141a0070c69ad3e2c7869a6f6a4091ba5d0e10996bd298a9e66b78d0d17d69f8100b21f9496422549c2878dd2b1f7c32cc5440b88f0849d22a8a00a3960cc400a5cb05e3a4604154c5e3f75b0940f9640859f3ad63f4c6208264ff8a94373a20e76e93f70fb2cc2aff317736c3a61a6a6cd9c73bae69c73ce393ddd24325d369a913902ebcf2e3fcf54e51e8ac9115554ba041e51205481b25ef228a44f78d983fd542b55fdc04db00ec6089e4c8109b657d3c8cdd3cbd1d3749cd868c3e7d227156269823e9fa9d94cd54cd18f2cf2180ac7324560359fbe044aabd544d5e2a2d11445cd2dec0ffc2ea06c3a56b3b9041b4e97b661d335a3d4fca427556b15cbb8e75c38cfe3b69468e2b0fab57eb4903bf778d88e815cb7dff05073ecc6a5a73873e3cad76e7c7a8a3ae4cb48faa19f77fcc07ff963d481615e69ce9c0e02fb7117f7dc5e75b759394e5a512802857804157ca6f904c3eebb82dce35a13f5aeb42804027bf4836a0bab55459ba4833cd5f5310cc67cf368b0ca9cf70d9bd3d1c26eee80cd499318c440f7ec59c7556ec618db9c8bf2b3d22255930f4db047fff41b27435eba76d3a44b1e54bcd169a2e535d64b5aa3f382f7a06eb8387da8dd1f5e146951fcbe3fbc40b5283edf1f5e10493529b69e18f1510b3fbcb0f99151e13f1fb7eee2f5e3f2f960f1f31c24d19cf89c055cb9a11fec1dfdcea92a343d499c620a263e499c620a9bff6e683adbac72d81f1cc0205dcd1c3b4f6095603bbf01863a00448bc8883b4c8c180113246890cd2cacc97ebcade35cb0003579b9c24ee7609260a773a11956583ae3059c176040020c348e40c38d70abb0f38245006320420c3154c4c8702383cc143ab2f4b98c6c3941f2b1db99413404d14808a31a52585a03004100000d4c689859325343ab061b40b071e3073702e08300c078d305300025032040140428001405203d412ab14a387a600f405d3a8723070f72e8d871bde93618c009031ca0890320800904f058a279f06b0b1e783e3af74a586ed5d4fc7cd3ca94801dd8990005e8c0ce8e03bde8309358221fcee797530cf4141360437363ad0812ee2394419a4375603c4cd820fd3d8061907e76d9e9133ce2fd60d79c8b1e0eb707f666cf07e6d51b0bd21bd07c5ecdf9f25fb1c3495824ec064e9f21aee1212a1f974051b59a34811986e51136d41e9f2fa35a4424e4b5ca86309f1e3f84813dfab176addb90b89e80bc193168b1fe3c62791aa175fe420ceff386774c70a6a20de912bca9ec3033073ec11076ea1cbb7ce222f8844d23b60361260ee4ad1f25d8b9e621bf1ac3300cc318e3360f35264bac1215a5a5725ef306b65936b0d5c35e61188661aec120561bd82366a83de11dc5aa9675e00f93b5549ce955ad76dad82e069ebce22c2d9fab30bfbc74dd6c615951f9422d99733366342d422469a9987197433b50fffca31e84494b451dda6b2a279aa6691adbc8114d75287edeef6b6061fc48e64754e2145650f1f3aa3ccba78185d961974471126f4e46f8d5a490e684d355a449d18a1f45a85a449d74299a54ee100a26a9b5ba06d2538b32ff783459f68952b29d9efa63af58c04c57aad999c7a399b3abf5f3ede38d12293903daedcc4d4a59bca55f3cd49650f195097ecf6fce3999f9b31e0d77d374d4f95e32187a6a46683492ed73952276cac0ce8e3d738e993d03b554910a76e7dcf5152c7f1e4de6f9617e10f90cd23b44882f887ccd3be7f67a60de7983474ededd1f57ec74600d7d5c52851fd8c4c086f475f37d3f2f6d9c4ce1fbda675063c51918d890e6dc890ac1f7fd3e7a3db6cde75432592d92ce7ae917ec620e427007ec7c410c229fb91f57ec70a7a55c60c1185a6043eca610833dfa37242b530c3193880d69ce74aa925b4f0c26d4835d734d4b550985e586d0cf5d3e3ac8cef5f5dce0e52df9efcad5f38d4c98e0e4bf2b5b5827a3b09c5624cbbc3bd38c70d61e2d255f562bc24efa3330ec9e0343ad499bb7b7cf7a433d3a3e8c47d3f56aaf0d897bce696165ca960286b3698e4e931ad43cecf901c18e9bf1718917504c9b4d6661e3731e6e9ee5d09c6de3b66de3b84b75b44cd3e1421abf56bbc663816dcf409ad3aee9e4e468291d9d1c2739394e74422f730536ec15e8e38d0eb460d3af55a182c94dac56322051b1aa674c2cd1c6b22f6cd6201b6991649b89b26c83bd4083bbf828923db51ccc145895d67239875d989f97ffbb8dd2798ebb9e28b0d1c42a60f244146c6a4cd97373579f27b0ec8df56a7ecd9aa999e2fcc3f9100e1fceb36b2c458b5a20aa0b1ed01c2a9cfc1661432dd5375147107e99b2291ea765374958b0da0e0c2d680343907b064e0cc3322cc3300c03b38f172d92597c04838bc7918122136547e77bd0c7d1228992a56f47e526037d3e9471553ae5f4ac499613e7cc3e9c2d8ef3e673b20f656610628906aa4545606f6259966515cba8e761cc6f9c3f4033611c239d93a747c3b4b72b6bce4bf9392c75aebd768fa67b896fa7b7afdcd57cc44f718f26c56f80cc1397e2def5a8e0b98b3d3722c007208aa4679ec36abe848d5878e9a14c183604218e1986908e80589a758a97322ae1a5734458cc310f71c812e8025d38546e4072e45d9091e7eefc14eed21abce7dd1425cf5df929373e10ec04a5832e2852c6457ffa8c250ffb8442237569a05666e87402cd1abbe3922394c4893abc67cf9a34a9bd9f3dce4e60f66fa7f5ec392c9d6a726058192832af26b52c4d18970bc6254318578ee72933c51e622f6100c3ca81a1ad6008f2401b1a280f58a3e592253004310c2e19578d2ae6f47e605fe3c6cba1464b068acc4be6d58dc0d668c992f5b086ebe54d0d9d8f873572180c6bdcbc077471f6b2e97365746470e448d61b599269c99194ad9b97cec9386912f69ccf9c26813c9a395bd4e2dd10655a7287be9c3237d6ca58114b1c4773cae0c8e45c11753469927c124556c41d928b6843be8c1591c451345b264796a4cbe070582783134d931d743517e5a5e7d541284daa0ebe2ebf77e78c8f896143ec5d8d6948576322819b928440e6e9a76f384c972ed8ef1567a4772a39aa2a3798873139ec74ae938c3acc85e0d7f6980c9dd61ad8a35ff38cbe741928515efa0ca9198c7429620147264a93e214643c797933e46528f39ae1d43653bcc4f8700614d599020b28f870862259c3e06a124c08830bc6d5a470b654aa6852bce293f0a14a932eca74f132ae2892cdbd877530dae439b9846dcff45c5ec9194dedf9009f7aabc68632210e195793da27f8c37cf0bb21d6f30dcab85a340611d91eba1fbd23183731d03d5704866d6f496103f576e921d40da5a837057b680f11c19139754933a7de03f59ead16512ae3a2322e2ae3a2a1540815221222124285525ae825e4316f446043951b1c241b4228e921948b4baa496d3f2e594108546e9a440305d24081ae1a3c50608f7aa8bd7ef7df0db5330eca73430df6b8df9e244ef1c5163e499ce28b20fcf69e9b244ef1c513b85ea2bfcb2b6e76df8d264f7de9d150b007f89d8d0074350db6219d58130e1c2db3234b38e248fa6cc591f419c8f81047164bfc0d0c63ef252c7b0ecb32aea8a3e5657d99282f7de7a56b45d8e93864b0db4bd870b6240e6e6039cfc4fa813027d7c429c038c2f3ed1aac0ca7861220d460b548d668bd9461d550f2d261ae0d3d922568cd96b5d6f3a5b08cbaedf6168347d3b977bdaf374e01c690e76e36814cd76f1ef21ad01f5b36b4483ae8d16c200e1c322e1917cba069220f74e9c03527a3f34697dde66e74dcdd7ebb718a2facf0dad5520fba7ef370989cad41c27786037e3b50d86fe713c3d68464bc78d989c0c629ba70fa3084fa2c6cd8a9be1dd025a4ea9074c986160d990ed3c240970e9a69b6e408c6b344081542bd74ea2ea9d97249bd741b2d19574bc62547adc42ace489cc7c4b0210d140d942c618e830688c313c28632ae9732ae196bb0f9184306020e42520a14c1c598507bfdec6ac5bc7628e25318cfe5b0b209c98ac130efaed5b9dab5b116e24307bf70fdcbc79b29b47eeb68e89c47ef40c337101a14209b60c366451db29ddcc41b9a1466ae791053cedad91550f51e7ce8c067fe61109f05e9d77cc83e73ee869b356103fd37ccc9ecf9c8dc0759461965dcad0c7ba4260906aab783200906aa877e60de8e8140e4679db7b787030efcd5f92b18fa889f01c78074d205919a6f3084c3d7c8e40485efdbf2d1e31c9671a46071131f1070c352a29dc0862dc546860d63eb0b7b43939cc70de00d2d9aae80164dd957e0a18026d5239c4bef86f815fc613e1056b340aceef6901e4d2e7a9f9ae40282f8c329ec612034bc4bd7d0c0baf81097e901adfd803c1fd2bb592e971ff3af6952e6d37b48ec9870c6672b9f7546c3f390a556d2a3e9dd070ce3cd0a080c23ce0c9719362b74137313700c6cd618b65dde064155588c477596a2455c851396e206e42a725c7c56afb154ad0522fa1eda5dbcb667382e1e320e37498075f1e67697eea1c190f4b0822109ee10e52804227aac6e801f7371ecbab047e302720ee388613db134c3b90ed45dee6a5ee6718e3b7e92c7a7c75aaded3e6c1608dcba603b876daf3fb061779396a24b26244e62b35a8909c993388a1f7615ff82cfda7968413add59cbd50c61e134e933a76b271bb2ce4fef9e4be1d1a229528092e638ae9300f53ece7d2e8fab80167ddee2373429059cfe31465e08a57c73aa160c09db981e7edf757a2f1167a687db73de600844f437ecc0bde1f268d1f48d0b36c5c3d852408ba6a7388feedb43bbf536a2a2e221233f1de63610a268facbed21b0683ae8b6116237e99c25a46ac5a73712169fde2be92b8ea9be82487efa77c85cd6fd6c77716681613bc83d8b31ecc05b075d66b568bacb0d39f0d65b6ec8df629d876cb9f1596ec8addc30e5c366852ff7879972a3029ad4a48f4fbf21e553b3239c67dce7ed0d6240f41664252d9a9189ae69d1ecd316868d4c9038797ed2a593693aeb34a97db663a5e972349d39cfe567662d8ed8358eeb30ae3bedfe284215df03e3fd3833dd65c9c4a3e9336af1d3c352126c24c2e4b111c186cc62d956d26137017d1c25e1e65f3e2e4982ce739fae32194205cf5e8f23a11dfc036b92540ff14043473a8f262ef4e4bb164dab8456eaafbd20399a3ea3d8be91251ecd922566c5d1f43923eba71592f0ccfad6b6637b65f3d327d6793e72e8bc0770de790fe0bc5972d4c44fe7ee0d3207a9440769e22147d337306cc82c66296952fb4462081130f918450d24e6abf79dae4d8f71ba6c068672f5d3a7cb6260d8ad9fd3676b4ad1a4b06b7eb262cc047bd05e1f081a03000e5a5cd8e81cb3d4c2ca523d45309cc01736aca70f42339d5396a3b215d5a4e670fe44d5225a9435418115756a11d753f57a9215d5a4d8310b24e97472312773c2850d410e881fc1506d9124a39778b1cac9709a5441efe7ac49e6e4d9591fdd39aed6222de26a9382d951957c5db1cfe8129b6878f6aa24b56a5258554d14e95234558ea22c0c8267949e186718ac45b48833b09e5850554d62af489ae40f5230ac130cb39de77a8521acb4882519d66d4dc5cc254bf51447ec35f55c4fb5c55b1942a03e522184cdd7f0910a11e8bcc7cbd1fb31bf3deb7a466e4f8c33611032d82149e4ed5a44dd362992a6cb88d17a2588c3666008037b3c7d1e4dc11ebc61c0c5580f57ebbf16d6b3972c653a72d4366bc952f6ca5adfd9ebb16f97597c6c8d71fa2a70d9162c4805b44392c42e4007808b1cbb38c4724627086c748e228eb1e5fcc2460ff939c6e86982cb61b9d6151ab8193b24494b1f922482b818d34ddbe36cacb947a06b3f4fb6141e754bc9fdf27d294f9e2bae3dc684f2e54d8ad2d52266e98a1ed6781e81ae8d34fa88cf7186a59452c6528c9123478ef2c5f2095d9b1211454d89d0e273ad31c8787a254ec6556ddbb4b9756bda29ead070a03d24c9cc926cd543d66c52b50776cd66891544309b90fa1b1f6f8a703dd77d27d8f978848f372750bd11727e868f4b8cb0faf674a8a9e165a21e12996ec8916946b121bfb8af809a4dd09e509f9b07ea40b8b04c9f472f870fe4214738c0b08e630914d73c815df2a282f6849945d7cd2f3a9d9519cf9c9712052b46d1c2a296a39385b51fea5083211d5a1cc67978711650088bbf380c2824c90e2cfef2e24260bc050cb547538b47539d2c576bddd022e92f370739b2d22716e28d56b3b9a48b235cf1450eaf175cb278cf96979b176660a109d31ccb65d374b134e188b9a344cd13d36503fab51128d81af250bb8141cbc966a8b1de412d256980515618c028edfd3c74a9c3dc1567b92aaea566dc680add6882b9d164b251bdb63271fc9225f9e29db65131b70d77af5ad5aab6316263d3465aa5498f26cbb8b5d44c49d08ac77c14011e15cb6198c7f3d1aa8ae5b62ec3e854b176dbb64de5b35badb5c69bcf67ed0ddba6b29b7b3c46911c79377a1fb0ba74cf9bf7e6b6a5aba0f36806f40d93bb91490a92f8caa81b18d0a5688a26ef4653968d02506badd289f5d7d8bfcff9a3f9d4d7f7b9a73fe7d1f5254bfc62569c91fc04888a25320ad6df3fbd044a149f7b9c5f96447224bd565b3f602c5940fbaeaddff77d3b1d68d2f7398fb64dfa40c91e8472a1ce73c4731ecd1fef0f0c7d40fe8898dd53bdab6b37e453ed3c7de557e99ed0c7dcf7f1546dfbbeeffb6afd7c1c7f36ad7a4422c681d2d18a8d7b1a5a2499c53b545efa7644c492254ea536236c287a19e3c7ac2629b979e9ec8ad2a5d18aa568525ca264f5af97925b9cd3a8254ab6f890755e4b9608c2870ce565c8375c5f4d0aa3eb779a14c69daf512c50c5f8283cb340167506c320f4bb219f5ee4241469de8f76cd99c5621618f2e71f8fb787fc1fffc09007bc21bec73ffe797b341e300c42fff3f9aee6adb5e61df19c862e79de65253d1235a982348061c3b86381d801598200152c273e8cae2c8a7c187398fb2e4d7d9c47d354933e974eeb6b092f9d5951c7c7a5f30f3c97ce50f0013ccc3397ce4f441d1edf6e9ea9f03c6422741e7212a687cc64ce217c98555ff1bd3bc4f394effbdcf33cc5f3ba69daf37ddff77d9f7f1ebd0f68af7cd26d5acd303a39c5295e65ddea630c41f404c10c82b30c10e1624c18b29125367113427cf7a1e8b9d8655d4491e43257751e9d7501c64b979f17c7b47a77d71b253b00e7a19d357224dd5690dd01d978a6d7437e55719d5262141bc2b631d8034b6fdbb6da9ef7c99d396be494b3468e36975758dfb66ddb368c0bfba2928c797f37f4a4a28e493ff613ceb09f578b9af3e81f305e4daa59966599d4d92e3f16051b1f7b623d0f11b1aa9ae4399d9a245fed2122922418d1a3f1388f961e8dc7b9cba67aab6f1b3604cbce436e5b85419c89419c91419c2972ab919a7a1b206a762fc03bbf813d8041e4bb49550551d43b59c65e0e379ae41376db36dfb6cdeec8129bda6b2aeae88a7a517533f871a9bad39cdbf40df59b576b7f6b00ff06869cc9cc7a4e1ee7a8e771ee46d35cc2db1613b278ed76cf456fdbb68b69ad039bb27a02c36cc75304fbea9d1e5a344d8f9dde1fe6e775db3cff3c87826d0f3f4fb09fa78ba6184b9e14c491e71449358928aaaaae9e14c4d2670b9e932c7d5e3287dd1c1b82ddc0eed422365555129124a34836f88068eafc72dd651377ab97fed9022b9290bc74d92911bb23a2082547b2ef0ed5394e3e61bbbbbbdbd522e9e9505db70af1509d73aeb3913bf2016cea5272d41e7628573bd80d7e5c9b872faaedf32282e661653284975e91784e9f249290e01d9e5355f18eaea94b1e8a979589972820bcf41ac58b8a559b08ab125f59551567ee914a29a594997dce0ec53b24947e51f10ef9e217d5672ecf8977643b9c7121ce4049198288974ea1bc74f91241ca9097cef2f5d23357f8e9c24bff8cf1d23bdbe11d9f289c7121eaf86821cec8cf16a26b2945bc4c19c14bff44e11d9e53b4215dfa470b5cf298208ea4eff018116dac80e4b9410a0ade13831412bc043d2bf890f1d23f515ac458b0ed0c7e5e2d92ddf7b3f379f527ca67a7490dca495f6048c1cfcee765fff3fa44e952d7d4d4d4acc0248f1047f1793061087194f2f4254b9e21e248ba0a60405f1e90be3c272cd806fb06844d5cf4989bd876be99730c3621ea5879e99f9da843933b7224433b542038af1e8489e36e8807ce3befc079ca76e448ce9a2b6cf879851daa0836ec769e7a876ad2e672c2f0eddafd21641008a683e46713cb850dabeaf39a55c536d84336b4061d703126dc68c63d3b2e620822ab6e82cb611909a718d59271c660020e160d321882b015160f639ce38c3de77258958ecb61637d0e894d71954e73e9ade3a5b84a0b3be76d5bfc6755a8c79821493aff9a58f048a58d6ad44e0776a64c516654a3627f3afb791e85644591d46e34e5b03dea77cee5c052e7b6cbfde77e177b7be316df5df9957e3c0a8e0a37c131378babe0b0b8ca4a6b5ac56a6d6f6fb087cce7af64debe9239df1f2e9ec1c0b478765d32cf668b4be63920c5433870dee22d600f3183f1f695157681f9a1f31f82d4b7fe4310fb9f0701bde7dc0db578fc946c85c555405eb19ac4028659c6ab8ccbb82ccb38ee328b57dc04af78c54d308b9b73b55ac9960bea195cb16065ab45222984a56c8a38384aec953ef8419c01429c91fe91c2c7081500548e17e56202ace73c845b5d579d4bc28692f5b954d2a521247013c885f8fcc57b5e11679a90c03b07f31717f2e2a14cd5974e6ce71f3b87b990178f6bcec38ba6611688ae2b19ec813d4a617f58b7be5dea3d81e78fd31bc2c1d93a17bd1f937a96b094869bfbc06f6fdcc298cfa654d223e93c5aebe6e5acf3afa3f485838333b7ee868166dd79114334a805f6043f8297110bcf4795457c1f288b5c19eb673ee24fa924092b51a7161dd19c254b1a58595857d75c88c76f8eb079047cbc510d79cd6b4807cdabf3d0d535c71c04623369600e72243de2b826a54d93664cd34080c9cc2c53eda12cd22239af0581ac458140d64a9b54938ac8944c35898b48955c3112965d9e244a9e244aa2e44916214ff2248b90a85ae5e9a53cf12bfb32974a48020cc60181401500b9a2681d63f5f3764621305d76f74f56e37047d89051afd7ebfe681580558e15a3186535d473291e8e2c45538ecebb1a67490e153a2fad70a150445e1995a957d4b15a81cf9e51ceb3cec3986ffa79279f804246713bc98a4cf04ab2a40f22cb87921575b0bc74ed82b260adf05246e18510b19063f08ece434946944c78e94c6452fbde9fd758d2fc0343f609e67413c960e780dd44d221b03549df6ea35ad4a946d154a39a48a31ad5a4d98dc26922389dea22381bcb1b595a31b12628592ba6b057dd8a893a62a957a2efcba838235dfb8cde39af7ca944b25ad4a826c29f647db751b2f57ddf952dc9924a244bb29a34fbdbb64ea15e2f7ea5644a8b359329999225f984644996646517db810d9be42f3de3018e929b26c5256254e143ed514ad1a410952eabe01d9d4ba79787025a243db6c430c287b17503035a244f3ba8a883ddde8e7d6a9a0cc36ace924ae48dca5a21a594deede75a84781c73212fce853aee3216f88b3803c6cae5282c200fe457f5171782b9c785547f7150c75e48078f63cec38b8774c0dce33c60ee015f78a8fe0202b1993ce00d39920e8a1e7b1297500341fc7417e7e95dc86b00cbbe2e2e6eef777f98ffe2d1b8682e957449b2dcfab14b55bcf47abbe51ed1b0cb72ebafdcb8640c96d7797c1c236c8aab808cd3a2941bb2d31c1c9c9c1c9c2638384d72388e717ab5c9948de1bef209094577651452090c9285028f6b2ea43ae6423cae85618524d941738f0bc1bcba10cd3d3478c0bc3a0f9a7baa63ce430579f080dd9223b999a229097bb2566bd93def66ef5647ace7b964c952d76aedc7d667377bf61a40e3bd986ede394691cfaef6ecf5e0e91c7b1f1fdb8fcd3330f4017f58a7eec33af5203e7a3dac533026ce4ce70f88c873cf2de79fc4e9285107e71e6f270dc503d65a31500339ef36ab2495f48c19922559ddaa49dd77136dbae940c9e28cb0ec8c6a914cc9229ca294868c9229ce707068e3504e318a89308a514c84535d276d5852896c4929707070987124d73ab2244fbd1347d2e5a977706e7470c487f29445920f7b67255728d40a955deee98d4bc4e0c2cf9b799cb0b2c4ee388cc3388cc3ab8c57bc7ae9dc16a365208c699a031b4db5a3c9880d252b55abb5384dba8479478192bddac90636603700e215f67de3167f93c425638ce0d9a3611628035bb2a4120e07967ad82b545b8183d338d21b25b52a63b8edd5416820e020a6c62710838b31610d1b97699ec9a7e1fd76b55bb1ba45cda19ec34e9689222346b7e290b4a86fb7ea5401a68ea8c4cd92864d0e3b4533820000042314002028100c0784c2219954a829a5fc14800b889e4a74581e49931c874110420619431400c0801920001888b60dd2bdc7c0ca63fbb7082cae1cc64fc1c112fa5803b89d34934ebab626c663edb731291bc4c5b9bcacc47473f53aa5a842403280897ed9fb27bb7999f01cc172118778f06afb5a46695bfafa5bba8e07d0a7b9cce5b8f0aa5aa049b7b874fae50b19727be53c784477f8e152bdf842d6e633f8bf77795cd8c1cff32984ec70daa4bbf96b901f16600f24302617513ab4ddae99770eb062c8294952623ab36d7904fa59cea775a052958fd6bdcca90ef8cd1e2d04323c17bf0649a10aae2472d4172d483688a3cea681bd8c77bcaadd71c796462a4e6c68372a3cc905cae5f101bf20dfb282e88bc2d79e6d058e8bd5d79e12d878b500abd8ce754a0ae43d390cfff939fa0ebfddf92e7ad732a6614c75fe2a39a96214ca66acaa9e9f8952dcc867cb603a120cfc8b527a66934d9b9eb78ddbcaa8ab37dde7425cb6bca0c494b861d219a49b9db003c9ab154828760044a12e2a227ebe7e284ed3d7c6a9d4683f2d480577b9d3d22e1051b76ff5d5e1388999a0694b3179b694dc089472533f6c48d80bc1279bd6bfbe9a642abf7c0548add364a0a0409df8ac19ec036ec0cdabad967bd191da211e75a40ccdf8488e9a34d6616b9e87e56a183a19bb04f5e2c11115383133c42df22f0f96c053900d6248feb9808c467f090844673ddd857fb4c2106a6a0733edcfd40d996b416bd9b27998c70a60f8b12bcf2b56a72548ee2393a5da3645e295039c00d7269e0c4efeb61aa14de76271f52b01e113eb8ef5269e2612307b34e606ba1846c35c00dc175cbcff4dc4010797f094a51d3511aef5ae08787d28e615b445b4f37bcdd5e7f3b0800535292ea300aad08fba52c94a90aa7e20860de6860e5095bea6a1a23b117bd627ae9a4e6f4d759911838f86a0099530715f5c3767b0be5a22c028c538a3f952ce3406ab64c0ec2b3dc6d4d873f48fb24f1f907f920e4fc90477a237b6275a997e61b4cd84045cde333cd053d269d90871db92802e13d0a426b1fff43f20347d46bc7cb0788a6b99c0f80827bd9ed75af9eb6abb2876487144dc8bb96bdf3b047f4907eea31ce8e0551d4178940f682c1668c116c2cdc6ccfd67b586c211b1123c8f882aeacb1b9457ca9f08d1b9efeeeebbf47050edc0cb9f257a80b07020d6910684f0923c60db3e102f7740114a5a3e02f4907f904556837c7a9aa588858b54cd7c1da9ec737b3f15b67446dede0c84cc65277a8ab6a8e70f8aa8bd00bf01de7e4ab665fbedf5d30eff1e83338cd144dc154886626cd48d2ccf98bc63682c963928eb79565b24bee1f721c518ae8386a3ce7d65773047750779fb7a74207a9688d88b30571a7596f3e2c59686376a8a577aed6c4e2a2d8eecd74fb44f6a648f9b8103a62d0c5079208038810d73a29341f8d70196674f8c6038e32ef1880db03552a06c5cd980bee60638ab4a791600dac8489d8d22ac4359acf3e7676c118a40cd05e04beb8e59e41c65a2eb9ba1a46f5e231db3e9981725476aec91afd1ef2ecf794383ed81dce189800e5a37f77d20c673fa3b2d718d98b5df39e1ebdb582057810c2158aaa788772841b61b44ea3dae498c7a2feadc166975323a6c08f20e89d7c80674c3745e1bd692981afa7f1582245b056d5e6f4eb2b7c8158d05e23f963311e1a4b4b7126739ba557898b493d4618c632ccdced08e5925ae131dbeddd293f9ae13b5d5fec7d194228b70f051fe154a322730ea478af6ff0a1f8a387304756031476878578d46cecca14ade39c553d12872701b8434d9a161155259302e06840b08be1676b2ef160494cc170c3e8dcb9fe99216e3e86b98e500824b207ee171d609b1a325ae4d855ce73107caa33ddd4866d6630aa03ad8ecbdfaee6e8e125bc9398246e715b433d76bfd25bed662c06683c32cbd28cb382ea1abb86c9557f598e03db672244e251ab4d1f87ae99622d36b190d1b420a74f3d335ded72000e47766a12f549006327fda9e255d665a05c4be8cd6cc1c81725670cd460880682f1942de020d261e17143e2e1d6649470ab1918fba7023de98b5fdf35388226488c00f9ba702760474eee0c15e90f9d4df8d2184605ac42554ba73c40d4752559edd0fa10d090e06cbb2f5ba24758373f2788304a2fde350a1bccdcbfa2896748f95759eec40b5c0e7760a80b6d51788bbb48e859e124f0a67e86b150b0d022412f70bc30f48f042c6e1568095eab02f3d5a4250483582999a0e734843e1cc86a9e405407a555a00362136fd2f48d0a1d77ab1fbddf5e767424f0611a39420c532ea230c9206f7d8e5a593cb4cbe1c8e95c7c5fd97846e1a9b70babab394b1f183360b76dbbb24c9705c876565cb818bddd44ad6dc3f402f81803330752a532f835b1bbd18e34b60b0118e839f8e90f44a25bc09483a350d1b965d749cc5af18ecae5040c395ca620146300689e01052cbcf55212e6fc0330c624cde708688009d3020de1cbfe0dcd4ac45a46e40383f50c19c19debef600dcb1283435c0c93e7b4c7e9ad41fa629a4271c09a8b4ea3fd9c5185ce3d9db6efcaa9c6048075a4ed393e052c4189a6e6026a8117b44a0ecf54bc9738b9839827e0abdb3349b8c39e2b986aa44519c1ef781f9e5615b673c112234bc766f244d51a939da8141da08c9ea8da1d158230a8f318e5c682273f6ba394d30482af23273f143f6740fc5884cccbfe9fb01c444131495c2bf6d187936f638a392127bcf6b68f28419e1d093a1afb0c9fc518121c4c703ec961e2235e396bab728f9746ea9d20c31f660a83d36c5a79b0e27b5820ec8831530167683f15ec608a7a6aa9c00ecb882470d8ec909970672688faae8ec706b2ad0564b3b4620487f525565f9320cd953dc0169296c10c5560c63cc748cd0a8b0e3a7cefcccf73214a69cc08c3f73213f6ced79232dda244d6081b379eb66d421e9102331441547d8d58246eb7eb96e46587507458f32fb56a97321a458d3ce88e0b279915439221ba5aa51d4da9470d077ce0058d1ce4490443f900697d7228867f31d135cc486f46c36eabe5c6e8283b6253c451034e9b99030d8e627990e6959dc38631d79dcac3141048a57113eae80227ce3cd527b582527db238656c6c07f151fb93b3ef2f606b6a777efb2a4263d89222c2436d58ae942a98165187b442ab09aa37d4fb090013e3aa60fe8f0705ceb829ccb1ad6e48dea3120e11ba2b5e8a32d50da800f33919907312093404e56d387f597dc62556f70872bdf712c9aa1bdc02882cac679f4d524b1061a07e892567b71a8d0d91eb7627e9cbb6bb9b2568bf192b09021ab2e3c0ece90a2e242e40fd2df5a4d4a91326e6a8686388b65d5492d4412cc634c6ab9eb565828dc7c8d32e76749c4c1fbc8858d3847c50d2ce27705ea566b41c485164ad91cb3d4c74327b4fe2a817dcd51407e8be23b11959f9aff06eb73033a7ee1824152e8e3670552eec0085bacb7fc53673867959090a73bee684c5ee826dea9eff0550ae141db71bc522a9a53ade3a6762b69d1513ee9a3c89cc28285687b9b28404cace27a29381127b5d94c3a2341e5012f1469db9e89aa4e588ec51ce3dfceb590396d09f02a47faea91dd72a4c49d7c701e28430eab5febc1fbaf78e3e34e870d21f10c6b8789e3401e22f82ae4a792e27e47f29cc9c45113b3772dfef7ff7bb4553de622345ca1d7c68d66ac899d2c52ca4d765a8a186f98950d66cc98ce0d74a3a2c88f291c78d525357994417132127892b21215f2bdaa14d7a3f3fd8cd51693e6d1c489f09aeed1a32f2d3434377a7c692133bf726657d0786c588ee9cf594bd781c0a3434c782830e1b5f871a235853e1f53bc362124bf7356cd0e3d2f26b01ac60f031c12a260ade4e751f1608bdceed3bedb1a435a7ba0ffd95e58c1157257a5ec31c3d4ac656456483157a1e59a0a9c06c49fb282d6e69e684207700d02baf51b428f3bc1cdf1ea47fb35f472969bebd0a98b7992ee0fac2b02eeeb11f691e97f09c6fdc283f61b46d02251f5b50885c9b1f7d0ada0478a77a7b3bc6f8beaea38d2bef17ee39eec214d505a73f7538bc2f5f387688d837e0d5e6fec127e7bf1b22c5ad32fb82c4e5c25fb08af1c81d14b17f8e67bb1af05fa28ff4b930956f482424084cb0af76619ad8274a7047d2d842a737366b3cd0f6aff3e3c0f32f8bda7acf867b0ab63416b45d7528882ee13627dc794372ca1c40807556451f95039172cc308d3aa187237d7d8397a972bf58efc572a10bc2b5ad402f394b434c09f17e93bef5c95100da5dcf38ab920934897b50cc309e39c6acf44bb2e1471870852d0937fd4b7da6c5e500136e438aba157b01936d1c2a22f2174039fb851e86c9836952d3a568c8ca3bb3cb3868719cbd120680af37eae75dc97686610cbf9ae26dbe8911e30028b6c161085c680c92bc1e466f18d7300f12d6c1049750b2c40c043ef5988aca1aac33f49cd9ee3cd166728d75d94c5198f8908dd697dd4476f6022cfc5645bd8563283e2f7fa4fb3104ff3a0f8db523d5d427023c9a98d05153fb9aae447bae151b89c1f96e0307b17fac81b04718628e00c62414e582f89e5599c72afd2ab04beacd902d7d9313783367bb9359598062dbc4cf413c3172f1dd23f2218a8567bba4c0e759d6608bd9adb5e53dc2859b12a873c5dcf2113be69bc9a70cc7a84ad733b8e254a9201a6e48d0cd370446f5eac1da9d0288b92f043219ed0b3be025db393109f4a9ce6869d28c0de621b89e0206df7182d06bfc7184bc990c204a957384f480c63fd3bde32d3c41b4abcbdb1f78ff2f086d4ef0d0a6c7ab7657703b9a19f0079ac32b54190692966ba0d7b0432522acce19c8e9599fbe1382b5ea5750f6a0998e5ae58b3e28005221cabe8e7af46d5989465e7b293bc7c673a06e0240631612a56cbe40d0b03355e53904abee424efb4c8bf899eef5bd9c0b3cba10a8b899ea37334b109be0b901b7cfc04b2627a697fdec2a774f917a5c4c5d2b52e4ae2f7e99b59cc6a2f9edd1a1ba13209ea1fa39872196ccc0cc042e6bb1da99150628440866359758a816414cb008a25dd27a65d5893d789db2c467a7aa9b261f645636e054b5937345ae476a6c29717c0f62281688fd71d238ec8297ddb0b6defffa91df7d82b4c73397f34299cb721dd2610ea9e723889dfa2486f441d5682f5ee267287ac54c4c48b35cefacf610369b7647f5744a1457d2f8a5c6611b9f3a3a31a61c2953a802a8c40a7ca8899ff28926e66174d9bf989f7ed227f37bfd996de63e8ed1762d31796190d084ac43bb4042c1ecfc9cd2912972584093987316368c625a141e8fce3a87b7be819efb6281fe5534a24d90423beb900ed875d091b3044dc9d77299af64e4f3ce6f88d37ee515b64ce9ab0091465bc2c1d7404cecb0cc6284ff645311a72573ad6ca26bfffb686f8100f9d79bd7c4b19ce721c8ad164b3753a153934b744df504185ff8688a38afaab037f9753c6ffcafbb18f7d538c6546da1a0759336939f2d86fa1b8f6ca65e928a0d8d4619675658af16d05686a99b6353f7b10b3e59799eb1c06d94f73701eed1b2bfb6233a3b28112c1f5e48300735972dc68927cb01665b7b40fc720cd0682c409b6f65bffee9da8cde7d988c256508cdb06809570c5fbdf66b752aa0d1cc9d563a647961a484bb141d02a7fafc43f4f7839b546b9c10e6ca9268c8c8080607610f96983815f73f1c0c448e112b87f93efebefd9fb65bc94bd46e7e06e0b4291fda90b941bc19f133b3b655ca58493a313d34ac3fd1780491fce246ae2dd503b446b987f5a52531c9057c9fed294ac5a4ccc7ac80219bf379dd738b345a800743f28829b5bc1ed18cb76947525a77463deb146027c7d9d63d5d6cfa42d17f21b512a477a30060676328cdaa76cb3d7e9c7ccacac496ea48c485c83f7c4d64847d4c4864f924aa58014e2c9e15f2e3b792987877e1f833f85467bde6ab0ecf632c6dbd6568c4afd70db9a9c68295bd829fbfc3d7aabf0cf268c80b7b6bcea3c3ead9f448dfcf848c307e4ec33a8f91cc44864e366d9474957a8f40ff3165db7b90099fe73965bd93b496f2f1ed53c275eaeb24e355540ddb3faabf1287b86afbe642e22ff67136fb9984ba6454dc68e8544b9722ed4565486fae7aaec5d92b1a7e77140e70bb08c587337ee8ce4bca72307be9a9d8febba1f628ca484d7a520cb4fe33e781a3291fa3d0eb3c92e88a6862ac1c6b299f404779457066d5e447b9dd1f9fc868d385520399aa112642b5e430e141f4919a470d24a60a8e1322cb8f797a597c2399045602e32ed7874f00f9748d69dfe4ba736536ac5f367760a5084e549af18068636d08ca990dc1dc9da753bc3736425cebc72819fe48eb731e8317f8c9a40f033c451b55e6f0764c1efa2771c7a89e2e362e663ce5cd0bb30e69b622a3612837901ad97b4f0a62c95017df0bf0a850c774a325d433a77ecaaaad317d6a5402f2d2f6eea6a32192b651b81f4742105294cdac246dce154e3a9abe3d9e48a76ab8be602485c5e1236c6c6a97ef6b50636d6ec6ac611254eac31b4c73e0f8fd0ab5c557e869f67e1fc2f4b85b0cef8b602799cb69916d77bb4159dbc61172f9a061d77440a9885bf50af8470392323b605199cbc6edbd375d20656d992035a4129e601ea144e4fd4880f798709535eb5ce08e4868902d6d98172e4aac62fe050cf6cc5c457b1ad708c6023c13a41902a40c0439553f8989c53fe9592c041e1d7a50389171807498582a43e53b0df214bde1f05c4becc1af9a9aada93445aef14604a0c0bda80d41944196704ea92d82661c8b996103ad831c0bd915191e015236a44939948dea3dfd37881536b34827639470ea7b7dc9da7b4a5487a0faf5b931b65df4210ae1f21a0ab83d1d92f5cb61745267abcfe6c5f5aea1b9a37f0f9cd4781ea89cd60f5696ba4a49e39f9f217c597379a891a0c3c55b0f26a9faec62ca4b5d1d5ad7376c1daa646b5c080b843199ae7bd2fde063a428308b91b8d9688e5cbbecb6e9ab17ccdd2d79de2e35663987724c942175760e88e3c931248045daebf7834aa31c860baaa12841e3603ae2f9a365117fe8ab41d3447e463d0583002bfbea4c3f99dc210180d30fcd95d69ae71d6d441bccc2ad34cdfa08a2449a2b8348891213d1b2978f51ea7eef4c3ec132478f93ae7101a810b18e54da6f78edf6e0d7bb066171a23430d87c11c05d87f1d1e0896409b5e9e74434b4812e58f5646f16405cb8583ee8b4fa8aa8200f557e2b29831aeba78a61a48015441110539f6eff33c84918ebb13d48959b522e28d19768b2af1f64707408a19de6b1217213920c8c16b3bc9e18acf92613faea31e070a3ce2a15da80490091876429ad6676eec98d6200f597b4222f2364f3864efb3a61629aed66acab9b1f113e867a86a6ad59c5d10eace3289fd5d092df54ea1591c0420371fb7bdd3db54a295575276ac31a79f25ca7b5b03955d5ca55a1b95e3b5725fbff0da2749ca59d9568f1b03d08aed7898a77cb9d060af21bff5ba7ee527b6f30ceb7d1bf067d9a80ae2fd18e013d80cbd223078418536e2caa28af412cfd758740c680d2e64acbd7282deb3661aa8a5fcacebcfa1724ce472db52e4c22c9061709d98355507858a0e94c0ae36be4ea945d21a98dfb35e09785199d155dd011fda6a53262376a4c65c8b5ff07873f67fe641533950300a4d9395fa9c4cab7bf5318b29bdabd117f4488328388ec6bb7e48258d7e22dbc2139bddcb2cf05586d3e9a93225286aaa3c59189e931b38cb635ab8a36c1ad89ac810d413c685da871e30d483e781c9163c36d8e19b9ca0bc1da14b7520c6f4020455feee3aa0bd35a5b181a776cc81dec233c1ec068dc13cc0d21a0b31051e9ab73d8c5f7dd5918ff0c39163f7e1e256c731b42473f516e74bfbca47ea0299c8c67b045d130440e90e34fd33968627a67c503a55c287f48e7a4f1359df3d5989df73c2c1ad10de5140a310cefe42d45c9823f7b7684477d8401e650b96a8db670685d38977c86c0a3a32c029de874a536105f28ecfb5e6d1a19a88cf3a1f7d992d07729c81b08f4fa6db95331df04b965483f3c54cbe4158ba7dbaad62ce4a1af4bb2e8971c38dff948c18d3abaf54b49b46c3042ede60a51d5f8aef3879e1a886bb382a48665ceb3f35018278b834c608b3185cb4fa76c3468bcd00f75b0b7aca5e588681c68393520e2c85534d1310a3d262c3293777c6ebb836e9e508a37f7acea57b3de41029fa97b764508854eea910f66fdd595482aa1cd0156e05ce135dd56f68511cb03f5684057e5419894a67a89c2e626aac46fa1d49c9fb5618149a36acd5bba2a2c570207c331d2a9bc9153dd97a59d087c431ba33288a864c6ed2756e14d316e8610f9d56db80185f858d2f2790be89d0da44d82556d0bd7597d5a0c14d5cdb6df57dc46afb253d66e024a46b7c4393e237b7a77ac143bb79881db0c8fdfd38f09806bb581c7c8e86759f5347eb4e8372159b74af1ad87f0828973e9034a3aef5973275a64a896383e0abfde79200210978c13ee6b2afefc3c64d1ee1956526982090db783895de2ea79f30d677c567a6098f8a0240418c27e2d84ce42faa1209996524efc1826f36afb4ee31feab10b31d7e96410f9244c85391b289529bee098b8027f5c5c9a7e027650c6abca970a56ceeeeed7b718320f41f972f93f454f1ac32e5c460dc16ab68c51252c45085326985c3621861ac05bdce76dc3a649c2e23e5858d6185c4b85351867e5c4995d64f9c0eaed78ead9073cecfc3d11c45e229040353545a5d2a61b0d30c39ed507a3394e80b4f0e119624c169b00985381d6b1172ad9297b9b244423dd656288c2da6c0763aa37085926b1b9af9220541a30b949cb6525302c5f3b0d56a088e0ba5c5cd5701212378253c79c7117054ae221b1b36de8dd881d89a44d49059500d2853832cfb1e6aec7b426e60afd01bcd1e09d4658cd835462d551b076ad6721a2148d48c3e14b987e330acb16c2a25c5febb6c374cee74935b5c27ec6f8ee037ce3ce5ec2530986335241097344f5f651db8e2cd957294f74a3d318ab6a09e412bbe3cfb8bf6ba9f5b41db8d42a041a3b3deaa9b7f78e0aa68108eed1d5123ee3f72709e95ca55834fdf0c44b6e8aa98989d10aa731ab10342d6eebc7c6321a8ebedee169be873c9167200d9456a6548ad3b2956141eb530b4ac2f1c4abc6de0a9534ab193ab390206653ed89ab64e0fa229deeed3151564ac1b263d08181426fc101ba740307dc27c5ec34e4c61331315e7c49d2ac1e823103f4ea484d86cef6127a475d2bdd4c4cb41f6c7cc1d4bfa6c311c992f8d2d51a7dc4866194093ea272cb26121cc1523b9bbcf6381b78770f968d8052db995ba6ad41e47f42651dbac03c6cb1dd3ebf4c055fbd9f3adaacb12664e65d07cbecb92de25ab88c48b53ad90355fcc770623ef4bb8a72aba4b9f73c8a104d877c643631f7133da0c332ddc963a1b41ce0e228d08d640db064a3013d132ea27790194ac70593651046eba9ed7acae49aa18bb07e387ef9330e4de713d22e7587570a02c7bfb37016ba79b982eabc6008a674410aefae64e96c37d86e12131e6ae148f307a44d4cf3875900d954016a9bac83a8ec4e5638f6453887c9fbc4aa53e527d6dfe25b98a6e1f6b313d3a8ba13a42fb762b4ac1145c1d9297651766da169547ed570b0f435b3854c9ed26da8c468e55dc60b0d9a7e38f90848521610c6f94b21d434fe2bbe8751c3501d3f66e5ffd7232ecfd537724d7f8f28a7e8641420ff6c912e594b4ba5316540a64b8a0d78a6204c85f9c6a16e909ed2e06001d1cca5364061ad3ad35935fa78493aff97563cac9008e42dda4e6657cce3c8089f74455ace83fcb696a74039d82f79289eefc4a4dabcd2860219863ac1e70f250e308e3a718788223a4b65b41e58060b0ed6f5040e3902936df8a127c929e74a05a783c39864c3f06fdd87956eee7070adadbb95fa7afe618773f21a2650ee89e774e5240f80834f778c6454e7a754fc7e6a65aa1517ff21ba8516c5757cda10ecbc0b3db19d009024d1c50cb6e703b62b3990ca3eea4f5002617e96f976dda4b5ff73273a4929c53a73892b6af489d27ea2db0c934dda3ca80d17fe183636f8e73ee1050fe1785e1bf37040355a3fd1900ad37cc13842b9e4cf4c1414ff61cd93a88b36e6065eba05e4900bf0f3570a4ee23f310962b35b63283cad32c1ef73b88b64d4cdcf6494e382c0b915ca2954f16dcf10424986d8286aff1c03bf24b2482e76b099de2cf2ecf2085c146bf5b3ac08fd8b4a2ee187573960f8d9c12fe468e23ae500c79ebfb178b4bc78f07e6534bf490f080ddf078ee82173355c0782732e67e844411128452181171f963f4684dd61fe13424ab9d6a75c1c4a3301c54be40bcf1defd372af141d1ab096072e9ab92a0a8ec8a9b6807727f9e7aa75497933c6ca081a66d999e8c1962e8329ecf7a2030f54cf0104ca8889999b5ab772a03f46862a2a98b7eac8643eaadbb14eaab75f0f962c6a5b468bcdbd466975e5f3a41dbeda30d42a6159058f072bf051c2a29028df0947d673b3e5c4398878a2ac429dc87490c9abca4a794c9bbb195bd44684b9fbee237ed2dfd971f704fdabccbe6c0c0545f83a515c0f05a7a617b9555279a2376630e0dd481b90b3c233523cbe9d669f42760f90893d7c1ef4908b0fcf57816c85193e83868368372552759b86f64c02579db32ea95796dd10f260d2c53a05c6b33474dc862f9d2d7e8c6accf4850e388e3bd804685bb2d5420f4edc8aaca10d8a64f27049c11ef0c04c9136195964319cf47e6e1fbc76c3a687e80a5332145d2219eb9a516c85248c08544e3a6540f84b83ab30e0e3025626ce9fb3b854a7e1cfe6c5c9be8d34018483d64a025aba410e3e31f4a5f98d864f13ebb0f8456ca613ae1b53cbc326e9b2fcb0236efe5ce79a52bfb16cdf06373871f3352348d15df8be8dd23aa8e8bcc245a1b19bf1638609d2a1f64651d5a1cbc1ee68a504c0d7770b1ba43eb018fbb00139b66ce2996782feeaa366ade084c72827ad02a659b30979a074aade010a7edd60fc2b45c6c74396d63b93618769e83711ac1ff69281d58c18449e31085858703c1f750ebc602d517acaf01c3af63add65c02a88b4924ab70a69383f1f71a10cd485bc088a188710900efbd2c85d47694693fccf214078269bfc6fea300c61bb49e759da177d737b10fd70d878a3d80b820b42ca860de5a01a0b61d1d034aeb41a5cdec899b69eebff562905a6b2a9cc0ccb61c2dd9a6acd798ec632052f27e8cc619914b4e4250bd490d0391c3b7d944754d3b500f341bc1d24545e22d1f59249829ad8b61e28ea48256062968e3c24709a9e66854603a187ac90a820fa8e3cafa582af4b147cb2a9dce2801a0e6f2b30ac499a460899b8b3d5d83ecb58d6112179dd8cadfa9b1df581f20062c5a8bca67dc0113a5f67d4a4e0d756664401e4e6768ef0d9014ef12dccee2b863c7e688ddd16cfe56e86e89d9ce6cd3abcf8fd267cfe6c962741fe6e5101b584eec248975920132893b3e362b06e6f8c84bb4df6f7ce4ac8a5c453b6ba36fefa9817632fb6d3cc10df46ca0ee883760c154494814d0d6a932a9e51862e410f1a5718b54795b335e668adb5b91d3e3025395520df697c08e3d5d094347d00c2973aa016ac386ceb8a34f2bac108718c4e15bed2228033875a919368257f3584fc4e1539871d25e6e36b905763570f3f398a1df4528d463262653720675487b505f5ed44ef7471ffa0b1a066399a6718ad64c5a3232c8ce631dab02c6fc27c58a8124791354b299120517c23cd9193a191a3e46e542ae5c7db8a1825a7d684c17be6b52162115a0d6ad85bc842676f0e9338c2b20279c23936c00b06b828337efd0a09401752f5e3eae289cabae7c16dd1351e279e06745cdc1812400bd2289931688a838794b3189db9890f131a132ad91ce5b0c3073b4da6132b08ac352c92624f73cb87e0ee08391c78a7e66cb6639f08d83a13ada73955af3d60f60fdc55d85e5630e66e4271635d0083fd2145d0f3a4abdfed48f64fab1ddf40f2e895a41274e992e8824ef33e8ca557942f9fcfe4d4f6fda246e2e0be7fec7f206d0cfb8d80a7edbd58b6b87a146e3a34b4756be4294d375659debf7b0742a2c9cfab70d29b8d9f60d73149244e984cd0270399b406e4fd46dd996ea8dbe9d70672b9dba96c576087ec925563ab492499891668a17f4c6601c10c3eee96b6577ca8ccf062c35cde711e6718748a9295399d97052d307909f216112d0065647bc0121fab842a5b3c85f9f77aee8118936523bd8481aab2710604e4edf4ecd89bf88d58fce24914138527c669b1868c11844654701c43942a8b64626b107b585a6055cc515a42565887bb1e7e0040ad43c29c3f60738eb2c1cde6429708568bb8118fad8c41e84d769e4d5891c4681b7549fa764f5c92c53d022675fae6b6ad65dc6d6c2998ae0c5812f328697f58a5313aa27ccfb2748df3a997e252d8daa6923c981f34158b754a8cc72c0a4b8b647a1bd7d632fce3b87fb48df02b61b84fbc7138066b8a45e1c04b8fd9479997e142110a9c56d67b0eb2cde9b03e6ece1f24cb8a86e9ba5f0de58370fc9ad68d089a7592219c78f2186873b601fa2254102e9431775dcee48946524214ab15793ba409d3935327cf266882eb60e1715684c8bb302afdc34265729a16f1297195f5ad3770b5d26b62b0dc67815982c1486f1ecbb2080e38d453741025c2d6e33d8ccfe4c6b550db93c3b7207c4428feb84f5c08654e33e3774dbe7402be84da28017e0ca1fa8ca79a1fca189cff239f522dc273274cd237b386d784670726f9c3534cd46b53e340e092df6b0a96ca6da249104265b434f3a7736ce2060884b26af1f45a62f69c4dd6799a4c84fe7e0a4628b9086f28b6e06db41a0f517014eb128c25f2b14c582cf899f843a551e28398a53a23c6c79c999bac5df188c230265da834afa44e7baa12d5d65a89f9b5e933f175cc99bcacbf50e30df5ff95ee0307f5391bd46d519d7cd9b74167e2585855411f3ea07a8b40bf84e0c7c6220784de84e8570b46c2a4e70a98f1a8c5845bdd848eb5380624dbac135a0ef4a2a8551618226cb327a370325b2c526bd5611d0b8dcf34a0b472223fe99004a222fcb23f224d3ad54e78a6fee6e88f3b18cf6c94b96d87423da39fbe33c8ad7fa5c2c9fdf0d637d75c67b890b46ab9c3d6b823d697023f2655add351e02189a1e88c6dc4c64880bf22d99cee88635a0e8a4b37befe32726ab0773b49d1845530223b111162e8d9ce0429c25093de9e664d46e8875a5144ac9f6594917df57de18832300813545d2ab56d66a4cfce9de9c7bbda794b303a95de0b52914ef0b175c4f87197c5579168a0ab86611e7948660a4345350e953f540239c2c3574a0ecedf33c70ba1c43ae40b82d04f0b4c0e0be1c5f903fa9034e4cda5f2b9dcd20e01501ab3b8ff6805964d47f55ce1babae5051e37bd4f34d40b013291a28377f0f4d34d9cda1d7060539cef733a19b1890c2eac2fa32da83b2e940f90506a259cfb16bd6ba25fa4fb1fecc19de567cf6f5c7b178103dcbc909fe20daf873d6f1e309d51854ec8478b33d1d55dc90847dc1279447a996cd4c294eb91e3d0c9fbfb4d4706406cc0ebe7ea614aa99edfd933de00d196677e8c4945d000fb426bb6129c28f2c3b4b9a673e806147c2a5cb852d31b66ac6aa5f0af9459f3fbc15b1e665e675815f9c141b45d63dc9566a85efe054b67dbc8a20d0915a3324915ded217848b7a09e45a9adb97689aad74da09aa6417e39851f35ac14afe842672c86966a2bd8c8de304c27a3c33fdd1fe3dfb39559f24ba0bb0ce35e475384e96359940e3f4d34d59198775f1d93978b5578ae03d66e4084661bf12a321808e9e300131ca5e90a5a1f7db251c3c917003a5dd81bf2c5d7cbddc7508f8bea0683d174c6f948105adf98b14866dea0f06cf9a7214375e5976ea2d5731e07f80036a48f57b84857ccfebc1788d82f19fff0321015aea99f4db9c5426ce2c6c1b44630ac27681593cf278e2d16b9f92c484fde970d25b3248b2a9530a9faf7cf51eab266ecaaa918c4142137e78889a2a3466f8c0e54544224e92e6cf8eecf7f6bb8cb8bfd4dd8b193520ea5b398200fceadadb94e6b41bff582aa33ce25b251edec62d8d28c6b9d88091132822a51314ab9fccbf421df874cdc73d5ceca303a6c20c1cd6c175918001767656f9ac1e03e4b4e305906a82201183d7cafd1fa2fb288abafdd641f3de594b9eb349dbfc5a8dec444bc3be1e3bf2528bc093b9fad9c761870e96f7da82a3273f8231e58693ff18b0c5c4af011bf692746c8efdb7a2a6cba42345d1cfcd37bd3e5a2ecaf538093affe2cb8cb854da0d60dc2d8b8bd6533baa02d8f5849a085f2b02d324e10a0bd7adec21aef4d82b958f15bb46e2f798c31160fd933cc067631312adcb5d4fc75e1cf60d2254080298a052118813f7aa6c34354ba035a5afaf97d1ffc0cff627cb6a051160ee8d186df47cc0e7d6bc76c25d93ac7d26b86e983b60ae432c885047ed2d513ac9d6a39d3fa54f64007ab81bcc34a56c6633f6c33acfb7d38a895639ae373f705c734e9597a5deb16970b989534452770a54a06001442f532c3e5b5664afc9fbf41e12b67b4bcb2a628693579cb3df4ce055ad611884b8a2e3825e875485202e2b1380d25c427f296a8ebc25e701fe6e5fab82ea2609ed169c614890fe722266204a5bf29d2491a7969a6aa261104756af620cf3dd100cdbca6ae1878b76e853984cb8d4dc2c71a20cb4c9c63d7893fffd6b0e9d21b8454fb89c1d8c9e0ff9eda2ab2dcd281feea370a01e4c53f54ec980fd37eec616cce963982014d15cb223d1740af97644aa2c0d9798daafa819324e2540461c660d66fad32fbeb69e85c6d416ced559850d66db526b72d488665466569d9cd01b110d7310201925c09ac889a35e8e20fc06453175a6b6a19f130a08bdda21575b486a73b206528e7664b6a1d15ac4c90780d98918a9f20222f83ec8ebab30b3fbf95b24c439b8092f171872b6ba7d18cd216ecc458319c41d1b7020d7bda984e257378d3a2d05ea84ec3b40e04ef2c990dcfd192d7dbe8c73404025b427be3a46495201bc62be2ea6f36a2a28e91f260ab775f81a9826cb4f50a696b32f4b7e11cc4b1e20106772c7fee19fa5c1005c2e8e3c5b9cac101773e5992d910b83c0a02f6bb7c3555482b0c4313d50dbb9e4004a6a8caf008ac06145aeb18b1cc83646216acea0694c81e48b08a75b91bb6b1b3dc75d47304487aacacc1caf087a5546d8b11e9e7641d0e7455d88de0001b9e1fbd72051e6dec6b0138540b25610b3c462b2987de7521d1a3e5094e3aea20c6ff347b3500400389678858620b2f671fc856b2513cd4a2326333e5dda00408f639480fbc29725a33e0304ae29a9b9b1114f60943c73632868b0fdc5c625296c74c66b3b67e6f44c99169d1dca8253dc252bb5fe28e9b08c66178a03311ef5bd2ab1efbf63f700916699f2658939c4b80aebc93e7e4f8ad17b69e04c3d4701d65d543e5e0980683da37f29c6e4d0651e7fc4b13114ad6f6a03891b6816cb882b5212d4f2c46113b9b72741c3787e1ae211390d31f0a1c15fa04b6d2dfd3dafef38331dbcf367384174c333da9d810026e7e354c8847da19f1d5c61456db57dda6a6be50e490a32a3aec945d5423fac872688485a8344bbb59df45ccc51f7c01a154c1c39d4f48f5b7d900d24bccaf6eb34fc0efc5f5778787dcd8f0158a6195e179630e280d9e1f69d88a1b8d48025258762e6761aa6bd20a12d3d0c1cf38c5038b05dc137b85b4bf2bd0e756f89d8831a2a0374f0f75a83bb338144b1b7890a1fbcc62c72389780e89c99c09cd536bda59b7a6e8b2095b15360013339531252664b395a56d2b0720f9ff0b720f1072b8e41e981889e2989ef8b395390ce4616711d4c010e6fe885214eebc7bd308dcba48075cbcd135d0076f488811a083a72b861807232ca863f41c8c2d7e3d80aaed653066fd3ea58d4e34b5856bcf5ec40fe22fa857fa44eaa36559eaa9f5d7f3779ea5d88107db9597fed124a775ad9c8dc82c15a349b619fa6b84db7b0be482fd1de8f77e614bed0640348f1b9b12b6ec371f402d73c6bf0356bc252d4519b4f196dc7bf7e554b7f9edd0f6f404536f213a1d65742adf2824669ad013af8b05cd5d91215e374b63956e0a2dc3743349e55374b90349be2920abd36587a90668f8482c3ff2852b8037664aa4a4c00cba178225fec96f196e1bcd644ba1c2ed9a89125394a48f30bc85b9e94ca68a65c23340137ca00f9db3de1a34bf65591f53f867acc5cabd401102b130436a5a3577af1172be994cebc57542938d5b5d720c33a10f4792e59a797802737bfcade3c3d9e9df1071d18fde1b75d7236cd84c5884dd89fa71f77d0529844a3d336bf6a3c16c6a464568bc54fbcb6d0f10401f32482a4d60b0a14db8657430308a5deb49db65654d4b2ab670c552216ce95672ba42bb66c6e6aa0d93953602c6a40b017ced698f5bef60bed481cf37718d93c8b0249a937dec76b3d59ab3e3f212ca7f665ee1d234ea115ae456e935c8ff7d69bfe5ac49e5b805c88357229419df1efcd1309a37697edb195605a4e613f5d011a9c571c06eb649e2cdc16fea3cbaaa0727ff7a24d8ea95eda307780aee7e863044bd645d2d4c1531c2aaf6942495425c0abe967284221fb928815efc7feef21883f11fdf054e295a2a0bfdca3dd6d23a8dd7ff9c9091b3daaac0e403e5ea936e1149a13e11edd0e112b97e4e32ead45ec73b35b5cba121d86cfeeff114083aa729779db439e565f29778defae1345e165ff880f27a6ca8d5a7e735282d1177a98d3adfc2788cf7f539e3d462cca4975ad2bb6cb866441646b1be47f6a685aea866897380b1294d82bf4c30c2f39ef23902bdc76e62fa20d6d3cd54e107e2857ca14ca0ac5c470324ff23fd69fb7927bcbf27c93a3e898711a50e1d994239efabe4d520f009ee75dbfbc14ed40c1a5432305f0b0ac3f81a90950af01b47a7de033c7632c82d93e68240145b54b2249535c4e8091b5267b45788d808c16213a42d6e8aba833edf1d226928f640e119de89c468d67de76df157704a2bbb6696dbfc633a67fe8edb81ab50bd603b1f72bf853320b4aebed72b0164e7e906585e4bbe45578729a4324bcfa94cdf3d7dba610bc48b68a46e8b42b5d2404574389a065a59c461427d16552243432509844aba94b66885e163ff30e640db589293946cf8aa1946f9c2e773d3314ede635492fcf699d3ed7c746d5bb3de8b3b48e93ed8960b8b3ad552eba0ee79b44dc73d321de9c2544171bab6166859ed1ee41524d34f154125a8b09717cbd303555e038eb41d2028afd04ef884241da206eaccc581032d94873078d5c328155ee823215b03e9df13fc9bddd213697baa75a229cf018c523f1bada97ba8a83dd3eda64a84a9a21b22469a3f5d261c097b8dc86079ebd78e57b2ab9fb4a97c94c191f90003afd93e2b2fe984ea8688ef4cd1bc6b6286e37953f8f5224477c73eb624c33243e599648b6bfe157f8cb19be2405e4fc65962a1fb1e9621f0f03556b7954e4cc5e9632e7d906a3acfce25a6d30c91344e85d5badc0ac2a027887bb98c5e90bbeae41b08be49cfd05002f1be29853afd9d2f282ea76401a101578026fdc031f58d83209279670418217fb38a5c44064af15161a129532825bd7e5e2e2f701a1e08d8c2ef34b4541acc499dacfa20321b6b427a85f8f97a106005c9ef81f1e3e0c86bf08a00e6438d1901dad37cdb7f694bce2c6e693cf52e0b0cd7ffc8319f9d7ffcc2b8d8acc467cca301180f794e4662d34efe87964186d9faeb57317317f8c8dead45401165c173cbe3e3d7348634a3b86f7c006c180bcde8c17d8715e85bc6d8162afd21d132071b8ef0476273856ddb724a5795dceb96e186f4d4b0fb6bd1358fd3e98c3bff7fd74e9473a5ef28ddfb69662f079037774d96fe7c7f71e582836d8df73f9d53c0eeb43f44b000b712ce7ac05caec26c2c508b3a9f22d004f510a9ed8c63dd78aa9e782093b2c8f89b423acd7e6717ab6fc0e9de28fb4d46f92bf8c3813301db8775e087e01d04ef58c2f8c38bd3f16df050694a16030131dcf4f24ec3edbd002844d07738d6f50f8bb6a6a6acd030b2d52d69d4d2d4a5d03216a1a0c7deab6d6c7dd7427b5da63bef666d98f51d0dddeba3f0213f532db147f86214d235ce1db58095e0a0b91dc7f82c7928259a7dff50663e030972cff51cbfff2efabf61403410689726ec64a6bc39ee26d9ed510bf57e19537390d186ac2bfc0b99f53c8733a587e6b4a113f6f08ab3f52e95f6f56a6c6d605357afc5ee37f817ca2177f30be2440adfbe49fc8cbc32821979df858e38ed2c4baf4275d331e8da9b34447b95849ae882c134f44635f3b26f0081780551dbb612000fb4aeb27db8d27f2b84328f9ee19291457b3da3f3c99e12595d149637d0d28024ad24656a0ddf46a5871c43272b78029b9d587e4e862f8a02c7128a1fc8284e516f00f03d06fdb8c39968ef29198ae72d2d121d507a65b436aa9969e7ab25b10b9ba428942ca82a1ab61c942da4292bd2d298cf49caeb704c1b50d6a0362030f3afc265a3d53976c4fa496cb2b5a955b00849bb1463efbc2f5d1394b0c3e3117d1aeb513393ae988ef67c3c3dccda3adedeec996c32e00bab59c37fd2d8592dda39989a299c0b3d596b783e70b65993ced3d5ad7d5645c1ca003e5aed783ae69cb8a3603d450eab480ea74e016ae2d37c91ba45ddf50649b4fc4b04e04aa54f4388fa8001507b66f9b95fa88d29ec0b275a428525bc4e9142250783391142d3410d6544256c2d756e6fc9694a89322092f6b3dbf91835bd0a213ce48dbea1122f20c0e676ab233926d2cd92a094588628105f00e8a104365662ef3c6059f0f7f3515e40c8a3573c61e52bfa150eb0803c0483e702b3de97221824eebcd8d4ac1d4c43f0f309a6072116c5f6d4d6991b02f50e805e0120a6dec28f09cc86d1882420e105f664a8da500ecb062acb770045a8c1518a344cbaf8d82c7b9c6131bbdb6ec841520188b6145e39bd1b2d9da9ce46cca79ec857a981434c0c3caf5ccfddb2ed1da0b5496f98bbd67b1fbf7601169faa04415ae54fb10a9a2f64f2b672f71dd6c30dfb66d8f237a8f8ad182a07710b61778fbf390e25ec43f41bc718553126a879aba44f35b54eec723b14d3cdf24ffb2c8d41c86e17fb1159fa98c6a0593df4554cf4db48b13a78e2259acb1ed5ede6bf5e1d13c75554e0a6290d637661836052c5b232d896543040db97a6f06cb944ffd3f0ee36cc6f02570e78ba6e57c0429fcca0a482ae4576d2468c631c2869b97224a13294ee7fc0cc2c1b6a59b5812e2f1b0b10ff3184286740464d1a429bf67e25d08ae659e2431df1c3ee01e47f49051c89e2912bbceb18da68082764357381f8b79024a5d5ac22a98c0072a2e84f23e04b4d917db3039ddc14bf19ce22bbf0a17fd046e46983e68d09feca3f552a49bddaad36ab0bed7903fc5fc70fee3c454be3346855f6f47fe9fb90e9863e5437541f64bacfe6c673504ce2c5c132642bfbabcda79ab47064afd5d10fe20361854314cef5169cac93692d4297ff77f35c7e4d71f1f058cd294d22d7373847d8c379a7109805df9db8e0aa5001bebff31ebae5e1c33eaa2c2006fd85d8132f00b6332fd78332e851fbe7e6abca821620126abbfcde6bf87964d06a8dfc8ec0f687738ac0e874199ce0e46d2453387c8973d7aa7403488d9564824712b29759099669381902d57be8ac7aa539c196c2c08f457a7b67c4896bea093722bc2330011fda07e51461ba66300d18473a149981ddf7df2a978228394c6e24a5106b651114ed944aa54898eb8d9c6749e8cb8d6a4123c15efed3022361de766cd2aa245c5fdc8d0be53c3e0a41920a39f1fe14ee16ab659dd6d5038f7a4f10b6d66e11ec641d84a7342a35726a5546a7a1fb78b8edab21e621a3fdf3c3cd20e0dd5b37bc022c5c444b97031b3aecde36dc9b84d9165d94eaefdf3049c352b4cbc02222771b4e97edb3addb220b6ee9e466a8f7c0c6253174082b7ae70590185fb4337a498c5b75a1704c9337892a79a498d997a97ad6942fd10d9c853dfc7fcdebce7c0c00f104800fe90ac77cd7e72ea7d744b7892636cb8b310c7e8552ac90549cd904bc1d33b632840b15ad3a77f40847bf8c56fd254727da0e96d624b1e3c5f265c40fd65d504d922a0f851f397cc937604d62b4c6d52a22ee1f49faf771c2f0f0e54cb1c7aa52e40c9bdfb63fb595d01ea9e5216c331c78887dd7ef302f002e4451a055d2d3cf2437fa2859abc360c122e7e88d81d7e38a24cfc3779e130cd035999a6d84cbb1a234905e6870062df122104966972d038d4db38705225f059c874bf014cec18acfba3fc1ec203cbf75e2a22dd4f4853c9f59b99dd480b6ee8c6461c7e780495201f0e508f4aa5ba2d69db00eabc9d0f439c948ca0c8ae20ec1ed9b350ea47f0c224a47bf940dcdd2420d25a67f7f2d404c8c846bc33c6a144c179966b9e15eae19996b6f3b6f157586802e5161833a6291ea4fefa3e5eca39fe2a8fcf8144defab37028e8c06a52be29612243836e1253e0fb3789018280e579eaee0d92b1e9692d567781e569227fdd027ef8dcbd33b589a57f1bef1b5f59e75257cc7fd6b897a9d204c07fdc5aff84b7440a488953f6a79d7bf87414c3f7a443a17f347c35f64929c90925804719685def96e7889975faea77bc7d46693934272a1e56dc853590065f0ab8bdb86b439de87005f70a3f2c489d2cd86d61e5e8ffb1a52f90784c2c76f7c1ce275780002f2de6afbc1d0b29708a998c507a654d28d501252bfc2542bf9b4f7b5088e29aede0bd3b12e697fb674f3b8c60d065a519281bf7e0edac35fbac30c08088226b316f100e8b3b59d71fb56cb9c81fe0b6c3274b005d62b54c10b457bfb3602dc9b38350c87285adba1b5c9b796d8a6ea043f056cf9560f0d372157291a72391080f5c0ac5d49eeef81ac42773d563e0bbb7ace7d41a1d5053e8b30cc450b25d9df818000fb703da63b14110b1d35b55462eaebd12cd803126360523f5cd7e1ffd9410d3820ca7bbf680ef77ee67b8bcbac5f7e07b04df73c66ab51aa828f367fe5e6a1e38f6ea44a3434c499001bc572b16dace84517c1d747e2ae025dd02a9151bd2554114f58250fbd06904088c625a2c5434f6e3311963d476b151b35984398d4e7196e7caee67570467d8e9ff7477a4f5834b2f8943090766fdfebd2fcf5142a4ce911d68d170bee046c208ce376daa511af60f8e470a3c0f88dbf0bf255cca60a34843938296b31f98f806bcf6887bff960f1a06a383c5b40ffb01d411421e46f16e222b273c702d02657dda814bd6f0b38ed3da2c6954d74358a54e727b63fea8a12658b36becf5cc5d267a86e01099f77c39bac17179e23fed8ad65f3781ffe9022478b38abf6516db58ee434a5f9a7030459220263e989f2ebee9dc516d59ed5dad041557bf425168beebca87d4affe71400d2114e2d44f29df5f520048ce854a3148de55d8b0479e25a685e6483b790ebd09b2d35ca9dc800170db965711ea95eaf61d297e8a3ebbfa1a3e937ad36ca0b044a96147f89044195f93f28b6e9dc9c019d0659977095318332a481abbbd8fb10def0f5414d9f20146b5d75718d827f86b4af9764e11046dabdee7bbc2268467eb1e6c65cbcbf3d62ab8cbf6c42c689d4a2720f4b6b7d0ac8b6174a5aaf7f69bdca8b37bb02c387f4c92df4e9a4ba2fc4cf00ee283d2b7c74e093d8ffc34f8af648b7485dcc91ace72ac507009db5ee64fb79e013d8e7834cc0fdfae5f027e7bec0dbb7de5ad86b294a71a6999d4c19605bdd09e9364aa7a7f272b35d5974a63658322c40b15ddefb3ea45e067c0a698b834c7e3f0733b9fd1c6ec2de17a2671a97948e757d76b093d7fe61ad86542b7cf86026b1bf434d6abf0f6672ef7db7b543ce2ba0a5ba0d5f329fd83e0e6ea27d3bfc09601f92439dacf69daad58642c45ae483e016e3da43d66c276d02f030edaed83a6a9b15f2f152a86411f1c6acaf0cd0638356328a6c45c36704d74ac41a3e76d084b60fe4d643b24bd7190121f64f7614a1bce8d4d834841dbbbdd2f0ddfcd8d5a80772401bf65d9d3a2b7cec603031f2fd225a32dabb8a2b8be54007c4e14e0e99299bea53ac3e3cffb3ec72f1262a839b8d67e3e28c05f5caa3cee516039825fa45c82b0ca1b7139e65710c21dbe13859f76aa07278848aae854542d8a650d64034c18872587320bf970e8e1cef8f240b7fbd9c6ee0f0c26f340b45cbf09e6572c28653025bc2dc7d5fdcd3472412c6de23c106e532f0382d95a057a13223ad202639b974bf0e9c962a4258523e345c42edc9348d630647841ba03f3c54d3a78d13239f18dcaebb6f6eb55d89c520e2ae93a448f88423e10be90575e146cbf5eb63cdfb545f969d42bbdd41c5d849c6766063eaaf37a7363775dc0ed277f25f5c3353abfff951e59c66457538f291ad7d5586bdc70ffa75e0175905cf053e07489f8a2c674f674ac73830ad69d22631e6936e3d7fe8991a7a6f7a9dafc0c93d7fd81733547ba43c914b9bc4ac65c4ba0750feb0d5d42f533fd1eb42f1f62a136231d45894b9aaebda4adfd229820ef93c6ee96e2f112f45ec07cc2ad6023d15a9d880b8c135b70f69d241eb89994291e21194bfe7553e6356eac31ea629cf89baf0525f5aba241ae07dabca75e0affaeb66df393f4460f4fb13ea4a956129976798821eadd00a015f46813064b2677148a0b13df1b2649f78f96a6c9b5e5319c43a667a104fa563ec4053ba7e27aacbd29c4da5e1b0068e910ca16a801e178fbe346c4a7b11594b25d66ba86d231c8011d7c06afd7eb07061f4ee7ee6b4e71d60967328c216385f2845dd1940420bf0f116127827261ef7e4147eac2d90157676646c7b6a20a6082767b75979eb7854b6229b20d4191b1601e4c1cb80d91d4d5e27cd147b75433c7b9f447014a132b4c07145222de7c3c6712f9b6a75127057e4249c9d43244e32c9c1205fd665948cca2af2e838b0005c1788614300c4e061dadd4ad03b9240063fa7ccc2218bfc42f4cd1640f13a026e24df27dd469c404c195b53797edc94c9a9d45092718cdf0a13d7a40ad163447a9093b41e4f9e27d12d719c5127139c9565b9cdd2ae916c122580518a54b813fc72c02bb098492d4fc82e6cd87202386dd62692d60c4a798668fc0ea7d4ad7ceaf9947eedcf70e005e20d327a8b5b7845a7c70c7282be53b30c8f3a07dc18b02d755a43b48886de6fc705c3ae53b7f4f988fb84b798b03cda45b110bfdae2f10567f3bd50e5c1543f7531ad3756711812f46851ed8393c93570c55c115397724f3c682054de7f88fed9140e37df14758800371fe487136baeb60a3e17dd7aa605162c716c436d0f8f7339d03599bdf7bcb96aeccdc08cb78968c51b52d51776f62c7ab0a6190061ccfdfb3d02fd0e66d7d13467ae0fff2d3eefc4b41d68aa0f3c256b177b214f43d29966b5f02adc76ff9e0a3d2403ace992eb718193cc710fdeeecf9f3ebe98f934045907763ca542b55aa60bec783d5ae9324f02f9fd830b2df16580eb774d8d509a6414a3ec48204ccf97d2a265967a28bd52d876c0cbffac2d1347d8e7bcaa8158f222e0556035f8b8debf659771e3f7212155c4e252435df120cb3c61295edd4b0a05e8cd674461c36fa3448801d5dd4d3a8eb99ab6f9882be46e8e73ed1a56bdf13d6cb1b172c28b6839125ebdda22846d699630b921cac0c07c0fa7fb4572a1d0bd32c20355164d61bda36b3ca3a93db90a6a5496cdbc5dfb3a927157539d31674197d5911fc794fe62ca41164d8596bd0d1b7c43db7ef162e35e506161a7e885a82ac51355195323d0d724bce28c67326208fcc6fd2df2b90f171e67bfa222bfea530ce7325f08fc97df8c4d2499368b80682c53151e1dbf213f00132ca1462e696656dab7af348c21aad07309cee84434a360d2ca881983d05c6216b8d34da770f468cd165a270fca8215c712f11bc2301e725a37ce58ec7322d2b8035362790797aa63bedc5084585cc39d48bc3789b5e152788af30fbc5f7338e005eb0e72e269797798f6584281d3b2cd8ea2373e611a131a0210c4e8abe2b07b909af80e68ece45b40654e77dbdd8d82486df762e317c38dc676a047787b44f6ac2d7e223a2d32dcf60ea25e94a44f49efe501d6bb33f30d9587defcfa65a8c7dbd250bdc4f678bf1da8c87b2ad6483e7bdc8a61e91b5d40074d18d656cce6b740d57189ae909a7e038cdf0d67605973d2e95c5a55ba1295d4e1b1bd133f4b423bc4782a7c9d6d4ceadf1a51e2f8dda95fd34069d19235dc653da4f1b2d144e0c9ee5d8bfb4a3614aa74ad46796b2e028c808049703809ea6926373f426368d622543873920ca4aee3a6b3deeebdc8d04ae77f24cb0ab3154dabfe77099ef33a2993c5fe5d3030fa2b8ce2b18fe0721334a811699123a6022e68c12b997fe159144d8f0b2a838ef0078e2c7801b32b958bd3a6a3bceca8f4a8bdabc8631d2f26cf152a914003d08c9003e9db463d32e8984562cf805e3dec18cbca1a4abfeef9db0fd7e16b1eb0d94e8532e78da562405a151965a4c43ec1236e0271a6c2e192cc5b17a075f076fabee4f5716244efb2ae9573dabf80d54e65c6290aff7535bf5573fb352acade0bdf2b9e97e0d0b0fb9df6b8e5d564d1bb6a13cf4cdd346d58318409970a3e8c7280ce13e8ba1ba7f65b650bcd4f11b8aff7abf57302017cfc921b52543f7e0914e014c0af195f5b20eeaf4673c4a291ff677fc73a2a12c4612123d7d82474fdc3d06868be1f9ecc132e5c17f927248b9a94c246f9b6e3418f9346a27e7b0c3f8b9a54f609542a180346b51b972cb609bda63406b3c320bb55826fdd07faf15206c8274e2745f878094d0d980dfebc14830ef3eb9a0f98fb188203a1e229dd08895bca33c5fc453b66db92d62133ed275c6db9cf43d232c42c5b15f766af4b87253021fe312b1ec800a94b2ef9bde04fc6c703721fce5867eaad0d21644cc510b72edf98d8018ce6b4cd01ee7b41b026aadc0bc1a98b26be7eca850301373e4421e64d1c0786b1c6fec2d01084d072225e7524e368865e3246b1f18d619bf7852311c308e22889d6a1f575259a252038a639b16de524142f1240834fbbbf0ea44f0fd02d1b23ca9771b26efc90cf3da1f60207175b51fa8c42cdfb601cb876b9c626c2e0d1052f37b9d750fce5ebe58925773701050e2ab7bce39a2f7fe22701c5f1425e06d1ddcb4e4815e3328503ad8cbbb6b24651767fd0af72af424c7abf9e4a6ce390a2fcbf587a2be6b8cab8284be91f90f00792c64a7ec0e080db5b52c924fa6301b16d36bfb4812cd04b88c96a5742595147ac4918b587b56fa5ce1ddc31bd70ab821ce0b820e5f364bb167c6416f59bba26028993d6b54b17366e6b1f1dad5de53336ce7a0170563c727f01ebba5dfdd875c01f24045a94e48ad30f1546a68803ac7bf4a137813ab1a9688a2546cd9cf197342d510201019f07317f4d3650591a3f60a0d1f989dfcd127db0a9ce296daeba39d5ea8c3b7672a6f401ed9b005327af0d7c964e7fe329c451f943dba827ebee5d346705bbd198943d71cac54d3521a199ccfc4549609acc1b22f9b8ff2cda32e133c94b2624ed9da859b425a649cdb1f500558daac7e895ac7f844d6932fbc45ea97cf904892cff7b611dcf3e058f7a536fb66f61549efef4d16e2c62a637b19625cc43eb50cfeea888c68d008e204077057e6f2c43c306aec991e1942a047a98c3c6cd81579704fa699a7a57ce6571c91a3c07c77f11105343625f86c50313c3c92f101f212c4ac02148e8fc4d2175c301c682e830ecea1b39eeb4301125b4a57641c032eeee9abbc2fa0cce4519411810557320bc3ac7f1b7b9ff419de286ed12cf2148a7a9b97af0df8a72f336b73128526383e35def64f5404a6376d8aecf58e9c1a7adcc3f9f33e115e0582175ad56c564fc8afc3ef36be93175ba016859ba97a49b7bbd0b49e185f9e4f8f250af5d5459619d7832471ba54441ed9fa415dd0abe46b17c84a02d9608fa67e40809c737081a6b16b813ebc360d01c9cac57bcd8ec724659dce6a019e3bf4f32bb7042056286fe0e68ef5b1fa4a9b0d907c00eccd3ef125f8f60b3dbe5d32d5ded17178971045c5058afbd28edb93be60a58d54b6cf97b06e6970bfa90853ec1312337d8e34157dbe11576c39e1e2282a1436972ca0755e3a7a3d4336d1348a8f445f78d850b6eacf6b53feb8d84e379f42d5b8a0e58b2d640ec7c77a1633118c598e7673eb3d6f611420fec1c4a11aee68a0c416766a2fb2cb8c2bb8ec59c0f7aa9c50580d2c8f868561311dab1877f7be7f2d8b270e53b455c862a95299275a688c756340ce89c21472e852eecb2d579e09b4f18efa3f801236a330e29870af8af111b6923bff58108e8e4216305c03492eb376578167f47d8e92f1892f488c60811a6bf548ed65ad5d97a8143a6974b3bcfc533242e24f6777a2383c154dbb7cd6641bbc2695f1593d8f574f704110eb469b8567a6b2f2d1e704a5849686b1fb90d846d241d6103f8d7dd4d9530353da2e47a58302572908f79a06019adb4a91290406b8779bf0e3e98226468d9d225a9d4eefc3d640b4c1fe27f1b509a4a7933c94c67cac5c6ed52ff657b006e6b0d0119305a9ddcf2bda852164ae46207e75d57a312ba5168b7e1ead0a0bb0b5dd0ab8020f60ffaf9f33c12865f62ec0af95c48afd1a29b31b5aec7b45eb03b77f1fa4e67dcc55a4d753af3dd099d1face1d70ffcd412cf782fc1d7624b61fa1ac1372fb49d1a2a4196161db401ad2e9d8c333a999978cc802395a5fdcc84e4a598a059631d400374c4be85194b1027d2672891882946e335d437adae48e25b6c67e88d65491d6a4669fdab7976c9ca5268e5b6e35d60093b2128752e51ff65b56a6b34a31b73eaca2c688ab453d3ea8b106a0e0b0257dd131c5a0f31de75d897750ec8dba64b701e1f38c0e530ecde73007e648182b4900e5ec1a4040d77b13dc4bf45c81e82306df0d4fdf5305f157b385b070c45238b6b0d459fc52a616c342a1ecde632304bd050aa355bd072b7d24282cf46451c1818e71bdbf24018bdc74ef7c24f80805f6c3cb44029968a5bcbc6a9d0ce2a4aaf949825e273c151bf98b97d4c40795146ca0ea5ac14b7becba466929010589cefc55ebe3b5b0db8a0ca864eefab92e5ec1298c2e80aa5ba1c3e50a592d24716649d4ba0d286eec73c549347a23df0a967de47e58ec63c478b9b0dcdfbc1808c78450a9b4528c0fed82147ec6af954960e56ea619ef59e8773b014b10989a7e01d3628c21b90503ec8b7e198606112b048fe25a4645e7b314d4b7c06d113b3682c572dc7cabfb05ae2a0938cc80f0b3ad2fae303bcb0a60f5fc59325c22e6c62c1116ea397bd352e3eef39cd8cb0ac8b92344a035220fc974cead7b2fbbd1c6286b94e414c14e2584f3e3a06bf7cd08414d0e0516ce64ab68530fd4280d4ad4d837a811ad826597476770649d0df90435a2021b728e5c2ece895e0fc1fceeedf22e13facb0d4a1bdf80405a9f5020f9a4b3dc121313b75e2a90c872a368108e2a7ebed5cd7ce4c915a5bd56bbd33ea5b5c68c6e42b2cda2061bc371e8db25a9137cf6e6804152a4fb2f5f12fdf6f68174727e01513ecf40c5d5b0ecd45a0d028ae68f312c56318090ea3622ed895d027a83000241dc56facac46f391585b12a87ce48567fc90e91402f4a611175c52422aa705001bfcb91e338120ce10d3caa907f2225f6ec6bf4b12b5b65ca0b53a78fb6f238161fa26c5a4807aefa2d80adc813b1e115f5dc42a70fa89980a5c0a11e85a026c7c91d7872a856c106e25042cd0a853604d7a32956d9be0d9b73c4e303141300057eac403f497458f8f0604ced25167ede98922680eb12a720a6b3097b6c5c8b4736f55a9ac92c9bf9ddfd359581e6b69e651f8142336ff53d651016a65382a73252f744a272d9e4c791b9e306e95c18c3c5a0bbff39c201d0308e0240985adcb4d6c13725b92722ce974bc660f35b046ae6147c55548a4209f8d8d365a30ef6e64488eead03ff595866971360c310970292eb91a27ff7fff1ed796edff46e70c54631704019b04c41d99864414c327e6f4fcfda8b1c124d8917868b4f5df290e14220f19d7452698321c17dbbaa06aeb849de203efe3aaaaf95a831073c537167857d7d0696422b5f285a1d7466087459150c0749950a38167d19acd91f759f5d53c7c9cacae2a7c6d483a8652244032bfa2426a7afecdcfe48f877ea33336c9d307ec6569d6c65c1ae2045150ea08e08ae8f31c5fc0c345ecfdb45603ae81341f14b084f0be3b341d636283268c0280c1b02882ef3dc4dc1a159c88d50e60dc28cfa87bb3c6074c08f3b7f2406ec5555c2fae1d1c95717fffce300981c518256adc90e8f0c2a21c7697971c7d6ba934d341c08aa644be47cf01d0d10070b4be067cc735629df8006ec7505772f2addfd40afefa12ee4e2ce0832766bf0a2040028ff4eae10ce2d441b7ddf2642fb3e1ce82060176901f9bb5104c01435b040b4b436d57b72e4e6554333e8ff405dbb13d1acc6ac182ddc66ef5b39c60fb99ee2c72ab897157874690dcad6a202db462984a65ec63adedda8918ead4bf2ec7e38d6dbf82522135e69ab1be56934a9f70a46fb746a4fb705eb8f489f19aa5fd6f351b99188e794ad95e06412b115e23d5af0f5a587e5f2117276a383dd947551a42ec7230f794f423689756454649db155f219d25088bd58a484d334b852d0fee87038397d603be25a250b07a3249d0d680118f7322e09b295ea1f80015bb1ef3dea8d813a2fbcdd1d4ee3deff4d7c697521a8d4b1641b7a5ffd66453aa909865c18bda058ab3c4f69ca88b8533b50058d2e5cce7adeee37db22f0b6cce86522fef7a49d5b3e8335d7cb34b9a1ef5604fda260f39456e92adc7293264b464fe88bfe5c939c3d856c10d50d1443b688cb482577242255e39018c5a81429812ae5aee58230eeb860a76e73c5a0ef5509e1b1fa00064a15481d0a56ee84d05e76c3f97ca631c44f66bed734ae93d1b93b2958ffff1f72ef94c3a480683de72f3378aa07be1fdf0aa1ef8877bcbf05c4b006d82fbb58cf20fff4817b5df4d6b88cba0312795a0b1e5567d397dc43e8841b6775ec6cb5cce688786a76422c2b2fa4520a34e84c20a2c5d721f1587cae7f281be04fc5e3c937edcf30ead23aa3cec2877bd161696f5f83c556b4a7ef8888a43321a7883968dd3b15f030601ee46ac0425defa4a298c5acbe514501bac6cf753013402c8661ee937304f622a9837be9b981e63d02821bd21d52dafd8eddd68751ebf575452cc325d7d8d619bab8a06a591a7212c50f6266f17def00f858f33ea4adcdcdf629a54d1bfbb6cb7e08d0badf747437fd89630b2ae24486a041ad181716c2ab6244ab8d0123d65f71f8d809b845ac74b8769d278cb77909031699c1cde8e95ac18e6e2f3e2d0981ceb79fa84961df08be1586f7dfe6438174a749e26c5699870f4ea5019a76cb35ed4ea42c6076ad175944462d29b12816278198f8fe3d70d3a4c5fbc2e575c0bea57b335fbe57f7f8e3f1196a0bb7fc3120a10e9af8b30c2f2aa2b796d018bcfed9d99c6afe761f800eea9bef9dd5ac0bfc8fb208562d8eeb136698a8ca74dcf167d999df9110ccef0739eb0d1e4cb75fc2ca7a96ade89a2a8afe31a73da9d02f728db4a244c9359985649e435dce4a6f26d1a4a1d419e80939e49ab8813ca54e574be8211c43593e299ef5fe8af61c197224d5078e3f2eec6da2d1226b6458305709e21f46aab464a297dbc23471a33389cc8c4135601554270613359dc60db48bfed4d9d61c998cb522a088468418a6c523458d0215d580eff5aa4d72f1f1f183a5a5b242f35d1b171aff3a6339dcd1d2822b372567d56f8cdc72bcbe4bf629d7dc7aade016cffc86b648c1499346ee7379b3b5e0505ba26ea7f0c3dca57f3630bb499ab31a34db2516e38f81d9a0a4f29d3adfb1cb9109d52d2bc9c2efab67a8b41f3633d49f35d0bc0bea382341306a536f7a231305f44ee7b89486b88ca1276e4ed8e4edd806c190d6e6e4536a82d17cecac55463d77b1f5e046c9dd054f374ae2064cda75e009d701a3437a902eadc567b7f941d1fd1108c1faeea88047bebc74b45327ff6217ca02a6b2471bb293172692d147c37040be9b904dc7f3c73f0cd796ddeddcff783fb9a26b8eb890fc9408e366e175c82ba83f8a75ec9838967991512b8ad48cdafe693d9404fad2ef4d0a70c600c3ede11979235ff2d4f56f2b095c5cb894a3313927936a16edc67b815b5f5eae46c4be48967f63346b73b3750fe8fe3a99a06fd4aca156ffbd1ffae3cd2c62da5e358fd806386e9f203ffcfc48d0eab17fee8be91f2018a1ddf57e18fc54367d02790bd324f01fa952f62d623538b410073bfa7017ac9b5d0c78db5702fde1874193f94fc63b4937ac1e1974c932cfa85571d3ab1e83d137a95e75fc4524e01d61353978e1e821197d88e4e53a56530b3b7813ee6d1f5b5605407afa222eeb14f62d817c1a041fce19795605594a171b1e016ed3edeae5599ac28a7e09dbf84ffdcf5b7951fa1ff42aaeda0d83b500d82388afc0b356108082f25dcdc377bea57f61c61ffaf7e85f40869aeec0b43ea11bafeb31669d84a2c78f677601b1f19e3e8677a6cb826e57e17e716f2c23c3b16237c1f7807d71895d98d03fb71a9b632a0f4de1a1e661cba76a934f5b8b178fd3052bf76f53201fd8ec4ab7e94eab4fc7b7111307ca001ed1e6282e89cb2b9f865d32377a8a44d7d213a54c338b53f79179cff015d7cc762b88c9c4d82b57cb269a8e57c333dee5389674e2a6013d34ca0092608ce460fa50fbe0f5ee096a07335f6c4fe3e82d57157bdd23a756fdaa41d85198a8c9a53428d39075285583979413217e1c902e0053efa6763646466d0d628e34ea6a9706e54d62714bbdccd39492d92c983202655d796269693b3694c6431c0ad217343f62b201cd521ec06b79f8b2e79340af1500e4921a7f9e786828b0cb8aeb61158b3766629fc5ee797b5684d544ea0067fede73ac1f1704d07c63cc3a551d2bdd9ca7231dd79d8694b25d241f893e511eaa772f93a2c39969460a9bb89a9eaf5be38acac350d2e595541040a9601f69cd14774216af9733f4508c24f83d6ca583cdce01a4aff2279d4452054a1c3494194bcf5ff04e70e244f15763c5b5b270b26f058bdc6ea2e01584810fcecfef971257843cbc3f683fc9aa01934aa0b3b10483d349c5c9ce16b3a1a1c118c775f00b35783bc0c0aa1afecf602f552e9daa71a9ada78570111c997bd988ecac881c7c46887313131192aa8d35ccfa411fd38b8ba6967b343440f2d22537c4ef1978ffa247e1fd08090083f796f7f2a0f81b6732dee11492924e70e26082d789b55830e2a5667fd4ffc9c28bd0b0af0ac438a4b54f01bdaa05a14bbd312a1d3b3d4e8402ad9038d7f10b98799d6241176639c78599218d4aa53f7ad03964bff210bafb06748bf1f26b0e8a6a06d07537767313e093bcae51e7fdbd714deb53a2bd7d7c7c1a1d61fa8935d00d5992e8b752831d34ba233aca2519bcdb4e8fee54ce35c96e6b76ea00c2802354e5c73baba995494cf952fe8dd1d7d3ad84fca77a1409b8da8c4304a5e9b5dddb1501b6f2a3c6b26a276db518a37c5004c4f6dacbc638d1966645a377b62733add3416c2da1e0da4dc07649d0b302240229052916c803553cee8966b71031d8001e84743eb6f9e587f3b3359d8a1f6ded307b81d2e17f010d443956a2fffdefd7ec460b4f310f1c9265cb22660cb6b7767fc9398a5a73eb0307e417c90ded6305e198fd1a2989cd004b20aa60bcf39dc4a050c0bd3d21f911bd921f2c64d0d2339f0c4eac2c1b6def031c4e07c9817167cce2c739f3a294835352058374543bb93dc2304e9ac2091e3440d9663f100d553f5f72442bd83cb4ec67785164d0025efd27ad74f99a474d77d504f24b7152a7bd019f1c3f2583aa05286a3bf483c2246afa7ec981754e56f54c01b01dec47b9c5deb516149766416c36c707337dc33bce59ae46d9f5b3901401771c97fc1c3b439020d913cd6b14270c17c3cd055fc82b66f685817832840faed01c4725eaaaf03f5558cfea98ad5b5d88508fd28e22b4f54efd0f1b4fa887866846cfdfebf607b04903ce8223122782acb0a6f9fdebde9f4fb003f06e755559ca7403faf1355aca08509bbd6a3174737bf7a24ea206ce8f5256e88f7c97a94eadb0ef2492f102a06eebb39fa142e31061f55bc1d85d6cea8d26d23a21ff10b921870bb047a7ed64c8000017e2b472b83355bfd0854215f4276c04f86dfc9cf70c085a7581eeb599c2ab22c477ba080219b8cabdbb57b4729929c2cc60ad60e8b3c08928ab33200ac20b35bf9e3cf9273ff9027558300b82f4fbcf4e4590deadc0d3a7a176431eaa566ae63ab23ff45e9f53d39650ac083f9c45b88201d0e5625b917c7dfb19427f16a56f06f6431761d9fe588961efa0a8be321c8a6c643e3c612a264b00fc639487429071cfd029053cdab97def9d621dbe58fd5fa30c750f3335489de86f2f4b00b785678155e7a580e16abf175cc5459cde7670a6305f443bbbe92b5395103e2651dc6ec863c61afa43b98c556d2730e46a62a8d7f9bb95407acfcf832c9d77541f0de9c9387b36b0336d24328c743a930a43ebd42c95b0d95f4bbc1bb29b0f0ee5bfbf9522a78ea4d1266118a1428ae29abd828ee844ebcf5a876201577544249fa63253d6ad4a647465d03b45b44d97b1232c11a87a9e488f42dff9df0e7a2060a6a29c0917cf06aad34ed53df9599a4ab61f392fc8ffb48f3447e3f1e6233587d613e8a1897c7c9e143e98d801de2b70a7a7ba2d0290bcfa62db27f0d7def60de1697ac0c9cd371f9726b958abe4e7fa6ec870d4fec72736f13cc09633d4263b55f69dbe531c2f792c8a888cb5b94c4c72e72fe66017a844297fe21150fc416d7bf898ad667516af63b14586e5b0596305720cffcff8443653ac7388450457fa31e391aae4f8a1d18c554ca22e2ad0a0307a471c3e2f67cff7091650aa8a429a02059aeec0c472b6516044513a85204cd3ff14931b7e9ce95a486dd38509b408e6881dc8500f4e8a5845d819e047d7ac3426b952f999e9cce0ce142b0e329789c96f02825e1b09c7c392c5d42ac0cca98b75266ee3c4b1c6ef24cca07e9785fe90dfae094088cfb04c2b4e0dbd329a6e858ff9cdc816fc0309041a4bd386bc64a9d7f547fa24197dfcf3ca961f8da3eed5d881529bddf05f794d31fefa62f3f40ddef26d60dcf57dd3b1e3be7a04426b387be0647418b6e1642a7e14605f66448181245a22351543d5bd2528ed9b03d71743edc08d18e255b23746c36016ef4f63e166c4df6fe9130e468356ff67226c6a907fbc9b9be105e03debff76ff7ddc6b25a864e85a44c335efca6e7538eee802e0443b27a8b3c03a684f12409e8c26de097124a8128a1aabbd14ecf42568e3a9d6eb4a0104ce588fc7f2919e87a67faf6a6a202abf2d3fed2f650d62d7ab30ae233a78db101999cf757d4692b21816d2126d8664a9b7aa3092c50e6d7a45d518f57a6d7efe1043faae37333033ae28090d492da8c65e321c2def73a82f9c5c904413c591568f5d471bf9674832bdca67e5b21ce521e50d33ff27627d6b1ab17b2409f0a9f61fa16d5bc3b453cea1f7c4f382ae4217e73354b5f0b97953fc961d69292b8e648b7d862b5122a9ebfcf26d19d488b675169dd3ff1069c22e6968df53ff1af6759d77cf0cff6b1281e9555d7d74ea21afe15f53aa4b989da15f59867693c0058ff47f695eec693bce22e7cfa478ff383558b70d5259b6a3c1434e6ddb19f1d1f0222cb34d6483a8a6abc6e6e933af8175c1228dc44f66c65eefe30f8c08e8f56ee5fa7ca9f0ce6a0baf61490ba5d78bc88394e2f32b1944f00b7b87205088d283ad5a749ad1391dd989b842182416468c3501e7c08867db45b9030133f4a473fa146bf9b013f7f48b282ecde41016d59aa1f5e54f25bedd2662ec0a972d3539cefa5b758d55ea207d404931ef91f1ef591ff2b26363307f5d20da89b96076093b966f0243411e63985cb2abfbece66ae70df0b2431849493f821613a141b9700353e9f805b0eaa0b4d23d01664201a4c0d170742ffa3ffadd7cfea17badef1fa0f39b14a40cd576c3e541534e4bb1b08d07e6fd387e76a413404f6c2265b5dde2332a620346e40b38a9fd62c2f0bdb99de5c3bd4f7ef133adeedc5989a0abfd70b5b8c5e5eafafcb22ece5bd3fa075ce05a91d5aa964b73e5c8f0659214e3f82f06695f6c2870c1901042a05ae79c4d70d58305c55493a9904adb84954be5ec756bd91e477784112d931559cccab586cbd8a9d4d0aaa7845e67885e11f000e0ce08d185c3212459aee058e32057f8ba05e61562b2b86bd5340b7b289ad6d6d1342082164934df6967b07d00dc20d740d98858b0881fd601086a47fbdf61ae790277aaa5d62c1fa8035ba4c29856cc8f41acec9341ac994ce70943e936e9061b0507b11da8ff6e831eca33d9a95b4df9276eeb026931b8e9a7dc0183a02cb5df4f89202e4b91321cfe1be12f244f44558090e5779a298116c3cbceafd6672bde663620ac821b721b463c7ac7f5eb65ea505642663cf30ec70c321447bd487b4f8ab411b8e1b0eecda75abd76b036426670732b3438b9447a330bc75df4dfeb677cfb05b7f5d1dd82bfe62c62ceb3472fec39e754066f296a33dfaedf2d082ed8efd833f1db6c1aedd067bc5ae3dab1709778cbb109d83bb45f4893e8b391a65612a04f5314160b17f3048a63d1a1ef6eb14fbf6efba6e2cf6ebdf775832edd17b8dbab6537ad18b5ef417feb6d767dbf5daa3aff7edd15bd7a53dfa4cb1d7d3bb78db85b96278a63d7a2128fde9e97f68148418d5b04d864ba4f6684b7bf4b3b384833d3d42a672f89029194a0fa545a94cae47eaec6a904197ec0a433a6029b83fa8a28e16c4b2e68c4d60e8c44ba251384813418458a81964bee3b239b72cdb66b6f5b66d338b3a4080280f00d09352665847876632c341a8ce6c6207f6cf7ab66d38eab4a83365f803451cac1b55834e8208c95ee50ca7c81c4ab2954388f6648625f7afebb21c3bdc65d775dcb79df67462135b7663c333368b79663ca2ce57e9c4262a1df94aa7622233d1a8a833e1cf132dc833c69d183ba7bb487b4e62cfcd553fd19e8c3a30884ce5802729e1cf3d99babc04c4d4850120450402f4e475a03f500ad4aee40f3aa9307432714cb202fb91482d5525d25db14ca15c3d562c40a1c5c202194cb0862c83fd754f56d5849112880504d35ee5f15493a73daf9a3b31c3ced561781a0569e46ae24f2657d72ccb925478fee6cef4e150f49b9975af659d7bc5e1f9337daa4f6cddbbf8581f1a355f9de687466daf9e03d680b9fa8c2753f5d82deb73c705b783eed9e9edb2ae1375a2aeeb3afc899e3d13655aa68962d6660ce0a93ab4f0dc813115f63a9bb0b1b71dd93f7ad1b3ec6a87b04445b7343acc282291762b1cac7511f6da134599833558dae8deb0ed5547b9293cb073c7894695745499beca14b7b4579d146461aef2377dac5955912babaaa8e895fd2712894456645f8944a24358bd7b66af4c7bd5bbebc1b457798dea5e1d46c67619a52368b12a1b04a04e201d2e9985310000eb1294a8d6d1635b0e98299e3f4c582f48a651308d0acad5ab19b4a4511172f8a78708b58812d8ef1b8ece39604cf5b902ebf5b71bf35613ed55df6e3c128d74ccb9d78d3857469eaa63b7a2508335524831d8cf1e99f2e68eacee25c955e5e56afac4274c9d2115424ac8dfccf0ab59c6121dbb72d6e306b365d10a0c56067b58d82a7e0a5d44e24d748184ead0a5fb4674a23d198b684f06c9d00a999610ec3ca5980f99c2f04c9429923cc949336303db48b037761f3a851d16d1271f7cb427a5b0f314c79dc8d3a84969dc893c9167273ab1d33b4e441e083ff344dc7922ee3cf144a322842a19fe3cc1837a8545229ede4703606a066a016201a7603f185444a76664a3acc39f2c5a9e4ac12231e51b004ff25ac8529621cb199982353e3f1902f99081ed53ecb5274f29a5ff48f4d7a398d2936e0b89d4d22878f9570ae12194f1487187448a3b3b8d8ab345863f3a9041fe6658804bf008999af121539e930c71cf68520b023ef658cd3171e2e47afc4857205d71c5154b581ae9094f78829ccd35914197c844a32a29a594524a29250ca905c228458631498c7f310a18ff62cf132ed189d3bd7fb1890c1f751a158043001c3e1a69143e7ccc69d43d7c2cd2a81f3ee234ca74f8218dd2e1f049342a87c30b6954cbe18334aa7478208d7271f8231ad5e2f046348a74f81f8d42397c118d1a1dde478f467587e7d128eef042346a3b7c8e466987ff81c6879946d5c3d39069149d7196ab3c65c67581a797cbb82df0f4f2984b82decb616e0af45e1ee35ae8bd1cc6d5a0f7f217b742efe52e7742efc57b29224f1717171717171717efc67cba117a2ffe72bf2a03d9e58577617eb95fcc2f3eef77935d72006e1401f4e24b40863c5d6e04c6c4bfb85f14418e77b91f9133e47900dc9803bd787c6311e8c5df1b71a017ff3b047af1a69b04f4e275b842a0179fc30d02bdf8960b047af1a57b04f4e25d5c23a017dfe2fe805e3ce91601bd78962bc4ca121fe0293e05563103bdf8d1a501bd78d18581a7787b3de8c577d7057af1dc3df4e2b7db02bd78ed92a0179fdd14e8c563d7420d42e8c56824cf9c2211e7c9101a9c64d1e40a58ddfc90e70c8d5c1df6c8d373790b29c56ab9aa5e610a0cc95332d1a8ae7002ad10991cc5a4c0d1b99a12499d5dadeed9d6bc356da6bcde575e127ff31788599ede3ab4ac5aad4967cf2ee99838da921513f5d5b38ece57af905cd5bc6af55ad5eaf37d6daa96178879d65aafcb7afc552bab9a51e6928eaac22579832356b3deaa0419b4724b7b4d6aaf6772d3c8de4cdf87a6d1a88fe4c1340a3ae12d59dc745819620863ae95e116e3617443273f792827b5b55630c349ab7938279669af3d1a3f34aa69f467fa34e414a07881bc41060f60adf7b3ae0f5d52a27cd35b527b11d3e468d4079ba6bd48ad579b8ebe759bae97b52b69594d1fabc753d9f170aba20d6c49c74dce31c62893630669dc4c60ab2cb1f86e3a42a04a564bc8e0016c87c3cad9a1cb0781dae5095b1d23b1a4f624ce5155588591485a5570dec2e853f27d1a49d33f34dc30527b7ddb5edbc0c68a1efb8d0e7aecd98d1fdaebae5efb86bde297aec35c310c7b9c44225f9d88fd1e7f998a35dba5c961c4c26f26b0305b2eed79183e1616fe7bd5e040d3d046cd7a22ebc11ec26df268af477bf2f30596477bf259ca085d4a79208dfa20d08f467dd58846412764791e3daeebcff21ec6d01cd80ffee41042cadbf8b64eae4b12016a1aa67ddb2e910b8b26355054d72e116a8526ecd468cfbacbc9d20bf693492ca09d7a03ab4175eb184fc64d8ecb5aa687044fb86c42272dbb230d73d303d0c069cdd80ce06175760468c8f3ce7c318087c68033f068549021900a50e80cd510d998a053a37d4950ee612647587b368c472086917ce21bd2108f2c210a950339eb232cb730b53dbec294ca4ab5b47802e8c5235611b2e5436345d790c893638323354448550059ebb37e6094a2165bd6831565a7698c8399d4852cc2a053338408e90c3e35a7024e24f5699402179c0c2d01881bb2eacab7cfb8823194985af8b3a290a57585265616a3db9722a6008eced1e6b3af59bc3860aeacfbfdc02da4ca5526e9cab27c608cec3c053cc953a192492c2b525286c41f252ce9a9194244250b273550644788603d476a549e05c17e1610a4c416aeba5a4b80d6aac2328275040b094ab27663cd75e13544264ee18a1434a91942a48509846a669a07f92144342b7a6a544e041554a3fda6264bd2fd93e1862c592bad4bb0a200ad269f95854c029b872bfb81dd4eff451f48c508aa907bdb81926152e6a5396e3a462f05d1d9d87787b9778c5ee7cabb8b4405e7bc66055b55f44965fa30c9f228b7cbb5d22e96ab0f04ca5d73dd58c35d4b0966551d6bae1f518bb9518fcbaeec96f4692f9b8f58feb4c77257ae722b3c59dfae8527ab2fa4924ada9337731bc27ac472497bd9953f28974b1a25ca44572e694f89fd2795d88b4ed3dc96f26ebb7249cae58ffc694f927c7c9e7157fe489f918c28a7e994ee96e829376611ca3b135265ee2837e67721c83aad2f46020dc40d08fa78a9a4511d5e92832c21ab8af6b273d65a1249842d9f11b694549161ebc707f68b47a2cfbd72c4a68f8f8f0fad2a9b76634da6b90c8580a76608116c0c40d6b719638cf1d61cbb6384395a3f1d6fdb24e47aad3ca435e00338fcd40c2142e282931a28b00f21428b3054a39d48017c6aa0b0200f49a511d21b6c1ab2b4c4906517b28d02e90a3de02a576b0f0baceca3cb112e8d5ee5afcadda5926cf94c28aa45186a4f724f3a1cb94487d3dd5a8b2a891ef3e86aa25b2be56c0a87cd00035aadffc866b0910aa972c4306e08c3d447d620201772ac17c9b651ab8a3e256994948296600c3dc8462cc8b5a7086c0fb667640e87b8216e08fae41e6cd4301b4483dc21e4620e7686c02c14ee0265552502e59e81653900f4686c3e004429c9f290a6b75beaa17dfb86870c59d902929d9a21442a2608d56827c292a4068af89b9a2c6a9a8ee533b28c0053416a40942482e524898545964b7012852b64792202445948a0b79060593e5107593eeac8d3ad39a3b7b375638e3e9665e9c81f9924c61879b28c3d0a8835f1081492f8583a578ffd2c1fcb07d69802a6aa15d609d9a2421099e26ab5d689f5e333942f94113891eb10d8a34f7bd2aac2fa59c2fa69215546a2e19cd75cb814b1e56355d127c90de5c894d5034f3265f57043568fb593e579006568f94cac665986ddf2b1aa6814a462043859de72623de9d48c23969246412a44d04426b198583f9690644313f2673559831bf267a1c1c28e7cdc501e9ab99255ac100109f9049c1bb285e2862c1ab720e015b9bae593a5e533efe32268942396e36935217592210088c81b8b48531a811a64d0e5d3628e3e411585684fce1378f404596234b0a2a7e6b1798b4071d93adb09198aecf35996a39e204b4efb5cde4ed8b60b6b241359abf55050ae0c1ec05eefedc61a1893c424d85539abbb8ae276558e25861793c02113e40f06451d5c2be48e6d3c963040d798615826e2ea35a7288b22ecaa5ca76975bb8144cc5f4ca26d385251278b564427a06058d4a1a0605dd77547586bad45b95fccd1aaadda56cb509de854273ad5894e750263e43dcff3446d398ee344afb513751d1caa81ad68e893d4618407572717fd3a83fd913ee049bec33cb65ef4cc8596ab282548ea33eb3d30b4f5d372e4419d580d28ee5069d520ab9e45fb6fc6a551d945d684d2fe65b9ca01da80714685d998a3d8411bb5461b5a9c511d461b76461b2935da20c519550d1db468a3a582f5b7d1c61129d1061052b411a425da10527129b96a120586e4fe11d14612157f5d1d48b431c4ca22570f126d449cea42a28d58a40330a63a4543ae9e4455551fb2038d5c3dc9d5234e8c5cbdaa6e459c5c85007ad5b5fb02bd8a875cfdaa1e3b5024da70893342d043ae5edd54049349072a74d021872972c8a105fab4b4940c502ab928800b172d08d0a205c9071289c5060bcb4a8d9515951e5454526652525052282823d46824e24124b234aced06d075dc0e1cb70960db34194dcb6664192603c3ae98ebaa30b55a312c8bc2a0b43ae5aacad57c8135a40c00acd1778135605669a9d65c9d4711d5617472d5b3037d628042c97c62c083fcc12532b9f22157af16bd3ac8c004dc623f1ec99a7b924197cb850af0542f5f20ea1c885e14c9f58511fa4247ba649d06ebc2a453239c9a7a39c2c932b56424d428edf5dc3f4d93d7be43de463b96026a4fc3b5568d947209c21f7647418dcab07a6e6219961a050d09356ac4a45143b9be8e8652684043a3b8432c84724d3561c34824d960451f1da230b158adb30c16c32e42d865341a6a94f6fa913cd5d76aed08c76703423b86649402922998baa25315428891d0f297dac9f59fcd69affe6b119da653383285225329575979c50e658a746dd369715347e4a99e745339f254cf725338f254bf726752bc2c533c3235da913d3295f2fa54129942793d94a20b652ac5234fb5ca54aa47a65c2b4fa924f254af1de5a676642ad6d4a7ea533a4fe5340a47a65cb2e894148d82d0d35e9f8aa2534f746af43ac2291e0d4a2c5897205863cbd5450bb9ba6091ab4b1972756143aedf8b9c5c5f1cc9f5854eaedf8b9d5cade8f52e4232357a7d76474123a1f6323c476051aef2f8cf25a8a480d1514ec4e828175d89d24727427415ac440a2e651809499eea53eee5a91ee596b28b0e6b46b794e192022c8b5e8495109d8a4eafc4e8d661cd2c83c55b0d2c2a48d6a36ab5161594eb4557469eea47b73eabb61b25055817bd87751186f2d4835e4a6c849361fd6884c363e58364aa6bb8730be81a972079aadf782ce742051853690f86ec8c0b93940b933ed5bb04c198faed05b6fafc265d98b477038920b04bfce9c02e2fbf03c88cccae8b507bf5da7509da7464c7f027b18d7c10950d864b3a700983390db68fdd1fe4a5f1a972b4c904065dae1f1fe468a825320ccad8b98bbdb70e07911dc336198ee7eccdd15e7d778568af5ec201621cd6b2ed8e98b4574741edd5378c8232fcaac49f4b935cb12c06251eedd5c3dca3bd5aefd244a646412e4132950282a7fafab938c9157309ca7514946b0a28d71fd87ec514f8916d667072fd752b86002072dd5c9d830c62d6d25583004eb865588d96cd241a28602305aa810fed964ada934a1a152977a0d25d60d660680186c16a061f1bcf4468149b68da51de8d7ba07c34645efb4d8d7c36a3856596a56516f6aab61bda0d3404438da239905ed56c287a4704395e51ceb419337ac40a8bc1adb6855995cb14e959e3a4708ff43ae9b25c9a73a98f4a0a061a61da840a6934485a2d191ea7e4eaf6912138c972bb51a98c431ce210879af90dc9f58d4bf1484a11d39c1a6ae406538c61087427cb531d79925ab470d028681229a80fcf4ce2639941ea7c512863b7b9bad109acaebd260ac99486698e3c55580995c2fa47732a4b8b28b9bad14703396e433c639f3c3e56366d13f34231371c3237a631367132542d2cab604db3544d73300cc33021ccc2300cc3d6a547dacbc93acb9a4c9e886b76d993e7b55a2cf561863f29740490264940525f2855aa2c3a0c60a8b0a8a14798187a129d08b527e3153c32a5759826694f5ebbf396e2b5c39a8b88790d6b5762f47922b4a7602550aedd4a83ddde4d509ae40c7f373963b9758851294677f2d01c1e3af1477b641a32dc6e603f3559c4a1228dea9c68a371221ab23cf6ecda6e6018cda147ce60b79aa25997cb59bd36471414ed704845b36e97b3babde4237b114156d66dda757fd06b849085652931d715ecd62c079a43a348829680ae80c620cb1ad024193b82fde4fce844544fc14a68af3ec24a40d1437b7525503e0f6bac34d8fe07875a68169685c1be6190b16bb3755b72e45104e51acdb98d2593f6b85cfb5a05cc6bef31afe11ed5690e8b86ddaeaf96e11644f7528e2ed1c3be3f123b943f4b244f3dbd3c8032dcb8fe9b3c4249e0e4905cb292d691564c735a9020b424c73bca59dcea7502fb554d9ac8d4e4993c4de4e46972f3178584660c1a2736d140965f014e09e607260e8cc9e6b3aadd4aa80aaa98d40cd75a6b862ba12ac8a7374a3f90250e8c9154e7d28d364177e4c95283954cda6734042ce4785532dc869853c8dc23b6e172de608390e3e5b28719c17e3d845561e93f9a3394e1153f70c1135e588110cce0a4463e872d08b964c687f6e4ad966d87fcc1259a1f56a2007db2301081827d88c04697cf72d0b0bbe52cde9a9934ecd69cc5ed46490128d7de03e51a1e0245f621f32858f6f4d03ec243aa6b58f2b46417f148fe264f14a27932694f6245b0f4dfe4c16e4ace2e9cc267891caf95fbb6e47aa3c4631ee61e398860064cece0441f998a5a8027792c7ecac086202118239f69356b6399d56ee8219a036b70f1fa314685fd680ee591a94ac90fad824ad1a8d4114a7ba8132099923f42cab1168ed0500db2424de807600c08604c08a8119af3499d1c2b7c5c00b71dd9375caa1a18740037eb07f63a4d6f6ac8d9ad99d4d63079b63c79600daa0363640d608af6f8d4000859d218e880522cec758d0838c8d9ed72468df4334c73da9b3cf309cefee338ee1fcde1ec9d3ced7192e3ecb767f6d22334871aa13934a7515b66399af5d0238da2461a4599c8f249d86d8a254ab63d99d29eec7260f59337ac829cdd2ac36d077d0989868940273e35509474dce49b4cd37d45b9e32991680e3c2591a9aa093cc9574d688ecc7d493fc8fd166068fc59b99672bd700a9f26e46c08ebb525ebc8d4acc1e4919367f2d01c2a2453f112127d57dd7c32040011eba622126f2891be89d44711b4f622bc9449c01a25203a773c06202ae2740e99222d01bd782e892538fcc12718809e4ce5a896f4cf0ed858a4bd781c6dad3836c258c19f1cb56a3692723ca951467234128dc09f1b2e5213c48ef08d6960e0fde0abea555738c62a56b18acf4113233c4dcb6e18638c31c6f8081fa33cc2c5cd7f0d54eade8735a50e9714106f1141df58893ebd859580a2d429613de252f71a14eb73bb0bdb2b4350e7a0601b9413875abbecb74e6763ff68b82f5c5992d591624deb48d9a2d374b70eacd1b5065607593610be8e41d5571795a09c7bf74e9139392dc4f29506eaa02cab65c12838c8e27e4a761e1e1e5893d23bb979729a1c69ee1d1e7ad29ee4f0c71de592fbe81f0a0a77947ff187bb0dcabbd3f4e8c6a1f6e4e8b2566b510e210afe46af40edfd74372af9e17e1a559534aa031a553c63bbdae1c6694f9e7b64c27ead93d38de2bee6388ee3b8d844a6e250904c751c0aeaa038c423e56bb5360b4b45cf5a8bddf063b05fbf7590e05e6d7ce570c9d2f84b477479142962bd5f247bebc854ac350605b5c53c282e71a7b1479f5a5809287a60b7aec43cfd4d4d877b54195602bbf50a97b87e8fea8d8740d17dc8c425ae7a877bccc7473c04c3250e9714d0a72722debad5349dc5ed58d0867dc8933c6c928361284f550c9229582394631378042ce223873cc91c5001b046be48f3e830b1f05febf4e32f204a6446ba32862c83b4bb29adaacfead2d9d27a354fe5b47acaf9ea77deaab507bb6a9594d5a59472c2ae47ca1d969414b0f2ecc38ea721c830ade9e73ce693a49a8d6a4dcacbb2682405ac2c4f245bf550f8d1d19fd79af5b46fc9f6c1a4532802334dc59a6e9d396743c9bde5e72df5a74e9e3f99a6e58d3db193d0696fd361657aa3d3de0d052cf9465dde4c22f1464e8b0542f9195aa104142801ca32195aa164275bc127c7c8d08a2a449195642db7644c78227b195ac1842239830db0d00a264891b3ac3dc35e3ddfcf662c1ecbb078cc896b731de698d19b585517d239c31adb64b7b057596321387e9dadc72a0821d99d893146ecdff310d7adc72494c29965b6cb46d75e654a740d7f581058ceb40d07ca6106731663c4b2190ef2e0b667d997e1eb6608912432a67d4ae4ec9a908c4d27b24d3d919c5db8e990d97a86dd2cfec27e7db3891c2920f317b3856d2eb8edb01e1b7bd6e219fe3ad7b7c05f4f9d2c854cedc23408b357989a3984a816cf3e21cac5337cbd5ecfb2202a8e3ec0a5ca43a68e18227bc49f8eec7147f6885d7b8c22da88d770e778ed157694ab6d385a1eb14d8b0e6739942a9996e58061c7361cd96db4ee57a603ce01b7641dfdb9aeebba361d59b670fc7563147146757947ef2b7ae9d2bbb8dd5b5c7b1a89525fc588e7fcaa19638c56b576d4675fcc194ac4b1a7bdea333245fae4f057b7993ccf43a648f8086c57f067710a06fa62d61eb3579992cff0fc84cccc3d4258618a847d42d4750c67d9b56347c14168e7f01773469a55bbd1077146c425eed5b11f215316cff84ac8ccdaa9902a6bd8add115ddbae1d06e83e1fabaedd0b2064f18e661efee841e863f4bc394d25bdb0d7a2b9ab90f0339fb3290b32c6799d391e57ad26d696fcad39c38cba25665af4eef7793a9f678bf7f3663cfe47643abeaaf9b0b471fc419d5adea3432f6441f441b10661d286bb556469c8a48df6c958b32c80c7ec64b4c5373b8e07640698e46d1a6b4e6a0a1f92147cd1cc8b0bf3d4aa910edd126700116fef42028630f5995a2b2c50a140c003d795a2d21cbf71172017c8833e4673a2546c8d20a335598a1c24cd0cc1466a4301385992533509879c28c136680669a30c3849925cc289951c24c1266ac98f99941c2cc11668c3053c54c1166a8989962c667c60033059821c08c0fa41429b1254f18812809021dbc0028c3474b4254b5689412e27a29a3ec283bc608e3845546fbceb27659b29064655dc209e7ab0867c4eeee892d4ff52cf6c09a3aad0fe5eabb608d2b57556545ae9c90abf9af0ad5aa3e831142c92199a7e91979aa7a03c2e699f6aa4f2c234f5508ac1358d33991a9c95325c9e6ed9ac853454b94d69e1a45a32015433892ab57a14665d129959e2a45a320154218ca958c925cf554a05c452756f8d8207f352857d5112a86b093bf7a45ae6ca6b1651af5cd2455d72457afa8102493a750754d646ae2243e1547abfecc03b68f61d1012b2511a414ed55efbb90ff6472f5f6aa27b9dc0eac44434662662466c6b5a7bd2a06f67b4fae3a279d9346a101c7e274671ec858e6d510870c6fbc412cfc69e249feb42c6a32bec2a59f236fc8a41afb6945b5350d1b4a28533dc0537f8a6ac50c8cc1b13234e6c4de278a86c00a2a9c6439334d2701a8a514ec7c8e191ce60e4b16361d1c6441dbb6cbbb9d5eb865d7b2f6608c96d629eb71489096ef6e9f65adc9cb0d88ea16d3eef276a7162ef5618dd6a7d89f37b0da371c63cea433e2ccfe912373220e0e4ea3644b097bc6186344cd0cc7a2c242eb573d369bb013c77ad59bf90063627fc6227dc40fa1887344ad47fc3042e8871147cc98132395f608a4d1554b991aab5859182bc4335642293bc29845cbd9ddeda3bbff830f1e8c10cda3513caefa8c5e1e370715700861fd8d6acfca3124cffc0dc93187103c289d4264b6e829be80cc11bbc06e7bd485a4904117394760ab2399d96481edcf6d6ef2dab5292cf7d902bb7d9bed75db55de755bd76124a2ab6c5779d69dbb36dbcde8cabbcb7d1bf794af7457e5dc558159656e1bfeba7319b7d29db3e15038148ee350bef20c6565eb1ea4512b47b9b18267ecb61d6e875bf716b74238adfbd67d3bdc388c44b425d15ee3e8e2f659cc51796fe7baab9ce3baa7e0b4fc2a3967f00056e51d15673892611532a4c20c51642acce044ce5e5d47779567dc57ae4d77ee5997552d6e3850be9dbb2b2bf8eb7e8198579ef28dbb2a5fb92aef6ea888de729188444f799faeb75c98234ea3ae94ee41926854b7f24ef9b7b2b2f29594241ab582bfe7148b575656f09772946729378920429c046914cab71b28510b22e4491cc184ed58241a09f26448a3381738955661452928efcb344a6574f8c658f047c2ae6d43444edb7474f76cdbb6ca755db722c160576acbaf4bdf6dbbd175d85b81ed7f357358c39f10b923ab68e880c290933cf3079f7ca4aa87c542fad4a7e920edf5ab9388034f32f5a3a11046a4bb42d9c9a08b8e8d2d446679235fc1f6607b15feac0b9199e26f48eed334b4a4c5dd2f89cc3d6b2b9628c9f6756b1cf0d671c05bf3d571cc57b2fb7213dad4dbf78d39cb2e253c8e09252ee98097c701b3fad12586edddd42062b6dfec47f619dca1079bf2b9dd408171239dbba467f0072972bfc513b9cfd9c3283491e1455644c148ee73562c7992dbd2faf10b9285c86cc31d7f2d43b4781f7e960ef1e7820249641b791ddb1b5ee2b8991506e226535ca292d2e3c0f4dbfdaa8f8e80ee560228e676909205917d47e392f5c35bb24e0f4b16064247add2b28e63c310c34cf19744555d2547cc9d7c8685c8148a6dba5bd8467421f7935888cc1d9ea28f3eb720ece1e5a64384610b1622738bcb43fc95f0748185c8de86e0de027f3173ef8f4886774223f2101f9eed7d4264e6f0a7446e1d324f3c2bfcc90b9159483ff6fbfdc65f11db8f0fe04eca026e3bb0dc1d5ed245f74b228be47683f4afc5b3eccec358b3e3b09ee18a4b3ab6d7e3d85e6924bca25737e6ed22b96e5d558b169f2fe9b05e1d87d5e2559eb8a4a3fa3c8e16a48f3e2124f5a68324a2d70606617377d285871b4c5ddfebe7c49f90cedd33d8007bee197c8085562c619239a96da7f7b35f903ce7a1f5eb52abaf0bfb44ebab8ff4956f9702561ce2100738e4f9c61790d8069e7bdc82b0e7b8aaaa6895b5d65d8eeb4ad64bd9bbdf640b97b6d7df644a731219bebb38ae0e8ac3d261615a5d04e1fd482702c44d2e552fe998df8e63e20dcfdfe40a9774d057c741f117247fa393b01099b9575888ccf0a3df64d8d148eedab3dcef883cfacafd82e4d155ee97441ea5e019216e320abe40ccf672d3a192ed4799769ace41495a8bad2973ced93db33e2f7d7577ccd3bedf84d9e7b59187d2c2df902ca433c7d56f667b528b66537af6a765117d536cd96f522a33a517e82cc25f125948d7b6b8bedb5e3e939706a382edc33c3f2fad10999b02310e7188431c7458a073878574e6b0c416e82ca4f3269160cfb40b6b32ad2fb3becc79cdd553ca9eb0a65ef70695f5afaaaa2aca4a56b2c274fe90234e3aa7849566ca8e5f9f56b31f258d534e594929a5f778fb784b24d62a8613dedfa8eff17d92c49fbc5a7b5d610b65ba90c11d6c5b45b02d4f299553a65a6b6dacb3659c73c60436fe93c93f3a9842fe9edbfaf418704c8921b411e18cf82fcb6de188218c9142d2490aba1f46c0c7d75b94f6848781f014ca2a299669cf93e9aeb536ec0abbc2aed0ba4774f78f46c1232c9861c442414734ca8846b58fb7270363e2e795f2144fb2d04945ab00ea5475819aadad5a6699bd48888e847df7ea16d19ecd695fd1c8147db55e6125aa5bafd8b2ae44b5b0e612cdf6b9f6c2793a67d085ebc6636e9fd527b522abc32499da70eb8826cdaa68756435679c71c639e3dc663531d11cdd5e34e79c739226cb5c992af3eae824e1d661c12b2a19b73dbbdc9c93833574ce39bb6a65f373ce39a7bd68ce392dfeec479ff629ff46a38ffec51f7b9b51ca1ce13947733447f323fca5fc7a96722390684e7b7d8a5244974864a79d737eda4f3bedbfceb187d05a3be79c73ce39670ecfccc2d65b9f1bcaeded26da9bafee9c33a875ecafcefa6571a9abd69c73a2d0572fc27d439973ce393bcca3e2927db570c9d6f7a85ef11028ec87e01edb10eedb6f6a685abb3308d5ad1351ddc2509e88d8de49ac6c6fe36448dfc33ac543a0187d88bcf511ee51cfe1215d9d08faaaba12f2f44454dfb012dd3d3838383835a22bb3bd152777b7e2e0e4ec4201a96802929c4d0ecf6d4e6dce6c4e585361cd9c73c623e62d5cc4873ccd579c439e660e8a67e4691691ef4942410644cc2f2249657559c9c0180b5f61cafa856bd3d3577842d9284aaaa79ec5b5bd299b07f6bd062b3fe75ffb428cc4cc4066f2c44684aaf8c1070f26470e21fbfd2e8d4ab155130a42061b05ef0f9797a68ad887f66077cf99eeee8e34da83a7e9ea5e96694f4afcf56d85e92bdc8da9d4b1b1bb7bde548dc41e1a8d923f8c3822e690a291d844965088e6871f46c02b4690e1230822ea47f4e4a10a1c1a412844219066532bd0ca5476c86dd6add0ebbe7267ba4f48ce91a91ff224af82bfa7604cf2b1ece5017af4333df880235751b33e619492a30163e83f1ebe207275eebac013fd0693e9b57be8d167d7ad971651dd8720b9b2b0acf08f5aad255dc61c21c412acc027063e316766c6874aa351924857f45a72f9c878301efcf9667208219978333e78300280a81cd0935702bc076120aafe25c3bfd001da205d88a2d758a08d161735308c9136da789c210f8f02614d89367e20451b405aa28d9938c3830163e437ada5b10c8c39e6e5f883163217aad8013df9faf32bb23c8557c8f29514b23c1058859904c01829449c210fa390bf1953184c261dc0a0830e396091430e2d4d5a5a4a5f28955c78c1858b165d68d182740589c4c2051696952dacaca86841452545282505250b2828232c8c46a22b88449689b59d15ba8eab02c76d54d8362d48d3b229641926050cbba2705d7549ad1614b2cc21650e9943ce1db0869432cb2700d6681813df597e881c42c829036bccbeb1a4d686acdf8385ef0be10962152231e6904197ee18331887fa5a3d5273c854ec403cc957ffacf5ef97f60d7f32b1031185fdc238b7f01780fc451c527c414c0194a73882ec01c03c19f98b4332a8fcc5a1e8040bdb2998b2f264802c1f03a2aecbcf80a97a792fdab02e0f03d6a02ff202dab070d4007c8135288e4bc0187929b38c433842911621db20ac118544341c007dc01a5ade5e04ec42dea018f2f6c134e42dbb0bf9054bbfbd884659dffea351f5db8d68d4f5cd760a65fb2481ad7e84dcfee33107d68079fb1671f2b64936d87995c7d1a7e84ac8be08e31a004fdb21877dc098ed7304769ee5f1f2f344c8cfbe12a34b5ce23e048a1e2a5f9927a2cf8295106124fd153c24055b79da2e513014d9b7c31a28b6c78ab3ae8cbb36c71f2c4021c76d477d497b34d2de76e8e38525b9a461203ac72cdadb1e73324d7ffb26a3654edb4ed3dc760dfb686fbbc4c256cf44d7c7f6ac7dbc9083fccdd18535a20b6b6a70a7b1c4c5b276a18f178290b98be5de6ec41c18b375356b1722618a9cec637badb6c39f25917ecffb64361e3066eb4cb1b0d5a1cb866dea91d99719b21eec949fb0669abe8971060f2736a5bdccc22e0bc3ac26c3112549baa68f5d560e29f8b0708a251cc9d7adcc925e65c32922b5176d2c0de214adbd28922f5d403aa5bd222dd4a351700a253e1ab592fb41224e2cd2a9229a8f125e90fbd148a7a018768a68149c620939b9ff435e1246216f2d77c2ebf24d3f6135e2cb8b0c18181ef0e176039fa637fcc523a4169bb26d3c649165b8984c3cf03001972c037f4564202e79871d584ed35b7c0b899462adf69d483906c6bb6b3a8cbba3bb097ff1ab79a340ccff6601b6f7e9ddb5d90ef3e970db648ec13264c4de699efed6a80d5f40f64e772cb78b34ce16e3b603e6321ef1b7c365e0cec95e6e1fe9c19a7eb1c09abec024f790e1143200cad94f325e4ed3945223b41ac282a50135aab5bf7851c523192c0d27f200fed11e99aa6ab59644fa3dcf47caed86ccb31eec9dd162064dc738dc6ec4d86e74cf7abb113718780ebddc0aa72a62a4f2a9aaa87e945440d592eade8ac9155593f6a4e7441e800034ef51a83d2657109316ea5aa751302f321ee3998c1be3f61198cbc0ad93454dc6856142a851302e21183f3d83712fa1d3bd8260e08071b5c06a3ef87a32f484d6a3258171613ed938cc85b9997493ce02a681ba4d769b4cc19a14ac79b9361ee3c2dc471a658309d3296a43a66a489e7e1a75bae95149a746373d2e69948c9bba9b4cf1a647238dda6e6a7113cc4d97b9e9c54d336e7a74a251d94d8f3c8dc26e8271d3bde9318a466937c9984cb4c764ba27532d371d9a5e6d374c78c646a10cb71da520b6c76f8f978183b48ccbc036a5185c7a39cc320e73a9eb3eba2558733d516261fee99d07732fc6c914062b0cf564799925195a923f8c27cb6739372b92e1b45c6c479ee4b527b2fce5c9f230b0ac892cff82899f44b216e6c2bcddd87261127cb27004a7a66fc42ebc22df1b7f723504970065da2353b0a6521ffa4361706644e6663374b28c8c4b430637ce8d22edc9120f78877f1e0c8f46d0a533e30268a0fb974399b231313131f7616626db4c40e65210f1dbb76c3dc1464c7da4d8dec9381604fb5d439d8cc7a1f6301c2058d3e3bf4bc6bd9e24b1dbbbedddd675dd769bae81baaeebba6dc357d000aed267c46039cc0f1428c8dfa553871a151b3543a62a1f20da74319971319df8e283e178d3b7c7edddbf7813be82dabb84b6c70ddbc45f4c1a2862791732fe6ddb26e3d29ef6647cb505863025e3a66732ee257405b5c7c4946350a34c996e374c57d0c5e412aabe0ea2492e1d2d9afed5ae1a8a4cd8fba2f46b089e240b8ec1bd5c30262841feea100f7284798cf9d0570d9d4ed3d590bcf745e5a33380fbcd4ce37adf4d3ef170181788cb8d1da00f0ff77a8215c9f2f8c2f64c3766cb0a7bd5adeff5e41ab294d8299c3c11850dc038dc6ec0ed46cccb667a6c528b6653ea57bbae33ddef25868c7717e632ee8eee1d0ccccbbb97c32dc630ddf4cec1c17e604dff1a6787e9b148a3224ea33aa7aba87c5a88cca6f786c3647ad6837d91c927986f4db4273126b0231d96d39e1432b1223102d1309cce0a82edbc693b40b08d651ce6ca38ddea497b95143eed3d1185b6d31ecf4fa34cf88baf7cdaab7eb0606336bdfa694f9aaa18c269140cfe629ef10ce6529c6a08e65f35543dd9ba7e79df185f0365914fff1ae81a82b930cfb82c37695564f918f7e4840fec477b32eda1548969e298e2574df8b35712798a2819fe3cd1062c7c1ac57216fca40a998ba3fb86638c8fdb5f9ebddc06a23c005a623ac980e9deb8f4cde5e584bf5a65e0cf5a18fc91b2e91f29bf1c9a301231bf7cbb31f776e3e56283a681940f940007d694601c884b8e29c59ca6615d030bba8053f3d9ccc95c985f6e8ca5c378bc384a87edc1786f40f48681b86498c378e9964487d9e630dd987f626e4711e3310a24765822f73328c466989b68e4aec35f7f3349402637b6897196673dd898186390509652b427691559c2b83667516b2a328c3bca99d4aec8306e8b9c4dad923d23ac2897c1dcce19d5625c1696c7f896a45152e55fcb3f3b7575bf7bda8b21e824377878d29ec4a131e370bb31e334bd6d34be5d205a9639dc6ec8b8c001f064a0481db98386f624932b1a08750dc198d42515eceb500fb7710dd5a1d7f8cc0d4080bbec70017ceed89651d821fa3d78f0c07e70eb7c14d15d4b6c3bb0589cb96363e9048c912e80352a103376f96b08d6c8b2fcf564000318c00078c8a6067367ce5ac37260619edfe230de83953ad77643ee543dc830ee968d1c9138ed495984c915573001ea20d9412df28b9ab899f0974436956a2988eef7177f37b9eb6d07e9dd12b6d4020960c8c9a70c91d0a40b196e417418c908c3bcb8e90a91fda43dd935b787b20b2e8a16dfb61b2df08ccdf7029dfb2deecc708339b7e180390524cce1d6025f43180e2c0c1abb6a5a7125d33bcf0c7361ee5b325de62a6726ec098b6366d34bff286c02db8331373ab97b7669302d02fbbdc86d3ac5a929424da5cb384d5f4343db0dacaf27530416c3b996b0f11814f6bb86280dfeaa01f0570b803f6b7dc01fc9057fa44cf177cfa33d356e26ac03e625dcc5bca3456e60bb6ba851f7f2d7934609e0f2184e63451ad5e2f2584ea35e5c1e33d228d3e5b1231813984ea3767897726b898569716bbb617ad683bda7e9b8ed2805d1dde52ed806003b3c6e38220f1888ce5de2e130774bee15c0bd9e5c0ce76245b01ccc0876046302d3b181eda0ab03361e863ccabd9e5c2c00172b723117173b723126da93a771b11917db91b998131acc8d426fc8302e4b869b0c7c0db5878585711eee0f23846cd4e861a61a6a148ccb574f1a157369fa67f3cb61ffe557d0e9359f7efcd5d3574e57c11f29573e30b8844f26fc916c87bf93f0e7c1b0b61b3138c6a591da077091a8f277a52eea22314f95cf57e31dfa3400dcd21599744b8d81e89c729577869b8bd3748cab9da593ccb9dd98db8dec7d775822c3b839e4d28548d002132e7a5c6814ed4920bac378063753b78d2e105b1139e2af74202eb97b3fe612a6a6fbdd641830304dc2f2b5381097ccc2f2fbb801d1ffe3a6c325ff7d83b8e447d3fbd9d583d50e4426c33453167396f190c9dd4df2162f10998cc51fe4cf25c3588397c8df718653202109b9851643c695c10e9232fe18efed7bf98c6ff88b69dc4136415c72bfb18de9dd4d2f3d335d9877a5bbc178a9afe9d9d44a77ebb6fbb9e4edbd6ddbf6acfba5fbb9e4d28d37b51713d087713f93102f2f1d7edd1b733bb83164f44f2c6fb80501f3eea60bf3784b87f11561ba30879b8ed2b7d334fe8ac8305eba11c633182653115f1119c6673aee575b8e985f0ee37edd6130b703db61202ef773dbf1f2c6362f2f619bd3fba6afc3405cf20b9ea7b738dc8260d171c2325888cc313e037f315888cc321e65bc878881bf9865bc6574ddb6955e99de7d93813f25aa6ebba984bfb8451d1dd47d366a7b87bf5ef20eba5fcc5d16d7a6a3b14907d6f53b8ce9c0eae89b4e23237ef1edc22bbf78f622801d0e3b35806b48a64632872123860ef13ae460732700990bdb7bc1dff3cbb70720c6e0af9e64c0c07879005e5c9bed26969b4c7ff12c9b1adc70bce0aff3cbbd77dd638c3cd01880007690790eb765870bdb1300fe2e833f970c93bbcba091bbc3f890bbc3e85e1a3aec148dc31ec00ea5cb1c364a003fc58899c103ee68e00f6600f8a3b103fe7cc8f102b8b03d197c0d759f8165e0afc66098a11818061ecaa712fe9e03f0970b01702f5e5e20e6ed2f17e600bc788bcf4d47e70ddbbcb8e9710b82e5a6c34dc78b9b5edc2d01f085b6dd78bf22b61db0bdaf881c3b7c23458edb35fdc585d9b4ddced17497b757fadbeb107053daf047249bdee21dfe80b8e4f8167f61c22f5e5c96fbf9c82d0e80fbdd24c92d8eef57446e016b2e9eb17fb60971939f5d2066965b9b0e95ccc272b9dd6f6696f7cd020d4f6291782426893d910702c1202804859ac49c8833143f970c43c3870c835a7e3eed482e99beddeea6bb637bc772e3fd64721cbde55f4de5a0830e17760e2d7764b3f6eddac4c3ac1d6e710232b9843f1e19884cc6dee2b68b7b03bb37b0f7fd80b864164c9360dab3018b91a26814094fc025a3f434aa597a6527cbab644e64f9949b19694f1e43c14846c74698884b0d14d8a518be89ee114060c76d5c0f846613fb412797904c5d6c8027790d34f9400984e43514cb3045be92fcc8d4a5034fb20e5d492e276ac8dfa5e3b3440df9ab43d710e9629f4b8b7a5c88c89b8b48bce968dc820632b88355c12179be564969d7f600ccf105fbfd873405e8f3040e0e5ccc19d8525fbe56219ca692768441f68b3842304a92509638b55a4b8a385103b006ccf2b10445aa8833333333f3d32b70027bc6c042924c0505411249a660cd3d991c65d4c007b2844db2880363e42b1c93c86d049b082cfcc429edc9db2858781fed491973228e3834b0f03e9c6833c8e001acbca5dd3a50aeb41fd6a2993942aa1489f903c6543b32158fc853757b04d778a45a893fdb78ee5808c054f7ea3f608d98ab2aabaaea2499ea70ec91a7ea1cae483996c156187be494595b72ce96c7ae6cd96368c1e57d68afaac7f011f8079ca1d94860213582091b7ba0467fc854866728a5f5d4faac2a8a9164afa79b0eeb1a7dc5ae8d751d7bbdd675eca3b35eedd8d54e73cd3e8de85345677cf8d15ef5d8933f9f9ef8530635d05bb8ea89c2d2631f86d163b7c16ed9466155add6fec0b66af4f5a23826a9aab883da09225371079eaa78049eaa573f3918410524559890f55fbd71750b6772b6272bcb7a5773563dbb8a5b75fa4d99a3032ed05fcfba48033320c1a9812e3498b0988c4c65f8544af9ef1223c94e9fc94dc7757a5d79ebdac84cc6ebf893bf8075e9e595b9742afba4d1a7293f5da64c7bf327b01ff4a990665ed51463f0c2b4b806d978482353f0aa66dc5c60297d25447b3355afeb7a6dcf16b1b5a634cad2648a06571eedcdd7a9750ad64c2c8435054bf111f8477b96142cfc0785a093cb03590f56be654b591d68926cd774843e19de05c511b70c8d9946cd9e91d961d24f38e7ccb2e2e0e0e0f8d4f47f08a18c8c0c3cf5a165cd1985dc32146bedd5c0ed466daf2726d9cd0616feb3140c4277f1ce44a688467d97a171970c03ac7ca8c46c9595554d32a6660682000001f313002028140c0845a3e1783ca40b73ed0114000d94c04e745099a7414e31638c21861000000000000100000810004c8d4425805e523568580ade266aec1755d39f3940a251a470ad2f1d3a415541413c76766423b2f0e3a706dbab3981fa797788189f29194846d2adf304c5839e844c72de243763d520e0faf983b1288c1f08cef3f1f91b43c39f8a49bdaa3b7918ceccf6bf9d320e5dc9f9670cf364be997fc1e2e67106da818d2925a4a9449a33ca77f0ddc2f5cc61244b88eb61e700cabcdc42f498e2aba964f254aeb10bc81af41e71e7c7c3487fd6a046a1752cf0ee6a1e53cc2d0dd14c9f0ddbfd4f523f9d454b113ad78ddba5aa33008c85f62e65761f6c86f6da2d471a4f4e744e57ab669b3111a59a41498ed68e36088c525a6e337f45bb6e421ef99b186560215e0fc7bbb943e31f377d65bb5ed007425747406248959abe2ab8ceccec88c861363125511b3621a34cbd53d526df51c5355de699aa2b68b9a867366c8f26c93664cf72df6339e1c50bfa1632c2fb334067919ff883d3401e905064ebb49b53b026835b1a6e14aefaaefdd4728a7151c13cce80b6e25f855fa25486c6d360d18eed65c0bbd7ce5ff8cb4fe20ebc0325d4fb3de57931e55d4ddd98af600788724b31973da9a5e1a4c169564e59998de65d690390d8a6c79a9961e8a92170f98c59013af40581764df317efe290a6ba69d3649c16b0cd6562ebbc2b52ed359a49eaaf6958141048c691be4a98a46c34c5a9dc90cb553b28448aabbd32d663d4df42a5d2752a0b95f8f5d4dafa2e81eb612f4d140b98878c6322caf1903268638ed073c21c656d442a11a51398cb4678c8afd8bf0e2955029a48fff10adc6e08bd845ea9dbdb35d938cbdf989d30252392f4e25525efc046511a5b666144107778a0a4625e5998a8304afbeecdc948bbf658e9cece2d1140d15f7b9e8e478ec8b30490349334e109385aeb49fa95182a3a0833403d0e1b1a79071bea0cb6ebf000b141985cf429276114993ce8c8389748ae8c64b47c0dee07319397bc9d034908c09d7ab873ee9fbd8baf696f8107baeb070afde122df8c926ea569665e20497ba1c11d745484d553429a6bbf630c1b18db4bc14ac4c36e1240d018d075c40cb985f98630ef5adc7cd181e06a4bec3fb074c0b41b08da4c336b2e71fa886ece374505c2225d2e1710c21bf40192509df33a862577721193cab86e4a1d8297c9fb889af53e9b9b127ef9f83ec57990584cec1c1097b01cea2c18fc992356956a8ab01eac4d3d91342e8cabf50af64aca55a8e953cbb8b7ae9db506f6e7675ee4235fe20c2174861d04e9fd6bf062a428201fb15667ae87aaaa4368bd99629546156158d6a56580090654daf6a1bb714fe26705a786ba2f51f906e41485beda0ef4d8bdd81a3035db8d11b6e10aaa722d3395ea65d78831dfdc4860c67bd78291e725288775cfa5fd721a7f947af4360e89245038a77b4d6915fc4f1d5b9849446308ea7cf5fd338f994cce94bbced5b61c6da799d555348c595e7bad36c28a170fc471c22d324a03af79a43fa6ebdecdee018c96f1f53a89ad6d7b8de7e3ee029c84c9d6f52076b3ca980434c12ed2a847be6ba904a294526912996a6ad2b54433f46a387c4b10dff053e62e59758c2b551e29c1ad3285df4f45a974450a7f05094f42ba146b07644bf64c45a243d1c0d24f519cf585fbd1f65af966161ec9d7ebbc096ca8e4fd1821efe37a4ea3cd989d4a7b377171c0b37cf2322092cf9caf0ca702941b1089a7f700dd851a040095ebaab5e47834c5425ef016ff8bc2dce727fe2acf0707d1c92134a70b59b32a0cba597c21b9dce19776a138b5d8d7f9c86a1d28edc5ae4f70aa24ea2acbf1e202a8d2823b54b9d2872174d02fd41a73d16029fb0507eba11c8e9829af74ae894bb145c6fc7afeafa78d7209f479c3e4e91bb581f61aa4cffd2a18d600acfdcf2412185b4bb7f3ce5cb11f5d912c0e049bef8d94e0472f51428e53764ec82061900da5428804f0d2d94071cde29259aea97154622ddd5d81a37b8fa8adcee2382475d0f92424f3ce5e15f3426d3367e56ad9afce410053482783ee821b3f3bb46cd783a62fa1bfa09d691779bb96b04f021e02df10d7a80f25e62d81eb29a9c14421d9b9437e44b2c0a1c847d3b1db09509ada3abe70d943ba42f0ec164a58ff8beae7e87f5d34d89608fc5e0af89e1e52a6aa3f4b60307702324f1ccb4356a109e9916c319f93aa0d22cf4ed48064b50b60fe8c4af572f3f26a2454eb32ff77e78bfa9a9fbfff094a207cec993bcac9db1d239e27f867ac5d93bd4108cd497bf535263ab9182eb4a0246d6849c9f36951d546400249196aa8c547d92bc9c0cabc5ab4a265f412d2a07ac25db6bbae3890fd7c3d5cfed70e159f886f6e88263e6a79506431563849670148ec4e83c10757b61dd898569a41f502f78038e6d1ec766a9c367c0c5e0faade95d12be43d4c5c6b7d1f48a1959ab3c71b1d714324942a85dddff96bb34835e9d0528dddb4bd6f58f00d2e80e025a560bc305b96a70d5982d2847b89bc8e782dc42d88bb56bf82931af0bf215ce87b3625980da54bcec3a8d60f5b6caa978e9b2173cc524191abe32559492a8cb2f0db08ca737f9bf98cbffc70bc15a2a0844bc4c824baf7269dc585235acf63d209871d2a5a2b1d5e4721c95b99a99938eff3d59d2287c2d8470543d20a4a6f61cc44b3a9e7c8871e2af11a8b7d13a59e9937788497ec454e500e53a338aab84d4fa4b3298e2d086dfb193e9e3e0dd0860404d63426bc081ae0d23b68bf552f81cd4d83307b7fe978fdc7268b37a1e589982ff618fadf0aa3cb04a41b29db45b3b37502693ee1d5430b370208441bcf9ab7fc1f1b37f095448bc66de73de441826bc1d2301884f175d9fe9239086925563ec898fff470c44b45d81a5160f12df7158818162124cd0e969c8fac07573f9074a3fb7c65786d6af73b82d87bda395689d83ca7af58959492187b32a89f610ba616716d842d25149574933cdc0d61d89963b8924afbfd44d4a920f121c85a5d474fb81ea8007ef24039635a064611da80030d50f951df9a655d9f44b2996dcf47b847490f9b382de91360bca503de1652811769d889f68d41085b271a1c621853955b1001298202c2eaf5dc31f1e489fcacf67ff1791f30ba17382a9148e76845f50bb834450949f594cb13101ac34572e1e63e686900be82219fe39ecc0e55ec4a0af4633d2b582c1a7da7b0d80685836236778119cf2583de7a330ef834f7a4070e1928ba94bc6e1cee99ad9934e2928314fd41b45a9672f460210c3f21f85e61d6b2183422106e54466b34415432b47eda6e29fd990f92a3f9c13a1a030f8ebb16b36f8921a6264ba6b510ac07749390dd295e5b0e0170b942b8741e2045191210e1635f4fc272ce024f35704a048b74463da01fdbd312d926311fcaf377005f984e545db946ff124bc7483cc913d4ee1f56b051c92567c3fd1d4baebade8fbe0a5d67309515caf04ca2808d2832198df6b4fd4cfff51a97f8296bb45fecf47b53f64630232f4bae08c6fe3bf4de7bf4a22510440961ce624d120531beee620858012f4579d82af57c4604400600849cdb5a843e1be5c1bb3495323ab75ad5fa457d8961bf0134a8eea2d0f25fb0d5a596f1722792c2c0dc2e1c6c75b281623dc5bee821276449a21dbaebb887a8d981507c2f461b3d655dc5219af9e8c61d1c52898944be930318f893fbb5c6477e41aac9761a028a4d0ff0ed1d51f617b9c786f0dab2764d96a02a54c8d73e647e8e586ecb687564ac87785b7551efdff9b3d72abb619f2a725db8d40d46d97ad905dbfb3a4f8cf3ddd0e3727728c8297149268feae7df6da4dd295d27ec45600e32976ae3560111ad09d10170719f71727dd0142c5f83cd274470dce1bc1d89e9a49bef24b8f9264d2b6c0f1d3040f85af1c7363ac60ba47ebf5ae1c6b3be8dfbf726e01c742f116165b54bfcdde70929638efd6649f1af14d6c1b47a64f4969bf3b455884b1a3ed6ca1e8c4253158d26353bdccf30c6a628a088c4dd6df9aa28a4bf861979fb9205e055779c48fd8295953257b11c36c7eebe358e4e78a55589cf4063060131f92c12bdbb9ebb99635914bfd56271f047e90d2b6dc5993b5b928d385f2420f5bdd1d361e8697eea105ed2df795516826257aec6fe9b06a0d55f6233e9d4a509ffccf93391f771788e418b2c803480e43028d618040b218d5382ecc71c5bec8f24d84837814560d46a235865f9f2eb6eb56eda6214a4c46387f7e9e6a4d731db8196755464e66d4f126cd106e620ba9b08269ba09b10b7de4bdb6c17606ab788d9011752c835a075584f62d525f5ad340ed4207cbe8f3a31c8142d1a3b608eb54679d6920422fe9cf1add9da6bacc2db4e6ade16ddd3adbb798c55a99cb2eb5faa045665fedf40e0cba9a24d3ed84bf67c3cba61e935f0e17efb774ee15a6c874fb9cdb6b868d7b11b8b32fd685fb87d9165550675c57cbc737a4b744bd51c646d64708c4958be1b01082c39a9ad09c71781ed1d9eaa544c9c36b402103e07d29d8d7e84d526458113473cde2814e14eed667b3b4d0cec69f04015053bcaaf3484796a5ccfa2295e3dd2e08e9ef3a19b1eace9e6a7baee25f68334cf6d2cdbfaac05cd10219bee20793ae31c209b0db693311fd693b3f3f7b57c7d6c190c084c1d305e6e44e1f1e38cdddafcb94024c780460d77d2d6a050958490f888e4b0cfd82e157b99bcac9f4f07e50e2ecc9d9cb0dbda160adde02cdb4b53b81919007aace8dd9f5e62d4f221c305a805421abcf8d25ed713c93e0ec480f35606f4223b0b7e7b9b8bce3a370213741efa0ba5c2ec979debb0b99d9381f06008749c972d30611e5dbf84092e7d079dd230166e1c2403f1afc09d9d30d36c03a5777e6e8c880323a2822b29988251bce5dee174c8d398124a5332148c5a92f1f7242a0e3be3aa554c224da54adf8ce872322c94e0f36ca9f81784fdcbadecdabb4d8575914bf49b33e23794ddbe414bf50d94f6bea1fd73970551f07c81c47c431b7e1011a0ca4f97e715e1e18a9d1efa59450268db34d28c10b0020da47af41e0bfa138121d6aaa9f63f345eda7ef0797edc828c457095700f787973d3a1e2694b875191bf15ad8055212a225c8df9dd4e4815484047b77551748aabc03465fe55abf42754f42af0bebceaae18f1bda80201dec851815e78464f597c00c156b0ceb94dd65bba1412f6ccc0965b6fdd11556ef46732a94879741efd6ea213e2b777373d4dd8bd0d843d12e0ac9bf04c4ee3807cc64d97f963a4e2be5d42d30d4d0db4b9a4f36104604de91283a85a160475d1b37550a9a9659c275561cbc6cab6d1233c2e93a813164ad7b7eb76a3e6e50f549c3e08bbe05bad1218fe04bdf7c5f7d9f744eea5b1cdf76f1f18cb81ba5fa4b9b179e5a3818727221c75cdc56b628e2d17c6ec794da91987d2ccdc4f756c4b9894f813dbf2ff1e79692d81e3f63b9b507d5e281ab1fea2b6928689d2520fb160f75f89128ac2bc6b9e66a9b5b13e1bec75614987776f88ec5d8dd72b2af5970a549fdd0264de6ec41db83536619ca0da0df2636b085afbae774b915d89daaed79dc4aa6ec5c7367befd4e12eac0cde3665f341695ba5586a81e44eb1018a895d9bbdac047953e8c9a17ae18e06176570b20e4f42b6a7a1077827703f01a1c67a82e10e61a06a179ab2d3b75dc50a426d123a1dfc9538d6e6f63cc9e4f32b560a120ade9b6b1b37cfea039017eb09b03e46a6fd2d6618d0f60d439821e5fb5f968acee8c63367d87c79212586d102ac2b0692a94367585b28421cbfd7990c694fd9d7bc3606ead398262668ebb55a232911779a5b4537793989f07d3380e0871f204faea4e7c136db4964f84aece16a53b0afc66ddeeead3c2f9ea7b5886d961f7c007deb3ae89ac86a21122e01a45dd79857d2432b9fc3c347af1990b76f40b63c9cb23011aabc66f305b9b56b117acd789c4bad06a0e13df3afe44478c20d6f41f7abe8274dfaaec0f931f74a5e60ff721dabb02373a083981039fd6de443bb4629845950d6bb88d4d7415a66e9c192f88bde068e7dcb4ad702957179d60a2a51781e779302f71ab2fe07136a41cbd248a4bc51c29ee22b0668bd14e2fb20fd695878414fe6795db5a56468ad6818088caa650905dc49826ade9e2889c7c948302ee495e1b7c43845320b12923105616d5d039a3aae2fa386cec1672050b27f6a46af41fa93438d648c90fe70a46f046a4be9b3358e9b460e2838f546df513109705ab0139dfabaca66a2e44d10b95253cd9c89ca8fd83b2698fdfabffc97f99ffb6e21e4cc158b5dfc7d532f964c9ac7a8c5011cd825a50e0e56e3001e8f25fec0f7b9556d6658c7171fe24bde081797522ca8abf8ab583d6c420b31534a88f4e03cdf47035db41cb8b36e3085f05e2446de65f9945b195ae7ea7e2b720b00d3bc4507c29f308193468f4b176345d6609c4d43ebe20994bf23d2b0e0ae3a6b81f14bb2cb8793e0ca35ea701d425d9db17847596b1583af93d04ab80f5e3833e04e2c3ee0d71bd826d783494f5a035a9b93a830b9a8361d6049cacf9061dcc75528ee5e2f21cd587da2e245375efaec1b49beccfc282131daf32a3c394f4896ee845fb2e66549b48ffe6ef7ee0ed3eca9100051054fae3e3f69b0fcc50107ec97e0cc48acd592fd3edaa5038d2615735d04f654aeec81736f773b5b1952f6999702ccd2551878a76f29ae464fd79ada65f23e8ee702a90becdcd18a28ad64e43758cb08d1704bf4694e3ec4bcebd22941528772413c6a3e8cafb2c9173e3d7561566a649ec37410e3302c441d58c5dd615f3150864f7d712edeeb1d6aceae141b9047721e151f6f359e55d52eb0cd42edb7e3c5bcc9fcd9de4e1a499dee3c73144432045e1ace1e5a5bf9048511ddcb022fafd8e2c2d5923f598990eb0e20e8e716a524032040c8548c7e81eeef8033ce482f4d0de1e1537e72aa8208e90b043321a28b731e0faf99cbc962105bc1db41d72e314cd460d7ea5d741d202720e7cdd2a93a37ba9196bc9647c54889246bf547ec8bf91690023e2fc70a5f1e69bb20bca9557bf2035da91ebc82de2672813af9199f3a4352d1a0b19966f23c5c3756bf726e36c487831e33d31a3d446c9ef9aa68f63ee3ca0aca3160af7d3f11bede6845da5d51cb67e00f95ea1edfabe532aec5fbd24559c958ae08e65c80749873b9619db0eea347798444d15f1dcdac89b07f8c227f406ad90b6bb04ab90a95806e3065b0ab9855f88d0fd7e18838f4c9fd4cbb15db263718f1694e25b14ff4c901872a074c1fa0d8782b70b43d6b278db805a576f18898dbd87fc035a2620453fdcf0b1e705a51ebfbe87cc060e213547c1ee34dcd27e03edb3db23b33eddd21701dd3582f25320f3f1b15bb656bb95f8e761f86be325bbe61e17d73cffad35037eea8a2b07e48b86f3c48aea7b121d920c50e3d964a6f208242b4705dbf8170cc03220cc234403703e6d63c554c75e3ef69f55afb98367a0df4c8253a49bb606abee765662790950180a37833363379ae8275be59db6b7f8668ad41eff87f393d53a547e0df68e06b86b87dde1b9678396c6a155f4c6e370853c673cd0804556d765d846635989f01de3ff0e54def41e26e12fd55305114714aa0a439dae36f8e0649c001d15fa7ba6ef30f02ac75270490fdf90fdcf114688f98fea9d72604084752f707890e9186e401ad8e064f24870838c9952941700d410715139e360462029cf49f047fc01759e0e61823bad546621f10c4458aeea70e231e80b2ad8cae6400fd6162f2999a00c4d8782747139d914c1445aaf71dc9ad80aee5484c7ccc6f36e9047df68261f58700787f1ef363431e1408ce2b37117cb372323e01a47b1332584660c701ab0eb8718d484d879875f4e1c4caa8b920229308579efffb359666ff6f761ddf17220639ad680a1ce43f2d66bf376c2037a0885a588504360f274a2fc26bd389fa389d4b461f7872218db039dbccf0299adf6f1976c528453063fe60e0e98003977ffa14571303120411bc509317d0e260f7463eae30eebdbc61ac9b68fb4fe8125408b4bf4f252e301b29d09583c8183302f9624f1298894e5ba289f9d6f8600ececf8c958623205794cdd79deb79707bec6e0d2fc938127d8f00b7ddb572ac278d8884aba28f806687dedc7c85c55410d98b3f839d201a5c630bbae0c4844a7fe40f0bf18ad350c8c986dcf840af79c6bf150d21240e5dc085f0ba980f1744f6541c531507ad7fbc78cf4f23be63d89a72a26d352444076f741b0dc43fdac3cd704ff106bd233c53d9594f01cc5c64e9c20a2b05ac9bcfa8d5e053acdf14bab54aadc37f1cf0f0e38b45f5a63679644d7a112293eab98b01f8d99173e6c8e0355e651751510f5729603ca85735542d8c24a23a8d5e2aad376bf546e0adaa215409fad393aec7364f8947ce373d7d4c3037fe869c4a0190eef918341aad3389e554c238149a0989e3bcdba69c2b598ff70605f1380fa17b69a60f376b656d1d13ee8ff2f24d0de44f4d6af3825e7095ae5dad28e0d7d44e2ffc95109e86f78e2d93ce25019606099302d9957e8506d56b3221a1a26256e890aa3cd932190a987106907f9f2bc99f41930a32c1cb74c52681a09225f311253f7f3a274a3bb18b45c6608b8268a11f076bc990691397f8198968d58f0c48654bb1d944c0158ebfceeb854c8950b2ce7b4add069de19ff234275a44eea104280b0c31668d1fd143b738215c2a97ae8f218373437795b776c9a337b7558b24e6145a9f422f25b20739051acf2880792f227017dccc20f382347ae4ff68717bfb742c01bed79a5018db6e55bca563f082a4489d502ae714b7b1b1a70e8db515360c65bdba63fd82d683a7afe34bb27dd36b99beb520ab9e60aa326594f478dc14132e53c731116cd9ccb1dbb59d91ab41ae0fccabd0b483880d60497caac993341645794bd6ee0056c560ad05a4f980c7fee8b002d58aa189d6ae9c51ec2683ff2cdf1f5d12324bc274836c69a303844c81c51298c18df01619cb07dcebabcbca68462ab58376e5b2d6504dde4c350e03e11458f45492c06272568bd1f7449e0d80671434452ea8b6977a7df0112670e205cd0a89613cf346aba486fa9558927bd565720e51486d284ee8435abc272c47444e3c40088da0e1be40931375639c50255e1cd462518e8832d8fe95189f796c52c18f68c42bb6e25412aa0a22cb1b6d6643cc0048496299c2f33023ff917da743e6aa88de1a30176b40dceb95f43597a922141aa16388ed0980a39c3ae9ad69f2109f903252bdb540d73daf5556449e882a6c99b7c46dc0a030ce17c04bbfc49b17dbebb748ed25230fd35a1264a6261cf0b5a10be56b267699d8e57417935d4e773db9ebc4ae53bb4eec6abacbe9aea77699d8756ad7a95d4d7739ddc564d713bb4eec32b5ebc92e27bb9cee727297895d26b6c30f638e63cf63792e5b6a2e228bbe861d294718d68c43bec22591c913b5c8c143ac63bb91edbc87a44fccc5c2ee6903a1f2264bee000b82d9995876fb84bbac90bec8c19bf7423319f0d8b9aaa7744e1248091d8cfab40bd3bb059846ed408d6044bfdbee99b4bea857f41303f553f910827b5943e8b4d872d4636d81260e6de9b096b917ac65b1a1926d34278d684f693fac0a2c8db6dab304ad0b412817af16687b801dc78ba750db1d788d67a2e254b7ae167a29a05303f652388747ebd330c343c121f11c5b4e907c771691bc3dcbf00ae742a82df9b3dca503890a688790cc56038eeb7017d614c6f8cd62d10bfee125ac992913f0538b23e163543440d46a2c1609f7244f7b889942179661c7dd61e923c7197d2f701d15ca6c3e47160ef492aa80319484e19a724d7b285340646fea46fba174960a8c1c8258382c470c2c32fc1dcd1d200babf20d2ed59ebb394253af0a1f0438261ffd10802dc316137ab9f0a77633ece754bbe767f1c26c26f26d91320f427ca09ac93e13d9f1925e3f5178382a228aa318bdda4be5b852855207ca2254a142f8b00988ca299b8c0482ae8f89e8e3f4e76478422b09a2f531c0f347f056658b57b7cb626a5a52018fe219900db577abae9a0ca5f0a4034bec83ea5d24e292073659cf02f71492ba6cdc064f21ce4561fcd90639f3814aae57a18bb2865a70c7bbb25996ba5b6e96d6689da8804a4df399ca3b09ef47bb1ca156309f7d23566ee288f3ad1682d8634b0c2976946792d59f16326677eb8f94298dde72783bfd0824483704e37f9d1b53bbb91bc57cfa53b5b553e4aa646543a7d9754d5b300f53223b9b0a1b64850c0fc5b972007c28b7e2455c9d3d053a3ea14b083dcbdea5046a931068a039cd51748eea84d3a29f3e65761570432ede02dd311fd06db3c235b292b8e4e4e20a09188eb999e06a57e84548662ccd057c99702181787b15cb192ec6fa9007334caf3a5b7d2ec4b376ce9e2ca013b5358f1ee73d1ab55a33eec09e23266e8ef6a839300c11e04650cb9ce13f0d647649dde80941a77e20225e46ad4b6e7df8492dc806119bc59ee4398ac8098fa3607b0f067fc2d42c2c60fa046309aafb745c3b6799d4887c1813310dff8129828a68e127696b327c9114b2cd10789d7b8cf02e3dd48cc09ba92f6576bb23c195ac0441b3bcddc53117e827483c3f7ad33de9d30ed57917996234c7a1d565a7afb183270ff08aacd631f73b2de6ccd44e1009753bddeaa7662977beee9fc91be6591871e37f261caf0a13ff696e80ec6ee8c3f60dda2311a614691b059553c0093e4caf31e66a9359cba01bc35eada0fe0db94359ed2d3ad09ce88741495ccc5f024fd08b7ff5ed66a954d5f00f1f84351f6e1cb31ae537ca8edfe208fb9755910b33a94008b6fc715edca8f60781ecdde9891d5bad02cfd6a33ebdd7c53b744eff35b8053d937ff679a3d7cd12f09f8a5cb7f770f245029b19eb2cd1c687e0962572ee8cfb8655eba2a4eaca4c596a1a11aa29c864ac269f2e8fd1fa13bca231ecf831d31cbeb5a6db4862d7b043ea8d2cb899060e319c7674cc1b63853a64e4300d2671db2d7bd1d548c8f2b40a4007d91a49981938392085a8bd852054ca734286b45148d7140d992ea12c7b0c156a6a0492c877408821826be690e4e8c967d14a0a47009a4db9e6273d0f9c8db7fdfcd081f755c50428610b0f12814f3b28cf037f06d9b434b9ca5bf827618622c101d190350a9399ebb4f9173baa4e5fb36a5cc2199d4a36e856fd9bbccd11e983904141a5e100e519cc180dfb866ea1318c041514e01fedb578e4b9d1af0f55d4d78c3d83c828a8d4a3e822327513712ef572acc2a5659c45c387cd625aed8f1ccac2938f54e8b1982938ad4a84b76c238a316f0035c402ddc45d77129f75c931ca25ec0934bfe7dd46c8342418c3b61aaaf16ad0a757c15288d0d163daf34c78750560e6158a4318dce3aeae0f16d94841db4f83b49c662eaa80f3e751176582668cb1030e7a88411b46af26070264f796236015c9445aa113b75b0e087a81c94485f08dd9cc31879e7f2978af3c937c0e648126f11b301d7b0c899b813207e252a108816d61c8d9e10d622177e8868e9fdb8eb1c3bfa35c62a1516f83a96cfa4058e706c8e08959fc78ec9e7a76a4cddb728b1e4c4c102f9f0b6decd5309ae3c3cbc30f9740e40c661ea50d5e2353e3452e88e1ccc9554f68307444741118cf3e80a248e15d78687a505b44504fe4da8bff29a465eb67a5d643b758e8aeb195a5f56c3180a91f652dc2e30bf7642d97b0284eac340a17db9c310d4e44505c1ea837155191821747dae018b332ef0fa79347a719928aea50599f567291343897f0b4a847504edbf00fe10996fb77996cece6dc2874c8ab9cadd17e0e0aa64a5588c3376dff75d1bd54118254fbc5fed13beb1120e6eb3e1532579332ab2868ce43ba64b18ab1efc520384d54af859d71b8b8f13ebe4b6b886249a63f430ad6b6b58bdcecb574f601cfc68daaa2c461ea91ab9ad65234560fa67463a4d6381ce55637b10a35edfd54c515b4c2e95a8d01c0181c25b54c8b619fd78a9ee50376f6e696e79a568db3ee311f4b2404f0828ddca49fa876cdd25d6bafb370f0742358a38b3bce773057d9c085a83302e9897d3bcd17e89fdcfa162c49fa2fb04ec65c8a34de83f050226ca5d910196ad1aaa9fd8d4e8ab7156261589a62952f5cbcefce59048d18aee0bf8b1dbba27b69f8a1202388ca5f80d492ca03dd11e39eba0c6be27982c741edae76d9dcc018364e384bbf466880db1c8cf85d247827c6a975fcbd001947ade6191947d98ac8d0cd5eefdf0b2ca11a55788a8c6fca05649bb4fc32be37914f64b9920ab5720d0480f9282f639f761c6e0ea5aeaba226f83894ec5bed49d4193e9d4ac545c76c268d936e834a30fa00a6de88924537b6e7240cdeac3a2466dd673abcc7a05c3c7e9853c51db243039cc082fbf026008de1ce6b2acdf1056b5c6c43e1a59564876c0c43bc8c499b8fbb4f62d8ed68244b12c1787570c94f97337f3ea2580ebdc920576bf99254d33bf5862c3baa929b19f667f8208c2527314decb6f20fd7656f7790007f8c5d83304b370972f8f5c67114c4024dc6e7c811b57d52804e11cca93e170043006f958847bfb7ddeb54130d64e4b6508250c5be4ee0892a631bba496a8d72878f9f381c3657c839a108a366d2c8a3d0679ae41c295b8c04852bbcd6621b64083f56884c64d1afc6295f373ef950ad58ab99ed2262fcd018943c42f35c08b43c3677ef11f023fdd0a8ce08ce3bb38f2dd4a421bb090c9d308b0226ae314c3e5e7b3ad5f286d0b20ae7044b7796ae0390392143bc789789adfa80025a48be55b24e614fcd20a3e80e5a0d984b4ba0d7ad8cd013609b2a52b40bc319c588636dbb811a5a0a0ffa13fdf734b0696cf84e1ae997361dc00230be6ab83ca430b96a967b28c65ecceb726ab22a31008037c09d90dafa054cf08a352acbc28944a3b9777741a82870b478e5b4a1688d78964856e75d32f0d201f4466d3e67ac355784e887b7721b58c739958e0260605aeaeb742020ebb5ad5461f4ec7084b7d7df1fa9bda0b974a81752c4ecbd3b2d151e4725c64bfc56c4f85b7403b02b4c5168ed884dfed2c181409c8d2956808260ed076b5e75470045b34c19e0e9dc5107e6d4b96af9fdc93f1d2ef1fb7facccd42db837b1a01e92d03f151f1aabd92b51f63278a503502542dbd9aa18be188d1cdb08d91a8751b0d6e8d310e737e6fff243496af2015fcf8c1345bc80c45e73ee7a6c0240f290bbcac6cdb990ea87f9ee65f324858ae30c2202ef8b357d400ff93accc20dcf6d785934258d5214e4f8a9c7a36dc82416cb2bf402832d8fb9aba96ba412db6e1f31efcfb532416e6426d37ce86b8cae06cdb076032e312eb0d713489981735aa481920fd785ef539cca24ee2feefd9410b10440a99b3def5d8222b6f8e39b35e00edaea26918723f42f155d9588c60e1a7920cf02faf20cf479bf833744645d5f076733dcdf85b8c2315d6d4ea60e17b9a73902b4335833412ef22604b6c6cf6ac5048718ea754a75c5079042589661378e618979fd54e3aeda11c1c1da51f2748f03ead7a03f46738c78a99996750bdc101a01571e85d9b59cdace3c45ed019834a92bcd7e0d09f1419a7e805618c0e2b7471af9038a53cb079bd26d5f4701039c352397efd6ccf41cc1c86005caa1fc840fd2f460968f05d36c9f8f3d7ad66cbf486a0818862f32c3d72332fe02ef5ce5c15a381e0f811b4e769dc2d8452d5d69527090c3cb9a002a5e0bad7cdb0f5bd5bf413be8e5b61e0e20b8392a3437cf726da32a4cbe1a76a2ccc04b28f0072b14fe0975bd8010b73d7de15837cb3b944a9eca75524ef9cccb0425e3bfcaaa5976a23c94f5b56079b8aa3d24f0f5f4a1861dd8000f38c184d55e4a612300f5369fed5883783375aebc8d5816fc02bedd4c365de3c9395116c3fc65d6e6e710e15c6234388e825e69edc4564a60ca46ae99f26e9517975f271247117c938686d8bd4f832a21d42d543a351b583e1127d8ae3d7358f1530cd6c74a84b231811e0e8c152bde56917cee3c19143a57c21efcce1fe2dc5bacb693506ad28c0412cca7b9419f187e184fed4c1d9c9e07f11f3d1c905b41b75e007d0b6b61ab6797f33bc8c12ac44955ed1a6798c4277c3b9970e5dd12d46f501785586fa4402104a773232dbb7645e4faab1582e4eaaa05a27b7b8a0b337c95dd6ac57349ce230afff86ce4cc7ca17d6855aefe385dfc67cb37812158460f6efb0ac04f6ecf6cc93d8c82614357fdbb190eaa358400091c7c3e99113a438ae08db13c1d36ff921c92200b18f258be4e0b5c11ebd1a3f122cd0ec37a39d20d3600945eebd965c73735bcc9294013d1ae38a07de5351b03e521f94c9987bc35ab525876ccfa8f5929bebc146dde75532cf9c796dea0f6e24caf5fcb3b600fbdfe72dc5c3b88b306080bbab979513afab039300badbe58b4dc6df079ccf597eb96ad7bfffb312659e2dec41f0257f0cd8cf0e10308e3f29cb69ff8fa316ae5e7f0bff8e99694ee99ebf5569964d116af17626281307bbfc4eeefee0c150e0312902db7dcae1f2bf11ccb0127113bc99c1ed1044ba0a9d2177b947ad04a2104544b6ac8c7f1de2bfa9f494211158828a358a3fff65b8ed601d952fec2309cff14df57a19747e836c97e131b5a09e8c7a4e7cbe2fee98d42a296136d73ddc8ab2857226a001f0eddc90cd441b329c7512d8115dfa344996c9f1ef237a65ff959dc2b9303a896774a63765fa845f04054ad6cea0095c61268869a77abd73f3ab9a33bd3b3d7aba3eb27ca9c7381a3e37daa984b892429023f5e5898f04898024470717f39df76e0ae435b69bba0d9ae72b99b9dd53a7bfe0fc3fabb88774a0b5d1a3d41410a8116c1f6cd5839075cc10ed1ecf3707738b0a184353ca4f4e8f40f41cbcb25d0bbcb659bf4ff029505d8027fba123c85d60d862140d406a24fe62bf09ef59af79cbadbe344f772e4f7d0674d55644843995bda238376172d32e7e303fbb634611b50c5d7d5283dd7fbb3c4f91896f99828b99d676a75c260c24bb43079f5bbca54d552e349d5e43126685d7eef8af95cda840412f4ff9eba5943991db8c85f5d3b7d2fd66a0ddcf6e6c907211b31e168a33cededd586f44a982cda04a2df50ae266bb2f9c8c230aad17527d31d8297a83c719baab8b97fd35476321b890254c898183546a751731877207c8db6d3bd5413ac5256cd4abdab32ac67c84f2c6ca3710753ceed54131a95f54e8649a40b99d68b1592a2cc0aec081789289567fdda8f0e1075743d787f5db81a334d4c6b9d6d4a77feaef5f7f2eeec5ee80e86ef92f24a8fa05d4eaaeb363f2a34d8a860c95c12e15d309c14ac77fd2d4c1bf0c36c35ce4e585a34ad50ce2d8bd10b5963e9cf799341f4556b4430937c0ad5837ad651cdc12df28b84f77a7242ef77a2c3b3de9e3bad2970ff49968c03768c7555d318a38e2d84347cbc0c9c332a0a17cd0258b3a90ee631d6641f6263761d633df23e9d5ea459233351f277e4802522cb66ac69970a98465b76c6fab00cd0bd95b6646c8668cdc800489b52337caeb592e226508b4e8b18d0fbbcd1b1d60d22d037192cd42df1ff9c8cbd904a0c95737da2cb85a944a5d3fa3847beaaaebecbb5f04549b490f54f00f1eab070841a77a8e628b41556748bbe8e3f245c39a76a86e5dbab4812adcab150989387ac7befcfbbfe8cd1168c8e4ff39740d6bfa89401bdd5c55a41d63712d414239a4c6a3fc45900b1f36de3adbcdecacb73c71613d12e87b25627ce24027c9d02c8fa4873308e67761408562a7dd599662d54ec8f9af4522515f5c695afeaae132c42d61484d54d37bfa152c5dcc68f15d332db1982ac7719f84d1defb69676938223c8fa96b1610cc7a74a5b0a2a21ebcb1a005adbfb9adf063a9c40f0f28e31d7694514e44eedea361021eb060f65a2367447fcc1abc072aaa141597a9f0ddf1eedf244e105643a001657af3a597e80a7f5bc5341d69d40da2400b53f6a522926684cd7d681f7d5447ed4d7759af6d5b76701fe16c6b8c97cc5f707f7d57495961ecfb68ebbde8a09c429a08e5fcd8f36d122001a571f184ec2fc5e4d60e1d6339190a07c7518e48b2f2ecb772d169c367fbe710518aec6506f19e9a0a479e8b1ccbcd082f8a35a2b7582b5e282f78bc936e52128d08adacef3435f6a96cd92d1cb71799f7b8dff7d888aa4aef672a9a1af6b4b56d4779d8d6bcc38df05d0e8378682de6c96ca427dafb92dde08e1f605b98727cce76e010bb57983852fe8f5a1edf91f6f32bd242815ba7303a9236a641f27a3ae5305e4fb8bf67f507d8b470ac8bc38457805ac343acba8fadbe7941350fafc53c99ee76f4928682fe7577d2afaba82384cb0bf352c512f0ac74266ff1c6b5516b0954f16a73b9fffd9153bb6a48adb7ae166da85f4be21efff9958094ad87556a06884ec55c35e8b472701c0c96ed9e2eb71a3e4c4a01727af4bcc0a40b8ec685f1ef1461d4cbb34bb859541dfcfd86851e69ec7b1ba7a0baa185dc1c225bafc71b5236c1044183f9cbc8feb11352b6688900a09c944266012d4b7f25670ee57a48e07d4baa151e3ea1103b5d0843feba73518275a16faf2c2d544fd8ef59a20770cf8d14acc1d3950ef8478df0d994cc4ea741018bc0bfd785365335f390ac68c50ea7481b5246bf9dea808a83c8b6941784f7ce24ab6c6f35c0cd9b28eff486958ea1a61f0e0197bf1862d655d7b0d52a2613928f6cc368085fdaea35f959de7409f058f18d880990e2ebe22099954e3f903c78cfff194725128844b67e7689e1ff605e8f7cf0a11d23dffb43c460e4fd987a082420abc7b3fc0ea0e29b4376ffa3c7177b739aff1fbd7891631eabc73d2191f7ee9e358e3366802b59e07f228038c2e76bb7a2256205ecb9f6fbd5712c443da77733878ebe8abe403af6949f3ca7085821320aafbbec37bb6d160ed80e037cbcd2911d5aa20a1ee35bd9b00da925c9446ca18c5172ba04ff74f3ffa06fccff838297975daf016b6d04d0d65f0d2641b29dae6fcc0c35a3cc756ec5d35aac3a4ebb2a034c4ce2eddb0d0fcd9198b0acf9126be48ff43c69b56934556fd9cdb405dedaaa472b47b75223297f5dcc53298ac4e20696b9532ce39962409e44e142925034e6126e53a1865e5a75d1b02c2f7f2a8d2beb1ea50ec917b78b9217ad4a4c7f6608cea1397a7ea30c0462952f1836b7c1055c4a69ea038f759ee87d1bffbbae644244151023b2af31cf402b70064604ec7569e786f35906872032be5d264b185cc3f095263ddffd7c0ed17fcb96359f926ed9f5866702d6635ffb1e668f1cdd2517e45fba98522ae83ebb8dfb4351a29e8c0316b357db39e5d32029491d960a7054985fb4cb7c14331f969f684d3928a25fa728d6782b009ce43b118140a487b79291fcb2d8bb7922c98dcaa28141d5d1285f172c6536aa2e126c42dada0da740202215ec72f3bfb600c3da99ea6e08e3e4d6ca4bcbc0a698d786c8d825e49219281946d9818c46c88b2066835909acebfb161c3c4b03dbedecff942d44e94599560591d4e62f8e4cf799f6bded8859fd7008891273c0d91696ec4730d891dabbb7659afce3891f8fb53a1273cb1e87be22673173a0a6e175060806d6e120b797fe3093ebdb29f639159879c40394a6ae6532e32143d9d8fe9112884409ca0e127f900f74d06c5b174e19337c285b1059d2799baa9a7a7efd85bdcb7b1a0d6b1cac2b746058a005e5a4605a6a4c480606fc1612a4874fa3425f6cc88c2b6b7b3aee9addceb7a33775adfc89dd6b553b7b56dda6d4d93747bd3a47ddfb649dff546d6b7bd9d754d6fe55ed79bb9d3fa46eeb4ae9dbaad6dd36e6b9aa4db9b26edfb36dafc2a1b032f5812e354242a789745d21644370fee52df690e7e844f58804a728127779c32fb61c4f25f5ed3ccdc005677bb348f4d3acd1272a789c2d9aaab06b6862af904f6df07c6eed0c02059ef557e3319e4d7f0539470a191f911519c7a97c708644ef255f0c259001497dc2f8b48dfde55146f85c695441d0e86999f346fe1d63ac03f83c25dfea35bc6b98aba438cd045b133593b05fa66be7b0c42246302799d5d5c8f469ee900c83849c6a20296bd03609276f436dd499d4a3b4c4b743f752f610dcaf06072733c43c87064a0a7335891264641665de573996f9018e3b64614d230e733175b95ba2a4c1bd3a4ec8838617db573c4a7bc81f4b6c0261503399e73b8cca40c5ae4b41fcaae4ccc9d7f14845d5f380de1bdc1ccd75a7006efca559efd7354bd1352ba7e9dcda8ce0d108cf248a455bd601a65c848490f72e07aae56461857f7ea11041ef0c0dd123109589d54d25d8ca94faf527383996ceead5996716d2c8bef22206366cf82551f8f2595e4fe588f6a3906fb2b1d92101746cbf8e4ce0139a180e0f06f413c818f7b5caab47975983cacf3c5d9a73636e271e2ed018c42c04a3a34066bdc56c2cbf8819fee823450b406f3efc8ec34ab822f7d1175a5750a78739ed291865b7cfa5c4e0963164d998e31abe94b8148177b542cc4685cd3cd0610ce2af5bc5fac64fb43188d638ae30c5041af4b7df5d529a006e330400d053fb4b056243eeeea1ff014f7149a2fd8a2df64b8d4583c769ff9eb35d6f3d7af0430bf3905fb8812b505f5305cc4dec51d26463618b16dde0691839d27030fd5ccb303e76d2a4a3715ac461daca60ea57e270054c7de2381108a78dc443dea6843d985f891fe3f250aa90144b3d2b17da57d3078aa284667aa223c213dc38324e9696c955120894d99944553d3eb74cb183fbdae595154671c6f9979f8705dbbc7d9b41b4de3a461797a474e68051238f2d694d872e959983ae605db471160b4857ba8358c3458b4d6b07f10c34628153c42b59d5acde6b344f08e8a5b296ceb688f735db4afd239bc5598af72fd3daf1b55d598801a54895870d894aecb6ffe383e3b8cf9f7add5b310d8ab44d540477a01e6f70c1d94e2546e967ad2d5a3dfaf4d810ef9b15e425f103fc1e4397437780f0ce69ecd1ec11af36a3864f7a8821a5060e3668403bfb780e00d6d0581f693700e89eb07848c5ea678c40ab98d921b563fe23f016031b234ee9868cf93498c1922f19b770b13184cec574b80525ac07d2492a55adaeecbbe9cede08a6ecd6dfaf5d579140f5206769831394b76d4b19902a76d3b6628d0c0e70c520e9c73ab3655fb5387aa37684af6182052dbf92abe16b534c12f0f62e46a957e19b7e0f13e7a56edb3957019e678cb826869fa19d3212accf39b81697a1779a1e7ed695861675efa6555175f5e540dac5a26498033f3438d34a2f6a4b18ab9fa22031e68fd66b2ad8c87a4bef60ec0060ecebeccc754db7994626362c3309b3a1b122061d33680a77a25c9883426624ddbf09f57f4f8cd45760ea2f991a7d2f11685d13795ead7e89648df0c48333bed5e771a4a673dd183e5c0c15e2fbd19eb1ca868caee1ff7fe3b9bab4fe9d225e3bc8fd5ac4593ae2f5b4e222d2f93ac2b0bc69748c3c964e34aa275a5c27012d13a92687da934bc4c1a9e2c5a5f260c2f9396278bd69164c34b84e54ba27165d174122107ddefc884a673cceee35bc196b2bf4170c7266d4fa91017f1ad8b9907f5efac3ce5942e9cdb0682e5dd84404c6fd1ea5277817aeb05fa6120eaa72de5b240f1b679be61d98425025a920217667d9955ef57fd1500020f7ff137ae0d5527c85bfc52499700978f7734d16245458caca24889640c8c48eb9f6979976f2acd6ce94bacb103e74de544295fae3603b40f323531e7660fa8fe564a96325383faa5eade9fc1daedcc18b9507917a06f06a6d837450117080755d8cee85d412af5c5111d29148a4f05d358489b9b015ac862fbbcab02efb867951c5c1ec31b61c4651e07123dd3d9a283dadf55ba7c936769c32e4411c3ea0aecde6094f28ea8d190225e2a91ef5139b2af5e128a84a2ffde2d3e0359e16b771a515d866b96628c58d92c0e43a092fefa6f5dd89bfae001ecb859a4d7ea0529b8c2675451d33db0049bebc35842961a31ffa20596e30ed7c2c16db1fd6a6c4f7bab780838e0ca9dc5dfcbd386b41ec1774929ab29dd7db85fefb4fd3833650501a4cad26513ab5b66493a61cd41ba4b62f675b83bd6053d44b6863d910ac4297106a4c18cab667a6aa50b46bba164c088fe1af16b6607e5a814e18e2685596c0a01e1805ce33692a5d7ba3f4e144dbac74ac23a35a8b92cf17f81c24efb16c356aef7edad7f33457082aeeaa14cf9637b69db0da42adbb35fcb1c85454358e4c0c0e4791408afdee3698efaa73a9457446b17104249592f8cc19ed7b80813c4ab1a1a6283ae6580ebd692e93b97e227443d267e5346107a79722b600c1c7b3ce63b0e057ed337c0a201149e712f5a3e8eaee28672aac7108d70141202e83291c5fd04b4b487c0d15148718762293c522bbb6bcbd55887bca50a171ccfb12a94b57523340cdfbe006dcd3243d79e988788e26ed4b0e9e3e39f8ec1bf7a2cf098ef002b5a95a95888369d1d39877603a55c71fb0f07358ef6eef597fcb080e07f9bf47842e1a53a50cf172ac52d2fb3a2fc29656867afc473f92236998dcbdadd8e0fc784a88825eb9a5fd282bd643312af91e218b674d1302fc8d48775599f30529b983592045efcbe7f5b80355a425d57ee2bd5c46fabae448d71aff0fe3e9762e9c4e6887120903ee8d5c8c379074c26d205c990b46dd41a999a0d8823c6fe128160a14b6a68a5c7bd8cfa1159e60d4cc73920933dc7326054a04ed8be64aa10c09b6380e47036652b37b01504fa7df9cb32ced92b152ebb0a5922dcc400c61346d2e511c330b44c74e378173bfd029c99c4ce1a0b9a3a851a08b28841508a4c0ea4e8978a5eb6902fcdcd33c181ead5d12db91e586d350cc5df3c00816cfcdaddd95d68ebd1b5875af8176330e798c2e3c786c3d7a0da87f8a010a530edba80029d07a7bf84e192ab63b40c973a64a0cb6530c4add0cf9620ba9d887b9b00567d5045d5c86982beb28ec9a491951d495637274f66b460fb53c38f3e9d024ff52103b4893e5f4be03281a57706ac557ec0684f9c55c00576c2c31323373860078cd4393da65702af060a498a5b894db978796e1217d42809c7ef97a492b235efa0de5749ed7f6cd19d8a1ba7a4bcc600c5d9808051e3b9300a742881130787511077f36850d8f054a1d0f9479133677be7f261972be22205a8231de0faf4c499924e0c58759a8472f0dcec54b92cf020b4a6f730a1db3ca364e1029f6d060c74a1e2b8eecb91a0e8805be0bdc94a35e5196ffd3fc25297a0004ad0d0c8ad6e6683085a444630531ea16c231cca68d28d991f08e2572d4a8a57d9803bc49bd7984556c26626692f7afe8ec3b5d6ccfec4e6095ca5394c8b1b04b274208000f4850e10b28b3873742d645dc5a1eb348a16c0383640e901c62d8d16c678637f083f6e8cbe6254ae46b60967cd2977efe1ea782355c7ab149e33ac4979ca195b757c7389e382e46208b2520635c6f72da925d9577b219b83c106cca8bbdc090f1504586adfc56f16fc35c3eb6186741e1d5a743ac1571179d82bf7ecab7149067261282108603a8041516d44460a9790e2e32d4e364e0e90fc4f16b225ee86c564d1dd43e5587ed5a09c8f7660e2502774d2b97c7ff80909b2557983b79cb9e734aeb9905b1e2cb9fd9043e21d1795b6b2b7f31113ba6c9f3c4a367b69e738c49303ce710733e747279ca3708cfa6a543d18f5ffeff17b7a5c2551ca82a0412762412c9fff891e7639e71918dc9450a99bf6690461cf6568a6671dc3fe41819000f8107381785fa743a30f68401f80583bb60011a33d5bc7f963a4553b1fcaa99f8aa296bcfcfa35d1f6125523b308218d2ed1f364714ab2910b4408add1703c3999950d42f99bb4dd7bc24af4e4dbf3c6bfaaf7cb6a4eb3db38ddaaef2523f180833b2e10f4f213344e1d9c5b2691144d959af0fa8bd1c284fb209de71120ae215c00a6c05b642097bbbe6b5ee426cc3b4c7778bdf7a959b7077ee0f1cc564d09a9a94e1c6c6c065e4b02739f7d5f4fbf95af340cafc29f13a4dcbacc03b350df11fedc28f7090473e720dfe5880124d34d8a59e634de0ab833a2047fa2041b1563ae587f1d59bff7082d587547c8168e1ba0e5766696f2f24bb778d03b55ab89826959b68dfe957cef569b5df13ac58e4603f2395c02c287e7db28dd74376675540b79f7601602806d026c65e9ddcb099c70f74d54abeacd0d28197806fc5805c5b4ef6b8134aad2f758c0d79a0291b4badd59ab5c26cc55591670a238474fd197773d45727a18650243091d5812dffe21a6d1497c93b5deeb3f831f0263e8c75dbc581433102352c2b3af7a6f93172c4a058ea4077f1a45bc1c494dc7889beb070dd41399b0a8b486082c57d45797a10ac8e7166335e734cd271f77245305dd722395e2d4cba07b7f531c2d32f0baebacfda77f78e9d0729878fe38f3502888eae0a3cbc3610c135aed26ca494f0e3ae01ccaea9e8ccc1fdd89335ec8e409086196d4d62781c983740d907818451001a69e8b17c8f4028a2520511b81988627818459132566b40820fa1dc8bfce52d08f87c1258eef2a0402956c64a122026cf22aaba2bfe36d4e2da11857de8c316532cc047d93ef9c065d62f81f4f5b8c3312f07c67fbd4e986a3cfe02f58ab9191585c445faf7b2eed01f42c7dd9491f83a6a12b1acf0614551a810312dd0c0bcf1c6c34b289237e2ff15774f44bb1df8a683f9f7e971ea6949892d6ff696aca5134684272ec679ab80f4dafba969e4458a6364b88c006c767df188b9d444abc3784dc161c5ec869b9f5a244533e684783fc2bd16c9bb02cbd4c6d1638c281f212689009900ae32a9bc63c1eafcd06aacdae3d68d25f32b686d879e718a07459a261df2cef274073fd5f5810c9f03552c8aa67840e0390e0e2a124948234c6d038a0ab09e0ad8f64067852c18906ade7ea32bd672233c06f6d43e13c23ef7afc91b283986170e2942b51d796196e2f490c3bfa2749c44e02d61446f73ff24a0c5f40c635af9071bab3756fd2a3a1346c48367da4c0525c5745ef091f0ab41fbca80620f0d31c0034461d170e0d5ab61112c5fe4282c2c87d089bd0ce37959b8662b76ba46a82d6858e6b45bed2cff1adc0a839360eb5858498a9c304d77152e3e900eb340ff63fefa3dad335e423948aaeed87160a0a392d66e227fa06455c467008e0c490fe29add44aaf5d13d98091eb026f917c91e89781958c1bf1727732f2d5a1edad58e5a45e98720a4af669d1c7098fc92d76223fc6f00ebe5d536cb476f3dd643b206ac8b46b2e03182e32cac4938659a39b1d92fbfd1ae3d88617f039950d5a83c5427666c9e7f1894bcd5bd43c282ebb330486921920af89ad170de50db109f30d026b65bb2a1b3c98a907317bdb80384be08eebd9ea4f27314867184ce67352f00845ffe52e919701ba2af43599fd882886230f442504bee70f105d167ea147cc470520cd253b14ddfc9bb129c72ae6a3a7c9752a2e85f5c3689893ea74e33b271c86e3b8ee1fa46d89ae972d64c641d081a53054981a7ce804e247f9465d98f9fb80e6be2d8ce7960a5e6de14a8c7858a61bfc6483447494938dc78125d29070a04b9c1dc01ff67b00279bcda2a9c15405d0c9bdffa0ac570944287cc298a11b43ab78f48b8f802a29a21ebda1d49bdcaa840e5888ad2e582707f79d0d874b05b0542c78365fbb8183b7b0e5605868adbd9157480a2dfa24a501b57f782a69c2e9e4f15b1a82d1902024c0a2355e5bfc5c4d015748b8b9d4cd3a48f6c33c8c83ccd5218d22f1cbdc5bbf723aee3ef3d31c3d637e19855279f6ad682ac7c3b521c911decb0ee93e4584029741225365c87303f411ac3ccdd02f37f991d8a9741761d4c144a4a06a8d171a65911620e9af68cab0a1471079167950f352595467a779efb1acaa6e61e0a39d54abb1201392861ad329bff8534589786750dafc194ce90465597f620cdabd6e9f7f81de0eaf68288ddc662c47ca401ddce5d960129741610e59f0891c6b31dbac80baa9f863ae847a924b624e08ab195dd3ce38e79eaa428795c87ac198060d435cdc8117d77fa364914573bda2ddf075101dfa65cef5768ddc75db67ccd88448ec6c94236fb7299f44186d87003510a50e0e18d29b27d228192f0a4c02aa9661a9e7d41182c5921568fc33a46f32707d326065bdfd573c788b73064f8c031382475a681d98c9f4464df3309ed7a76b6ad98c76134aee3c27ee898a40b09cd82ffd1c3eac5349b20e8a815146d1f1a4b3c05cb5d0c9ed370b1add2011a6944ebaa38cfd572adea298d608a14318da1591aae2402906cacef34897c729c2390e9d4dfc02f03f2e4873997015c825c19cfcdfbc8b9a56f8de14e27e04cfeca4c86e7ff3a47de99742da0b8a22bbc26909a950fd4c9fff947294156559df10e71282dbde0debf6a530c8984d0e55869a5f0d8377f54207e040a58b298a9a1e721aa90635cb4305e321e77f26b4d8b0b70696427f95b57f8ef712fb39c00f5a96574c7f63efaae117538f0163309b5ba6fb56ee5a557d3543f8044a569f99da23f6ea8df0b475d2c0da73d73fe88b98cb6e6d003b6b86cbeabc5eb98a80eb05a0a88c39c364364ea48e2591b6b319e4ac88aeeda78f8819b2913b8a4d329c99f4c37bb3a493e46ef594f60cd30df7335906bf48e6a23dbc0f6be50ad037539080d14291013a38e85a1575be6eaec9d894e6fe74acf3fb84e9c74d6987326e63eed90c8ef274620349ecac726bc0c4c99953ea64fe4ee0fe861f6487c43028245678c5eda0371757c8957c6490e956515c557132318a18618e98581688c0be0b1ae592c99b1d2f6cb219461da4069f8123258061fea984a4af6c8e91f73849fcdf91ba66dce3682f2d4d3a33c2a0d4854571695c86baf52a51382710a5a863ca68098e10a9810870b3d5a0815a6964a3226a1055b033cff7b064504e20dfa422b9c3125caa04223bd5d86011ba1396ee4479f26fdfadef0a2b6d542d2c9d8c86e2d77f61ffa60d1e2d0a452516d20cad08089d87c3b23b950fd463c46111dc76757ad197c3326f286e8d1c18da0ae4c69296087078b84fb50278fdd6258d43dbbd800604d70546b496ed78e561618f1eedfa4a9daa586149e7717aa11541a750bbf4eb8e96376227de7cb89a136f0af85cf5b3088db9e13291dffd33b04b50f416e846ac737b7ba3bce31dedec04b733ce3267aca685e2cc666b6331b3c02995542983752d6d36a640d12e376fc1a1d36c89c475ae42034ff3057891cd487dcb07dafb6737d204e04633ebf3e4f9c72b503eaff602fa0014829a8d017f3f209d74662c82e1eecea2396e19e03fea2f805817a501f032212c86658093346455a69eeda7c8ec109ad12c89e6c72dc9c4b3163fe23866ac7057d7a380a00bffd00f914c66d8a7e42d038751097fdef29562ef63908db35b40d07dcc31b2b57588360a153a214be0d2cc0d1883933931222e95c4c2d8f096a68533970c86401eea05dd711e9ddc2b3836aed9d4696215b37e7ba38c6e090ccdf7fc5e093a0071e1b8b96143f4aa15dcefaa4deda0641a86d73528c44eb4b6051c87e920e2c77a0437ddac7a3975589e65174c7fb4896e180d22e76845fc052c97f90cc8160b1d4b0e1302f955268193bfc0df7d346efe79c47134b14a360ae4aa548d01bf68f1ec3dac3d5c8200a7e39f03366abe74265e4b6fef6a1950fc9683fe30a38d020a4f96198404ed88292c6ed3ecd876d6ece2e05b8432cf0e433717bdb7d14a1d3cbfeccb0bc0107da3594a0478c098dc42b2c0b34d17c9c5454920e4313fe44bb9927665842231ca7e7890e74327277211437206d6ce33f50440d11f044d6c39c07ff6625b99649bd33c7edb5c0d15e3734f8d64e978f2c5e1212c056c1bb86735ca8d44c82b2f2a608babf614a9cac833166f30520bfdd416e2958372c3eec4141a182a2459b7f833f6eb6eac4ed3ed007bb6bc9ebd156effd23bd68835f03dc7e27fce1f82c61b09251f7e51792adf374dbc435cb180067238bae7cee835ffeefa03959250f77c96bc4a817da02ff28acd482c96b51d620535285035861447ab6cd7c02c221d598d15b15ff9f34edbbb2079266104612e84f176cd1d66b2504e2b885e96d3865f530c5528c183f362d0cc2524f8fcfb0e9d63441ac855e8f5b4ee79417159e6569fff6b75d1d381ca8f1de49d6b334c5b5b9a3951af3f9d435652094453ab3f5e830a2a487f7e1cc14fc5c4d3da756a055c00a5fb98afa45111db7caede6b9e49d90f150b0de9acf8d37db751f280c9b15dfa62d2f71608726a1546ac32ff1b5ce4993a6361ca184b36280b43f73dd5040e85a6288002266c159e249ac347e35a53ea08878bb8892dee97aade3748ec55b8bce6bb5af6bee7385f769ac8d529a2084a28d0459430c8fee0324cff9062b938e95d4c7a70bbdf17bd9f21a08ff4adc616881f2f644b4af58101efac47467d759e1b649de2fd4e57c9993695fe2a8a0d9326d83b06469feb5a4dfc822e5f0f5e8092f7e433e026020c1bfc87a9824b5e29295e387e7ea088edac34f4ff3c949592504d3d2444bee3f44a9f1c58d1a05067f180eb1e13c52bceb14031707d2c8bbee1314c3be2b9d9e120ba6f56d36a1603f6ff7f480ce121a1d0efc9dfa9d84ff30a00c358cf4d64266b6949e3692b1e9195859a1bf772a359a9862703221c1d20220da7f58f76b504feee633635e0413d9d701fcfe93f4915feb590dec508d23afedc8ac264c76254f17d2edf08c1df363cadcffe96029bd5b0b3ae82851df5b49717f039663f658d0aa555971565ec2abbfb4a69f96fb19ce23b596b025da81aa69af27c0949245a92d0851738c2ae28cdc2319c516ae283b065c80e478d78895593cedd879c0eadaca034c89aa06ce28ce9a119ac521478c68f8715af9e814f3daa0dc988d8c6d2f12d9343085bfd11366e3a754b884d70f9d0f58b4ff5cee488dc5f38d7130a65cd93dcc8f26077cc4c2eb11f36c3af5846a8e2bdd8c219daa738b662fb89855be99f8bdc0b86f254b5eada76d109c889a65dcbb4507dc56b90c4ce917a5644dc7779987f8ab47a4eff035aba5bee8704f9d3b69e7a887fde344e4784b1d09a719d5bcc04d51c1d5cd584cbef63e3d0ee5065b74d35fdce4546d40380e4390bedcfc48ca037c244b7d80033f6c8d427965977c2306a69dbfb11d70dcf1c78f4462bbc7198e81532a01bd8f4b2f5422da2099507ba4b6ebf7272b7c8ed5a5cbeb52b14156210721bcfa1431218ccf1cbc6ce99718d3634b5f32090abc9ca3201fd60f73e27845bdade950d508598bd280870615534cc06d420b34a5fe2a4746eed983074e392d7e5e26be3df0f1d567ae05905a12e2bde0cc7b5e08466fd1cfec5279cddfa19ade7b2e7c39ca3a64f3612563bb1d177a0a57654095a56ee7466edef89d134363838b74f851193c89b42cbcac318c29ec968821096b69bc2a44457db4a7bc74c4a4b00b90d038688494efa7283f72df052d92c35d45589047ab0e08cc9b9a11793e57d8055a36bcb5235e7e0ecc0b1ac58dc7398c8c13ba59261df94b6d5be18f0c0947014f5a2fccb5e0cb2d45eb8160deb93820b8ba3d8685c5cd4f4dc74f473912f41f92bfc7f1bd1368bc9ee902190a6644b45992daabbdd438c43285239963676729202e226b74fa168e4c5eb154aa43bf6c01727e1631ec8b464a6c2ed6a0d38112e29e1d044b1715de2fa10ece4681311e83ea62686eb370b78923f0658c04ac00a4c0a53b1b588eb73a6ac9c29a23555293ea122e55cb002115f81276aac70657e3a5bd9b8b0f6ace1ffbc41b6bfdf7b70ae01d575ce707aff5fc2d1a6db09def278530a0e9083cf73b461876503b86f1890dab64ef16c2c06ebb54c772c8fb5ae0d2b076842c622af716dcf7e64ceecbbb9579992c646d19685fa4118696c968ad90d93e1007310289c7d04ea12cd98d2f60ae8b74a0babdba781c90f53ca87e25c8eba4a916107d0d65ea8fe8dd79a34487dd0948ff51a003871d48217f83096d958857b16d77f71888110449fe039c49aae175b7d890ee3e3e6c3e23b9fef1083370ed2a93581988e06ccbd164ba2eb2ae71135e382a1c2b14aa8a71d684ddfc1919629ddcb7cc5cc3dff3689f54996b6fd0c442703ea797241527c542de7275ee0dfa5c835c2d5b3c17b99770bb3231a7eb3c5ed8128a7be9a1dc1b49a3fa7a7061cf3284b8d38c0b51c10a3714049af4bb719892721e695672828ab6d5c07899b0470de5fab5140508541c4227cc9936dd2f1141c55afcf8a5b40e2ba9457b92464c84b10503899b4b56418938f0146615155e96d7a9dd8f66829202789b474c35dcbd0acf0f92400512e4ff3ed565007aa03d4570d834e609d9b570dadd92abc3214da5c79d5682cc595cdb88dd2d8d1fb4365ddd1aa75bf0f138e2cdcdaf8f6670467660622e7bcf20e1431506d59eefc72a129d1d280205c157d7fdbbb48f615565173438340d994be416737527a0d18034832cac893b2e1936c0bc7a005952ae09e735925490b7fb903e7d6264e2ebb08291755aee1de917bad8c01d5378dfbc817961624278c467a60e73147bd3b2b67252ded5d3bbd01f8f02f18166a0463b9559192816e54880393bc6e423118ebc4b36dacae9f6c0a6c7718cdde9db40f7bfd7024895dc89790dd669f366ce0effe8e28b195286e30437dc7e5b60ad0690d66144e92af122c56a0c8f36700fe8264c37def88572683581d2aaedeadb450555713590a6c042ff3e9377bbc7d7395750c2f51556c1899498cbb17b210e06c796f34c78ba9df4864b679f7d7957a3937c807c9d56a144320e9c261269d213ea3cb1183bdc83b3481335380dc9a508c6b73c125fb16657a0248d9b1271a9f477a7d6c798422e907a09ae740b6fe88b0480dc90a16dac9a3b54afffaf6a2923d0ed5e52aae58debff536556623efe8a2740f127f1391a186c8bd79b1f4d2526ab056453ca01c928a343c102949f27505b699a58902258562eae65be382e687f83dc3758d7bd5f56b49df1561c652d20bba4dc88854561cf5552a737c43aa95d80b6735ddfd08f036b91e32f79576eca337c158cd6e9188d744156661412aa733e6de7193bafb99b7b335af028674b4b3129e5cae15d0ea662a601d12fe209efd739dfc882e8e3cf95b1c94155cce5770f19d17a3d36c04c330a33ae467107534a08e0e54805d013ffc887ae8463efc13243f9810a4edd6fe5c17f2c2cc8bc54c45bc6dd934ec8280659e4f49f491d94c1d43c81858c2e80b0c2286327975f1128e0325a22095181c20d7f69101c0c58d47d466dd657ed0f9eac7f0f9b8d38d10bfe399d08d721afa423782c1bd87e8fcb017165bca835268b3bbaed33de3a1bc9ee83f2cb4b1caf5626e9ff67add1baad68c2f3be55aca683fcd5708ff369ecc292c12780821ec0ee9a9cda7cde908dd1c8cad1c9062553786055179f67080b1cad44bd5aad3c82254ec84826c4d64bb3258c7cde911759b996e042fca5aa4bbc7600dbdc7d77c7ab5a312a77654504f67481cd037a66abfc3519e6ad4983b3fb85f169b2ac4e1e0174db36c5635dd470afa1de6f8d4485a6fd5793d1641e60f9fcf11aac785b4f0819f545a8b8c0934e3b31e3e8808bba6e5c703d26711e4bc0f47854983e7abf06012a80abd8359d410b5f38abf5f4fee9cb45c888a4e87adf44ae8535cbedc6917c1056d4718f8ac7ea9d229b2ec6184d8315ca26aa9cd0e9321975e88d805bf20d47730bd1524709d04b3084efd0e460e9d34c5d70d1d3e69d120f50fb9ee9aaa7ebd10e1d54d1eda3db03b37d95da64afd92de7346f5354f54dcc997643f38d665af0fba012a3859e7aeecf911cb7276bb896476ebe51e3ac14317123850009adbd50bd915b69a7674d930a3c0ac2fede4da2bfb80684327571fd23af4a99d2dea99e06f61d26a8b894a55c7c34ec66e918b555399ce5e3eaeebf763534fafae1f360882067d0b644b7d6f27dcfb614c9ae01120c14c67f01ddd4979a432fbf24aad9a5d5d5258dabca3553db05b0e242566a90116351b792b1f165364c5b0c4816805358eaa1bd817213d139cde0fae551661e45a7005412879c552737d8b30ce591586df67960784a427ef2d373d6ccf464c9c0c51609338b2495c9fe640938656cea059ec8616d1873d074e2b9108323944a3c9cf440e3d6115e4815894cb60872b89066478a4a942ae78afb0ae76fdaef0f8629ce67cfc2fd66509392a560cac7e5c0e2dc4689e326b6fba0b284b38202a7e139658814eb82ac96d4a80cac378cb729d8e98cfcad41a798df4f6669b163e02c1dac8004220e706a997ca1bfe184ac01e7485c9e42bd94ff29eeaefdd11d37b28c5374938478a8a9853a68cc371e57b94d14cfc48fd18d1cd77d47d448cae41b42529379852e7470b09212d2a88cee00c8daf14b16de88c5c0befdb92321f5b654955d9d97bcd901a5a456f490ba77c7ded76f052b88c6ca50a386c6a4addbc5a6b7f936debd634bb9afb219490c2f75bbaaad23a25d3bc71542138f69b41eb40e68374e603886b65107c4661739c29dc39d2dc24b1980d4f523d850b19c96f428d1900d73741b7195ce5aa17968f2984e8c46c5b3f6c15f5ecd045fb56b2b5785f3f30e5bc69b0da1bed28d637ff760a411f2839a2065c41194721b6100fab9123dad9c74aa7739d11c464527e4c38e6389e6a5f1d5062e8369307fce40c9b3471a9fe6a5beb7039c484042ad0474a32d1cbadefb01ac5e8ba23a6188bbb4c1d51cd8905950db3b50188c76a3841e9a673e0bcb6d60ddf8b8cb2a60bdd1b60f2981b2a439da57aa93f55f0660ff3bd134b7e854d95c8f17360bfd4c1e92a73c309505101e73269e5e8deda37c826fd48a2b4e1378e4cd3874b729b22495aaf47539e62a1552ac87e91a2f0907108898b21255f5e140ffb099a8f2ba5747f45927c05f0c49da052eec0192c364bc68b2ecd23fbb78665d6c8cd626c6a40fd9a9c734e30fc357be888edaf613573ddfe1a32ba86bac48df1454722f96c240fe908b1d562831516ff3063ab49f60d2e9b25cf3c9860a518cc82a1230c15b1722ad76e4ab37fc61012d94a124bba2e05e52ed4b542d04d79d792598e0e367de25cd4cfce79db3b0939f116dd6ba46c3d68ca3973c98da239604143e6e90d17a0e6db0e47249168894ae3a4fc2c99e4c8c7f1a7bb122b2af9afca0a8110d4f066d74f63959ba9257b4091514b1a61a7ab585a7142afd51758c1e4e5856b87c5080038c7af2236594bcffb3804137d52a2a92e1684a57997c2ce3e1040da74ffc08e8e3477d90d4872751d233524e1cceed8db14506f64f59a495d9b726248f404e0742fd0e3e2e4a4d689769d303f76bcac35c86cb08d1af9e11df0659456155041be6610c61a9e7008ce4e08fcb9376fcfd1b653fa3cf8289801f1bc5a791546a8acc7db8d36c247bf4767c11564e7a84f9a85a332fd55a3926310c28eb13522327cfb030ea18b9a8238fc2ea3e75ca9540a73e4698edeaacaa87166493c6b712209a3f8557c3c0f5566d23e24b9b42e30a7be76ba133021dba9ea89ef15a713f3c852ee383ded7176e036876d012715537fba71e89ca2f55ad13568f4e56e3dcbb87001596f7d5d2bf364d280c27aaaa1b29a9ae7902b101c9b58ccaf82fef99d2dc9be32b562522a81b355da2d69bb341a2797aaa8ee0b4a96e52f3635cabe0a9f695b2d6345d5f47db5bf9dea7622daa890f0176c5e92374d905ce089a2a6735a4f4009d0532db1a6d53fa5e7ae51bdeabe1e0361d0274ecb421f5184102612a7f7b23241f207a1bdb17f30fd1fb23b443ae2861ebe6337453717f896801cc3fec60e69806c9e75d8be535c3267c7595d1c4ea15f97998463a5f8fe838273482877961f6b900a5a018eed9803ea43674231ebbb56c66500fab7acf8d44dd109611aee94c7f46051e51ba487c529193e548b70414307e4084b15197cb71fafdc66e718573b4abec3c8692564bbf2c076244509ee1e6461cd5abdbdb3d8f9c6629d60b2dcf9951e9b3c9d118e896f689c303bf194cb586e99b15097c4190b48341629d3e98f4b32297cc6b2f66fd96c5611c340322b6e2412f754cf96a315eb4cc28a557786c23949f93e281a20dcce647ea6aa1a9302dfb18a69aa7880de8f6f8002be60e508650d074f1096b920f4024d84870b4591eab1742e6d413fdeebe2525889f6c22acbc4156b71f0fa0ff5b60153482d0d115185082655549a831955ca8788fa48a323a503b04d48f7abf3478118f1c5e0ea352e15d24e41918693f768403d1a357f4b007aedfdf4acc7572f7df52a90ec8bb8426a7623f3a4993a847323fe38a60a521116315c1a6ee4fbd45e0ff05e80a797d55948dba86d6a882013ed749178a4be21c2e1022adca56eed56883521a88d10984c3518bd1523f529d4491d9afbac9df81907f520ef59e542f33818cb3cd676948a7da787eb69b1cb6a8c5ff511caca3d8160f5fb27977bb01f452ec5e3c665a5eee9d93827812d53add4c4d077e55aab4904d7829ac929ed2fb40bc67297078f4762aaa3c3c964e78c9547a61369bfd2343d7e0b03ae2a716319acf6dfd9b91b3e8e3d2726238af2700e86d038b55a94a63195c171a660c365489bc1f0f8ad55e1f8445ef8acf6b77bd15c554e43adb35d6fe614a8d3edc972999e634761d1dbea5007510bee6e798a14b5a056a144decf31dfbf45e9a8ad8a0cb08a95b6f80e198d197de345803d4aff70dcceba66a807ec7b23c2b55f426e7d62a4c49f786309d4d7de4d1aea86b3eabb20ee971c6c8465ab20f4fcb9695bba6d0b35015c1f140ab054a76594dcea9462c4128fb0a4410dd183f604599ed66cb4f4a44e383a405efcca9cfb2f3cfc014b8085d0106a6d884dc2d2f161c154bbb7eb76a49981ba500f041550b93905f051c6831257329b65660dc6f4ebe9641c15224e7c0a8e5298f12525ca406e3c3a811636113827f8aa55d0c2d513d4e75d47418c5f42b6aee416865850c4121570ef99eb70934c43cd08cb08c78a86a0c2587ed13f3f86c85ad1c3d80db8a0174377761a03c7753bf722b6e55f962041694de87af919ffe49d23763e61cafadf981d2779e89eeabe0271b0732991491800f3cb26ddcb020c438df9c2a757b3528debdb97e5037577a97542ea7091b8b1656650551f126a79b55bd23b8d209f8c153773773cb69c82d5ba277672e7ca25ecb9d269fc02ecb6ca60b092aaf7a73cd29ccdc19862f8e8cbb9e2d39eb6e6999eae4c5a9df07b284c336ab03eb82de1efbe46e4a1a807cdea206259f31127c1ef9d88723c79f338bdf59de62238acce8caec97b49917a24e0aca8bc3a62b9149b8cc046cbe8e62b13967c17dee32e913aa9e82b4ca4565160f85bdd11ecc93b18576f51d8a2830dc4a11db4381a23132a06ef4dbc2231114013061b9376f04342c0ec9d852474dc3ad9006234671b426f752788ac090edfd1c020af6afc418ebdad7d006dcfe9d93d2b4738cb143ca69cd443933e5ae6a6d63bf9a88e552d7bbea9cae815126a08e2348d63c7a8a3a33aa9305b2387212f3e2869f378d897e302f5a0ae7316323dcb70ee6db6c1d0e9865ec8b5c1d79318c2117134a49e7f288b10f233f3c3ca70585fd3ed792b49be7d531f7fdfd1cd3f338f2469bc1d8aac3666e3d84ad1493a10bc6d96dcf24723ff29e46c353a24c615b965f62e90a35e9da3fb15197756e2505d07181d3c827d9fb9355e7791f4b3dc6ab141243267100bf729955516c2f03997a8fc41d5a3d37659dd93d60ccd60d7d2167711125a6ecc820f01e65649df331cafc526ca26b49453b0bfc0444b6c4d6a211a85254d1d5a96d43bb61792f242ad2698d98ee1c2281042661542f239df1e3e8527c07b1223d63a5538920e7e2a2dcec3725cc6122d61f98c3bdf50665937c524e2e9f516c287e3b9fc00171c704f976e0ea43e8bd5d4be74db45b0d19221b084debb282e20f0da4d62768ad9ded1d00d377af8cd2ae6530c3c7cbafed8998455e980ba98fe098d0d6f3d7662d08cdf4b65d2294bb38afa0af032642daf9f01e0b3b8b50e866bf3d2ef295ef7396a19419ef5033a941bc54da7cdde506ea9d67f953ea840d85a5f659d7cf12d702d3a195c5b41982085dd3cf37faed9fad7b2e0a0502aee8eef31c51444b58169d628e19ae7b20186f15f843a15df94ef1f49d409aa487cf013fc570e55b8932e0e1a03d726ada8efd539b6852448386e1ea5e4b02d36e8ec0cc3bab76aa39c090ae14cdc64e9ddca04ba660019373707214b9a24cc6d42be110f816a70b5e108d13f88c14879247bd54cbb01d1da65f9be2512732569685974aa0857d235f45fbb22e80051b17eff083614c117c13a62d606fd9499abe1d3a682bd364c7b9dafa3657c88d4480658f955d0364127654e8d8e8339fb52361cccf81900eb45358bc726381c97889c952e294de89a1f23f12cf3fbbaaf161c5ab5f08496522e3eeb0bbb4cdde54a5055270b33629e0e3d0e75307fa0291457243663f8991c2b93de0852b4239b58a73fcc38a46234a477e8b1317fb47251aa318c49413fe8a0eb797a2a940d60490f83d00308f6011a9609723ab2039220d5f2dc62d5cd9ab2f0d04c16b5adb8352be3d8dbea27b8bffdb2d215e886157c7a77105026eee8d7a0c649bd10565ba23c5bc32210aa5fe0599119e7960e24e8c94a00a1413d5067a16438a8128d2682addcdca248e64948b689b1481af8ce771f774ced136f7822fcce761d1cda1f19d3b7c3230c9203b8917a3ea7107ffde4810d547a17a32449628aa08a687e3ea59dc199a3ed9ae5cf0b3cdf793ade6112fc90c8ce80b8d0c159d8ac5d18ceef1d423e9f2215cdeb2afad216e5729e883d7146a77aff77fd3fafc01f8a0a5b1b5ba25e1082fd2f55831b5a24d28c4098ded7693b71fbc1603f45b476174f95a21e2691e9a8550c00f803829176b7ba21bb51467946544efcae3f1b19080dee271b74c5adafc145090ee32b7b336c26b4b8047d7ac9cac0bbede30f39370a2120efe090bc7df9d97afbb8eb92c3bd9edabc4f354f4692525fe96c4459b18724c7c1292fd64f06ab0818cbb0d916fab464e0a9a1966cf3d175dae858a27c8f43153c387a968292a22df7a7ed923460b345806e8619863584b808ea083c55628c86ed9834e6107496446810c7d9496087e1d8fdc5598870e44622eaace42487092bb56947dcc7066957ba6e30d752f99ee969f6fd3b012446b5e1f8625768739f3459ce5d86451b597e290e1fb43642e3157455b9fa2aa4053bae71d8c3dfbca09d7f8c0bac6f0c166c220621ba1ac412501fe4f342ad40d16660215a581c4995463ef5be98d8045d196eba5e95f71a2a3ac7c2192891e7f4187baa4170220c1b979e6dd12863d30c37f58689938a131d52c1367c8e5c7e25331f3750490915818c43f3fa14a708d1f81d61fd8c96ab9af09a6552f953300c8ed65e9799ca8e4a49fb56e6b3110e7d3e0d9baa93d8f0e65b1c4a089ad0140a1469563b09abb6775c0d820875d61a40d3d75e535d864080b5f5d659afcaf1fc90e98a5eb43eab1d143ca2633bbf65ec6090b86a2f8fdc2c3b4af3ebe68ec43c232450580d911225e652179f3e3ba46bf655066b1f7a382b30477cad33ca961885235a2d221327881171ed5b2f2e98df02476dc17da59372cdf9413f1222eb303d8724d3a42e5171d6e851acccd42f331108e206596cce039a9b0b092130ff168894befd4418ca9db93226189811ae3252fe6b23b9828f4232034c31c7b665e01493ac94e996e58495db96231024edf61c422abfa14d33621b348c208e312418b19fd22872ebf813b12bfc7d818f0b3d3ee17cdcfa7ef719ee8af6f508a65d2e2b6ae8ad17904ec56c61a21a2318206532a476232acae4953287ebd5e276f8fb32ac68e0ffbecb6b05bda4ba53af1c27c950ca3a4efbd8154d1e0b8b43d08922a1884d6e7f0af8fd0351438124be286f3e988c1e9c83983f739547b9d28c3e455b96e6fa67ffc2f9babeb2f86d439b7c7498539a93b6fa9e9cdf814f8555ea792ec559440ad81adb016e551b601531ef2cdbfdf300cb0464c0a3c580fe529f3cb1628bbf9558ba56f65f7afd6bbc26daf8e5343f4335bb20f4dc17b616adf74bd573686c5fb82bc6e189c6dece76540026b163e08a672972f577b9f41ebf315795aa545cefb8c09d43453b2441653740484ff4db7a6921e805aaba49a83d9398d01e64f916805f10a2e837907e716eb0db8af36a81dbb9293b79f4f962df62360cc75b78cfa86df4e27091ecb2bb9f7aca7decb1ec68334da68f1eca3fb650215b72bbec08fef6e79b3e9e2f92f3643a9403457397116161b52c2e8a89dadac26afb2580b5de18b00aed47cd904c042dc41416a2ad417b31e6274e1fd848f21d386a1ec3879ed43fb1f88a515ae1dc06834c15591620fc1021941c803d28adaa9bbd3c54faef292857eb8504657140fc01654acbd171bee0cb019c61d84f567eddd4de7533b66eac7971fb0fa8177ca3e30e46ce025388c1c123c3d83920d32544cb1230fe8fb197ee1f14f0447d1ee974ad45ffbb13c105ad8c6927669258879eda5e5744a727b298e66a5d00978d0fb9c7d5dbd1c48ef504165f732be432355da8198310f9ba48b53bfec0f81c64bd954f92b9018c3ab040ee46659255c81e98bc583fe8b2e9c5de05d59cb9916edca8d4063b999f59d8a577d3339ae7d1d8428ee4f29cc1e1659e3724463ceefe35c3c47a703fbbd2abd5cf9ddf1ac64845d73d27e3d754fb4d97cff9fd83fe511c9f484ad232b82c9d98b3ce1cef24b0060d2b59cce777b19444af9f1f108d7332981381149d158dbab6a892e5cd442ac81d7aca324afd3d625943ee79371089d48c221d7dbecc764e67a737762189ee1c8c6665f763a0bd368695307200e29b7198d5fdd96cbea3a0cf2f3d854c6ff95b10f8fc79153bf0dbeb130b3d631b1ffe557e85922ecfb63bfa7fdf8bb9743b89efd53d64b50c72ad68124e6b36a49ee1167a43da7a15dc30486e384d09cd2f689510392f256b39c6c07dcde2920bdce2655a418b4cec40e509b80c7122d86c1000be8eb723f1bbb1157d178086afc9da3417ff8cc941d870aea29c3784d6ea76d6c4f7908b279e636c30c15d36b47bc86785f08af5f08bcf6b94be833a40ef401d67268726a03ab41f6128ee2d0a8357fc22d341fe39428b443816ecfede3be86b2cb3d61eec79dcfe9471843e3c45076a2cb17be281d7c8693ee001c40530127e46f3af7f5e07488437066cbbb552a5a5c4d05b0d7103879806cee2f57b15fb2edad641f6bae44782af67bcf6ec4f68ef36610a39da2a96000af09c62daaabbd0b0d36c5887033bda051c7f4760870485e0d81af460b584f18b942879ca4bd63829b358416d5a0b21547b90886a4526ddfe4047d469f909fefd547a0c9935fbb1940c0d0fdf1245d985dac420a0fc8a43faa2dfaf327629acef523cd8837f63995282a588d62c0432b1f0377c386f1c6262ed02f45d48f798ce5240612757b886b16e3c2d2c46aa8073be362c70c26d479431a79e0b06f2dd42c0d13f090c13eefa2c7880cccae9ce32eadd54998d7388a636edac04ec6ee209f210c35f6152e32b1745d52d5ed428b8ff6307b95b0ad4897eb31c8d1c9ae44f07234c8f98faac9896923b363d2ec62ae32e33588934bea1c39cb5e5a648e284177b8184dc09dce3f28aa130f2e4b8dd45441f161dec7383aecda54754a4c9c7db8ab958d445a35c1e380c837d3631cd3fd629a411d550fc6d4e892e02ed16ae98d28060e90080cdf3c0c6f73ea24bb6c0a4195b5b8ef5ce15ccbaed8381309f97063c0e24005c11fcc0c89d64a6924a0b8f59663d59784de0f13f2f446760581a91d1874a8cd2bd3a95c97341243902411d0a2c6e2f4431eac2dbfd8af8f71f90a2dca3b112e9b5dc48bfcd2c28ccea1605e897795e3617c9ba816d501101f46415a758a57fefbc032ce94d3248155a38b876dd800ff9ade9602fa745683b1b8a110663d23429fb337e256159c16d77833cd89decfa907d2aaca72e1c708544de2382d5dc8ccf8381ff8b0eb412f4d1bf60fd3c24c624d6fe97773f6985aa135ee50af78409e73ee70b7a7dc2291b310e937104addd300eced19781fca2a50a4e286a62b3c7e81f2ae05d08c4dd0791d1e92fae3ef516d88a24f9d9239452acb5728a675959002b900d2878e348945af87bdc78f31a79c22c9080825a2564a605c5861c050eaa5ec811fd22e8f349136f7ef4055c91b4c69720404760d06d0288eb21da3ba58170264373bd5d0975100c820a9652f708904bdb00e46407b45caeca3d73afe2b807761e57cd4cb82eba1b7dc6bc3fc0192629d22fde11d83e1f0478fa23bd6ff2111a723f23402d6d31558f855a5cb139d0d453af6a87747884f0620dafaae3d539bdfb56044596266b850d361ae9ec2e9606846f4ece6fba851e8b262c5fd691d1551140d6bbd6efa6d6ce9743e5a1f85e026ec0d83645e31037bf2ee78a5dae8cdae9b9c44611dd59d89486dc47ee9a945f49c8591d287930714119b1c600d50eea127d551f09a41b481756626398b9cd930fb215efa6b55b3fb6bde89cd78f833af15f24317f5d97e3300c420bfb17623ab5df871e4483b7178c8264ec672847c4bf9e0926c2bbd4fed31904e6d56e3d5b20febee8bdfefd1b8063584fdcd33a810ef4999120d58ba52e7e076f2ae60edaa3d12c98a7b752a90a4eca394746efa0913013ea0043f0318d70009a98e6397338b5ffe21c9971c276a1d7c18245ba75396c7705eaf9f92c9dbeb3c2074f26f940d09b9509fa4637140065c12b84dd6ad2079fb253568fe250dff0b375d69e25e86bae82090ec5af6559abf7f6d42bf78b061eb1b79be983276f7fb68ffafee6f8467898e5a65a5eacc33c68da758671421e2b1e6912ca535753ffa0158885cc7fcc814543bdd2699a4679942f44f2c8471811b0754086457c823c005b1205a9168153057b685bf3f58081f8ac361f93bb7760fabc6b577816d70bac7a38c60d9b843cbd408b51fbe56405317ca5c2976fdd6e11e62fa297a40439b28d4da394bf0af1c30485aee04372451fa0aa33d4980444cb490afdb0473d05b04863b1d9f8a3745dab1f5692d61867dcf7b8a4939f81bead6a69039e0296a1c7e74ff079bcb32bb4fd3e35a5bbe3ad3f1bbe878133065b11c19fe61eeff96a7d21c8853f35db86ff87a20612e4c80b5fa3d0fe0850a8e6d225322a7a4d5a32ba228e1e5bfedfdd9ba25bc23a4cc967fde57f1d3fa5a8f3ff5aa8de02f17d149c3408353f31ae62e7c29e5c8549f93a5f6f7b6a49018c9e034ac8fe8d5a405cd5a803d95ba4c83e37eaab37cdbdc464cbf4ea763031b5e0472629ac92a945c2c107aecec81b1673c77d3f5a35fc33c0ceb079805570315d054ec2dcc53fe9053241da6194bd081e2a248681166bb9bbed96524a29539201d108b208650854526ba9a5d332b149ea5a67b3d4b5ced6d19cda6aa765e284fb7850f6e5c6c3121bf7f160ea5ac723c2715cb6fd0c0882e046654eb39e28ca470e04570e1562269922d26e93bad6c9ded6979ee43e9e6d52d73a9e0f77d2d19ccead670545510445d0061cb98f47d6495d5b09115b14d52207044770044770e43e1e3ba96ba2a4e180140441b7e99f311f35b961c2d93a9ad31999710447700447d0763257dad9cc11459b4913be72ff1514358a202882a2288aa0c8843ce13e9eed75c27d3cdb2b2532c146f4d2a675fac591e9d409f7f1b8608c31ae794dd147369c8e66b7003ae13e1ed73a5b8d8ace804eb88fc7b5ce266974a8c9df547db813d0cc4c7134b75e43b116688e842f51b572ad56ab2078b8a5aad56a45b3c25c6854ad40d7eac84a5cad56abd56ac569e084fb7836ad336732e7fb67ca4b92c562b1587852d73a1e4e1d5c5a30c618bff237675e2994a6715eafd7eb25a4be5eaf5ec2f5f0e5251b37714027dca77a264dd130c32c9125b24496989a71523fa8eb203e5a096175cb8327f5cee6e194349463712c8ee5e1b80406eaa69269e3a4d7d6713a3d2e8a2c9125b24496ccb593d9d3e93accbe24cfce662dec507456f7a966586485b5d304773d510fb8c389a124b5188aac309b9c2eb044d534f5ebb522e2a68629812d19bde4b91b4a2635d3f2927c6c843b124a326b5236f3a65d8512552cd54aa50245500445507cd184af195590156bc7901611d088eb480496e47eefb7545ed132a9964972c1aa5045833188410cbe54abd724e2a4fe999aa47e23f80897245493fba74d56a956aa71094c490b452b95b922cf26b945111441111441fb6a986aa66030984a058220c864dec0c40c822a213049b183b06972150853c140154b079a84f15130f76b9d22709f8f94357b64e2a593ef9f37b389973edf3f635ef27cffbcc2a98ccf78c9bd1484aea8109f46bc241fd37061e825366baaa649fb761a906bb1301e47a975f83ae93a48afba5b11e8fa336f235ffb48d3e44e02c498fbdd36aa535ae7c2eae7c4106b86c4395793d44f83434e1c738b3541d68ccd26f3c6279369c4a76a92fa3b4256fdd367fac749eaff0f85381aaeebfce93a7bb6ceb4f33c3bb9a4c51e5962ab3ec4c2dcbc82a2525654a7b13d84eb34c1e1fbd7c6a6c9697aec97b49d4541cefc84419330be133063306faf8ff4d1c7fb70ce7eeb7ac857be52ca2b445d8bfe83215dde6fbc6f396e7c7739384b85b4f22faea9740e98f12aafe2c93cc3bbc0cc36fe3a81b3f1345e6b97ee51417164529c194e101f59978f4478068db75000730c6f2bccc25304d00283cb33bc47ff712ef9e18fcb325e7a28cbb0f185329759585e3acb4be738b1971ec387647f003c8e4d93cb38c9bf974892ff4c767fce8bb99018938c9b70294324c95b46923c0849f21780f7b9d8b4d48c92fc91ec463822d97f86272408e7b90ce07db849f6c7a1003b48923f0c2739e89584065043a343f60f000ed9391e9d9d97c2b5d8d8deb7cdfb7a84f2e75b6697d93696d73e20445c96ee4322bf1089de5f883e0e84b6d1ff79effab7ee856fee6a1bfe2f3c20b40dffcfe69f4cc63feffedded59cc472b2fc9f03219cb73db7aeb7ac0c86ec400089080dfda8f6467925f7cf3cffb111ff5f671f7edb32b5a868c8eb3721b22bcf8bcd84474039c7f8def1789be8618ff899ee5bd13a93ce965d644a2fffc258a2112894422ef8bf12cafd23140e5499e10daab889dbf7c64d32c1f83c573e1dc4beddebff2335a6419e6c007b3052c362efaeb3b4870bdfd8bf7ee7b51a3c6939a4462e96a0c77720d968fc1f29cafd1091183c4f231585e88181f2306ce35a4f46ad4f0be184f7a2d06a9594831384838d1736838d16bdefd9d6679d9781ad44ba2ef565abc1922b884c37c74cf9728f1978b36288708ee9e119d73f8b7c8276726cf9a2454c3cf10b88f0c19621438bac36b72074ed230c1955f7c4b81ca2d832c9d504285fce2db13f5f0e259deb706f4bff8215efcd7ff551a79a30e6971c069e2e127ce31622c71c3a6f2361e09eecb62349e831289441d0715a3998f3c83f4f3338e8894651c1b34cff02c4af4a49fa257f98f44123dc901a21782a4d25990e47d9f6d4c514545f43e1b3fe3351b9d45c5ea153526fa199fb32dc70ccf85db62db26f26c8d652e1dac7cf4c9064fa4f2f264838884392cce10c99041fa0881060d933c89fe868e3a4934a500fd97e52c4b528d1a356afcc75141e6b4320fff71c01f723c0f9ec726696edf5b0e92e8b7173da9a33e123de953bcf4491f89489ff2dcf6a44efa00bd0dcf39e2e224bd26e9059c0d9e0806f43f40efe215f03d3a59f40ec03eda5ee4713eda3c8e10383fc2e27d46f8b603f42e409d3cb5745d9615d0a1e492131272c9c98527f2b7e1e52907cbbb7819ddf6dd09c1838c17fdd6c910fd8bbf10752e7c347778b98570bcff0e1d48ac214b24371e982da037c0b1f9fd56ac207fd9aad3666ce8b2d8248d33bbc9d9108ec69b5c7c0d1c6cf817f71baec6f6d3e59663a33d70c8221cb2102f5ef45f0f1cb210fd2fbe460f80005e869adc79967e61a3ebf7ae071b6fe35bba0f486ef9462b21d7de599ec6833a193f716008b939a0f32c0160c9fe59ccbfeb3a8a250d7f05c85802d49d8dd75e8814d0dddd2fbebb2540a21738e0901de3f6e681c5037532453696d73edd47f3e7b3c9f8cfe62d01faafe55f7c0d1cf28bafe12f3a996d803a3f7dba01c45a3a99650ce03b2edeb71c221b3cd156a3136d8f43d48fe3fb5d74a09f716b54667803e8dc4649f627709f05639ae378652de0becce58519971b9fc3770b4cb58ae4f209e88ae4f000e83e1f12e3e308f938473e8e92ccb94213f2694ab42b7a78939cc36b2e1d8ebfd1c9dcc39be4e864ee9e4684e8d1c39be41c5c3afb37bafa72fbe1860779a218d0bb78179e0f170ff244ed3da04fa097271b72e884c86236741cd424cd77d181ba2c16e4633c0b9324b6a72f84fff6d66574fe2fba1e64c8f819dd0724cff86984f397f1dad68918e04fdf3f9f6ddbbcafbb7bf19f7ef726d9fff31aed7cbaedc58bae5f6efecdf8eded7bf7f5f026797bfbe25f7ceb6496d13358dc9362d46071568ce30481134202fd1fdbb619ffe2deeaeeadb7de7a63a1327552980fdcfd65151ca535131fb975f7ae4777eb56babbbb7bdff8c8272abbc7bc9ba8418d1ff1e6b2cbf9edeeeed667bb5394a39ad29e32f37d622c5fdc5b85044dc280b1048e008c6a6b953824a9b47209f7f91bf1987852cebf389eb272589cd474a635020377048f266640051e60d068f6fd2c5d6ffddb0346764f545f9e7a38a9ffc5eb7b3c62dc0e4e869d2a79481a3d0132e4eeafde15b87799a61da369d2d15b40810c6197665700337d2d8503f97b6f7695364fadb76d6359f91767616921f24613a4294b4912fd9e22d3cf40204d309909326541a6f423e072c90e98d70e981dacecbbd659ef9d73ce39e7bc993711376759b37a254515e2a5ea5d80d534cfb9f190653fe77c510ff5fdabd763e66c85010c98f63bdb131e3db608f8880241e9e823dad24c5a49c3fad536ad848306eecb529e77ef6b994fb5fff095b7d697529375ce2e5365a92c9565aa5aff7a592a9ba99997cd78baaf47cb129dfaf4678f963c61e4ebf5923e5ae95a8893e87d7f4f6ffd69ae7bb0681a4d7ddd3cb75f5ad7b9f66bae84645ae6c9b62c95d5cfb22c354d6de324fa9dcdfb32558ac7fbb255a6fdca522b9d3c6d7356af5f46d4cf881a81ed73e03cfea320940011c4105ea21c4e9ab2d0e7506ec99387f69f1c7b68dabb47abf7bfce9e4894bde887cee38740c7cb3cd10f9de73c043a5e8f960792e7d75a3b4df386e87888b3abdd0744ae36bcaf48499abfd275ba9eb33bf97eddeaa5be77e381fbeb61d9ce310357f110b866e2256a2349329f88d44892cc3ebf8afdb269efa6d8af7e89bda22bbfbac19392e42b1ce779e8ca4730d374c4e4e1a594c74ee58d8cd5c8d7d6c99cd292cdc478c99f6e592a9b41f9cf672a2f65ff8d8e04c0c57f3172574376149a1bb227691bde383a4482a44157deb74f79adfb86c8fedad665aa942e4bfd80db7e66d3be8fb83892e98bba96821cd1afa16b297a7405c9a46f90106af1f43b89cad3ef30549b46e56727a15f8dc91ec64b73a5c39234045781ac790f386b5ad6be08aad27d1d45a6dfa2fb402cba6f256f28d98c97529e7ea6a2334587ecfcec300085022d5943f13a3ea2b457315e6a560dea88980f1fb9e735ea8858a67f44a33c1ecfb7f4bc07d4e9f012f7f435e7fec47bf1910eaca4e6fa94abb97646d47c3d05348dee7caf27badf00cf67ef39e57bcbc1f9881ae13a5aa7e3bca773e1a39011ce07901327c7f5603854091228607677cf8d87ce9ea71b0f354f2d076e7a266cbabbc7f359100f575fa688a7afc874bee7c88c99777efe4d56be2fbec34beeed88f111f576c4f888be7f01eff076f8883e4c86f1d2e6f530d38ae974fd9a24fad90cfd2ce5259909c9943aa5afd14d017ec44723fae2d73325240dfa810c06d90ab21264292470f4bf2c95e9c3b48d0543124bb2302ab959f235934e7635734e0e49743a1d18a6d04b49db051c0c92264a8ee0d1a39b880f3031fd3c7af4f7ca4b43fa8de86e2c5fa11454f8d0efbe44ea4fa10f75314eead776f0921057f3fc8e902ca13c7e17b2047afc2c240e205432fe13594a79fc1c5962f1f8a72cb578fc1e892388932b7134916c019246ffe73874b40d23aaed84b8ff792deb76c0f8a833205a0556017981fe21651610447f13e97cbf8eedfba43bcf5daf1db3c37dee5f78bcd0fcb793d9c3751f90fcf1ecbf4c4f27f3367e120c9f2c43d640ee1d1936a25ea066ebede0a36e9a971d70f0517f2d2c5e7a1e3d22b9f942cb51c539365587cffda5bf75e1fc4e9f3e7d4a2be595b552ef0526c9d4f18289f1920ca5923c9194a008f90b3961c54dfe7006834b6bed477eacfd5869ada5d33221b98f071cc1111cc17152d73a9bdd3a9ad369e9b44cd88da375f0951bbe9c6ccb381b279bf8dacb61620811e78cf8114fa25aad5630316ee96a0582e09015112347522ad60ab682c1600d7bcc851cc5a3c70cb58e38176ab940100441188842a15028141ac2927ccc855ea552a9708f197a954b15aa5e5ce8552a958a26894a54a9542a954aa562a9542ab14eea9af4b1477004477004c74ebd928c1404416f31c9a8a445ef711cc73136d6983c9c91de301a95cb8787539582b158ac59030b592c168b05637d08c6b281281f73a8170d0ae58343c5c016ca45148c43a150a856f842d9a05a28140a8542a1504e33d2386a7414cd089a21899b1af61d6bc562b1d81046701d8351eb491c73b1582c06b25a3420088260c7c0162b168bc53a06821d73b06360c73a06b266f0922fa65c20cdbb4260e658461c3143297923fa2b25c25260986b52e2e84af5984af9aac7d498ead14eea1abe361c94176359122819e884fbe01b8e3edc09e8260682a730ccf005410b8237a10886acceb8a072d724358b141450a53eb58e2b051b5f7ed382fb4ec2e37d3e09a9b1484101617a7d6a9dcd456db84fe72e548ac663a24d4a375f2cba59e3375ce7307f75b43999cc2563e794aeb3cc559eb84e9e348e6b9ae4c946096c0c5b2e57cbd56abd5c2d9503c1168b019ca61eafcf4a5d34e16bd56ab5c6981dd32d8db5e48b035b2ecc857e358e2d222d56abd56ad18cad91a60596e184fb78eee6b35221a18b8dea8f848c7044f090ccc97c56ea03cb8509f57eebfd8e592c969070082692dbc5c5158bc562b14256c862b158218b15862c58086385ac8f0deca4ae75367c6d523ebf5bb156a8f500f919f7f1e079a96b9dcd06b73e446d5cdc3a9ad3d99a26f758abd5a236de72d1e0db6ad9d6abf57ab5f0ccc46004f4927ccc85602931954aa5800862ca2629295637923a92a4c626954aa5c05408a752a9d4e564a954c384d886a5520d13c209f7f16c93bad6493264aec0111cc1111c4fb88f67d33aa27cf90086df6ce57e161ec2d19c4e10044190238a49b08604d009f7f174b63048e6388b25b24496c8126b74bc4c5210556a92ac902d9b17ab45040a14d009f7992b219c16112f794027dc87fa4c625f9e8eb6b6ce743a3bcf4e6d0c5040275cfd74360f6b08e73514d009f7f1cee6a1618d166b7283d24d2643723ff56c9de99ffe74284df8f2180cf113eee3d9a62472c27d3cb86b6c8610f17cb893ce088ee0088e609ef642a149cd5acd6a2edd5ab79d670fef17e44e2051c98d8795a4319b8a865d55f7f7cb75e4de976d91de719ca4af62a52d502cb52e90d2d0235ec21e4d627b9c0f3a4ace3aed543be9044d8cfec075e2ba81c9523ad75bdc24dcf08e23936b853459d774d950d29e419e90349020692441d2a87112ce9d2e70df1df14ade50812cb9e8a3d834d1f9f766ccf7c34266684308661084853a7dd6e59a268bb93a9f90382807f2fc59e325e904120ee4f9cd175e452104ab4076b8e03a32577da7ca355553355573a50aa25279a9065985dc9f05a509f235cd8d97be195e265e6a32431a499aa60625693e8d4a158225c85fd33c610bf96b709ae80f24693e12fc848b5a171d29ed64fdb0b20400121a908ac40562290642a071b6fd74b25dbbcb409330be7bc3849befdc68bec8621fd111ce92e609f3dd45def0dcdd5050efc3b25d727b7e6f1c48cfd944c685f286ccb39b90e79c55e4f94ea9e03e3483e0e125fb13f55a73bee528c2fe7d4d043457c85a3bac35ec9a98979a04b0b659e248bf7aec9bbea297e4f9b56d47360e6d7abba766def739081fcdf9b8a356e0e8103e9a937af3deef217c349fb33294a10c43c9d54abd237c3469c88597de4bf4e707234ffa94524a3b0c33ce0e3449002b7fd62632a5e0767c720a7717f5208164b9e52882be0c3311f71d93e458e5231d3ee0d5ac9d8e9574e9d2bd950a07f191abb0ca4b41f04a5229615c953b5825a5942e62969d0190fe986fcf4791cc8be9979e0f1f4092a071a2ece54f9328f3440fb8b75f7a3fe4b7fcf644d98ffeeb89b29f93a35e6899261849f277c94e2369bc4693303e8f2adbd7e47fb408942fa293a12faf0ae425c155e26a40a4ff5db0d694d7507a855998c3299ebdc916c51b6292ec8bea672f4f96c3c9bc1f5986c2f14428f254b30e772823ea05ee6d08aaa3cb24712e434c53f617a784dec5255b946d95156399bb7bd671f7293899c7ec9f741e763e768e47a35128643d0f7a94566d5d56b63775557795add6f1aae6859eaee86ad5ba2db056d0a37874b42090074447104a6dd11bedc6e94899f8c8d29132a1378e82f21205e45510545b2010080402e50061cc714c38394993b5c178ecc6be56dddddfb6acb55f6f458852b4ef8d08508e22b40779a2940f1dc6bd7d7fb99d2c15fbde0aad38d53727cadd3b9d47e9603aa1e788d3346f6219456ea2140f06e38b71f562383e42de84d93fe98ad49f20e638cf5a8c27772dd059b3a2bce1b68a6cad173e4b866ced14301c507dd05bfb281dcad7719a50bc711cc7711cc569aaaddab2a215ad6845719ae40936ded8182adfd455a5fc8bb7a6499e402b4e92ad0ff272e08ed857ade13f8fa7d617c2f320ebf2917dfbdade5a94d7b6cebe7c641fa5b3a18fec833a5be3231bd67f711b7a09e52de8eddb178ae7c2814020cfd2f8c87e0e9c7565cbc44b61bdf1527ddb24dbfab5d62d47b5e334d5515a719a6c2849f64336ccf66b6b9a28c61c170afd8f462d2db595ed6b58e55b3cde40df9d55e223fbd3c2b2b550481ad68a9286ada3b5a2e8a57e5b7ffbde8848f9ede54644f52cd039e53d5f5333c4e256d95655b6d9c7a6a9f33674bb221090a7fba00ee67a32329fcf5ea6733b79c2f8e372fd42b9d6d7eebdf7af15395d11cf6bb543bb567133596e39523c118c8a27aacfa99ee8015956dfc7e7b3af5e0c7ece733c1f9dc70fe474593eba427c649ff6cc381e2adbff01bf8d4d92b562b6cfea9c004694f25794e2891ec0f9fb319cbf9c67e1c570dc24a53cf7404e9c4f39a17437833a47e5ee24e763ee733c1f4558bc0ffa37e55978319ce73c1ff3533c1ac447f65f1cecb944965b0ed103389f793f8ac4cccffe077dceff981895b593b716dbcce360dce1b84f2874f2cf8d46b8a5c51bb33d8dd3244f37d9c6b2a5e124d9efd807b37d19ea22d9b74f579364ffc5ad386fa6c95bf3354df72de76dea95ad081bada529cd5bd3d431fb725a6b5f7399ed7b6a922c27078c8c8cfdcc93e9d824d9e7783d4e92fdacbb8191c11eacc549b26e5fceb7138823d18d4d41e81899bfcef2fb7590df2edd13427e8ccf497ffe7c39f1c4134f3c7774301e03b3a35f5a5ebe0e29a59452ba4ff7d7410230542bccac6528066eddca1cec8073ecc9c75fe0fc3f9a9de20e63ccc1e4c04dcfb10b9efe8dbd54af8771e5382b92e4c0595854d230b1639ef2525fe133b95bcc415a6c25ed838f1a076e9b8f3b1f1a06460601f2bd91ef7bfdf76d90a5d0dfefe40d167fbf852cf9f0510391a3fe6f25dfff481c2d7392ef836449a5d4e2ef535942f9fb58e2e8d4e5e4fb2d71f44cdbf866be7fbdaf874c92b39f303ab2c0853eec00224bcd03e9c34b0dfaa81b47bbda46378e3ed2361a47d3b48d7e5c83b7e259993c0449a3ffc4fb3ce706bdd4497cd43c90a576428e5c8da36bda46af0c21e548e3e8174de3689bb6a18a82a4d13f43b9bf504cd2e8b73960e14949e3eb7cbffb4864216e6d2764a9a3e89ac6216527f1d24a8dab741e0239ea6fd179073a0d2fcff77714dae6f3cdc27312c8517f7b3ec5fb5c6a9f67cdbe0580e4fbffd58cf2daeda4fc8b9758b0f0becedf7d104ac74e52402d47a07f0165c06e3ddc9620efe5c4fb80646bff65729dcc9f9873e0f30ff809c422da072f514026d10193f5954be0971b1232c9a9080564927e19ea98a320d140eef458d1deddddddfd211752ba7b64b763eaa5979973cee9dee2f21cb595d63a2ba53bf8887ad893b3a6a04f92468656dab44852bf48d2fb89e783c994d371125f5bb94c3d2286c8b4e9084e623e6be56bc79c734ad9ed8089f1d17c010113b343564a43f9fafce9eba84f5b07ebe9e023175add71d4ff5c9a7a2e3e9a3ab8576fca397578a9947a08e78b05077da572224ec44b9fab3e3cc44bb209fefd1c02f779ca53330e128152da747ef56028bdf756fa3bbc74bd1d3015c64bb6beadb5c547f48ee8efd0e13af8885e6fbad0f94269893a0e5b446769abe7e2a3171d6ec97a94ba641f2e3a7849a3012e1cbe6648c2041ad424d1849809b4509ba3855cb1c7e170a146134d10f2c4757500b040a4880db6600625a2aca28a3164e1892a04e9401160e3edfaf29361e6bae005af915a3f9f1666713c3c84c3f13e5c394de3c06de2e582d73dc2f6e9506bc5de7579986b82095410c035e279ec796ecc9e4ff1d2cd1ecf8f3c9e77a13a795e0833b29427cec3c3092be0c19227aa5821613c7d9f85fc8db0054b7041678177c16b64db9e8b226fdbc3f052fded47db875c6cbf832724218510044aa410cef060a4e23ab9702d19a689eca60adc2c3ce446871f488246be9733998c1c0fb73ccc0a9598020696986b42ee7c8a97b6dcf99097ec77de45e7479d6fe9e44e1522c89ddfc14b27b9d3f91d9dd7e125ce77de87ce63410a24597841922c5081641cd2c4888591a9c6cd89c3b9420a47be572842be170b4ae41be65096d2544474ff76ef307cc44958769926fb610286251c48c29225dc38406b0a695855a108b12658d088e45a6bad5503a0bc31733f1531a0a20c1987996c610a264a48a6b0c20856d841122b8881c50720b879cd1821891324e10a9c7bb79024df7befc557d2f44b41855ca560a456e1074e8081200ab029728dc2e8de7b51eefdc24cbef7de7bef5582865c9f52a108b91e410a25727d171b136ca0022ddc200a2bf8c0124d0baa28c640a384897c9de04e80b8901085325841252ea185d3f7b9561c649af3e10daca0596bad67633e92376ae670a2d881114e3a2a140aa58417b45092998a56bc8062e600503c413305250220a780031c53a8a289286e90c38f163400857c6df05096905cdfc57eadb5d67aefbd571c824a14508c4b40030fae30aaac10921be83e75960216f215af0d57877c592814ea03f75ac1837c6ffd7befbd1773271b560d9b25642dd70fb9781b28727d18a315e4fa2c5e4240aedf020531d7c7c1a505b9be0e5e9246c8350a56c81549ae48a420835cdf872a5f1a17543620c0b12555d41851420f6c5653685638e109354040be8fb390ef77bc04839335493cc18a33840036240612963f0e87fc2e5b60e24d38e7028787b8899e9a3e4104a2988d7d3857aec4c91f0ea9d3a743ae2f658b9724122f3061efd787f1be1e52ccf5ed8d8f6cac0c5cfdcfded8269e8d39810c2cec8d97b0679b685848422a072790a2084ca4e054853c25921190204f4e9eefa9190fb24ae234bfc569c40504ab073a806203349002144e534a91a77ce2092af2b43737313b8038c9f38770953c3ee6b74c0ac806c20082320ca107426e3086d3a4422a4f9ce7ea755713f7c318b54c930580708312c02045440c2938bd8879660b9b4d1049421976c0042e0461c1694691e77331c8f353bcd4c933043ac8b53eee4491eba7d40fd520d79a5c9188200c2e729512870c17ce3366b142a0eab2a6d131701f66812f626a92645d812c578b060c5d93245f449a4992f9c3e2cd34619677337384cc69227338d864430a4da04e5f7d0e0b9bb430dcd09c38988a8c9f622c650904cbd94b9a2f66dd1508702003b7bce42d1fb17c888f1a7b7848eb0685ca5ff570cb47fdd7c32cdcf2126c9a2e0822f90017b27dea251cb27d89f32ba4716560d6eacf56992a4b65a8d8cd98fb61e22ba4e9e6a1c1be467cd4b8e5eaaf7ad7e5a3ee8b59e034f5a9ffba664d3b2b533170dfbd01963ba809a406241ac88644039997dae0099fda9cf4a99ba0d64e4a12761fc1879527bddf034c28099526be441fcd6f7c334d9c9f3d6a7f936a2ab69727cea6fd0fce6fff83a6fde6fdf8b13da7bb471afa508876cbba3eaff23fb4788ff7c3f32d5ec5fb5124c6d33f54fee3c99353588b4b4b06bd755dd5a0b7a82b54030e062ac024b85807d94543064e032125b2bbdef323eab9fc5d5f8be89a2da3d17f28a4f2aabb5ceef2c0bc5eaf95170c86c5e25f5c5be9e86b92e6b3e85a74549c241a17ea724dd554a942d4753f2f16776c69714749732b0b4f651c3bdd0d611886355495169ddbbae06d5df0a6aeeabbf7a67067af0adfabf2516a2695ba335785f19683d2dadd8d31c7c18427342fd179eaa93f752a6b92e80de7de47635905f42fdea1638b86e55a81b3a6664559d78b0851eda72efa9aa695ffb8288ce51f5a71aa0a561465426f682cafacac78323235bce7656ef8cf4a27eb0b9f70d553f1bccac7785ea5060f15f379cf7b3c1f3778f5063549f3819c965079165d11ffabf2159c268fc70b3d985b58d5c7aa3caaae87b0e16381cefd73ae30abc8ad4ee4e4fd6b8be68741acba81955b1cf5bcf0ee78c3ca18b67851c7e26be856bed56ab53cf7e6c6306aebd4a002f37c579edfaae95f3d6ff9e886b78603fdc771dee2bede9003711ce77da03f790dd439e82d1f11f1d6c957d0c909be2fbfe30d1bbb3f98311ec29fb3e57096eab6a6e9a652ad542bd5922982bb2ba20822261a50f97e1144dc2b50a85c97c89e76b723020914113e5028228e40a150b937e081ed3bdf5bfdee2e131fcd5bc51d43ca85ba15e1cf3df77223c23d11dd3a7f53d374c731f5e98a4040c27c3c1919cfb77899956771bae334dd300cb970ebb4f8ed635afce6f928e2efc3e3fd2812a3f29fff117a2f86c577bee3f958f17ea8fce7596c9ddf3ea6f35bc813f97b9ef39daf5eccf62b9e0f154fe49ee8019cf7fc0fdaff763bdf709a6af889b9ac12e6f937354d357876058643de98e77b21142adf0ea332ee64134bd042a69d565f75cc15e669d137b4e3e9236345cf869d75dd7c3af5669ab60f8538ee4557d334c7d94281b8e3d33b5b18dd61e325d205d047b3b3556dd6041f4e71366f86a16aaa28134edbfef33f78bee3fde8bce73fde8f22319df778a21f9fdfbcede56956aceae46c1a10e68e37dc8de743bff2171529a7a3379334ad6b9a6e6a92e6a7529aa7ebd34dcd7953a93c3d1eed7a21cf4b863cb106f2c44ae48957f515ba3c629ebfc1fc26cfd7e8f8d1589e8fc5c07d77142b78c3fa7a79e973796377bcaf1b4e93863f9ca6a9ea19ced0cef0626b02abb2533555d7bb2d6b2fe8a5be2d7bc10bded625725bb775895c10851b5d14e909c8a3709106bf754d894d2047f3b9d752405f534cc07953455d28a07ae2fd0ac3d72bac09c39a57cac91d29c766afa14c134c55df9b5983b312ce3b8124655d34db933b4e139d20eeed73b2eef689875733531787a90bcff0e5a5fa0ac3d72bac09c39a57ca89679f4ea713f57b5e9eb68ef39dff417b8ff7637bed3bde8f22319b77633f5027aa84a33179f2cc9b396ede14b76e8a1f6f86af0ee73579aa59874f9ea2b90b39ebb293dc7210d19906a32da8a48cd94a72d4a1a111000000e3150000280c0a0704a2f170202699b2f40114800c708e667258a348b3248c5110c40c42c40002000100008cc0cc000d750060c0ffb4c45bbebdf79ea92503e5deeaf9c94a24ef39b0ffa0a30241d9d16b943ebaebc2dd238601ba62bc6e28f1ff9a3e7c1822be6056b02b471d9fa3e317a0e849ac58ef8e5004a6cc5df337eed1cafb781b3534920f33847c6bc0b4e3f33dd415c1693225ade8fae9d83e3da16ad6de45a79a43a21199e9c51731d68623a969074ef22acc7e923c8d85966207ec5029d4dafd20b6d077b3eb45afacd258bafe0c24553a733f4751d204d2f505b116bcd51997385731b7409b3d9706e071af2a863265f0365cb5dd93609d3aca584aaa2f6b2c46ded9aeb9e84b8e0dc06928e8f217b250e67512107df5982a62a0510c6066c2609122700684ed2e72668b809ea78ea9f7a97a2e42f9fbf7f608f4579e3d187fe236bfe99a19c243788d05085752042a20e4ae3843b5ba0030f02b2ed52b2613060e3a875f8be0bc5e3c7b3f8436c05e7fd8c8a8d1ab5aae8c12482fd15827026ad2291b9b3155d8832b708152c75d2a09efe5c2eeb0a3afdff580bc9d44b74a3f73bb4f3a23b9b8de2786d945305d55cb02aa9f4b53ee906d54e9063e33a5aebc4c8d1282eb78bd446ce65d3783194e6e26dc30c53c8192db1ffc73bc4bcd515c933e03682d78c466080b1a4c22ef072600dfbbe8bc38f6076857a46d733234e10eb9aad132d2d45494ad305de79cdebca09dacf515e86b30f5eccc2be3a7b7bb73d311103c9e03a0a734b116fb122cb7ff8317b9e62be1c0a2ec4809d03ad935672289097e09f869fec8366e5b4000bf649184e31a52922a24afa9a7c925fe380cb376704e2e792b2ad437d7a40da394556c991c81095c49b181c3e0f2a48f023d675abffd427b96e64d30c12c8c8f3cc0be24071702f465c861bb17ff297598b4698c1a1421b1ec880e53245295514dba77eb833e022ba351e12f174491bec8fd4de20fc3ae68b36f09f175c12c697f15e017cfcc79182db7376e7a703c07ed0b837a8c48159e24bc712f0cbb6c5d1c20fc6dd8283963d489c64f181d65642e430b3a704c22eed2858dce7917ba1001c0de69f51c7534e2b8d13054935c320a1dbba07fda8347c397bc761d9e9c2cc92ab882218e457d3125822a375041ba409940dd2e989b5df9bfee91ec37963a582fb6e4867f2aedc1f5805e7c68a7bfd047f092628b22225246ec79c20e52bbd8583f5e835b089352b8e7967996a4c0700c2f9997b382eff5ec23df1ae183acd50603b860b090fad307c2a8a84615358c0620c74377cea6dd118749a65fd9d529590f80605c23358f4bd0f7a288c2e6615f7ce1bad2cc433fdc6d56bef35dfd38fd5d1094a932b38743568e4a3ddf338e0e368da5397749501e2653fb9b376116a0fb06c52863648864cf2bfcf5a82ed67221d7a872d228cf5eb2919ced4f6b24a29ab93264a93fb0856fc21f4e984573e03588837ceb81039d3caf5b1a484f774c1cb1784f0c18708cb0cf387b905f8f2319e02487b54947125fb288fd9845db921953358e08d09fe78cf473895f32299f8bb7c090cf36e9416a6165c9e188c74984a22c98277ae1aec3c1fd4f6709fc7ff69ee5de519f54d70e38d5ad574ed792837a320edc1242bddb3374a911681d13397e55d52debc2aed9247eeef6d2b7702f9d7e6d300349cfe064362c2c90b66b5fe13b7a9463d81f2bbb5354643df284b1f5297769746197885685b9bb89b780311aad6577f5bf4c7a77d8922fa20e08a5192c429b26b3e5649ab8ce4fc40b63d7b15ad24e91983c9835795927a84aea1608f87609b417cd3f01143a23909ae97bf413ab8b98c5d4e1837dda4b40b37409055046aa740d7ebfc5a84f45875846d6bd209fef23a12e298be27ab29a51408af431ae65541348ae430122456aa680901073f7988c8f13096811fb1b80e519f4d9ead98344f402d7f7a384aae406858e6c3039ee3dec6f51cecb955bd9ca7ef0e6862ca1a149a960c2eb44821f453883ebc11fb0cbba4afa13a30f43cb9b86af9db1aaf839684a2de5b7adff63d0a9d8744ff942bf574b69ae849432468ec38f3cfa8ad0accf60dbe2fe517c1bb23e477e4fc9c31070f47d10ba2d563abee86f12bf2f3414c6fa42c6d8278008d35ef1cffcf3797547202c07e4a434532a00282701099263460358e847f019234205ea648cbc5308c1d6f88d810757816e8a4bb09b133703db4d992b501103a51eca9a0a2e03dbaf7a606185c01b8d4ba0bcfd396a75472e62eb7b2034ad05dd50dc82d1b9468c5ce7af1c68e25f1cb9d5e10b0cd84a37f9ba43a460021f4f3bbca309bb53328897b2b02f7740406bc522732425a6ba2cb4008d6e2a902f49c7eee96113e82052ae6b17e2728353123dc0f54a1ec64b72ae5f64fa9e49fa088ad2651e46819b4b8afd5c3fc758560d205b7d18a63a0fd57600b45e143b3164263e3578c67ab5f391b16d49974d81608493a91cac2c1e4f40c71a7bb47fcb69675a3ba4b27cdb593746f63e2d1f06974f9694bf4f52999cabf3296e0f4db99755ff1d59272fb079cd6839272bf7094088ecf3122c17ecb0946c1a3adecd6fc02b8b41ba010e89c5056a44b7681481cdb237d401d5b0f4f503e4b963f01028b74dac8d1272c5831df5b3acfe857d2c956e5a5853dde5b17a3b9835280f4303cc7f6540cf9740b5ced3e77100fed34ff788046d456bee4a02ea1f4cb253d0c79c6f552a6cb3e4ae39df09bfbb5b06230bc47830bdca14441d2d8d481efd55768dd838ff5e663fe15539df7ce6bb2cb3f70000431e60969522073e556e821cb194c115a9bf3f128266837dab424661e88281e82f25486d96d9fd8e35f81912f4b2efdf36fc9d98208bb4b7b26c5bc1ec0144aef059a1cdd60bdf9df29c00d778ef55321e9ff6d7e9c8824c6542b406e4a6fd1fd385152ba11e5d1f8322b1441d38199a56f02769d64afa215427c548609a68e68743a219f173782eaa3101a1df3f67022a6d3bd005f8e6476016a419bce9d6e077d891b0cf528ba8ca1d1cdb6f957c39f735cbcb38e470a6977dec50a6bb0f3bbecccb93e2a6bd9c9440ba87db5cd75d6c3d0f09018e7db034bb616db0c6cb30d058c4374e7b0790397666be4eae2ea2202dc6778a92ed8b6c1fba8ea51651e50d73b613e5ff58e240520e87d7219a9c2d91f80e8677702e09d0b943083e047ebcbac1eeedb16011e1a4d51d5d93baacabf7023250660dd710895a0442122f4d9b471f64a2cd9c3977c13ffaf352fd68dcf6dc1011c1a7fdf5aed98c8d84ce3a2d44dca49884a6778a8a380971e5aec5700d27af756b30904164b5967a0e5e43b4d411bb35c5fb2356c24bbcf8189b4c4c413709ed874c8b163f6aec554de510be02d27c3a08cf85903526bd3f0160975afb58666bdd8932b2ac54b4ce57b044b450a260c2937be346ee1c73ec94d2886eed3005b6b99b42fcf4f3c850811fe7f62a240f4c9b69a1f82eb342686e09b3c80a88c80c3b100bdd722293e982b904f71dd8aa2b2bdc08566bb108b9967f00eb7411fe49f64e13830f6ddbc69483f0103b3352e2d13d88f38cf976f2fcde6e4e1371c8780a8f1a4ec5cf0b17485ec34f1c203cd88adee362e5214586ded332e6d25ec4818a98d0cd3eba52834ab596cf864bb7088738428f0950c7a85cb95bc79cb8562acca80fec01bc1714f6079dfde726accb8bb29b5293d9a768c2096c88644045687c1e1312b18a20ed21cec73a8224269cb92a742ce8cd8def24b9526dd898f8898453b38f04f6c5a645ebcdad3af18374d41cc9426001adc1c45d327d53153a1553fe299eff59c11cf13489d4f7d0c02366e57d482e787900be6a994f096771cc2c56a10947186246c8776b9bff16117e2460f4232de2ee4b40d85f96aba0b74e35cac3d12bdbc398933a16ed1cf5d963d373c3dfb1031cd9a4d6cd798b3f5b5c9170de8c841a689713c7bf199c692fea2f31c13500bf776ac21a3a569161af06fdbe63285eba2188106b6b432676a7cdea09f7ae1c8caf6bd90e533b7c24078edc8eac99010c8c0225fb05f4c4b421cecf6ad60894ec4a9ec854348b338b62205772c5954e91f4d037ae2b4a886ed5292590c96feb473fed27af048c4091e96e750ce78874af12287d5738b0a6a0d776d04aa0b4c601730994c0193943538b21becdd1acc22a1b2e6aca8571632e80295ccba77483da2940c32e3ec66d31c4cdb99ea8d8888661bfad947e4db447be453055514fb078ccf600860bc936f7e3e1fd11a3224baee0ce8652a18ff0b2eb5a8a8d84d924cd0c583e80cfa25f0de1b86f642bfcba7a86c4421ff8949997e864da4806122bbf008b819a08e39de67bedbb3c3724ed827b11f5987b1b68f970dd79757d8a0d842e8b6fa4fbf4568867d0886e5e66501bf2f0119153ae027657827656aea0bc8d7d0081c21cf240603db86ebd013a518cc454836ee7d2c1433ef983905bb7bbe39a7392cf16cc4a0e14c945272d71262ea0298705f2341528d9760e7639e3592eeb1c5d3c37e8ec328f5663c74b749c84afa36ad8a8472618a4fd7e21615255db9f08936b153c6d4f1cdf37026522c17d98680e371db4cffd054bd017bd7675f4c71a659a03e413eb21312b6df127b987f352e9aa7b82069cc1d7010ea4f4d1b87b93b2782e452156ea4dedda458c5e896c3521b89d388e4234e45dd05aab78b5229f9567965a72ad086da3bd4e1eb33af2016a27c38cc6acf5a0e04a3c3801531a5d03c95aa8606fbb78044854fca386bccecfdc7a61237c564fc4700dde8243df12474d2d7242f6eec78a88d3dabbb86dee9d8ac5d82448fc31d25eeb9fcb216f695cfe4af72f416621897e3a4fe9131e853606ada67ad5a85371018899a8c122cb47789a45a6714a6f89753292a1d966150054416723d070501f7052dd14ff5859126ed63cf991d07ff3595aab6a0dd49da0d0992dd9579dc921544712e629d7b2440671a1951458e0846ec9e7f99f1bc522108b3ca1001626ea9522103210d13fcc70ef222c45d097953b2ebc704da2db0ee119110ac39c93df33d3355be354479369f976f2d62d194ccec974f5953a79a0fb2b819c818eea323b008c12e7744e4eef45fffd0a03b0ac3117f8f7064a8656a9668d9bea7560dd23c63c7350aa132255f5d5fd23f2dd1932d128acb7a7221c813995b285a56af1c725a8497fe8d6a8f5f4e3e40980f11fbf7c9235ac486ea3db3d4579847451f1aca459aebad605c45906d26dacf8a42b33a35334a1899a82086386881eac21626413a58b025219c45ad577858ed9f91090d2356841011e2644dc9ade588d3bb992036ea27b3d5b443f64e65f15c253b65052164ef17c1974622be920ebc63854870a1a1c1fdc6ba069988bc05634b5ffd68e2e83decf25eb87a98f62cba5722b2e7d23a585c4f91e9994b80ed1f059254ac8561cfe38d8f191d65250e4b6d74b4264ac1e3d2c0c5ef3b288ed781f5360ed7fe977149bb6e0206a176ea0127aff657d99661b30a3331d54d40c7cdb593b78d9a0f75db43feac9b8522cb7fed91c7bf2d5fd113f289b88a35dd4a91a7da661cbddbddde701c541ee0c667ba515923375f38b7a01c9cf131689b5c3b8b3d15592f632bc28c2dc8e4a60a379376f26cf4802b1b311c6e566b77229839b460e206a65392cfa1e6e9ff576dcf2d6c4305090346eaf2d1d7f2c58f7b2393d4b4031d427008f337ed97591379adc077cad7ba700656c9d8cd30d47891f902b08346e2ef7075520445efec1a7e0f00e20138b0acaf512c25995754f0cb38a0c88c8a7738e447bebeedc82b2f519900b8a35c4a48438a64b45f4622f95a205a81ff58ef7396a8a3f5aa8eee524bd2b1e9f94d72ce0554e659dcc76fbff56c6fa14b6190dca458e4c05134349ef31ceb16db18e3fd54aea0948161b0a59d17629dad7f85f127c3627ec2b64007756e89fdc6bdbcb1572a759356d595246c0e24d4b538efd2cda55a5bace0df4393a36ace12e6e66dd3b155cd503ac490be46d671f235276a67b1d7f3807ddc34c98b579d588c54dd915efe04053bea8032caa29277c9a0fe695f05ce51fa3bcdaba138c52c371285ec6baaf4d49a1b0b244f7fbedbf8ac8e4cb2216658c99ffc20da9246f145d91e15c9b2813cbdbebd1cc8c28375a64c416b5e4e6f350fe7c5cdcee6689c9f642806326ed233f3eed976285fec1bdce7ede91e234194f6a05ba380b9930a6d4b64b47b5a42d719ec40c8a53b06e35141e0e4f6934dfc5952cfe132953f47f2218be596f502768a3c7df9822cb2825a397c59bc4d1c9de1ec43c261143715d12e66860f093698407031040ee293dd2319255f51b130c2d0ee2b2768e71f38d01804ee38b719944978192f514132e6fdfd98b90eb89663efd75a356a3d234d6d79e03cfbae05c45239e19713080600d7b7b741a6cede83302a8246835d49d43d1772bdc914b5f193f0f562ed8c0683077790faa8380dc3dd5f88942d12b43b1006ebf35e7f5c1a370e5505dc5c36b462f602ce6b5c98dbdc82234d5652bfafd63c3ce35e4134fc7494913cc805a43220f40e55b7aa9e25f8c838e4505ee12c6826681a705e6aaa11842f57a431318d5b194f5623d92da4be74a44cd926fc0bbbaaa3cedb455afb64f16219e8c1a66bd261b533f8cee8ff905e9ba89da48e814dd577dd24fbba3ecf6e13d763c1a7d5da6e297dae17b77a28c5431b7bfb775c5afbb2333ec7014283f294ed1d590a6a119b1be6f9b742587a0d76614f27bde90ae88a715eab3c2b4469b3875ea8a51e012c3fa91691cf43c7c5431eaa712bf550b2e21980d3aedad38b89f2f896dbe077fd08f7aeab3f418599dbac32a21490e5423b8b6f7f0f291f250d96486041965ab526ed5ab8e0a9d46bbe59090bed32c547e45c514301b89d13a8ab19954f2fadfc8a04abde3e3ada57691591a6eb459b221531adff1c5920161962930894cae4d925b985c391d8c4ad7e2eb026f9dbb2c36b0b939e9658909cf0b12d87cefa734d2b5aed378238399f4a8ad6f2a2c17a88a2f46851f21398dbd541cd71587071a9630e7e380fef694ff782c4f63c1167dbddf9d4660e978effbef35e0321c4381ba1cea63789bca89de7b4f2314f89d9f07f6f2436eae2fcc5c7d73fb9b674c5a35c4f6caed3db83b487a4a5374aa610ebd996841bfa30ef8cee0e491344c4670f7aa7f21d9514db3d66e42b94ab930453975d62ac2f10e5cfc475d0bc45d336b1c788708e3562afc83fef80dd3cc7b3a405da64f78e2fda5eb9ca5fb83b15799362263f57964156b12498891d91ec680d12eb396ce709a0b5c550cfa3df0707b3096d317054a604ea3e2df4c12b0f0166f83b9a1833bfc428bef3f8930ef83edcf7dfe8fcbd1d678cd36e198f9285efccd5adea240e42296d9d28d1bfaad97d4d388361d78720d626c89dc3f183fa0aae9450e50e5092938c97ad56c32066a7471952e94e330ad98cd44b30806a7feffe7e631831cfed302546e00f829f195d50e5bb71fa00072734768246d3738987bfcfbf962f651dfa4b0b866062b7b8c5ba74b964f2ce7d092e6bc9866d0889f936c54d85295c67518c9153016e7469d9329c9474e521b7567828e652828a6ac1250d1c2765ea57b0f2761b4ff38e92b89c73c438435627c40320280712d4aeb478208322ca18ac341ac26521c143d29067c2d1d62ede08ae11aace4413b9296b08ed1fb3d70f29edead416e44fdb464f9d3a9767ca2649436183338d23a5986fe953d9aebe713a57725caf56917599b76c7ec8e1bd1914a6d7c43e7a0e8c2105c9667723ad6701ff6ad10ebf7007bb85419ab951173ebea0ddb0182ef3d2cbd29cc78d0e5a3ba2c6a021b08a3f9ab9bfff3ffb9827a44888276f9dc655957a07d4b8ed758238660750d19a32da9461aa644018014afb7e0dd96baa5a219b9ac5cf6b7f09f9626fc74cef73c54b5f560d8a3828474656b63b185c790f0135f85431970334a3ae813cb7e77edfd13d887c4b2e749daa55c3cb6459cb6d134cb1fa9d5daa5c680babd9dd257b1fd4de143f32f3f9be667306edcec7aa2032112e683256da9941ded8050ad3f561e551ee29fdd512620fe771d55f3f0c7da58566c794d17275270339ec7eeb004a9af08803c7c4ce8e43227839d3d304c2c21ac0ffb2b2bf5698ca468aa178be64bdb8ce3e55b125df3b8f7f788d053572d68c87fa8013016fbe52b35797bf1001aa5a08a9ea9f991db1ff4dfc88d34041850ca013af5394bea1c08ef2656ffd9063e1744183b75c1bb2d58fbdfbb4a4785702e00fc084a10285a16c234c3ff71454c073c4c4e14c18beb8021da695a59de867c040fa8f0dbec6544e52ec83aca725e4a6b71320d5db11b537ff443e524ee7502bfa77fd1a93d9e699c88832e1c27129db7f5a37d270ab0e2ba1985706c374514b71a5130c4f68baf9b3c54dd9477d577de6db1abe612937c453852349217026c717fdc59780d0550c18c749fa6bbc37d2dc12ebf82ecea8706b9f122ea9003632d1baa3be40512392aae316be82918618cab46c7a8560e95e59c0e2dd59f9009676c46c75688535439a4d6595d9b9defae30e39e320b6ac43e15ecb3343ed50027d17cd971596c51ad14e18423359b7bf29588b07f2d70525c8ae85b14691d48df939fe3f0818e219fb224749608921beade644c555a43e3c1ea24cbfdb5a15d4d2ba16f0face07411b2ad90440dd3021787409b8d79a3d86034d1c5200cd84d5471f1c2e5c80978079ba26b9ecac4b848962534cc7d27344853a12707bfa157ab6146009a79113cda9fe278567b8d09a33d7f86c16325c16e16508d07d4bad284844dcc53fe8e1f2bd785b79b53081ab203fbf908bff1eebc1a35de1c2279608a634f024438ded663c039df38831e5921a068387acf7098681372e8a8a2f3687d93acc27c8bccf0dcb03fe9c9969bf7468337ce4df77113bb315e12832ce1ac3f08badd07bff7087efdce92465ad0feb21f6d3337fb4feda677f297a4dc1b96e33a43257e2e461b7b72f611c7ea31e1086234cee440dd0b4454717fa69078da5cb056ea5d78749bb43e04a4dda556a46a508e9ad8b886a6857c58d1a641c3738e30d58f3b7149f9590a4b812cb84fa1d1d6a59e4c6ecc20907d55634c39b684659086e2907700d1873352175d01759198237926e3f80ad896204cb2f4d464089a2052d7160c1038f5f6683ade80f51599f3fa535d88d068086d1630f23248eb531728b45b94bcb0b112732f2dad37b9676f552ce56dd6ed236ea88ff2992857e1ae07a6525c1cc76d80ac29768dbdd478d05b7bbee69f003252ea2b1d7bec56b83710c8a4565d822032c46c5cb8786dee5f6b120558f6006dd2980d525eb7db1b0bc664faf2f513b2a5fa3c41c6b130eb435dd732ecef0884374d23f40a47325ec49fb289097dde445fa514bc996442503624dc13f54338aa675d548f91b6578d54272c9975e5d84233061d41899662866325aca63598c2a554786ef4d942c72ef15c30fa687e4f6dff8bb86b1d1563aba87b97c17af365a9114d44dcb461f4ff8282c6d1ea61373ec724a56fdea7da18d7177ddf1a7b31edb5823ed80e34dfd33c8acc5dab2da15b80bf2497985166b03ab04621aeb02cfb66fec8415d33a182c72aea394f83f3dc8636b74f047a32d668408bb07c159058f9a5aea6866b192b15c16f40618437867cb7317da56837f195c01cc0897c8616444273d234e82d0405627cfdc8a0920ab6315a0e747cabf6f12cac1d909bc26c1b33a9b7e8db2c3b4863ee016e57c126a3eab6e2400e607f86712b60307e0aa1826135d71efddd2bb7646ff8fd3290d6e461cc6559ca1e51ca18b9e8a0787d9fd0ee5576dd1be58ac60ab895641f72b1e384a71dd4cda330383326a21ee2562a2a090de80781d4712b117d048d897db262d09fb16f84d39c3a21e34694e95fa113e6023621c1dd98edb152f59e2a5920e407258f723ffbb3b121fd825a708b92101b3a772a9699accec510459187117552d99800cc7c1dca4d9152814fa10689f1fdedf6b495c18bdd6e0adb2620c76c3f819b7dd1cb02255cecb55bc78e58cd8b6d33e7744052919a17e8684e80dcbe922212fa538e759c96528a6f9cae9e7e183787e00fe822bae02e1a12e3ca8c88db1c6817e2d7a6465f1270c82f200d43cbad88ae55200970403b07c1c2fdefc098f070fb7e3cfe317b85950f6c705174afe0bb0f64d9105f9185a18e8429b938b84a6d377320c12ca06f4d5023d57a382ee8e2b96ba8c0dd1ed6f053c1d08637c3178212fb6e11de8dd5104d5990b9dd627110ec985a2aaea0ee67995178fe0f5c28e4ff0bfdaf6abaa42a6b0eb64a5c4837be160f1fac37e2b29b9170c3777a232cca8a1b809265e3fb80b8312d51af2eb4d92bde7a5072f713cad78e045dd7c4eb341fbb6e3bf0c62d4b12f09396f77dffa549009a20a72ebf434488ee4fb588fabe0000e919501bd5be2534184808bf5a5c4489aee83a0f6d828e7d668a121f119c53c5ab446c9e3d4538f70d81506ad979f308adb65edd62890934f3843abaee1b4b8f38fa99ef6c839ba2d2d6871b3330fefed99b06df14817c834730e0016b79b7092803bb76ff526b5889c4418a3097beb0ddd022ac3345018f6b4c8b69f2f749520bd71902fd4605687c80b7c6964190d4b972dbf7bac0d640725a007c85e90c7f1197442133d95901a24813b9d91ed3c984ad09fce2c55f21955794f90413622667e2e89188e23b314f5c90e5a8d6a7b4e4be71eee746f8fcc8090c462ceffe150f1daa4ffbef9163b6c6a86cd55a6c5942272c401cb14e2b3af52ca06b07c96b169bdd68b39488e3d48671b7dd38a4c7488a9015fe525d41c2f38c683faa4cdd57fed809e8be9c8ef5dba2788fa1db2c4fe750b1d22a047f609bdc1935b322aa86e3df642f048a6df5beed2eef94751710695a5276bc125a199bed9a70e8556ba33a18069ae7a40f7083c892513bff3e44adcbb365c2c5d276b22bdb81618d7345a82030b6cb34085d04d8d2c72d33cc42567e3d5d1968caa1737e1a436975509062a5f49a73d371a386bc887e21df22723e64761d0abea686aeb003f3f0dc008d2ca92211ee9c3fc06b04fe7421b2565292c8521d612a52a77ec0bd37fe498b2ccc422cb05a6001510992efa31a637914a1cd993dae9ce26bdcc63576f83691b7c37c008eed10a66101bc6b5e2b512f3e677958ddab193d95ed563e7b48f8396a0153a883eb9a7a8d87a9c14ae20af5ab05ae6deca97b854ebb7154972cdb724f04804afa8566477cd63193e573edc04d2e79e778389bd5861ae915b7be309f1a5aadfc16a524433795fa0d474326fc18b0da475db2714ef32dd836740336945517289f541bf7585854611738b5ccbb0fba20f8e59eb798d8e8684222e0dc7a2b127afa8cca056eaad7211ecad69ea58d5b711223fea819fdd764d087b8f7c53b845aad0bee5b0541d66fcb10f99d97688c39ec9a5f0124452d6d294c7b80869c0837d2ae2817e8ba684f80365c760f2e1763417ba080cffe3b0351f8ade2670fcf660f3e4b0f9d9d95b3b7a65c99991d594a6bda60f348fe10889062a80abd217c518c072a8020ca827e3f00a2417f0c84aec692df650ab98c7bf6edd76ec75de02cd5fdb8e920408386221ef02ba3d3ae2f00d9f8445b88733b8f0507ad33c29598bc49eefb4cdf3b79c8c6daad7112b7fd95df73f6db3dff739b24da84003baae96c0d2c229b9225df191341c041c9fe95f4acb3fb0f5f2111dbb00e228a363decd4df7825e055168454dee094de41a72c8348d9e7df7ee2684fad74df12da0e30044d833d8c6720e55b16932740779b10150decd92ce5cfde862eae998fb61405811028359118d7d82e38af2de7049a9df7bb135b93c5096094d6e3e9813facf038e343c6b0664b349cb354ce0110e0e8f1d3bac949c741ca337ed2cc385498516c194ea6b6b66cf299b79bc364a5df6c4eb32865b5acaeeeee7d5046c099d6086a133d0c11c34798b765837d9fae67f52cdfb2dd33c877b845e51974000fbdf523194376fbef40a8fc657f737a270927c82d844a647269ed3b01a5831994b78b7cf6f27b08e311e93d00d16a66a7f4290e85aa42946c28c54c4837c9bb37c21fbaf1e4f17ad51e38d98f175fb7cc00cfe5e722fe6c2fa0d3aea5507e8d7bc98c5b1e2bc8ad8da1437a5b21824e1c73b6082b4c4686bc6d720d89f7c10c2e50c0bd1ddcfc0fdff59056ec48cf151fd11f209dd706587d32ab4feca289028d505ad0088d292c719362aaf87bbe165816ff68fce1e2cb5d81db9c422de069293c3305269d06e9d23f8c36f966960316ae4793d8f07873073ee6ee99a085290d37b59dc41f8cc1d79f06b6bfc8a0ab0d04251a22ee6e2d093a4a34a82970f4f08c7c253143f94342360e7c7dd91eba77dd6d4bed4732529fe4341ab796ab5f6fa2cce07196b34dea1fac5ac5861ea1aaff98eba8cfd07f9d3399308c945ca2840e19331c977642ed74915ba293aded44de9021bd4ba4310bef0c2d79bce94fab8333ffb2f917bca349ca9db1a53246607e608c73b7b37a98071886df9caacc294ea718e17fb80172a5e531655028a2957fae301158a94d36af80a5f8ff15594af4fc5a1feb12db9e8667fbff05e8f648b1a2f75479899fe9db8324f0dce4794e5c9ccadc234f020b5950b4a7d07276674ba086c85f53a88e4cdd11823debdc7bfa1f9eb96f832f0b32167a336ca17a9139ab6c32af317b3f661fd63dac9d6107c124e4aa6b46ca44e723f9c767ecc0763b859f431e340cdab97312541119ed2b1000d52a43bd2af29b77ca0fb00a8b5f8c5c3cc5d86e27e0e94bce880ec1c7e3a1f156f472f710b3d2f861634e0c4313ac83cdbcb19d94d1696495951e64a498812854ff2bb5dc7d90fb78cce123e0577fc65f6977cf9a188450e1b9a1c20a871866b5c8a0dab6c1a52c87f066df4c05f47b7d3441d0e8d9ed0a1c757247b6fc9558571a750d92613cac5ec3bf2e0db9c035610329a7feb3dea09d7f5060b16f7f6cfd6b14400ea32d111cf8124f5b85040277eef69ea376a59f9913050e3c024686cafa08e41687202d397442e3942c52da4d453e5d6592767def3a044dfe71d104de1512fd88862eb9469909753381fa9245f6fb6cfdda0d5e56e075f29052c98538a49ff3202c87e81c41dab504ed3cd5165015a3f3a4e704a96be447fc32804774dbcfbb77555890da6404d38f809d377204461507a1d04c1749836cafe3227ac4490cd3698d44db5784742d9546c0472b9952265f72bac98e22c2d1942905616aa16b7d817fa0866aa6b025bbb7885581244850b1ea38b5b610f0e3d2a2ffa218fe8e983892e719fa065d9a175c64a85a7c04de55a4a7e2c81702ecc0828d2995290799659f00bdafbb7b8ab9beb55295948bed7b026a2507a06a8a8cff66281bdc3efe4b68053dd93c4d9ee83bc8f2e7978472344473502a4ee71b01b279f7342be3ea564bf084b5e6ea33e7dbafe52270adbde575f6193190ec52df324684f94444b45500f3f4fcfe0fd9ba53486c52efe80fb2a49859be96d489252e32af06c10742169fe05f8ed82183b8b82e47a19d8eedba31a25697d1b7197a76b0c160d76eabfda294da48bdf60fc5bf84fc4ddbcf5ac982ac0841f22d358ee84b79ec4663b4f09a488962bcbb3df4305198269add52de5de9243d3bed4938219f940868bc8a14845092f5da302893240301493f5944ebcd09d53993f1acd58bff9d5122978d2c48cb117e43c953a36260dcee5965881ca0b7e2fbff1a20620cdfcb9b5003a0ace8209edb3f61e34de476cfbb3ae295cb0a20ceee79ecf67e937d8902ea6b30aa4a459b33da7b5069e452f6940b2873a3d6071b490073ab62f2e85ab1dcefca9f8cdadfc435220c1c11f68bd89009ba9b49cf5da8c4504db3c2fb278c795fed3619830e536c9af2358e9781c49427511a70f731d4b7afd473002274336f065b70ef26e67f0772a65f4c279eeaeb62b1600b2bc705488d918381768c91faecb4d6e06607c428612508759e1df8fbfecb1ea7036aaec07a57068572ecb385e307be23178a47cc87f52295d344fa4a3de7b71ab09ee515fbcdb5af55ec2473ecb6fd406a0206ff97f769322040e27ba84cad02c9d1582d8a9539762904686692c4f24581e08b410bcf808c1809c1830d555b2b6aa392f84756631565a60e55c05dcb43be0ecbedb301017e1cc3d55e84d9871c0d04e0a041ab4175eb62e38f65edb4ad53adfd011d92d0e40c0de35262d274a3cf4173e14f90aeda2adb9246c5739a7b72e2e5ebe76e8efe75b95ffeb673e04f8c8911c9d8ce31f486b151ab7da061925644f7c3335372855745c4c91df32fab8eea577d5146da6f7360e5545ae694db44a43b667ec88e9125128a35782035e2135a833402595d9444934ebe5c0573f3a04d64295fde821a4166a438a446b7622269b7f00fb34d1ab4461aa82f42b92afc9ffb801ef7abcb3f7bccbc92a4ca8572cea9028654b96e827c2ce627c1e90d48a094051be3ab3ff21a2d8273fac130f56a03ad4d0fac5883c1647192e70cac91474dc2cdf993dced974fff01f2d322f3c910b0470a03337ec2427f21d96851ff24536f5c69b4a358795fca8f9357da58d0848ff4c741ae349c421eea63ae510a51bc2cbf1269eba13b424c22deefdaebf07da83acf09c0ff217911e126fc396b68d53d6f80bd46e8bbe7d20f1072f10a9ef1c621ffa7eb8a84868e12b73d25d0c06aa12242018da533eaa8f1d0a162adb34f0ebbaa8225ae2381ae7f85cde4dbba5cb5a0b86f041141b31ae40305e4d6f437e8867cb6ca1669bf2679f6053633814db537e45fb93f2c9621bd3608a31913f9873144643ea400681626c7dafed25ede215f9375fc943411e8a6f62128f2f90e4ef013bd8e0222fd3fbef38786683f9c0e8d67436b3e1e9a440bee9c6ac3c85f03ef33a1ce1b87bac5124d2e6f995fd58c308fbddc6ddebdeb1b42bcfebfe1b90422685e3167163b32d0bd7961a938a9fc9ececdb43d1c3b274e459d9db31ad5b33e69713dea657a32708f222595f990eb763418159787e1330b10ef5a5cbbfcb0f8cd4aae8f7540565d7eb569529d32137b48996af2375864bfbca8bbfc0c5fd7b3e0420564b3082388d2425e9e706fe9e6fcf99a421090ec12f76dc4d7866a89fe9954048504e3b61c7f33a7115f37a20e25df439bd2889ff05e7f430b0d7eac74122206a1fe6be8b3b2a900db6cd0774dcc2e3cc5547a78ac540c574f842dda7918db76820919ec29a5a1b38019f1b91eceea854e467c9c0713cb47555e0c1b5a0a338c117f792382a1ab02d876418bb924a154a01f99d08a9e771d17f1d9b546eb17179427d8ce2a89b222f5fc771402d681b34b09dac26a431471ee8f28613b1bbd2fc4faf9b01757b1d2edc7a81ce6d337e207f4a78e770ac0c1042bf877da69f2c862dde23e406006e2c7e6f422fe255dfc5369127239fbd22e2838a3f598bd483d946f9236a5d8a63fa48d7d6436e19048f62b467c3c5c1c7fb93f188cd74532607130839f74f7a6ba52fb12c7bffa2d35f488edeab6b8cdbdfaea91bfb299a6da5cfc0e5f1e2bfce3e12fa91154581baa76741c97a4e0ae620e335bdec64cce0cbc684329593f0d4001b2136e6627db8c03c4a5c19e43ccb1e12b01bd408c04b438b6af22712c37314b3186def8ed766a62774e91bd87a5523070334d3556e83687dbb1f009ed6184c2514599b9b753b420e5c8b7836ff274efd178af73d8468594bf2ee521d0f268d05c0548432a9fa1dc6081457374b4f4413e2e9a0931ed07e9b5b6397383d2d1cea520d60fe0cbc6ee41ae882eb4332e09bebc81d291444c46f4de1b26f822c118d1ef8a96570901984e823a496ec591e19899a2d20ef25701c0254b09f7d7e1481d1110fce28befb029af70eab941d9805bf0572aa85868757ec650189ddab1c13457469d8cab65831f417266b33978e1386c4781c7273586fd4a1dfccaf7f280528a37d890677b12437263f6c65ad95198a302345477adc157a5093909f8b182e533e554395c0130ef9ebda0af8980dbfeed094e1406ffa061f81cc9e1dfa60566d5f9d03e58bb4475c440e0e2c7c9a9e37987eac4efb9a6de4b5a4c09833f5823e146f7c03c59c148a8fafd534b0cd231f802e0c464ec908c907c0cc6571a05a989fc77c7aaad2ef893dfc8aafa374a39d7a115cd9ad33cc7112358801b0b2d12a084664ab67f313c834b7f1f647dfddba7a5b71c6ae27b81a34024a145c6e93ff3e97f661adf704eb8a5f48f790c281867dc916ac7d72190efc12f0128f896198de1639449f023d007fe626448399c35056bfdc560ca7621b684b8334002563cbc9d887419d9d1bb808e7860353cfe105c745c7cccd674f7ccdf6f5ff1e80a3780652628649a5436359b323e5e9a54a482a3407289734021026eb9a02db9b429e73402e6719dcb5ee6e04bdff84e8e1489df261d0cb3e54b1d0c3e296a1d2ff2e29a32dc178c1f2558c9843542d5bc81e827465f4a7caa8b54df92830436de39d1d541508005332c7bd496f197bc3b4a2ad7e490207fc3140046d0fcadb9d1ee6f11bd52fb64f59cad44f898d6ba15a84bd2bd2b9f45dacd3fd30946c359679d87367b5d7ec1d2868f501c950c4d2cc39eac5aab49b635a2766e5f089941a06001be58a22492d14326364b2648d49795c3816e4d35b8496611157794ca10065ac07582a263837f716785a4fb7ad0d2854c2b01207e9a698349cbfab1d965f9eadc6f22a3ca36c0d0a4d9f750432e62ff8f4f46d8bd7526ca2adeea61adbeec56e6179981db654b57c5ed14067875314cffbaa8d72b0d913715f76aa186f4436ef8c2386f18ec76c3b2258128fbd67bb8d72e28a1de48fd41728523bd244e12b36619c6d2b598cdd1fdff747f2ecb072183a26226fee60001cc86785e7578fef0b3091e6aa365146a8378defbcdd62f5c855555e24eba209359d908153caf5fc0d62c094fceb6ff553e76becb2690eab47e79062214fe750e0b5c6d949092a3a03c6aaa30ca174cd3361bfa0e0b000d43cf9a4c34eab8fdfe68279a6e141119cac1bb9c036321c42d3256068df16c20a513ac95b230f99752e6cd5e50c579d71e473bbcd4cd3e2a9e3a0fb662238fa1678ad98200ae6ff62e771d840978cf08e2b0287218ac73cbf9874c0665e66d19867327a86a160f8e7f8138c813254e7cf1aa72e59d5115addc118f411102aa50c047958f42ae131015f66a6984acb9e3d2a56210018b095d650348e413df11523636619781d98893fbabd660ac5bbebf94d1cef008198a39f390a7505550ba900bef33ac253d068467436db3c680f907d69a6ef8c4f2f03b8f7d028b16d80545b299919d7a6ea64349c7fd50425b95788305b0ca23ad8a1af34a8dee5ebfe848ea5e0a59fd2f063c144a875595df3daa3ab35e85d20dd039088245a9c94cedefce5f493b6367222659f70a772e2b4d5ce352063dd12024f6e45b1c372634227683f83b05a7668a6629f4f4a1831a047c4c5f4a20a617766b14af6140da0a42846d9c81f1d8ebf18dabad634bc79f884fd04acc0cffab270cd53640a3eacab54d51f4dc6d0f617daf44024c71932c99899f7039ac9b19fec80a10704a5e58b97e2f34b5d0f7c3faf2d1a4267df8a929f5236a9f2c3ce39e2553f84437caae6a87dcd32b269de76f24193bbce1c8f607329eeb3bf979520a1eda34c53e3137bf4610ae5c9d4ff94d0fe193161b6405ba9b588f40b1029f5013fa01b0ba8414411d72948bf3e12be2c226645590ddfa68ef97e3a4ccae5eb4510deb86e81f7448d8703d137e0f74c8fe58054f52bdab9e1c48fa64419550aa75b717eccafae67d001a02a6e07a89e25aea2de137100c6df4361cf0118d1bf9c6a092c7bde02c5f2f9cfa6938845e0a7dd77094f9cc5fc2fb0dc7d17f418dec28b39b80d93dc8746ad8edb9d2fea8aef6c462c663ba114421d167f7e0f13d57a3f606d663c6fcc8daf88043f53cefdea7d3c1eea7d0b8b1dfbfb702ed4cc40effde4d3a27bfe4fa6a1d04283275aaea8b8309d2649d5d4f063121f5582f432b2893cc8dc10d79ba6b481a0f54fcc8c01accdd0059b0623f34b926a495c6d72eee04c7e690c0bdc605bf15bcf3a0b1bdd0e8d0dae5007f350d51a3c08d7f02eb7ec203b457a1883be1b2aa491f2fb070b763d5f8501d6287eb821d7ae45cbe1f3a3ac55f0e0c4b71b063340ea20cd72c0d92120e153a6b22ab7eb2e9abe4f7a9111c045d69b339c17b6d6aa2dec46fc958519a59e3ed886edc58098df2a12fff5a9fa8ca998d1ce721ceb435ed1ba1099e1b4501d4c6e2a7f7ca137c8e82df51fe5281d94523eb26ce5df8d8bbc944dce17e707c836f7e4b8a528b1bd777a7bacb66f17c1a44efb377994f5d9d3c6daef9e3e33ee51bffe1c69de5318100d2c3bbf9f59c0830c4693746b5f94658ae995d6b97681a20540fcb62283683065ca16aac222c02db2818a29b4b85f3cbee1635a3be620ba8a5404d5561423eca6d0ca95a02d0343ac128e5d8bc4d35fb59a994f7ff4a1896800b0db43d4b6326c445573763dca566a8a3c06f545168291f8edbb86f62ecb4a0fdbb75af4f18d6b678b8d055afcf869ab216142013ce684c1097eeca5cafdda61d855df46cfe5a115d300376497dfd799014f6a9b3b21d85b7cee8d2035d8ba3b85354a7c03d94782de3fc185268b739755ae1dc2d002c7dbe518eeca970344c94070cc5f345c140190a5997c1ffaaa83cca83df22e0b3a0659029c2cb60bd53a3128a02427b4040ba1b65c7092d940e0bfd736baf56614c56ec3e888f2b8668d281522981a83b3fad835eadfd1728d3650d0b0daeef45fbadd04a85920d4d9c66f0ffd0e5e758866114ed4ccd27f80f51311df5ec775ee765cca6486550d26bc5b19c1dc5477adf5e5cb51ebc08f0ff528c36a0230d55852a7577592ae29299521cec196c167686e0b79e5affc7c3e933ef56f84c347a3ac8dbc70ab3acfb5856c028442533105a4ecfb701aced2aaa5bf9895ca1e336889e29219e1b1aa157b13eac589607784a196eb5d457b44c98646a88bba3a2155bd749de809545f17854e956fddcd0224a24001baef0545df726d069282f82f414eec20c755e3594bcf6c32381d6dba3aa8412060a55ee7db53492811b9019b1d403ae2b54ce03d3bdc636c8279004a7af45e313d33389c15e9feb87f1ddfcb899fb5da1bd43610913dc1e9b79b83635feb410660b693b68927e73ca79a600856bf5ae6837ebeb7f8e2ba4b715df41e49ba2cc9d904f1f9212669ab1c81058de2bc73de77bd9f5dcf39c5e31d987a369c6bf5ba2de7e58b9f219838f6b14fb5137080771931e207dc31f65a167e258178fdf039a998cfbc3db6abd105432b9103ffaf0753f48bd490521cff18e16b0da388892e2b3dfa24ae86b45ef84e653807bed79d69ff56a33ee789406dbf3a51060930e5aaad073e9e2e2cea0202f5cea8e93fc8f86edd6804cf5e3ed98da04ba920395358ff8f3a5413b40fdaefd21e3f8edecd0bc1acca70ee708a74a6bc2648da50b6e0a2a186f0307f1ce85c0f786c0bcb69081e1f3f8a9e0c49cb29be5e603536c2f01b59b699bbe7cfe9c4dfc3e3195b64041fdb3ce45f3be2804346847e775c8f96775f5f907c0c183bf1ba8efa7b7286d155eb7c9e9e4cbb9196ea68f9156dfeb7b43303295428f9d4321520f3ba9c200d41960b281eae8ffe67d831b1e79f8d4f044080b2ce707a482db7634affc9f69228b85cbc7711f044e0b1f78f09080f72d6b70e4b8ba99097ea61dc3bd3a0d25e25a5bd19d5c8bc5d165e6e452a22b9e051c73c425b75216ceb114ab1864470dc1acaab0e6f8d218e2f8e7b919748cdd6b0c7670be40b069e6e1272deec4d4b72930e71ee3daa0d2d6299825d4908e0c68f61215a643ed4972146d0e304362fa59802647d1bde6532074ff829d1169635a64673a5aa0d0c219577538a452132ee4e65245fa82ea80a3dae692eee39a0b85e55924e141d043967289661caeb68edd2e57ab3e437be133e33f088918228c9bcdeff7390544bb5e023d247b10e3a48031c3c3da4aa3325b8049a39c6ff63b5a8aba428ae67230978e407c0d05de0a1ff55cf15ebb38ce4920b28c29a00144141165f01c726bd2184c9884ebcfbe1032ebf2cd724db7053af6556042486b84d44f39980723e8ba6c8fecc610d298300535631c77cd22a55a835e529395e38ade7cb1085e45ef2037d4887a8069d008399a15ac4745c059a68ff5272765770d6e16a409da6cc0c3bc3ec4088ab3842c674d8fde6b86012978da6778a15d3f786c8cdbf6479385a0c67798e27fa81543c3d08458d4a0a6e2d1abfa3189d8745dd949314f410d308cd671d17d1cdb86f71c0500a24a755022dbd166cac8c044c80a2de6109d2ac4cda2079c8508c75e3a10b49af441c0b348a72539663e837c84d223b31f376d7bafc950bd7e76e6274dba4d2184ee9b4bb70563b104bb6bfbca3b0df7691273a65448e0c2c955035e0b3cd0225da098f34d43c4c2c14ac6b1e8c000faef285d2418c4752a406089702c18c12325607468b10fc03916c0181368ce8a9ebf30ae7643e0031240f55de2502ce432fe621e821acbfaeedff72fd24793ee88ec17212b1675fec274b38c1dd67e11387a5803d04c08830486a64652275a41a1c862e41ddf74a24401fd224d4f06c7c9fda2c669f59cac7841cc784942cff83e01d50bccd8f1dc7b13ed2f26e4460ad1a4ac6da0a5019987677cc91fbacbc8fb89f3d795f72f7e6c709935e451180b2aedad5107bc51cce603fc88df4561d15014fb84398bc01cd2687c9967c5e3bcf03b0a89e24be927c0efff2950c23f77edc848745762fea18d961e0e4aaaefac38f3f62eef208abd94549f7bb2594c457bd824717050e8882553d57986e744f4bb45ef1648cb151b4832d038b781775f03d45e60fc6286e229f2318ddaf0c56ac5e96b2fdf182a6247841c27a0d00cada3e771b043b6480f8e1ad474bb2fcb4d5c4d3026ed67e12d964abfcc3b45842e28f108ab903ce9d45ae06dbfd1de26e237e9c28c17ef1de81ccf2ebe74efd0efd70c74e2e3d6b8f8e9812cc0dc6ec8a7456d37df81594aac7c60590559494feee75e760bce138c687ba65312b093d29398c87a0c13265d966b24998c053eaf76e08082152760e2a35d49063b9f7595e135dbc858d429e3c7e81aef71269a58cdb63820a0c8c9b593aa969b9e2ef2cd7444adf5d730e3fe1f36865421c6a2420ce12b9ec28caa2624601e7b77e8d9d7088c92fa14defdcd20fffefadd703e62e818ecbe8a744b8d13fa3d0e0fc8f9156b7e99d2d49ddc5646a3a73787a7115ee2e346c671df8f1abff7ba51bba57fdfe88ff60719ef1bacfcb4433cf03f7dedab389fdcd7ece6b1bb21713bf7db9e3799a4fb46bc82ffc852326387e85d6bdf63b6387ee375d3e052c0694e1be8b0b5745bc80703d65bf64559ef3be2c23c58a95580dbeeaffc04f2fafe01ebc0d1d6f720d3d159ec3f0bc78a2a13f8a86c52437db4a3f7c90e6d14a3af321463b511abb75a3291e453681713c7ed49e4f4bf79bfbebe5c734b6b4008c6915159a7fa23989ee3fbefba080f753515fcf70fea2d56826dfbf62bde14eb2d7c005db9041b305d78f85c7a6d1b7d0da09019563848338f9342c0fc6671764d56b4b29155175aa7b063aeac5c912ddf18006aec9f803eae4d8ee35c2db6aaf61cc790a118b9ce7e2084c45577a165e0d2c667b1b1c8235fb3f46e87da3209cd4320deae6f0809da67545cfd285ac652733e4fe09ab6e74cf7494ae82b373a0de5479867ae284dbd67b35a12166e906debd755942415cc61fd88de61dd206a79fe6f5146905df91c748b81a65121f0bb6cc54aa6bf16839336d46ac40f64e9692fd211d25b649265602ea89306e29d45f704b4933ca4d2d813fdc60cf760506c98f0d17127f1e16804ad13bf8cf587245bfe2d458ad71043b94ee149742db1a1ee2095cb27e81c8f88e651a999b1f731393a25720f0d36a47e69a581f82172a22c4e9d9196e26978f35080533193f8b48814fb684a9d4d914677204a7122bc2b23ea9392891509d5613d28a3914de92a30afa10b25a570c1131a565cf275213a6ec616ced9864a3b18a3fea369cab298a94743e910752d8dc7e3f5cdc3ddacbfee848aa024f7cb29b5db4eef04a30df12e3e9e2de356b1288974cd81dd4bc2a74ee762ac8031f68006d696bebe920471766e41604f1319071e5d298f6d0338921eeb1a7fd9046f47dd3cab5d307c902a21f949925a3254f093230356816b7ec24e600ced4316ba0f5f5d9284a0085c51eb30cbddc14eed4685d5401274870ad5e150c2d36ebc7fac9140bd1f62ff0e2feb642a6ee213cb5315767a0c12bab73118f1b7f2d09589b21a05eef8c102fa04aeaa62cc87b4724632d3422ccd630466d676e8a6ddaf32ad3ec031e5692e3b605da57e6c817ee2e3a129ff0b6894ae8116962dcebc26ac9a8622316ea6770c951354e1117e3ba74379ab4663941be9a3e046551116551d843de26ca4aba8cb44f0bec4d5cab2823aa9ea25f27e416644efa0a022532af4513dca0857435bac01a263b97b6fc2cd07e9b18787fbaa735a09f5d913be272a97752cfb6d8bcf06eb8702bae5e9b60912f7fd378954d098034f1a9292b4ac3ab384b83fe5b3b29c2b28b9658049861681bbc0fe4feaa6495221258ba61e41401395b691b41483ccd789698ad0e54ebbb87eb7614b83a6f09308fdb2057c2779d11b8414e2e2a3adcf00e25d8b52698a9689c2754138c1c64d9c3c88cf5e06486e017a732d46c8695c426181a2f2a8114b94a00b6e9a2e32ad90d1e322b54760007151d71e76bbc0f5fa545f9a4a7767f634afc55ec27e5f4ad096e58fc77b0266af50bca0ad268b08716f36009b60851360102c3dd8027d1a189f09ae5ca32d864ebb62218b9b45b73de0a7ea9fe0403c1d2a76b0c1a35df90591054ec32c481db91f281b8f3639966a679197f0260dd4bad4dc48ca574e2844e353c91b0c36252cc35910f286130adf5aaf134201c7002db81500b62357a8b6194cdde8a479b167ea61b5f285acb0b47a7bb3be6f2dde6d8d6ac4ca6dd05274e1f4bc4a22961f034bb1f83725faf0eff76d55fcd244c0d2690b30524feb4ca6868f51e9cfc41c19a4b1b59f452c75f08d9be54e9dc5a30d0952a83d1975c4b3962a7c4cd47f4d6c985991ba44a7d4e9c50fb7814e87658410961275ca2928a7eda386eac44f3f853911c5a7dff51abd917be5cf6701eee274a755869c023eed49ac07fe5db17a02aaa6fe858e424a874c43296a54bbc74df5b2a782a60f5f01d48c0662acf4d5c63a248fd39b35672bb39637697cd3761b772939f56b15b89fb9e8d60b1b56559fe4ab9adff1d2802d4145941556ea6b266a31dc3c7e370dbf03ca9a995939b62b0963f0839fe09533cc57521bab0bca12d756f6795b3d8135a0e2babaaa921eef8e1cd3d705ddbfbadd0c39105db383d4c9209786fb5cda30438f28ac23a6140035879c04f70511c790baaaf32e5a9bb36e0b37a57ab92e05b1d17129a70029d007b75d652e535cd4178698da79a1672789885c4eb1fbb0d8773fb3aa9291d6a50b1894c6013f3ea0773e0ce5ed526c464304350993758a184cb7d899475f951fac3b872f2d2567645385c4fe8016fa4ef675adf4e476aae7a5e795a3e88055e84fce1657253b2b43cf974709b73d5596202b59f0fe0d3fe429533388ad0ea5941f205859a252f5b88bd6fa4bed06ab850101d4491f47ca442110041c2059c84058dc00fdee611176a837e5ddbd5d3e0ce35f7843e4d2a8971488f232e539380f4600d0ff0fd420c38129691bd6a0b66d4f65790fcfd5a6bf901fa579b66f7d96862b8d15af03dafdfe27f1330781d823cf64cb12cdb2c2d05dc8ebc91a054706ba9e782e7f3365b3084ac13fe7657d438492b9c231e54046e3e0227f1da675ccfa0d00644f0904f0010f48c5ab059d29f70b42d25e721649a2591cb3de8fc5fe00ad87ff82f75ac86b45689f9486855915f76f817b01074dc34f78c808c62dc47543641672501f35438f263c97dad371b3c25b16e47521b462ff2506aa120ece93b0f80e489c27ce41aaa41f72554bfaf3eda0e08f810df62f6ea10f2a939bd7cea9d613c10de3269e063b16120fe7174dded8423d1d4fe4b16a493c524e7458915982e72a024e763fbd58226e62ffe5c8b411dcdbfb47c7d92d0a6c9541af287bd2db92ce7509a97fba8feeb02780852010035e196709d8796974df3ff6c6a841cb88fa67231db691b0238b889b70da38d72ffbd47f963eac9cbe852fc76536494eb3cf2018ba054b0afbdca560d1cc985622e83a9ecd536a2699ecbb54e8f10d57a8c071347249b1afc883e4846f2065c1d8817a1aafdb9535eefa94d466a97de32c1e20763ec06944ddf0274ed4c15eb84c7a737c6db552418506a27aa1528929b638075ae8cf2c8d9b00640033cc5128bb86a331f93784145acc7799382e341b97577b8d7a48eaf062f1d2042c93adc3f8aa0598bf92354007535dc64e2118b721a646f0787608c0329baf160f7843fa8242f145c357aa2dab881b0513f97939b6f0c21d728e27bf5d9ec753e54d8335ef650bfdb4380c2c4f2fb553991667dc4f38e0d311b631920e9d892ff74472f031e8c3946e73f1e2c42c62fec0fcf498ac8a15686bff7b86d15408bc62aa3b13950c6d44e45ab9cb3571a093ed5379bd65b68c519d3794cbb6cc6edcd9a0d3eea2f17f48c45650cee9a2d8ef0ee2b4266d7070da68771cd74ab9e37b65031216facdd2d196def821769bc96d5d6f349538457c11a98f7467d1707f3f7404ef6b7370f6496e8148122758331d0b46e70328a324a04e7c0ec5c1328a726d48e362c30c0053532b07a8ba1bf00fbaa8e93682e26559da5e2ce23d21845d31608cda2939e59f43aa9b7fa8ee2f0730ff0c91833e5c26f7eff0fa16fdc4fa071a1c1473c0bcbc42f2b1e013352eeaa434cf0ca81b427497ef68aef1837af3de41e083a09d4b673c7a80c4e173b1108f054eaf4c0d8f51a9a5b85d82ee4e9cc289904a37ce3b7dcbfcff26ec10130b20446bb6cb57a5ea2114e4b7eb8d48b1c6d659bb8f69acd1168e71b39c21993c1fcf04843531332c0393a4cabcc9ab57ff4eb449476d75e757ca2523787ca8711d61065cc8c7678ad3edab8852007198ef909e03ad400c07e39afd520d6c399c43778a8ef02f18a3bad4c1a8b05b3625c533cc968321cc30c14313ac99af21cf0ac5f565580564162bfccc0ef13a9a652e058c87a6458ef99a98fbfaa3f9c76361680670b7b83e2248c1b73db73d96c92fdb464300b313f83dddfc16c2b4e7923580f63cf55c4c93358c7e4c9967f96e89b66a1b82e49c0c4cc316c8e51606c5f2818566a48974014c6e495f0571cf95602b175c0b948d85994d5cb9751e3ccc443a3cdbabcda4d50e4e33e893f37a99552de582db3ded76c5e17964385a12d5306390e201e9e600bd607674b99f8de4a20a8e4aa8ad4a91ee10dbcc48862e687c052a80bda8673ad998321cd6035f1375a7320d65a55e68fbfd841913a99421ae7caae04f686982ef2b1aee9bf6f4638d44bbd3801974d3ada816042ef19433e1563420edb0b119b1da29486596e2c5421f1603a4b79781324a98bd9c6646a2f095132bd28f251c4b2f55e0bd4d144433caad5b81fda5dcae47c13283457ff4d2df94db242a6446090eed20c43be7d23bb64fee4ebfa5bbae31c867ea052fbd88197562638535233b61157ee79e2b10dc7328a02e26b713053a4305f476ab94e7dc421a66817f5eb26b47214deda0d392d83e6c480adb279496eabc8d298c46807bf020aea8fd082165d1b4bb2fcbe2eb109d35c4d9f960608c4c17270e67722d6060ce10160d84f66008410604220bff629fee87e8c1d3ce62cbd3582da4511461572e819aba606c44cd50635a7f28de4acd5953e0d5fc6289ae30462a7f0628b8f717eb19902213db26b77a6518adb48dce81e53566847a18052c4e9e09a6b62890dc089ff52ed19e2ea9fae7d7ea1c03296c4ec2514da8bed72ecd51199729f401b146912ada462fdb702df81024ac60278e1176828c55da65a878eaa350100f1e6693421afdeae579d78d4833c009e7b27738b2e2564985bcd162ed197e9ff9c160aee2855ad4be173cff6209657f1e191356e9193d0247f25d4163cb44d7530f23bf98ee5d85c69355b0f9efd11b86eba9e1ca1c07bff1e166b92b946c8accf51406b032497756ada09ce1322c9e7947824122ea05645fe403f91850b8148f23942902da761ca13f3100dc049842809032a6352ea98ced572608122bcf933025a04208126492c222f382bae92d05fd7ed233a1ab47191756b279d39d40f870bd140def478b2dd9a937538ed5b7fee8ff1171b7e031ade09cd83ba2b98f60b34c328eaca24460ffcb31691d53ebd7b417568f3c51caaaf42379eee253d5876957e2281e1c2f75ffee73557deefa955477666ba0e021c96c5b1bd13e194003b378943a38628c9263d50711f4dd44c2bdd14208cb704fc2264748f6646e4dbdaa5e8e71a97efeaacef3e1dd0c2a1db7be392c24217e6789499c62a738425313b3388d227d358941424aa30166aa1e3869d649c78eb10e87922e380fbef4a76229c8b05f70b25955241d6a496bc208558c534001abc20e8e21ae6398886430847d451ce1d58697598efbda000899f06a83fe53e1cb83b681bf2807ebcfd4e128541b268c63fa3791ad20a7f0b62f1d918fc3c9f67b8048e49650b23e63a95e5cbf9c8bd57000aa3aa69de053113ef19fc514b7410212ab79b1019a0a9d7a57abeb13484ed96dffc2648b5a651f8803fe33308bf6a07b28436b0c2f5de05a48dbcc5037a6c3860cfaf707c27b5111eb4c26a946297e6860e85a16693111c2b18b90eae58d6edc385d8209e77071ccd1002794c104c85c4bd4d73be0e278bf7a25e6c5794ea8b593a84d231b9ec4765a0ecddaf2fa89e5b5c3cd3a2cda432fa92fc016cbd2ee1250d6545127e2786761cb06e2175978d8b687681498a2e8b89bdb588a71dc33fbc531647d2fe2ccb331edc8f2067f36788873a13713b9e3b475d5c48eabfa8412620d3e789f02241233f9bdd53233112180100c9bb2d8ba6f933102170e76c632fbf799b3518669a76cdba3710c0140ab99d018653d7a7b8cd192c1d360442e756829c49897f2afc2f633b3a9cb8f94fcb883f5cc735cfbe790a87ec4501eeb32d7d31022bdc420a84d590bb17bc14ae8d61360a03c438a95c30d716e6c3be6231216e6b0d4227b072cfbc7f14f1afc36e96c32233bff30830baa2faed8494386d1f89b312367c76c8f39d99cfcb14350b25cffe7bd08bc184eeeaf7d4555b7f9a6a8b3a26a70bee54584bb9a9aa1497a3e268d16b3914037f585b8632848cb37e84eedcd02fbac5effea5e1053391c0ff6bbebcb9f31342a13831ae3c6f63b41ce105181374ccc425045909c291d84567cb6c9043eaaa54d35acc07d7134961ef69368610c2212ba24c83383f919ec2d404151e259a62166f257bf39bf5e2c7dc1d1b5cf4f68633c1f89058bd52defa00f3900c69698558b3803078ada6747e17ffdf55bb2844058052a89509533ca9d528e35fc883e444917fe9c4b0e01a9058233454d6395b3e3e7b32e595bf09420a368cf5c5d566c9f6faa3ee9ad6cfdf58ff58605893867e1dc4a1e2ab07c041c42629178a6ba4e02217290ffac44d6b9b2e425b87375c89921f373a361c62e739da3ef596da6a98451c781784ea8f0b2270f1bd49b6f54f8351bb6ab32fe834cbd18631e81ad105d48f00ea86cfedae400620b0abdcbfe9dfe80f88835bff7ec63f7404f6960b4292fa83fb567ff5072facc7c65c50af389c8b0abc7543a8549d59cdf0163627cc3415f39b7a30ebe976fef6a43a5418ffdc65b1b3cb5d9cf578a7e119aa9252417a55a95f73d3e6a0808667d7d9c1ed6a08552dcf14b45adc6f3a2ae0902497e75a02822a63931ff1109277e26743a0dd99fe474ab703350564454d23544fee1e523c74fcf351d6d6e50df45a8dceb9c82303802274ef711981c6d7142014592ca03f7ffe6ba1e8cde5d7e4a1a77a81f0b2c0e02c935a30e1db4e192078a10e0e63360fa80a6acdbbc7379366ed67d72875dd44bc2b7dbe57bdcfd5c18e02c19e4c7355739495f9f507c215dbcfd0e7047198bb814bb4d967bcab7823484aa3b1349243fd552876e39a54649218ba6685465917ccaf26ace03182b9f9798f9c320853dd8b4ed3449c73eb0bf1b93b9434b204e91298c651e4f692b394eff8eb9ade5169a4300b51e4bc24812a8df0041efe8e57f20a392c80d4376377a26b97d52edaef586385ed345a232c6ba60676537f82aa660bea58404d13b3edd9dd222be18afaa5a040f013a2422f8a1bd02a43e89174afa0be18b1b67730ea98e5c0b0b009828979344123d1bce889fc2df2ce96c189b87ec3bb78a7f30c21d3e62c3e22c4fceec39e618b919e23e4df7ce58520b43c9bb00dc0c417ffb70cc77d3ba2f008155869ea631288c230055aaa3ac17df46aa161ea7cf83de18fa638291e6924a20d7c83fac5fccd1183a8eca260c843e69a6d884f688ae5babefcd6f215ddcfa02f1af4997931f982b7b941dfacce487116fa3dcc39df476a5f1bd74f0893f82ac055887162be67a6071240c4aaf935b1c38224aa02911d3f5d9f875fecb79c14663abccedf9bb4fe53326ba371387185e4c7acbf0c40898cfb1629463410900957822a2c589c3a071a6fd7d8f6d246c85032a22afae5620ce34a30ef27e7d0c748a86e4c622d7228be073fcfe2c1b928d114a44ffeb23d9281aeb24ba0b8074a63ff50c8091be7d0b40810019c1ee358215d5bd463cec5022115f82434b97d8da5dedf4475d42a4dc7bcb24651b0bac0a770a1983cff9cc36187fbbddfce8e6be9b7bb8f9879b7f70e56fbe804e2bfccd47e814e7370f71f3103aa5f9cd45b879159b1b8fc3e16834af9589c3e3aa35558fdd07e3dfad34da0d406d98dcce9eb6a1043a68e040d204aa091530e876c7077dc3c76a585855a9b9f2d9857295d891cf18e30d280e9706cee78c8739dfca54ccb852854e525856b63a7295182d3ee79cd3ec78ec25de4a63e6b19ae1959a388ffd08d3a1618cb13543e675e62a0c9a1d9f37f89c331ae367c7e0735fbe95d9fabc65a6c98bed76e325adbe3c0d61b164254f0e05543161529a712769c753c6b79b014a145d26c5ad7e3dbedd6e189341f2798b0c9cdc99b41e68798183cc8e28af24387255f398c9f965066ce93316b0af6ccb85a1e5fce5e3695ed268c17ce3833621365fb82f651a8e393e1fcd02502a61da04ae480cdbcc08a2258953054bc4f839bf7943e2317e23e5b1159fa4d2866412a4abe418f20a0e97cd1c7bd2c489040d21409a7096f8186337790270451665db4084621a03d06aba4f2785c3058d465b83e585cd8dc7950d90221b378f1d436d33e573d5a6ca8c8fa0abb1246598821e7b081f8fabd27ae5c6cc6327a1d322318c69fc52930eb31539e8e40106ddc6077d3ef8f6e531167bd2414c4d18a05b965763e4b39739a39fafd4847d3e7af3c47dba7acb345a1a168fcfa4217b5c3da05a2e28b2c78c9eb033f90acd92cf46b73a345a99175f5765d48cb932a3f521841e544b72500d9128d53042a5f44e336c22e9f075b66587123249124b63c40fe21e2870da2cd14ac144546f46c6d068345acef97643221f9381e101bd2233454b32280a0e870383072cac4bbedd7038b47e3ddde812e2f47487c58c0ffa704d8f71383028acb6c0681560435152c5ed96bfb68c014372abe816d815959cf38f9b1bb71b1074855645b78e5ab06c7d3da5be217b63823b93345afe916f372e61babc8c78e0c5e643971e62bc246d7911a3e54b11f40bb1ebf7a546c9148a2c7a9c64e06c90c7651aad2b2c6c6b0b514c0d0b758b8b920dc7dcd13ffb7699e84ce6fcd6ebc096bdd6a0ee16cc7f33f25c2f68d4abedcbf5bca817ccbb5ed0a6eb017138284aaa5c4139c30075410ad2159559b1aa001f6e1b3aa042c597215627682463e494dc888a5c3dd973ab6ed5279392925498c007724e1d3c37e2ac100eb549fa7cbbb9296d607969baf1b809ce4fb149cfe3a2d3d1c3875ce7739e71f6d84b8c99b01e57a1014643cd98620d2d31367ef879a36cb6aa1de9721e7b60281eb53e7315bf6454701bfe3abf1c67b8514ae14ad3d90f3716869091295f86b714491863eca54db6c1a1d3058c172f489030c018db30c6381e63ec75e6b3571722063e3048d8b96222b4e1e4852ee79c8f8cf99c73ce39e72d25c0c22ed882c70b972e305e521f72ce395b6979726347ac441560d05d7cd0279473ce432f9f73ce39e78c054d162c8fc3681932c6b8e2cb5866a8168d665fc5aeae0d8a4048c4b048c9b0a1c28b2b5dac70edf8ec3eb9c865f6596b048a39613150e8a8e222b1149473a693f3d6632f71f1c863240c0314ab583953b462644bf14a52175a972e396810b7903c5af81c198289180ba1f3b9a855dcb275a3836e0414316eee1461b18788d1b2f031c225cbc5b19885e6f6d96d42ba232f401737596c8a1021eb5a1124b58415e473ae452caf0e741baa4c2466f6f84ee4b97acaba326a69629580683a308d8ad10c635cc318b309f2f84c9e66345a918a89cf58cee42de70c3546c42bcc96a4996c55e4a524548f0f5650605caa158f227b7a48e96eb73660707ebbe1704f61d6e4d07aec423a1d381efb910e398f7754f9f2a081302e1370c4cc88534c2194c7bc3edf6eb71b10bf81c70b8eae0e38f48cf11b082484575a9c5991630d8a9bd4cd69bd33c93bcd6e3739a80d276a9aa006d0b4c5e8d463e70425b57282d3c1e31b431e7755dd7c8e14bb8a5bc4b0ba4e04e59c935c9f6f8ed26eb4f2b35b0f66ef993eb89865a94eebd3f8d2aab1a3c699c77e44eb9908b2190e8dcfe82d67195d1e83b19a3104c3d4e231d0e3ea8464b283c4c39ccd4021c3900053e3842d91734673b5da3263001d605645330dacaa04d9e2010f2b1b2d2d61a4bcca109590b81046a355c5113e9a370061c9a1860c189aa92c9b84436952779e888739fb074da399e99005e05382a4cc9a275e35d4ecc9e59aa15028988831ae82c3e2f397173b60e306a3289a638c13728c1d0fd00e436bd2603144aec4b8e1709ae1c6a24eb3337926cfb2d3ecb62546f839e7937673df0f3a3c7b7cbb65a84ca35930753ee74cc37888faf85ae306e9e50b9913ac07fb608c693713872d17efcf693429da141556ff7caaacd3b8fab74bb24ef3a21dd11e321b2bb00a4cd6672ff339e4b953f487dc56f5434343ee1b1a1af22ae3b1078f31deca92e5b196198ffd088f00e63cd44a68156b03054f18176cd084c98363c841799888d26858706461410ee073467bb5986d238c64f9e215e7848c2dc37a5681caed06a5658beb0d079b9ddab31423ca4d8d2640f094c93828edcad8e79c3fe7ecc167affd6b91339c2b9f73cee7edb6b51565eb844d48e7e2b11f6d15bd3c760c3e1f8f9dc35695358f9d834e373cf60f1e7c30e3b12f006f5921f3d84500d169ddba22f5d847e8b456d5e3639ba42531aa73dfe35b11298cb15d3ae16509ace8b3db3a155a2afbec479d0ae073c6448c7d3026f3ba398bb32f2db86c60c363558ed2501a8dc51143ad9211794c7394c6c3441a8d85100d407850c1848a870d3643f4e03b786c0b9b6d50b19654ec291322048a123be60230c6678f511aea417c4ef5309186cdbaf5ab155e9fcfae1a9adec73bac48560959912a575399545675a34cbf4ffdb3b5b134bd2c766ae46636bd249643b31f61c448e4e9860f2e709800cd2237bd149e997e939deedcf43bd6697ed3f48becb4d679d3eff1fe4640e12155a4326a71720568dea2e997aa539d9b3f6e53a7446efa65eab4c29b7e8533def44e765ae9bc3922851e1d554d3f5a2471004d6f6473759add5c4008214494609550bce9f3a65b615b269306154534dd56996e914a6ffe88753a3466cbac99e99d5491942c50a3cd19a41e13617680e69c37bd894f6f7a53755a7bd3f3fd81608f0d33395c8445a68065616a42bc1ee7250e676454542404c8df32fcedb6dbe9745129f85594161622a2e1fd65a820343e6bf91ce4cc67f7e9f4c3639c428c3fbd3c5318f3a7fb74aae1878680a8f90b39973b935740a45c600ad12af6b6787f673268f30fea1e079df7415f053cc4383ba6f31846fe618d28bd8965844b832b2378b65c1dc102769a9d5903579ce4a851c3064a4e4e461228265ab0a83489c3c1cb70aa06a8a1e82252feb492e177a3cb06182550c24cc1a9488ce7799a5752638fb70879eef4f6426ec3f342b61712729f90901f09391236044892a383ab245e32785c0ad9e1fd9dc92b9f3643a03cd6e031367b76cd79d638cdce246ed1e3cfdd9f274651de9197999d2c481e4f5bc93f3fc8c1c74971f64eb33379c2b95d21c181cfb2a020b7817d5050f6a0a0a0a00da6e0f182260a1dac3260d09b0fdaea3af241413e42a7217450d0d89ba6d9810de71fedcb59a453a876b0d8695038dcb3385c2f889d96a3f20fdccb51f78319ea08688f5ea82235a09a9e917294283343d17a41ddd90b1e6520ee05f3f0ed96d1c6a3d9669bee0f0fed08162e8cfc6053a585d40c6030937dd006743bb3c53ee504538b3753c24c71736b617d73e64c16f1f2048a3069d8a9ade6b9e6b64e6b2ed46985afd5fca8e6187c1e3e7ca0e76bbe804ef3d7bce6228c10a256abf90955bee628748a7eade656a956f315d4aebc5250a1d1b8b038c01597addfd774005dfe2cc09fa715be4df20c4527050c362978344931b6e69833d49617176c29e2d3e1113580342529620345538c36f9acb940310f13f110e32e341a026e93b20d6dc48a94bbc7a32d0a797f0a10e3a20ac712d59958a7b6cbb70799755a953aad42265b53a7edb6a7a0af9a5e27d74950d8b707710519838e1549e86f55f1db8392eecfd644ec5aa2d245c309b03d48a9d3a0a64e6b54a77538154484f1ed41549da2766a7a79f0381b4b9a5524dcdfa828b16f0782babfea35a7c8238b4d12293380ed40519d5a2edf0e34bc3f0e3bda749995d9881303d80e44ecd46ef976a0aafb6b009c2d3aa08089a2c20ab01da8d8a9ed327a1ddb81c23a35bf1dc8a9a677c55d01f4f4ed404b4042a0a68a54e1db8192eeef0a83404adffe533c765ac53aadc932b34edb7fce7e9cd4b4e1c0f9a1faf61fa99fe10fb122ddbefd07eafedaec27ea1f30b6448cd493326f6c00db7dc43ab5c66ff7314bbabf6ac50885cd892566e29001db7f943ab55a844c3f4d9dfa7cbbcf574dfbebcb27ecdb7db87c8c3ec78a64fb769faafb6b64d0a7f8ed3e49f757c1a0209db0691167c909d8eea3d4a9cdf2ed3ec2fbe380eb28634a53978f1fc0769fa64e2d966ff781babf11508e5728ccace4214304d8ee13d5a9e51a4ef9103b6df7a1eaf4c74e4ddbcaea6c2c6956918250a8fbab585c449579397a395d01b6a3519dda2bdf8e123badc54eabd1ebd8693b1ad629faeda8534d5b8890a76f47975021da549180be1d4dbabf1e0651a56faf55dddf0862911a5774c894dcd802b6d78a9d5a2bdf5e3b22efef83225be66cb92992f002b6d7c43ab5559265669db6d7ce3a7552d3eed183eadb6b529d0e6bc48af4f3edb5a7fe9dc964ed8798594da926b4faf61a53ff6cc076da574d1b070e2e1aed58917cbe9d46d53fdc84a5d414353cf2edb4a9fe5500b6673b356d124de2ecdbf358a743d9ac22a1f7d74a4d82284dded0e952e44619b0bdf89dc588434d9922635b3980ed99d8a9ddaac81872a6e430911c3a01db73b153ab65f4eaf4d8697b0e5bb366290bfb576b3699541a91420b102db1274a929880edb8d8a9cda28095b2a82534329abc80edf8d8a9c5fa768cbcbf11515ca8c01207059e2e32c0b65492656651674e6a6acb94a1face1da774e9021366080c60fb29d6a9bdfac6c0e90a718c972d226380eda759a7d6eadb71d2fd553c778e6de8404993030b68ab844c4d9db6e327dc8e7fb463a94e4f6fc7434cac48b46f3fbf6a6ac18039c3befde43a8d54fd3b91adc17a6329359d431ddf7e4ef5af066c37edd4d45a599d7dbbd96e26fb57cd2a1246de9f2db2c0c60d25214d72985c01db4d62a7764ab1d36af43a7ad5f87633cc74aaa91522e4e9dbcda54e85bcdd149a4d15e9b4c3be4006122966926598a400db4a41dedf88205352e899522645460cd8364ab2ccacd3f6f2ac532735b5316c0caa6f2fa5ca925891cc6fdbd42456953aad42a6b2e9ce77856fbf5f354d41f5052f57a7356fbfc6f67bac48e5b7dfaafbb3493b1f595a5f8c71ccf400db527d8fe0ab87893234c25ccc01b685f2ed17eafe8ade3ce9a2b18718a50cd8f6c9307f77b653530e90391beb1428d92588351d1472ce60b17212db026cefa84ead936f10a672e820736407902fc0f626766a892374d421f3e48e8f343f5600db3631e236dff8dbdba9a60ea855965ad8209a00452d2716598a68e600db32f9767bacc9b2767bd6a9939a6e507dd63778eb3ede6e87dd1fae0611f757b55c71a170e2e4040d13d02ef98a2574614cc2a4a6071e604f0999bafcdef0d62b50d30dd567bd6dc72b020806109d0071d3256c889455f2d50b111d4db8b0d9b2e209b05dd7a94df2237834617d3183658e1422b091fcf9ed5998eb65a10474bc590296660a9e33435b8f2ce90ed8ef72463c0f28918343059409154880c17c24f70647160b6ea7c4ef769eed80f99dfb6cdd69f23b9d05d894d1d25a0363cc146b44e8c8e7cc48849985c9c086ca2051f5bb0f31a4ace46c0969a0b0456e3633b95caeb7ea28fd2ee77240b99c9e5c6e0e99df79b9dba2e3e4775a6cb95c2e97abe57246961c15151d1d9d3e7e5716e5772eb4db9a73e3775b9ecbe5d05c85a3b4456448990dad2c39a95cce6b9757ac64a8da2197cb55a4db5b652f7e97cbf9e472b99c9b209fcbe57259ced8ef763b0b39e9f8f8c8b11f61f0e112762a5870ec228c80f156ed82635fc1054a42ecb6a9d35b8fc7b5c7eed8ad14cf7155d11ab73c267aecf6d869cfb1db307bc68ad924766b76a5c2c6e3dd630c1c7b2f616fa66ec28e62cd1b1919b98f4dc71b195da5287b2323230c30c0e084d4171515159d30fb22172a4261e58bfca8d3fc4545bd5ecf44d7f3783cf72b132dfe820b2ef0bf70a1f7c15626897d2e672361e3732e94731d89339ff3a35c09aacf39864e0fe0b360c1c29e16bfdbed767bb4fcce8576ae4b82f13b3fdaed6ac0a3a3239c775ec3dc089b8a79c4de84b144724544e418edf099dcf9d1512fb8dbed76c5ddce8b8af4203f97cb610b361d082b60c4007b41a4851860d0ed900ffa70ceee8458e89d6646bd3359d4f3ac6503daa3dd2ecfd6e7bccc59e969fa5cd1a6d35589597a1dee753a5dce75baaa3065363452ea73391df1fecea45d6356df399adbe5725651886830c3badc8ecaceeb06f03addb93ba116a01b83a27374a7dbed62987d91974545bb5e19262ed115150df95d96db4f9c1d46be2be29d6667b2a8a88cd154a12843096b9063c0a038134b0a397746378a5cd72b2a2a6ad3615754c4cbb0418bccc68db1175f905146503a1d151b032e7c86c23643757ae1ad1b190989bfdbed74bda0fd9ddb7e3a12a9b6a6a8b91184a6235bb2f322477745bba2dd95900903cdad30aa2241e93c8410224ac051e369414fdbd168349a7be894e61c745ae1699ea18c7a735ea7d39dc9ddd58d1a8f4d616ef86792066ea424c9f1d1648a550a421893e179acd3e97471a4de7a99ea78782af730110ff1704b065565ea78d1252df62cafd3e9686ee214b96eb72b2a1a83e4755e766ae1756ef1991b2bca34e1b982ecc21608c618eb7ce7a86ea7739cae779a4dc9f51cb014551c43e308671a6d066cd2864f1ee730c6e713194fa3d1dcc76d4f923ccd85685b4ff23c4d83a7d172543acfed763a5d1a0eba0c99667f60e2ae878778972bca19e58e5cd70b1ee98c7011de618cb79c1887702671cda5d2e58a96836a5faf5822cfe772391c1191d6d2952722222272223f227227c6c7bfc73859f5341a9199a3d1683404185943a608a50b0e1760d09ff6e383bea7d1b0d368341aadf8b41c0f1373b91e26d6c1d168444429645d296993e66aaacb83bac4c571091a0e4c621caf98ace9509bd4f06ac2e6b1937045bc7aec269c80c29513a7c7be824e7f498f870988a2e54a16251e334a00511f8fbaade95117ea343feaba4e891cf52314759f07d43fa0fe818d477d0121748a73d445407d04d443a028ea278c79d451e834e851b7a85b25d451d0a9ce515f01ea59297ccecb4e3bf85cee96bd4e870505c60a0bcf910d67a30acba899747f67d24cfa1f36486854643cede6c306470e87cb5d15ada0384546a5d068408c3cea256a7565e2d12c5b6ec307b85ae4d9212cc3a3caf63051da1d9cc356564c8fa268a6eaf2c1e0cbeee1c307597c3e7b082dc20821b28b28e104b0cfd951d02991675fc109252bcc6e9b2c94d867dc679d67b752d9ed9425f6af027389e18988c2605c8ce2f41863fbb95c918ac5d3ca63d5976236c81c2e5e60aa8c9958010cbae5f1411f0e0a0f73b9274e47385b8a50a86c398595c0228448912063a0b482702b8870452753b88a4f5a00653499c7671c2e3741d1844a1791e9b1579128f605136940493039c7e170b90fbac8a4cc07ee2b4b3d5990fee6f790c127e96d9a165d56dc002b075feb902fd58081078fbe66ccbb6ef24cf38e00013b5a6fed0be4e31f345a7f685e3bfe1946e3a11dd8acfd01c1040cd94d6f9e50fb5ae793db67ab7936bd566befd345b8d5a1609e95abefb5d5042afee9413dcf5ed0040efeec6e34f941d3d1920cf34cbfbc2e936f427d396635c0de264a6635c05e1fc5bcc6d86b1fdc12e0aed56e0def6e887bfbde019ca679817c1cad3fa8df9cb39fc17b9d85d58077bd79d9a8dd0adf56bd92d5c00c7159580dccfa262f5b61fbcc33dbbf3ea89f3f20988e0ef13293cf873f85babbbbbb77e3656110b3200f662153fbaca5aa1d72d087cf3ca1f6d980d882f878ccd9661bea8de0c3f7cddabff56ebda04ee7b7dead77f3da3fb73f20dcfa478411dffd0158c4c8016d517bfb6940fe5a3b9c29d88ea074edb340745538adb911f61a8431165ec245ac243c9367d959d2896cc25115a9fc0c3e68fc23c49f6e6db787ad96abae8652089b8e1ebd9933709417d43dce504114ca6f137c9fc1eb0f0800e0e127fc23c996c19b32f853a72514fef1b62c3f83db9f0664f012d40c4ec3475c5691cab78ee75403e4a48a8ff757bbc8f0aca1830249941260af789b81e71275dee2b1b7192c8aee1cedc02642fbb0691ab18bd03e8c4ddcdbf9076dc28e27828a7cb317829d6b7074c7d3e018f0343c5a7f1aa0c1776ef2768ec33906bca07d0c70fed500785835b08e0b72f038e7d03f7c749c078ff30f2a1207c7f951a73cc761e854c8715e3bc505857e38c739ce73a73f8e737cacd0c3c37c3bf4cc9e0dc45f5fc1093e133c7cf690f3dce421e720bee6262fe8014369a305f1111ffdd6a3396ebad683821cede16cbb466ef272979785b9a984cdc883596894993034755a83b59e091edee807845b0629fd2c8704206481c7b30f94a134707b815bf7e078b8c1ed060feb94003e80e36fe0f507840dfc83466ffdf0419b9767de7afcdb0b81e93ac73a9d9bbde0e5053df8eb9917b47dbd7686ca549d1279cd816c438e91728ef6821f4e1f45390915e2d9271a6aaa30d4849f3a2572eb188a68e8ec612b5dc8bb857840a6ffe478b576085623d60bef8737ddde7a2803fa07e0971734c183cf5e7393a7c3483113b6ebf54ca7666f041e3cb2d39adb1a3461008ee21f106a25013c787303d36d90d2f14f0b3c0016b9bddabede87f699de3c5e7d0d7817088067bb1a4cefc0f3abc1741b4f84f699ce8117a27630dd02cfe4997ec433dd88e77561c70b56e49b26af1d035e7d1ccfe701e00dbd8817cc5c6f7d03cf04e507f151e7f3417cc4f01a78c10b48107cbd0fb6dc99cfc01381ef01d00b41066e9e751ae44b6f474c654de9526669ec0ed0b6c9437dbca2d9447b35b317bc9e817f70af09bebf51bc0c7a18785b50a4746fc2c901e5f8c5a24ac5e76cb3e974ee509de24dd731f6a663100223079b2c241222405b42ace601286296acfc206382224315181b0d27ec0861c24394229ec850228b8f085b787624c18a91078a8912604023a8cef0bc6043440a901b257cee77cc666dba4e6fc530346c6fca59cac2513643680507b04964a84e832e7cd5f4fcfaba10f6ed17b83ab5e0ed178c178e15a99af9f60b55f797851dbc504cbabf1129e64051caf2854b8b52a71784f757c5c45022e383c51e357480ed179a3abd00757f236248adc93adb03a6041560fb85a84ead9ee1d40562a7ed17a83aa5d9a9e9b965cb9885a405b3760bc8fbcb494962df6e01eafe3a60234d18185ce6ccc8036cb710d5a9cdf3ed1686f757c9b87849a27842b19404b65b20766aa1eafeda45521996ab2d3cca00db2d143bb5788c5ec74edb2d845970aae979e5ca5b0f5a78fa760b4b1684169a2a5205fbf6a3b3fe65a8a08513df7e54757f950a19ad1373a6da4c4901db8f8a9dda3bdf7e64bcbfe09b3737d050a1e3e609d87e74ecd4daf9f623e4fd8518b3460acb8c23759880ed47629d5ab3640a65fdc3c0f62327353d912039a2faf623a9a3e111b122d5ae6f3f82babf93183c8afa7623e4fd8d68a1d564091d2a394e8cc07623b14e6d9d6f374adedf08e2992a643e7c684d6d01db8dcc3ab574befd28e9fe7eea1cf1caca3285461460fb9152a7768e90e9a8e9e9db8f9ebe6a7a3a9d4e4661df6ec46564343a56a4aafb3b4fa3e2b71b25dddf08296651685c2d55113b036c3752ead4967dbb91f0fe3c881dcdf60811c34307b0dda8a9532be7db8da0ee6f047b9a0c61e154038d17b0dd28aa531b6738654494f1ed46549dd6ecd4f49471ca38fbf622a8fbbbc093aa276248a65c0d81ed45519d5a38df5e34bc3f14da24b18ac1e30d1e2e607b11b1d322253642ba70308162036c2f2a766adf7c7b91b1d35ae5a5c4b71779756afbf6a263a7ed45619ddebebd08d929cddb8bce148d25cd2a1206df5ee45453d38e9da2a76f2f5a2a12163555a4deb71725dddf791629158f9d56b14e6bb2cc0ccfb7efce764e6a6a922123b51bee881589f7ed3ba8fb33c5c4765162669d56a54eab9069d744e7db774fbaaf9a9a55aae8c2be5dc7a533ea8e15c9df347545a5a64e6b54a77538a523caf9761d55a7d74e4d4d2448cec6926615e9826f2742de9f49248a7d3b11d4fd6138318a2439ea99c3056c278aead4927d3bd1f0fe545022693586e287972e603b11b153ebe6db89aaee6f048f252c5154e8a0ea6203d84e54ecd48e1989de7c3b1191534dcd21439ebe9d68894848d454912e7cfbd059fff090e8844d78040c953a5a427000db878a9dda36df3e74ecb4d63352c8bc21a1664bc914b07d48ac53cbe6db87925dc67cfb50d990939a9a31cc184354df3e24d52991b70f0d878815c9c2b70f41dd9fd9141c8a1ac18407970e26632dbaf000db73629dda35df9e4bde1f3a74d2c3468e17142fc0f69c59a736e9feea96a428366e743449a10ab07d48a953ab46c834d404f6ed434fb9af9a9676ec847d7b8ecb73b963453afaf65cd5fd9966aef8edb9a4fb1b41e498b467e92cec1805d89e53ead4a67909d02033c423862b0b0cb03dd7d4a945f3ed39a8fbabc7235f80505d11a9d102d89e8bead49e194ee5889db6e7a83aa5d9a9694986ccd9b70bb50b25cd2a9211f2fe4a3131a8fb4381486389110c4b1c26c076a1a84ead996f171ade1f0496a4d982a4cc112c2c60bb10b1535be6db85aaeeafb6a952448597a72bc51cc076a162a7968cd1ebd869bb9090534dcb2a6515a1a76f175aeaf4e6ed4242a1a68a54f4ed4249f7571a8594106066c99528268e905d01db223f1827ce160d3b71c07e00db71c74eed986fc721efaf8601f35182ce8b143e9a80ed38b14ead98649959a7edb8339c939a964890e0a8be1d27851be2881569f7ed38a8fb2b89445c9458f2fe4ed0430a4e5994122a16c0b661be1d97747f208cbcd1b1c545d29738c0769c52a7364cc8846b52f2edb8a70a5f352d9d9cb82a182b1c2b92eedb2b54dd5f095556282a35755aa33aadc3a90ac41fdf5e81aad3203b352d499424cec688befd86bcbf524949ecdb6f50f767bd849991f16ad2e404d87e8bead482f9f6dbf0fe4414d991e28a0a16a53060fb8dd8a905fbf65bd5fd51c0cc8c2f4f6cc4b15106b45f46af6317a86fbf85ddd6acb9dd6eb7a68a34f4edb764f056757f756c090b0a070d266656c0765bb1537bfc769bf1fe46e0c0a251a2ca5186121860bbedd8a9fdf2ed36e4fd81e08d1c2625322536b14ead97648e32b31c67362735bd5d5d36aaef5f3168811d91fbc293504836db0411c2384208b0a28a72ea4bf39ef7bc5defd34f29c25802928412c0923619b5f39e8044411205148441e1a5b22cadc498a79550059a2cd6fb1361330bc2a7155196249400c6ec6aa87f7a63b357a227dc1fdaab65d983b183569e90cb2a66336bbd13c044655ed9bea5b2442246f6c409c889343f806593288cc2894c9e8042ad6f46aa870595f558e62f515743cd79dae06e08e3082114e005c4fdd53c7a2c74cd65fe326b0d35a935d4570098526ba85d71145d9b999e40dc316506aa06d64b5f12e43d2bd61aea4f01c7646ba81facf66110af86fa656904314215fa5a75e6e4cdaf55aa80c8480155044f8a143488658ccda4cbe9cce909b9e28d19e05d52eb7994612b8db6346bb5d52c2ff2abb7187af3d0d449f29e22e6edde71730c2a15318ef0b0f2062acc54b1cd521e1d41a62d4b5a5996e5f04b339f3cf269db63039b20708ba62f5dd70b9a1e38e4b39745f808914d43849411e991a524ca97aeabf2e599cff3045a0d2e2076a83c41a3252b0db04c12a44c7284e40928a07b48d824fbc304453b89cd56a0e5d9ba85ec8f4ff5f20784d2963f0db05f3b542fd91ce5c9a1e5c20b161c302418a318c7b175adb5ac582d4290081224c985860e951e86f8ebd5f75d96d883d5ec12638c7bc1ea67ad26f8be36d65559bef01184a6d564bab875f932b184e6e1eac58c37bf5ac510434ba2e6f5928476deeb20da77ef35791cda47763ddf3ba5e76f791631c18830968024814d9e29a61430d8d81d25514f5d228c252049a893c4898c5a35be294362c54b091b06228c252049980367d8e54d79c11ab22363636c17e6b4315207ccb4000219c238029b35465c74d18e44184b40924096a6c88e2ad9c88d19a92455b42211c6129024902189604195442090218c23ac0133044c8e2111c61290241c85c8b971732090218c23887511d202154a7a45e130716cb8044142c7e706c79842d59a1f1b086408e30871b200c922060d12612c014942f2ca0f315d3f4071acf818cba89b628f3d513510c810c611b27acc18a203d3c6ae7804f15aaa9d2090218c23bc9102458c934b11c6129024b8a1da71a50dbe2068634e748c29436b11bd129024d0c898e4807372115396277a9e6b96e45012718aa0f5781cda67db9ce7b9f594a3e76b9f0812cea848009549e547ea87488d73962c32f448e166f5d949ddddc2a651258b4b9c619c146a513ef7b5aa4cd45956b50c6003cf7b6b2befefe5b57f08ba4de099c0eb1b55cc8f1958eebc910383c491aead9892822e5595655926f9b4701175e59663cc08579725c3211311234b5e96d45c1637cb8496f33c216ce19967d42f556bb68a7a884a538ab870e18246495bb146cbc51695227b681e420011e23a06eed58c1c5733b8dc6e70a04b528519333079aea4744e1bfa9ef7de5be2efc5595794baeca4ee6e21569165054f912dbaaa85d3a840b307fbb8dd10e09de4e3c4dce272f6293ccff34caa70ecb393babb85403bb6b2fefa7cbdea82e7de6b6279f0a1bbaf99a9d8aa0731b8ce34fdde7bef45dbcf3358f66acd60017862c24891889c316486446e69aad0985a4362c5d510183460d87c6bf5d2daf266db421e8f4597d38c2e6472824cb510a1edb5c056bdbdec7b5ab32cb7c810c2494a014e95ac17512c50a59f26215da6c89059ca5878058933432b0e54ef6bf16bcccd5357773d1dd75ad65a4b146eb6f6b86104103855a6b8f898025222850df5be2d6f97656951e8d3dab037c4234fa4e0a8920c03c2e1db6b3d7d847ac1d2ade39ab15976c93381c357efecd85e191d720aa01aa7d10fdabd5a627f4b5c8d3a686ec0e892550279f5436b8ad696b34fe1799e6712eec9013c744069f1a4858a45fbc8529395752748868c2c2d3b595b4ad926a4cbda02529bf3734589048df2b445c169d1a9c224765468ba978324b0b1b256c3042169c044c142f4c2a2c7300bebc9d9a7f03ccf330901244e28dd7b2f96ae0c7774eee3e0e1e86bd18c989f373e48babb8599c94bd390283dd0882d358f241a49392c00be16cd34f9a2af453339b0eca6704c9d152de9615322e4674896c1b0cad092250d4cca80965efc051a0e895a30d99222a4244b51d50e891e5d121b15a6a66c4c88e4725850b2846149170ca6be8c8634764ba8869888c16965b0c40e062460ba1468132b4a84ec9284f1610245d724c9518b24477a4aca6040f254124d9dc82971520ed1a990e4cacfbdf75e2d263afeee59faabb3d2a2f3b7af565a683eb0406ba7beab01ab8a8a3835948afae165afadb550f7c996ddd4be6aad656a5f152e29d9a415a00085134c2881045b59f682a6d9d5b4057515d13e0ce48c438c0042841016f08107f643fb6ad933edadb77549d69080aa5ecae098c205650a2c09a51312e57fbe16850c6300975210f5a0d983acb1a3ec9aa50c72aeb02f84356cf75e1d72b05e9838fb149ee77926dd7befbdf75edcd7adaa301e4bb6a0efedd5f2635e0fe6bd55cedba7d15746f1a181a89954c2b2d072c6d8a7245196582ed47ce9baad2a2765d94396a599305fba5009f475ab8ac8a35fb7aaa0ce5bb342afedf6a9b52cadad6719b4b82c6b2d4b7bb1ec387ed149064166a500ec1c3cef12b700b068d1a30e942d5a5cfd94bf8af8d2add5e576b43d02958782f9dd337b65694d503e0ae61db4761a2c6defde6b6b366f5f9f7bef1d51daa6e3bc0c3417b5cc081c2a46ee642515f75e59a5f93b42889792175b50c92830c08b83ca111819f7f5ca8acb037dbdb2caa2e3f556fbb5ab5d0266a66482ce902253c61b7196887859294391a48cd389aea2c4c4b79183b1cdca9ef6b56807aa042ca68c39dd0932546aaa6e8a5cdda891828962940d0cbe6e4dc9f3b5af5b53e494517db69f370594202df684c11162d6a20695ab61d937b07068f9d2e4e907170ddf94bf1e7c0ff4b5885c510a216321cf9447bf567962e59eb706658d279aa493325671487797a50a26497f5d77fb9696496beb8a0aa35f8b40b03294b5b5ebdabd3d3865dcdddd6d767777dfbe16ef74f921668c7befad1dac9f5e6bee9efd6aab1d7afd41dfdb4c68c510f4b7446f6d5583fdd55adfbad51d75daf7bc2264db4958b060010688b2223190570d20a26a60bd28a6b3c5f0206cf567a9da3192e1a132acf1e406539e3b55fef682d9c4263645dcdf692f8b7b89e0c9b245b6a28b590fe09d11a768478ec96104a408127c453bc717fa5ab483f5415fb25c63024d42a7c2d7221eb02fbf16f178a95940beb2dec8e0c2046c191fb459e1b11eef3173f86a3b010e4fa902888c3dc72c245470003b46324899cf199f63e921d8ec3720df4cdcb6aa246923c5c5501492a8a707fa5a25ea0512adddf89eb7bc19e37a96f7961e34cdb6486569c400fb1c3effbdbda087f7d5aeb576add5db47567bc0ea234e8b51542f735760182942a02c453de92204aa5ae779b298927563c2155ebeb02852c1769e6ea2dcbbc204971145d43019b9ba96b8c860547833c74ac948170d5c5d3366c468813c020c7abff8a00f3d61de375f966de2eccfd373d69fe709367ffad18942ca9f8ee1745f0a187f3a874e3bf8d33d70f02145f14ff7e0031538fef4059c1e820ab23f5d846aac0d4d64118059af5c81194901ab4e1daa7661da4c936cce9b198ccc66ba7521c750a2c99fbe3fcfd3aac4983f4f134bfecc52a48e8f262a6c94583a2d19d24ba03df17890a166e15875603bdd47737bcb4cebf9da97cb3be6e83c4fffd0e9f57bad48e478d3f27edefce98ea17f1598e54d7cdece9366de235c18637c664cc3358c7a897aa5f5eeb54a8a02802d8ed4f14da3921461b22948171430985ba0760c8563c7904fbfbd1367263d3f4f20b3fae90563ec186cd51e25339fe7793a690385eb8594539bb3599ce779fa87fbb39de79973ee9da7ad17c4d81664f6dc87c17b98773a06df79f67c1e9f7ea8e46b99ca7a1222c3d08c0800000000e3160000180c080805c3711ec7594ba11d14001353965450584613c722d228096118c530061140882100184380414aa9aa6a00fa02e15cba740bdb9de27b689cb616d16e0da9b8cf0e696d3c9fde8a1aa36d8dcf880b1865b918f24f7a6c7a36f06deb9cd8db602f7fc471bdcadf10fee52d4fa005139864e6154cb5ebb7a77c589a0d7dfbf3849cd2ea5d2c590522176e51482d7a012b2441ee17d47761597b5a807a334b53af2b83a106e2a4ed0e9986f557ee271d6e010cd2f1e41978f8d5020cceed0325ce36a67f9bccc36dcd90593770384cec3766db5f5e1bed8d174a0e501e566a5e1a81f7dea2836d0278238791dfeabb151414ebcb80c4175cbafd1c99d8d826089dda287d3d0e8836383f99798ae82c6d8ddb562d6c084f4fa793fb7c1aba16f7622481d5cb8adfddaf3f09e1f8d8c5e6a5a264ef3d1cfad1084b99a274554139db02a15e441a24bbaafeb1b04b0cde9bc58ff2d4b91987b10ff8dd911a9894f109cfa9269a93884aaa8d4c7897d52c2e2619ee8783df41abcf3784383cd190b8e309c365826b482121134171bc3f352baeb6707acfe20de8f380596a82a9f0de11af4a46f1042d06602a85cab1636f5e490c8f936ddaa2c45bab735d93631aa70b22bd34c2449d8b9829ab229a7bc9ef6250af168ef6bca86321286305d365c83fd83730a69b69725df5bae0f0749e983de8a818bb61a1f12a018654b9ed034ff004fd6c7de1a6cbc51c5fe709987b222464611187b35b2ee2bcde923724472c7a002a645c825386572aa762d12c90a07609be0e40cf04562809dc88054d5230b08a6c313fcc0c9ab911ae13c42616751d762e4309bfdb70bc72e8f87dcd7410c381a11e42489d1c611d4d81cdaf5561d12bcd938ff77692c73b8004b5746376ad4e0263eb50f7acdeb0e47f85c381d243e77e07812a45e445806af695dbd711f1aa69e1b85d927c92ed490a2fc617ad3de1830a1f3887974fffc008dc65c6935a1c77e3ad8cf12621de22d7a8d4551a29c5d1afbce4f6c048f867eec90c6eb834ad46a6f5dd503c6f7982847927743ac49a3176ae038e3674996890c7c85e42c4182b84583e053b4e772eaee0f2a143fce55de0b7a2ba8437ffa6a92c6c89a5b8b545a45471fbc6aa5bcbee8f23a408221380d374bd57a8e419b736ec422337fc40ef5bcb0c267c22848ace350835b2c40d6f97577e97946cfc0ce894554368624237380655856970e4d408134f1b852b302c1c337924480c34a187ceb351c2328c519bf70cf780d99ec22106b95de9671623a22fdc77213320973291cb0342ff873b1e86039982759eb356bad6ad8050073d6ac6c5a562eb8cad0c83a696fac399ab274620e8b96806633a52acfbb5adf7147a2615f7ca0c9a271194d297d609d2d7868f14e09494793405317cb7b7ae8ae3370f4888ad8e8d2a36af84b965b3d60331c759e83c16c3c9890858de44f6d628cfb6613556d2ccf131bdd2515251a988cd2bd004b242ccc2732ce1908e73ee77e63a0752c02f61b3dabeab8b4a0b359ba0b98aed0a453eb6ba321fac98a7d38ad8d9a1ec64ffff864e4d64b17a1339ef926f0216ce0eb474fce0a9889805de421c047dc36cc096154b27feea56e3d37023ad432c678a4eebf8d148d5db44055f66b5ae22e35692b97c699b8a3b01bc6db28133b9ef8c5e94409a6eb9ea5a4ba01f010356a74988e83a33283bbd13df183705787c68795b228795fc1227864a51200791ff74d13ac213e3fc5920554f47e78860e5a3f19c4c509dfe64f2ba3db5ec17e56489a54014a7d270d730829a0edab0ed8c308895dc189dc067b38ad3c4cac91aacd83f203b4ec719f9e84d0e7c4a84233b50fc707b55f901fae0a4caaf05b8174e042c71c26dc8449ced05a18f28d027d764f87e7a1f4fb377d97320d9f9d1e2965c1bb33b26b74c1a35916a726cd0746f803fe8ed3143a6af21577335c9c15c51f173fdeecc77be7f7162a2015708b1af7526c595418143ac81035ba5c7889986d70fa9c4fabdbdc32641758882e606609b72794ced8d44f697b141266b6abf41dd77f9b71b3f08a5d243dae934d82f0ed52df82eac547f20159588989f01fb4e3bcc827712ab94ec4054d7234bd9700542866893e5f24f9988b87ba6e3e02748ea541c8c6191fdf91b9aa5dac55b2863a82aa11ba39c1e40aa43177836649fb78e3178174695dc11a0bc1e018a43149135601eefcceafc4ce86bb39506a2b749fd05ef0c551274039ad703a46ae8423c437473933b06752aa0fc9c8907a70ea03444a1c001b6b9e4dcc23aebd27f2df0a047450eb31937b85d422ab3f07da02a422792723c22280d51446c006d2a97c6e41be43148a352114e1a429b9423beb40d72acd2580945c60c58cf768eefe214a2520a950af1a301be75e43ea4756bd05e9cf88b51c3521dae089a21f76a772ce477e12a851d00e5f4c0521cae509221f3ea8e2ce764469f9d8f61f08a078cb0783770f81320cecebe33f844cdd4c4a0d4cff5e89100b51ce24e96c17235150cd1e96274c73812c977872143e65e7e411901aa12e8c214c7034bd57045ae86c8862d7f0ceb5420ff39f107428d47691891b541600339dcd9c949cc2d4c85243b8779237b89fee793f8d6807b5d3a7fe09da04ac1f60de7902b211c104e24b047ca3fd3c04c622f31004ba585902fb07961f781713e1827dbe28cd948cc67151846a0e41f74fc8549b5d34d7227442bbdc5a8520200d5662871bcc7020050e50484e157d88b9ec1c9437a77b56bdd8478fa8be9c8a79c7252606f169cfeba5f94d1c683d02cfaea15415f4e19e8c3efc4a0b856f95d82cbe4aefb9565e6da97831262e50b7054431ad80ce87f92b956db19ae6e4e2454fda9298b8caa0abf3968d2f8f30b7b9d85f4f196bef8e9823421d261da8da904b33e3eba6eef2638355ca7d262238adbd36e753e29b0789cfee7c68a1f31d17af180f27650a7f87b4afb52ea59d3af7e9ef39808cffdc234f85f9388c1feed39412564ae83af7d2eead98e7d3de781bd2250526486de479de4fbe65ba71ad6f72d205050c5866b17af9b04b5a06e2fa72d2fa603b1b1096c27a0329e8755bc3e8067cce89ddc73abb884e76ea42fd2a10c6eec1b46404c28657d458b0c7846080c510f867502c5422371ab8ac2d2d6a2d5e58d71621c182b586e1769d275b2e70f2bc48f543fb5b166941606537c6069f5698849a5cb13e9c73d890366578a6f9c3d168e6576ae5d1f6a3ee681494d501dc9a7406e8b87433a33f5e33951469220cf6cdb54b615c0fcda11d885031a4ef4860cb2b86aa81e4ab9e3b298693551d1b9c28db12e4eb7afe38c2a0e18863031b9dd8c2e1e3dc3d428d915659a69d49847a27b4eddb6581e9eac2cc41b06d1ae402051e4f0bb9dd99b0c82da7fdabb32af4d089653e7fc5e718d8308cec78dcbf12c8bd8729f1ee2d6092270bf8c221869cfc09070cad79f025d2d0d92550742ce38e11c26805496ab6ab10ce9c3536058d0a79531f6ea39cbf2b915a89fdea1027b04615845d0e2796d74df9637f317f7fef0eb582e7503311de7cac0ea39b926a14792ff36d22364406ae279ea5d910c8f09767fa628f3c48b2c64c749df3667313bc1268e5908bd54a0cf2bc2a209464b2cb0b00b002e562af1dd6b8284e5da237c8f20ae33aff629e5baae39386f27914ab7829105de6d28b33f428251293898abeb23a80d5b4171514879f350e9b2c9e176af2192eb97bb70b890686cf481ec338fa7fb89805ac0d0f03b6d452c250ec32ba3a27a2dec5ea1b5c229ed89e92f4714bb8f91152e63cc6c2fb202f18fc128c9319a528a94b829bcdd830f18427ae1c686259f60e1f4d08486b18c8a17798b5f8d42ce5e335b2637a83778fea8d73193525bc2ebaf9f7f3e56d69dc2848f8b5e52bc296e3b1f47623d5da2bd8b5fd405bbdd3a0f981f58651276929061a2941fe3d8c9c5d7076a6b9219d313029f94a42bb014e20ec78ce81fc5b826212ca7666d39be8c2b6983d8b392451348d58136abc15a4d4d7610d0f9d9880e625839c62e30c36d54ceb5b4d6faa911aeeb4d4881936956350c9d105d31851ce72fa3fad6daae0c8101b8929e1f5f3cbd13afc68248c2f0d46e2e96107b14fc24f6a9277845b52ac890f10f4c0d8064dae903e3994e4e036f2763d477e9370a3ff67a5c3ae6babd8e1ddea26eb36041808aba7ac334a99454d1785339547aa0b879424eb58c997e98d402e67ab48e26dda06516a01eb42f5716cfca3e794927e914250a98aa872265ee5a0a1ec6916c728a3b4e1fd3c4b009347f7b4b14342e04227f4bfdd762ddbd8d7e71f5d4cdf52fb3fb538b081821c1302f315a8439d6f94606efe0f8e6810d39858a870eb996f5b1e2dc3f3e0d4b02f57becf6f00f14659c44de54b411f813c354914b6e958ee9d2c2596f57481e62650590323463e59a586521950f95b98f0f7bd666dafea8c00c5d84e473b654de2d4ec92eed0bcd9b0a2dfe0e829fae591594b5902d3b9aa8815c1e302f241321b0c609bba6dca19c21df135c7ba405056f71b5914431518011c7ee3b90cb390a5ac322c188c6d87434bf256f31dbb3a30098198ac183050a10e6d27c3cabc46ac3890606bac273ab25b146c52d51afb9d7a891bfcb199311c52da6d7a2e3f8ca4304e096c202231eae6f511a8aa5114ee10e27d6d9c5efc1847fe03d071b2444d49cd249b46d42f404076d08a8aaca054bea94a1c2d2cc86f00679054b633c60ef9046a76e535a3650c6360e2985539f46d041e94539c45fa1a75da505bd2017cec92835fa14186639bde91ced2b55bc0071ffd8298efbfc5f7c376899d74298e0f494ab657bc5e2c21aa55784773f5f29ac20decc65c5c88ec286885545d4f1534391145da98cc1df244faeab2890f7401d0a1d5ea9d5a9d58ee07cbfd3416189650bfd02cad391bef30d0180261816fdb81b181bfa82453678bdd1ce3d31a52db1dadfceede85e656039b7a38264558245a5531c3480b19d4869c62433e16a29fe4e52783f29547f77f8588650a9cf8c148a4001e643290af9f36abc6f8d824d5f8152a5cae0d72913a80eb6d0e327d2dcf761a943f45ab103e5c343126a53c0f5e8061e2eb90b2fd0805e908e0aa6d857660a0b505b0fe5c2ca8d22923835c87ba140a1762bb37f677499bb5658be175990174351641c7af9e22e36fcb230412de56ab30a0dfd62002de2364093fe155729b041bb0a12b92598d82615ae0777c041d17d70f87f0b023da9801b8c47a8511ac60e4a0f0769a83dd695f25940d8532336d729b55ca13054811443ec40b91c4d42d90191be36432bc530c2ea52afba9570a83f2be02a6e173a9da262156197c4bb4b1986d52151b93a58625fe5ff0615af21740ae5265b30241d7b8ae0e9886ea8f3869652cb141642a51ca5e69c3315f3b37ab95e3a20da19720c9a9a58987beb220d46fda730d1451989c9c00d4cc269a0c5cccd16523765e7e8f387d47ab4266b151d67811f08d847b0226e15bed8ad24b43a0d1bd2a70a29844c7d1cff675825fd1e548306151159a46831b7b109fd5d6cf27a5c4aae41bac1c861a11655d9e04def82aed70f435b1bdf0332349a5c497851e3cebbd15e9ca49af99022cc5902a423dc099039a0c0d0131a4099500010cdfefd09b0c83a9254775171cf8801b513fa4c0703da95d200d44d04d6a7c51ffafa4ace439749a77b9f8423909f6cc30829808c6d989340e68406a00d2878d0e340a18e997bd2d3688a9597550059a5a29f0cd34300cbc9f7430f96cde1146900c0988dc78d1db50e84c1e4424a2f70eb9e1269e7ea594b1c3a006c9909d008b9e0a84e1646fba24e48b1a949b4763990c8435744019a357378a2252920d9d7b0d5688a54a8265a7822e96cacdb51d658f0946a99abf3a0e7b058f2a57ea0efc865d8cf5b292c1870693a54000e8bd3ef4e0444b6330c7ded8d78e0a0bb8f18073b659cbd30b4ef0d8ac9ab1ab8015bf944f8242e6114e1541cfba8c6276d2af43988978f6265744b856e1a5e53a80e068e4375709055cad8a88561beb42d504b84fe1152013a03cf79dd3a1adacfaf8545d5a02a1da36ad862f0878c9d795f0d812807be20a68da55840b0de3960b08b12775a8b6f012fccabb5260866e9acaa229a9c7384decbc49b6b4c026220ec6e42fffe11d776691ec7bc077e6c551611463d079aa115564f9cec200cebf2c7fe30738409d9b0c8287313d299a730afc21dfe38c4084be59a70000f5b9c0d03dd8ec8417fd95a1227abd17afaca58d9646a5dade936199cc94384b3835d9071ebd97d36c108b926e4807c86872a5d7a0a4907d5da70b14373729b9e7ac68c8ec78a97ae4b17388bbf14f2c8c977157cf18f49d34db0741377af5428062fb67d84c04e9a69da49e178a67388e66b24dfee17a2050aee3203a0263551ecd542d027af604807bad49fee4e58d48d3316bded578e40af5b4bba13dd6e00614f0934d6ad42922f801e8db4218a956dfa6b160b132db0b080f61d4fec188f6fe3e6f6fe8b72d96604f8eeb7ef0935374511af341cda226a4d4a08074c8235eff6156302ea434470098519cd1464a4cb5cb62b45d34bb13084b972ce2227ed343737e4cc29111565029c6bd7347e634e0c524cf7d35a30e6e9f06a5bf3c5b8bc5c722ec8fdcce4bf0a29ca295d8e967f010a64dcbe7b829d38e67da70348b99d784aa64bc78a1dad59ff5651e0b66cfe83cdfe998d13fb5133fc901b0f7d00f32313dcf9790fe9372f88df98d8b2c152331a61ae6d6ab44a6a9f6abaf0944a5e4d0ebe6c346b43a2e168592098e47eb31b5d41758271cf75a4384b22833f50a90eee228b0956da24209d7506b1bc807f0a5c6acb8059295d5b238cfaeafa2ad4f32c31c8834cfa25a092500b249aba11b7c05f87e64ca97d3a9a9cd12eecbbc659a4ba0d87e3a480f7b2dcd9e68057b5c7566eafc8653f85bcf36b10053c358a3f63010a0515204a541973abc43112447f359713f7aaaacadd34609d241b336547626d468ee51f047905fd0d483bcb19f9211bcb9cbbd5faa5796f707e346cfd61b3b470b303836e0beb2d2a4e6f7e4938bbd007157c7a150448325609befa561e816a149cbfc03cc2644c36e33f1abcccf980113007a16d30380514a21514738c1eaa343253537bf64ab1436c5a5f4e87d1601c8ef6498cd757efca7f20bd3905fdc60eb75acc045e62e2ad952ab967ab7939387cd741f795beab145af3b4b3f08571d1a4974d3c1173e9f6648262342253b3c14256bed250e04da5b81716b0fdff759f6a0979185fa336ab7ecbce6841671f84f2a02f7d24980a92d32f294b2130aa313c36a65e025b755d7a04d6106918d01b8cde574bb3723bd85888719cced1ee86b91d75e26e121bed46c7585d905a6323ccc179739da6b6dea11be9e7367e253472a75fa941e915c4afd4c7d058c645a13043972e1d690d2d0f5d0e8dcf7c58f79b16033bd44bbb123d397a4f2527475e7b7a4c7b7d051afa94ffaec3286caf742e4c18ebe8d700ee2db10f643fc7401bab495e3c7c6067b2943e0af70531a916a0d9f71c3cd1b60847b1ab831d77ad4b6e5aca36f4bc4345619a51f8812497936a2ebf615ed5aa610ea1d5ef71cb90eeb00be690fd0177843f93a8e3f60e2e728535d543b2ccdf6803fc3ba7386a32d47d7159f51edca39fd6e3b0220141261e277fc1a10817482429d39fa5cd7744cbe76fe29756037c968adca5d8e5ebb34cac9921b21f0916b5d3a01062f2df30bc3ef6c268a3db4704434294575609d07b47a06c26e2e92dfe22dc590b27b42a7f29edff168c45ef0ee12fe78d24780d35510488135af7a0c0c7e66e8883e7615c333dfbb08ae981adb19fc9f25108907eb1a707c47c20f6f245db109793b6e6832bbb847de8a6b8777149ef10392fe1e4a62ce4beee56817daa6dd9b2e03ade441d2fbc03d46b0c5658359eb512e822aa325f74fe1e277cc9ce3b810ecb91a4b37664f4266e406d19be8630e43876bc08edaad9b0082d173b57d37d491546d4ff1e90591894ff7a466e2c92f4e3e92bd11e295734abd4e097619c366114d451536aa21c0c439fac9411e85e3d219e7f85564a2ca494e7b987ab8b85148bc75a9dc5dc403869288f85a86708e8c39508d15d55069bd362ff49ed057de9423a1109302b3d0df54c64a489ab71b49f71ef0aa64dbe97b4c3836168960ebcfbce8a66e7f15c94d54f97d068ade03129a7c2479f53a158fcf8ead715a43db1285862b4de98105d01312c24e72d0c4b9b86e6b5199783bc365944049f235b4a73a0f653743c4acfe742d04e4a838b8530abd1e401a523d8af55599d4ae1caf8a5746eb31003733d8797d2bd9a3e6f2669e5519324690e38c21cc32f1c6df658e15ed5b0336af37047cb8a6c3c85b0b757819fee37652a4793abe7831bdaeb55a9452caedccbabf10c2a6dcd78fe47b15996b79483385656821680006eac8ca26393df04e594199391efe3d5c0ad52364f4b8f0d7a4fca01fdf5a13b53fc3240fecdeb5c101e5ec36170e5eb2309118df291f79170b4f45e6a39076de56a0249ed147f48eeddf4d70cc68cc68774cf2bb23f45cd39e9be766cb325ae5d5726cb8937cd09e92cc2f9158bfb3d57daaaf49544357b98176135dd179867c486e6bd0f91018f3f3ca4985c0afc967e491517d5763bac7a9aa807a2fad5bf6017bda1a7983a7720a0a657b631b03325cf7a2a11d2e25d297707d5c57b0ed642b6916e08b275832d4f0f8047082ce28d27d2f34b2650ad300ebc10580be20784e3524d4ab646305eb6d4aaaa40bc3ab5782859a4a9d7a9d127cecc3d1023caaf30102b882a411630b75031addb22ea82b863508501651c0f1c390d78fdf067e6736fc565a48b3b4db4bb6028340120b050a9e06e4bbebc95dbef6a41cea23099f36df6ce7db187d003a0fed6c1408f4bd7ef031ec4bb56a5454ced988bae03076220a655e96de759e7d759d0b3eca06e36b6b8618559b32a2cc29fc0d001004777cf398eba910cb8512a70e5711076663d9ed9dd57e8253314803957b0a778c763e164506313955b2766a35d8e6b1ec644a4930891fbce6670c2593fa7edb1a956806b7fa031ffc74215e43232d9cc1c80de8224dac88701b29dcae72ac518630ecb00a64048ddbf5dfb90fbff0c78126fe867d05fa6f2d705d4b1e53e7472cb5020c3d24327f37f45eab3d16e10eac0942f67986385cf91005e9bf8e9b626f7f9bb325f11752041db9e7a8a83565b536dbdb2dbd21dddb83567c107655cc131433d8b70db1f002e9ea5fd81a3f77fe89731879325230311e81f869f27794ae06afe0edef8b515de61b7030415f54cf794b2de8f1f807a4f1f28d4a76122916141444b0e383ccc02dfd3cb7e31c3ecc13814d5f94cd832c04452811546a6b20083bd294fc0634b65cea7c8c10f94bcc4b3b27b7adcc39f39e128af01b07f5ecfd0d78bbd912ba248c4a77f74975dc5a4e507e5487c2a42b35af33dcf42e69d4f3b05bb55789bc1e274ec71f7616ccac865ee6b7289c2f6859853925c47d42e1dbd8a3b1947851a6934c9e73671080907b4f32a10553c76e831cde8df40fbe44d9e8139e71071e653e616898681c830dd73523e619a3b41997ef4bbc66e4127e5a9306b514e9dd5d5586a0b45427dc5c3ca364f4e8240872f47986e40e8dd82fb77a422561aec70e1fa015e4ca203f499d8a3619686836e20ec41b47985308ce0fde911c64b855b7e29ddca1dde8df3978055dbf06d54b4a235829b46eea1c223d85d1a512fff3ebbae4a7f998ac806f33a90d5242115b46727c3939d18b4224dec107b7adf1a50c2960e218023e0ee081041656662a79ab50f4109ffa9d15820a3c839b5f0643b99012990a0d362d2c013a5a966ba2c5104be1a707c792f53a7e8e37ab8b6a425c0a40e92727da89881993d6db526271d565fbc79c084b1e4bf9c9315762c61f41694576767ced860b4e4f65c494b2ae84868f1b2bb184f53d314c1d6931c9056ca99ebc11b780b78bd6954bd756d59d865083102c48b9ee1c07aca4497a4693c558cf8a91e29882dfb31c7f5f62ec957ebdcee14a01b4f4f98b91e02da6de657a531ffbb51eee99daa845cc7ffdf1f49138be7a3a08ebe4c1ba2c25fa0c38373905953fcc9bca226b51ba1c8b88b0038770e6ebbbd3805fdea5aae601ce9e5846481c2f5b810e1d0a2ff340f20e71dc699f931230ddaebf793b304433c06ac3198355f61e045df24b2e19666949be1df7155d93fe34a2dab1e63d0f31a4f9a935c2f944d02d81b477ac2bc88f2906e864e9920b96ea9384c7c384e94920947be42dd14dcda6466cb8b1b80fff747140adb326db27910848bbcccb32183bc3792eac5999c205a006100c34e2772bbb5f053281292214189d501f1e588de1fbcd96b431bc055adff3e823717c1c507f6af10f2d511ecff12ea6b505affa408aba336c721cd0c07aedda63e8d444c9bfccfa6bfd7aaddb0534b654878a459db399f36c24e586a13f5f7f1f2f685fd9600c1ab67d1b4660eb90313e433028ed085465e39c8cab56bb70d0128ef476fcfb478b2d0e63e7ae05ccc22548289a3b5a3ee7605a146afde153e667f46d69a110bd3889050bff510640e8552443c32f6f0753a9bd21307d14038b8f1990669946bf5a834b6891592c89094565be080eb44a6a8659d243b700eca27882d2d3b1229cdf77bb9f87c907cea01325050c2c33bac2465e7617eace74b7e0fb1bc09730444ecb1420c4c180c3bc8de3ee03b09def3dd5194e748f501033b6fd4686d4cb895bd33aad633e92f2635582c8596f64760fc1f8167fd2b138451f12961a75cb6377b1e3e2ad7a5cf6b520d8afb65b098717c4a2d83ecd32004ec17d3f03cab96194310f47e862e8392ff0b5714aaeea71735c97399025ac968d3c662c866bd32a3578e4bf256ee3ce31e98e2a4736805819cf26bde042eb203a33d651fa88923aeea51ac17e48e3e26fe13ed91feb2d46d14f623ee29c502eaab987954a3a470c0340ca28b5477a4684ab05243fad03e76d95ae949d2ee2790fb22c32063f07ae44425cc40d141aa5dd0458b2a90800bc22c72e15dc7c2fb831beb9d6f4718d297ac40211d77a100def01f51821e44b22e4caa2095bb51fadd994830f53fbc7228214f5519694bbf68d46e107620588cbed493ae1bf62dc2b2b4fe92a35b8d3bd05a22a9169beb0c6dd9268d623ca34d000b42b1b75ea34c84369dc5d2a6095828a9ae01dac1012c96736ac6f57fd55c0886fda174d775093d3a698e29a6c45287c92d77dde5118e2b0bbcc1577acf4b693cfdc20ab64c0f7249b1520f96f3cbee05fb28a0c2f3cb547440de8d218a196abdc9a7108baf78379846bfd4a28b27c1d4afc4f4b04f8312d2d843d4a9b416b746b06a201b0e7ef0871558e8bb26ab3a069c4f6c2121cd4c74fa010743a292cbb9040fea43bc3f6c80c0c91db0637ce925b35aab5d563fd4581f010a298d2753c48d6e6b6b5c4dda73663584c79d25011ba1a16badc1b649dd02570bdf192a2c868bbb8e300b225ccd73c2dfa34f4e2ff752ae77ef1c1ea2f72b2f52206aa03f35ed41dc8e22a338c6ce7efa799456e1695ee4f640a5a2fb6a4760c5f34f001cdb901528a9771da908c3d07c6d6b6155a4fec0d7252f6e5817817095285a4211bb80faa86d331669502102c1b8bd208c6c7c131a81cc2840e51a83eeb68e1192039d28db26d09d49215720ab80f2f63ad47ef226bfda744578227b0f9c0d231464868ab3993951877828ec4304372bdaf1a8a39bdac4ae947c194efe871120359329365bda81b344269de834d4ba6be73e3174958385adb876d17feac5872ae32fdae35339dee1bb3308eecf1d01e3012dd51597898599ee27420072337e8f8a1c7c1bbf964299efd8c3bae952e5e314c8a0c95f585c64413039d3157bfb0a4c41e5c0ced152385461cca218892a17ce43bd830d3e2038533976109dffba40d737230f490eaffefedcf6182d72f522c619be18307b69f06882268a65368fa65746395d11df7d2381cb47c3660c008be125e58a1bb59bb11d715a1926fa33bebd852603c1e10162739612312e63986bc4536c1765a009b39213950ab7cd7bc4544c2ac3612be28a128b8eacd92e346737cfe93bdcba242f62e829b1e37961abbbe970a99322ba4a217de84f272ad92c1abb5731c86192f24b3b1977d01e6992e537849c54230c8b510c4bf12aba4d5a5921e23182f6ea8d143ed9c3aaa46636c3aa140f3777e150eb0ddbca2e589f538150e9362c1dac9bb659020e55810e5a27054f66658071eb91d917704ba265fd58310d6e70a00b851ea6e4094bc82bb290c45775bc67632c20258d56d0f5c557645dfc879994c52d2c3178d54bc3c095dbfe6e43b05df5d11f7e4e67ff12906821781e8a7f594424d30ea643e01180b6852de607da27a3a7ff5fdedd9461c7c4dceecc484cab386221fa74a6b80b4c2c9288e3f2dd56df591c93c70c762ef971ee5f15c97f0c5cac7728d600ffa7f24fa0399d1843a4b78d49b13f0dfe1d78cb43378a1d214eb3250f35555d28587c9d2347abd546c13fc8c04c43f8a69b14837c3f8965631fb9a9b71ccb620a6b1da6768e61c1fb88d117304b6c16caa4072bf8ea39378bd7a6e450156b159c1f153667dbafa0b9460508532828e54c895e31ba50fb383f0edb95e938ec47e71823cec0658a7ca0320e74b385d0c9cf4f3da0695c729f75a7b0f93fba06dfb9448cb99ee6cf3488090565a392699c9df3d1b4eda9c02e1beaf5ff42de4cdeab1ca502567e53b39bf2534878641acd7bb3455901b61bec9c07c97d743594c086b03545a72ef9e0338c61f991746f2087d61379326189d15828a632fa776273c1385f715df1f678c1aac1880f507bad24aeb369ef55c7fad1f82aa7bf3fb0f896539ff5bf9bd6f37fa462779cb4d17535d27dba54c35dbdcb1439554af4bd0ca9ae1440b668b95aea6a2b319207cefc4cc1ea3cd9add829223bf23be2885af41de4997141af8bde142efc75eaa4850b0002123c8fd1bb986ad5773f3ced0c66f4ebf3bfd6609968aeae0242cdb6a86ad11fbe9a739a0955557b14143b5c718d17b32d0436bdb9a0448cae45b7da13ecf5ebea270e9a2b7209914e24dd7095b754ef8cef52c5d66cc9066458c193e65177e64346e66a81dd84c89d3257c642aa3f47902f15dd0a7530cf94a8b8160c58cffcae5b399094fab47a7acd1c118ad41ddf978f583bdc320c0efbd085e4e1664773f75381d3a0ac82d4bfab310c811c9c1b96d7f17993636ab06b85a66b51edb0de7ef64d14337b8cf625a278d7c1c6332d453a58267bcf4ba0612aecacfe503e1d10443f05189c2fc891d401e5461c741bcb6512645384efa1a09d5fd0234ae96e90ab421b96219a6ecd7fe364cac809eb29c2fbf16051992f489ffbca943bc5a455188cc37e4968e8d96a8b9d38e7b475cc151dc23ec0b5f3910d95530db93b6a0672c5748800dbd641b3c78ea24c69820aead6128fd79e2a15875bdf79da541ded6813097986e84383e0b0ec29ed499079a05a2494f2f1673d1ef19369d74a78d009dea8082e9ebc3588bf1934b9bf16dd4c86e4281229864007874cd37dceb3762b8ecd79db4e45f0f3a7e2ddc1fc14c5ea2a76a109ef300c17c082f79656908f3d759c06d7813802064ba14996f8eaf325a05ae0ca84786ed1bfb07046f92453cc8cdd77c5c4146b15932ad926a0dcc39b46c80a35ae8e0bc7901bd35440a825bab1c9fc9745ff5a03270a69f2f0f7c04d293e0c3f1d8879fcd83651cb9960b6fef8b3952a00696ea3fa297e3b3c99ce58865863f0e7f632b602e70dee6bdc248ed8b0f3f329b84ebc8c3998789258a9ecaf0a87d6f1b4b2387f1dffda360d0816378b2b74aaf95b01d8c23b08387142a964f287a04af9f5f251a56cae484d861d15a2ee0dccd777c166297ead0c2ae6e35788b24009cfa0da32cf1ce8719660dc9721099393fb07786ea6d2dbe994e9c6ecf3d6c245b3e93a80157345e5c296e3b690c0cb9e7fa063c63dd46599524910df9bcdf7924c39a202ef7b5f3301b9493cc6a1476d9422360bc67e7029910945bbf8033ac8aaa7d1b6f07ccb5d8529ce6ef42f6e6877560c93a7c5d1a6d167404f2b3be85ac7a2043b591eba4a093b910a76adad825f702a44ae4de5928a924e79a7b1d0913f37c6877e9fb033641025fc304df3c6a5f72274e1c9c51d0c630ae45ddcff5bc640854af29f6113300349d16c98ad9c42616b47159c0530087e46bbe59942553fa03a093e69765ceac1cc7d28c61fa858cda450ccbd3123654bb54bce19910c5c80b9fe6027a52c35d359a1ed11d17765b004bffb24721e5d60325457bca1925d8b31210ac42cd7bc5f0c8b0db95a72224a8f99cec4f31f238c46550c6a66bf02dd2a15b2cfb2d979f55e4697bfc352b141ae4959253a1f9544845c25f47cff8e16368a8ebad711aac2b95ce85d5324df8b897bbd214014694e20d81856c180b8f8403c41636abb5bc40669db02788ed45b4410bb06aa2faddb038735efd4b8671a83d036aa7a554eb975e2b74003981e71dcd6ede51fe4261659e37f21b8f2db7d4522568d1d5e77daa1ecfdf46e4062442739916de607a78452f24e88e8f62079e3f7a6db7aca95b125220f22e8b9b79cfa398f09bd7431480a615b00f818c91e94383772859c923d790e7a1c817492095c1e59e00ed37f940d091910223c7d21c800621df3b3983d6f27599f42d16d2e4a1dae8ae46da2b3159876e256ba507d51b265ad8bc2bf81994218d0ed5333894e4c70ccf7867beec51a7274b898ce7de1ae053a2eb65448d02204669cf02c903a98c547863b839c43afff09ed84e4163de8d34cb1aa992afe0889dc9525e09fa2a0d27e5c920cf8a71c00293ab59322e20bb878dc0575923c0e001984584b55010e4d093e9a914aa09afc02c985e663acbbac629b9c5fdb3f97e0d1953ed77beb9557806c68f54a1508554670e2036c3cd37904aa46747f736d51fd4b5e41e98d16e5bb6ad88c5e3a941b3504f48b8350c37e2f415d1ca29bd5f0d505fcde0e3cb4a5abf5563c7eca672ceb91e328b2b248c5fa04d81ab40785876c50d3fa79b47152668b4ab977ad1f2276963111037159b278d04d1b0ce3fb013ddf2cd9f75c9745298859aa476ecec802ebebff76d9c09744e428a5c2c0c18487eb07b1402996667f2e733a6b95d52b46eabdcaea54c626538e46e5d2a846be9f78900dc27cc63faf72b0786ecc98bc0be9df0d73b0e2e4fd745698892b4746e1d3a67db50058a95b9f392a2c14318bbb87d765dbe47cb4f523fa616c8f911fb8c35f8f568fcaaffa2eae418fb37cd0495d74248070392711f16d9a98830d89b6ed883f008e6a5953f91c690f99b9fd255b3d7544fa04b3fd4d42097065348b2e38c642b5b1ecbe1cdf637c4d6a4e7e97d52f210acc4f2cf3b7d4f6809101a5cadaa4aae8507df1b460d3b28d9ad04bc264f63acd759821912a82cf8a817401558608cfff61aa236dc30eba07d9d44e825ee78bf4108ebd16c4f1900a01b4f6fcf7727a61610e2243c127f66c2d4aa8f6b4dc658da540cd36b9e7faf5d3879ac17d25267e48ccc18b5b7bb08475f2e8e23787442b4ae88cc1ee8c9f44fe361baee08044e55f3d280770efc79583e2659c81dffd19edb89ff7982a2fff12d978acf2dbb94ebc81bd4cec7b4fccb0f24fbe4fe4b2a27a47cf9623b07f68c2e68d3075461eae79e2c3e6af0644748a7f704e28bdfe412ac66b953b04b000b91e3157425ce0b2fc5d0723e8e5a77599045d9d1b8c36bc666dba22725d984dd4d8ee16f09ad95cf4956ee2c576acfec5e2705163f9c419f0075ea26a86c54a6be21e22d5d5f6bf386c0303482c7cbb436d8356203470311270f89bb5bfe38f92144bb218bcc0c6bc9e9a534aa786cbf2c564cb0407b1e8887f4d3934c6728693c64322e493c6616f1e1905a5b3805cae33f0d9dbdc702e020edab203e836dd459e4bba1729e89c3f5222bd24e134aee78b793d3452dd71384fed06365e14184f7ee0cf7b0e11e58ec549af95cdf094af1b1042b85987551df4bee5164d154d7d97f82e5a1f1162e36f76f609ac00fbe8c774e3b8d337bb236efe6ad2fbffa2d7b4d2e2b3e49e5805fcd21ec7cc715b9eab46968b6d0a27271d50afd372beeb545289e25f41b2ea17499a54e06e6cece15962f78c5f1369fdafadde850bed06f94f9afdc020349b02d2336c59dbab3bd7dab0a08acdc0206885b580885d7a3776ac024b561e818986471c7714e5530bffc44c55b9b39c583fda64c90a55d00adbe606dcad4e5f25cd8776ff49baec662ad06876c9038d9aa6495bde85f035b267a1d5b6dc491f17d1f6c7dc6a0efaa3e5fa0ea709821a4f84848104d26a7c47538c7faa8b6edaccf9505fd26e27906502e72d8817931b58695023cddd0cd89fdfa208cf070faccb00463183a0d752dcb6967ab2c1abaa51cc6ea5de5543c0ecbe02511f1226e6c7ea478cfc4e2933c4624eff01b8837f03f1d702e7f14a6e379b6f9634bda7ce5a4be3f6d5f138c1287949bdc8c6d24980ac0a92ed40783af3f73d314eb1279cfc2f96ea298f0f808dd2bcbf259f83181a4d0f7fb96aac8001127805b855447f91440e8d8f7e80e7ef011d5400c42665e805b9f0ed9d843e76fc4fe3efcfb7deab888418b43b8cd34f4f229a1c53847bb6e29bd2c3f3f6177f4a525c31a038979e6e384110da231245f593f744cbd92451b5547675284220473b2d98a7080587d462ddd6d76cc359de3c1253be44b72777d8113c9c1c3cb747084f03e1928c83b1da1aa5b97d445bf36023599295004f3d47554610e0490e3f885a3d52a66ab6086a3c5a7e1be80d1e1e896c825a0198059b58fac7e1edb95acc9f07db708582f75e0a3c150a793b1beeaa64f2887ec5691eae4fef15e3c6eb49ca8c32414935998c161eea484ac15bb0f1d3d1c59cc778a5dfd953277183c6b08f55602bd29c673ff87ef2b9416b75fa481da34e9db8102bc9ae08052d2cc9caf74a12f7421991220905dd79a7a0416a37c2ba91f3eaecdb742abe821635ac926d6da76152b7bf065b970074c5ac1449b64c86f3518cf7410624c7c7a13b93867ebedf9a482600d36e7faba150e227946b0992797a9c388ec940df46e831dc2907371884090cd39d7c0f50dcc16efef72ad3c22ac5b3d301c40f27236bd411cd7d3cf103130926ece6e5e39adfafeb07104ce5dbd10673cefe0523aa2d74a8608d88615da105bcc8ca9d94c6aaa3bc4e182b64260266f5966f5ba6edd4d722d30f9b2fda106af4fe54de762facc3f1f8ac0fc291b29cc282745e71c1c6086400f7a5cbf3a54b331271f4a9965a4775b8cea086f4fbd722b2c8976cb7d455bf858d12b9ed89b7e66034b0b8116defd940125784c61fab762ab48346477aa593c978335e8b9d2033275c9f7c9b0dfb427303c91210b416854216e89337ab0a3f9fb9827224b20d11e43091bb874a770838fcb2822cc09f0b6f3a45fbf847ed399acecaec78b748425b2b10e68fadbaeef5a8e0dc32d7d2a498fdecd29b0e55b3d416b4e2a5f96a3c10e14c1d7d20a7bae62c38773a6e347926a55081f7076009672d50e6d8525391a4e5d3f013cc19ebe811fe8114a5af8364d2000b647099deba76e483f9033268f06ad25690cb38620ca3cd4a83902d313662d891fc29bc8656c6dbe12b4880ac5b8426abbc54702451aec028ecbf223158f8e51c7dcd4e2bcbabdf7089e6a5398afdc197739072bada5276ed3135a61c5824a02fb3e9e0203ae43abd03691b1516718f13ae18665581b408531df546585879129bc5bf68950c34c96d649afb054f7112205f41fa8d745661f57e10d829d7cc70fdbec11422ec97a32c71f51f7a467d0e05b31a66a1418bce811749d2357d3f458bcdd72dd8446d23e979e5608c683c671616f47a127323d8c9e61b61e1d454192d519324e7c5eb610c2770e5a94e65e4b9ad690b92b93f37f4bde566e3f5af79b9dbf1050994113364c292f524a033138ada48e862dd79e480d87ba0b81b4c8b412c2141e9331be14ba015bbb6503eef41c30c9fe6b1428911acdab48ad491b5f2348fffe9a5432d502dfecb7f8d4250e378fc724604d81742d864e69dae40c07a4114c60ad3b1ace146b45a9588568f2665aa13cdd98b298c332ce3a3b1465faf1fd9e300d68947f46a092a2e4f7d7f830f0e8e23ec02d4c9631d22cabd246621d50209b9518d479bcb6de02e2c88541676fec59c6ba7b94ccce4882a782627a118a8f6a682bb89d39fc7670562d8aba560c664906e80cabcfb71ad544a61f164a12de14f32417609bf6d9257ebc7f69dec831607da3d6158d5eb743053e23718acd36010118bfd0797fcf973e9ec346b72299fdf378269b708adcc0e6456eb3f9f4978c93657f79a6380c2ddcd9b514791962ace89a25189d3f70566ef8f413ee6b6657a03c03553702e09c6faf5edfaa1dd9d23ddddde621646e68ef305b6b97e7f9b962a8c4c93dc7d821d5d93fef5a225ee44e09e56f1f7cb5fc2b6c6322cc94ee2a07cc0223e013763f7511d655a4523475894f2c7e60b33228be1ca0097f7e8d5cd0ef61f03281ee998f811ed370a7211e64a5fe16266519b241abc0b3dd07ba6251d4531ccd93a3cacd3758f0f077080250ca1f5cdd2449cedfdf2d27c7f7fd2c4ed36bc90165f1f2d9b2868b909c333c74409438c5ee9efb170e0c23fa027a6976a504c7786f7901b2fa58768345d3786427f10036999e9ffb953d17f52f92fbe72c34df257ff8813a6a35ebaf3f89f8c0669b81796766e0f6b274b36ecdf06688ae6405e8eb6060d1c2bdacd8c5675c84817429fdbbcda80281f41dc11f6ed6fcdb3a48da640489e6dba370fd2134cc147eb73d17a0fa28ef644c24cfd9ad4f425532a0e6da579714c2aa145dc55df7a7493216487db8f8890a143b6109c589dce0abae533fc0c9a641fdd5563c673ba39849acb49775f06dabb9c8ef15936366616f1cdc0d8f4e7a9cb3e9fb7e3254439da9881176257405b84dceb1300395fd17ce39652c6ff1e65c8e4f448dca1eda33d206e9a96b0bb202246b8a9a91e6e57b4a3383d637ff1c1c0dea3aad489b2cac0bf9a31ca8e3346cba45e279f2dc42e0a1fee73a4ca571564840fc559625bac5a1cd686d3fee47b473f20f4813e3f0c9dfdc40f52be6ddc627faddb859e1c41b2ef671a951a067412e90d9aa456c4a2cbba7186d889e1275a39b8d82140be3eb36110980b78e3cfb14de0b59fedaaf92e4cd60947abfe7f6c9504e3fdd1e4fd6aefc6f1279e4666726ac278ecc31384577764b0856d4b6c76a4ca10f320e2abb08d90c170bc33416e0ca191024354034165a46f54ed7cca1aebfca4d356b124ad34019b005ac6c92e89568aa82451f2007bc9976932c40176e540ec027ba9dd7b48d48ddb4d70c3d42fa412f46c89fb91a9868a77cc2db32f2a10c8f87b7a00cb3821c580d3c0a1e5c7b3829b24b553d0dc1d484f44fd9f1a6c885237859482819cd6ed2298ff4f0e66a5077baed9d19a355fcf36a86a914095f61ce581ec5e1707733a2629b9f25888cab0931324d1ff0d7bab65c02cc1632c47672fb764df7ae44926be266e7fef7dc4abbffa067b03e42d1cb7677ae0a9097c3042c72a229dc39afb1078e516a7977e5deccb05e4a0bc61e6529b58dbcb7113aa2a28d2606c632d08b9bd44bdcfac5a5c09b082ea6f0e075c3a9832c61c472ae6eff433fdb5231859fd856b3718d41b84df78291c9ca71827558fffa5f1c881433e6715ca03398f646a81a877b5292dfef45152aabe309645a8d514875142be494144b1e0e965b396ce72d7f5649da32f210e0ba8e899bc18e2fa751b5c38452b267f40be87d5ca0538e2bc41c53fe9f609b34bfadd39e1ed51f34f438870950285201a002c1c9cf269b3105f297b3125dddfea44c890b9464dde5bdde9ef9bacce75c7676766887c752a886af7135dc8ba28b8dd45109c8d51a4b24617205ef1451e82d4e9c426273800f8512c3f66776fe00a3593818fcaa2cd5a50b3c5bbf912b1bb903e85cb6ee74085daaaf981b8f3fee72955a05387c7cfe9001b95f2bc817faff514001eb2afe623b895851d88dd69c2165f2cdb02463d17d9c283d6890d4f96ab124d802e48b709ed5c015b3bab05090c30f0fd8fd5f3f6830117303927805d8ed7887def8358e9eb38677784c8bc4074bad3ee444965192c7faac0b3907aeec770946ae38ec4504932678a46f1633e1c46d693f5b99bd69f222fd9650d477900d4df7a0b77590f5da30fb35ab634583795d536d88ca3737351f3f36c1f21595e937d95241fc94dbf407eb770e43216ff952d4ab80fdebff9e09d4610150030024d7d63ad5e92e3674d49983358730bc12e209ccfcce4db1b0fd9dcdfbdd186b3d21058cc1223c7483493ae2f098b497b9f8f1f0f53dcc61ae839825825cce1446f2191906f4d7ed67f4f071ca039e71fa4b3c2c4da8b6e7ca8836d19ab7dc982483f2d860103e26a6179ec0a58a3cfbdc9dcdb95ca088189b12ccb036757adcf31411ebd780e0e30b60d25170250d2950bc8a7bae9b3a3e8556ea173ccd2bcfbd70a4b14625d0d8b72cfc459f09066a2ed9a6fb10ad078b7be6eb1f5608c0b2fb6e4cf8d90a21ec5c0cb6990f32fe46b3fb3ebb73ec7737bd10ff92c10303fa46ed6a1daa54be980217d75cc6db64cf7d765f9d1594b2ae27f921f5601e819d0186c79ae0677c7e99e7a8c0651ebfef3dce9b04792be46f5907fccabe3f6544a6931c99176aa9f2896b4b3ae6306d9149b5d040e0232dda275c222dd6ec13f357bbccfdf51a82e16613611ed0eb06ce8e239428eda40f369623aae1b9ce2b8a7218cb0f7454a79cd7e648a73029ee4f99f226583e64f18d0967b4ca3bbf231edea5d7d454fea834f460b5f713277730df839035f31b428b81dd97b04bb1399990c0964d20a80e6027dfec596c877b67dc6ee7966d411f7b98d0b1084168214d70c51a19a027d768df383f7314ff909c4519690ef3388d727686c1a93d1a29f238303ad91a1ebeae2960653b57c20f18248d705e805b612997053e962356d05301e070c909d0a1a0fafc97f8994d1271109b925acac5cac6361b980c347dde0506b4e856a5f11656ff75baa026c133803928278bdd41eb672f63593b2b98fd391750fa52cb9a0402a88bb1a15714e062a15bcfdb4a0b65453ca9989e4175614baf162a696ca7ea5a498201f1a60fb74a8e44531976ed1a8610dadd7545cac36f16e47ee1eb81a8e29bac4470069222a6752b34d020a7436424bf0064dff734615adf02990654236051a5f973a64e54bd877067887b0f8eec1bc9dbb069c4196744568e5814e5f2ca98d60e3a2c7e59fa3aa78b9aa3659e816c83fa761943b64c231b7adda3d2aaa8afe1e361506a08e062e4c7e8f855709dc761be05ae72317c04aa6ade6fc17eccf5955467cff16bd4736e8c24b17e352b781972738e8269ebdacab38ad9b1c54257ba59759186b118fffc158a1df2b986c210109234477a6bc3a1016eb65e3ecdd6d6022914be2e062511d0d3b0cc800d82108101f4483394e857c5d6bc023da9d21a8c68371ba842070db014703db713e8bde00b883b795b3cba96d50b785f47f183397fdd7af163449764fc5d5472262721ad23f79a3bfcf09f8fbae514b5c141ca0e18389e81a48d4388035ac95c670aa00c3d0e071fc0d08bce558896e2710dd0003313911b6197704201c6785b40e2ad6fc25fc6814e6959120b8e859322ff7ae482aa29dc0e47662682ec5c8098d402043548484db3bbd1faff5fe9d50881c0af7168b5e76a6d8c27f586339b2c297f488f1317b0371d0960bfe8a45951751561b813e23af66f2903e194226a768f82dc21f90cb4cb7a3b7b63b0e23331e04fd044aa7c27ef991dfd3da199db342f9d7f6192a64555739803645ddcbb29cc1604eee7e29543596312a8edfcfd07db32e76070e865940814a89ee997f9957092f6a0b0d1d204fa04aeb400d34ff58e710691a0140f4d681ce4be51fa198e21e3064fb268521de3d8dc0de613ed627d56e0c80ffdd0bddc2aa424074007847903fc04842d83a7fd5f4b5ee0756a49da9bd6ec3947278e759045499d713b81c01b61719aeaea023a4476e3274114ec701de7fbe005ffc3bf5e0313f9f6b1e4ff12d3d07078d78bae1eb644c0f6d12329ff7def6a1cf30417cf748c18ad667bb839d2f4b870f936f314d24c843491470c156610034c1e240907d637b7783e18079e6e8781534518018c2bae5b0c491ac80616fff10e8df68cd7878aea216d776b4024f65f2b4312b3fb2772d481f957f7624f81559b7c86cc59125f167f805bd15611060b384b6e02e45b0b322811e6c65dc2888b39a56817adf79b966f07095a731869229cd48378e8a525eb116769464f461d3c3de9b8ef22a16f55b4a42841104866e5ff51519cf3882004affda8955790f8b69106f9d9dd3f10d1273fcfdfb2e06c29c391ce15bc1f3c4ea1768c2015fc16ff97a085c3431f862fc37e899e4c7d745dce2be6ea4cf7137c05e40851ffc864173e2ab6074655cc58d560cef41eeaf22e62d91fa1ab4a5ee4c8478ca67e13d67321c0be41d38016fb3bfaf14383bd2aded96c35d6a93db8df931c5b9ba7bae53e2e1c4809391fb99a26857ad3b8925dc78285229e171ffb18a6b211bcc1ed3b127814c8e1f125a6225bb2ac70d03a84ce914dc762df490060d7da956a4c31cc400f07fe09cc3d5e4cf60ac128a5038001280038426a139422d149d677b20de3789badf72a6bfb5e5d41d2e970348af4a4de22da74e81587a929364e1d1fb439ae0fc9aa8956f01fab3fde2fb073220076627dac4fbcbc0b1091371afef4cce29ae0a3e57a204a3de53a9fa3ed8b3cfc9afc9688fb3a31505a75f42d285f672de0c3a198ae227014b227490007184f55a238dbf9aa5601c2b671004c2773b6cb753920a93958a7b34d700d23e4376f08286c1d10080e09aed8decec86c361f338acc3a5b6c1a18a97c808f7f8eb7270ff6973357ac5b2231aad01a28c56c3a9b74c2182ad746b21e1ce53acbe1c9fe910dfe6be7a6618852246e71c22c15bd030a5e3c535b3f5f4eefe6963e4950c10b66fee5e6a895f92bbb234c5542abe13713be2d5abc84d3129035f4283e7829caf8bdd9f0e7e486f6c7fd3af6942efd920ee1f58374ff2a75e0aa6f69700c0408c1f4cc46b1404fbc27f42ce14f450eda1cfa22db8bfd0c3d260519642f342acb540f67db618ff2833b6ddcda74f60f4d4e34eff73ba245e224c36a360fea27627c5051c2a2526fa9668b1fdb65be6de10b2a1a1d805411dbcd7ef201c925aa7f4b744105b67598d4c03e43261642bb9b45e2f9032e1d78c2df0cb3130222a88a009bafbae62ff6eca9571e1bc638c14683ebd4ec1ca185eab531e3f7324953e129dd705449ca12e339abcdbc2ff07c53eb8e2cd133c23b6867352aaa14f13e1e04f64acd44ea16f4bb176f57ad996efa0d714fe790b0b1c04baec00687236f75dfeb8f14722b7ca4f28452b2d23e83cee6826fd6ea71518aa3757b082f407c1c98476651317c562f9e8d2feb7599d35a2a0887dbb08db2ac23d22308d5d4d9d8c3acb798c688dc7786689ab76691ca14266c7939057df08ebb3a31133a6cb57fa11346ef0bfd471151ef74dc9a8e35659d275851f18538ed90511d115a5f1fbeb724ffa19cb9d38e3d3c9eebed29301c2aa431e1d6832ae374152a5c39851873120c51679fa502c947caea4a5f59a7cfb8600052403eb5fa4e078c78d02f4796b4e020988c3c4f9d5ef07d31f8794b751c926747503a295a327b485a898de8c06e1f1ba4feabf9d81eb2934c7f2216399c99fa918901eb66a13c8201a939db81ffd6fcddbb722b3ff3631d3742cebcdcd2bb700bd7bbe0afc5ec9244c741f3149b2c46f608a702530244ce645b78bd8ec32a291357281b65db770588cfeb9f41ca0219803c01495d7b870714e8e1ad95c546b1cceb291248aede7f5025119661a75f0804c19b1ffe7d03accddce14b8604cc0e596974d23c0a09cdb27c3ff008b1343f3de097b585438a64eba01590ebe2a2d891eefd63c387cd8a2d0bea47fab8d34cf3ceeaba02ba5a8c399325b03c730321b859a154586f84d96f034a170247b93baef6d7137e23e817e36083d91468c4f9d0c6744b652250af2b03f8ab833207030f473e764fb911141cdd28dd06ebeab226dd514a65d822c7e0d86c962e6cabfaec2889d8a5b5631f5f51d003dd7c1488271f385eecf68c6caa1180216d400466960fc9e182409202b971eeb0a2f85869d64fd0ccc4880ed0b9de4f5a9292c45f9ef819a172e25dd632bdc63a7ddee3f63a691a665b5c43ea971ec1de4b2c800ee006870f3008840dfa090793079b75e8aeb8b9615b55fd7be6a4907da8be03a604b90da81ee29c142b8a70e4695e069a64ab20502c8c3bd783f9294c336f5aad605f0c202050c61708132e1193a0a516d9bc9097b9f98317edf7fd7802b2a1bfe62b044a2fc7486003db026fdafafc0880c79ec61d262319a9569448b17702ca99ad23e030c7ff3293070cc55b9b95f6024bef59bb3c3a5a00082080fbd292975d46b962b46b6c23ff0ab2a8cdc3b11a388e8da60625e08ab8138afc49a4b160fa0984a9307ad243175272b5306ba8b596d1ce1adbe6435faa23734da7e4e05bed6ac35870070bc39dcc6ef2ee475a29bf06801a58501bb8759c23cccb6014a380d445c708a205607ca4cd5478f85d9cb395ace801afba7491974cef6bd0cd2613801eaf52f84da9da8b5dfc33c88b573b0e3c260b6384c30b16dbe85e568103b160a865d14869ad0d0fb52d7251b5d5218f541b418d4a2f989dc494a25bb0315045b041004ae6ea75e398f43a887e1bc60064348f5e0e854fa303939422fb4782a5518b5b287046e6fac1bbbe1713158c2c107053642496896c6acf1b88d466483db8cd018750235ba27add16a76cb003572d184157458b96940d620aca9b28496cca6e7c9600ad6bd26a2dbd222866932be0862ec42966541f09c64ddcb7377bc650e23704ddd42cc7f058bdeb8e7fe5edf6f2f9d86fa51b60fa1725b6aa50533a48b26f8ffe9b3d079f248a6f74bc77377bc0da593ba85131dedae94c2345e428e78c7345b2fa986d6ec214de250902302a717c22324f448ffa73985b0d904c7d8b3040a4989c8901292092f84ba57b2a25dd5f1dc1defed715bea03f3fed474701a2d0db76a7282b88cac1e8cf1ce39e78cd51463fc1b88fe9efb7b7d3fab76677777779d3f7fceeeeeee9edd89dcb1b5eee5b93bde15d1a1eae79efb7b7d3fd77fffbf55ccf18b25c4b6746b9d73ce3967cf9a6aef77dc55bbb55673ceeeeeee9e1da7a3a6f6fe978ee7ee785941982c1ddaf7a22c50df23ac07e6124a645f2f39004e3b52d4d64695ec89106d2479a08b0c83b05c3514b14204ba82057b0a53e4e9a805a6eaf9f48402037d5d5ea2d6ec82800524b14e8e3dabc73a6b9ee33bf69665591144591ae3a2b95626b754215cb3cb7f714dddc23789acde739a7b9acdaef65a0cadf975ef345bbf743c77c75b127b88abfe577a7b3127b22c1ba25914d4beb7704d972bac841927e79c75cff7f67c2b3fef2b6b641a7b5014638d1dbbbb2bf68209226e9766e48d469ce5cf52e6914757b793013102434665ec8cc69e023d811bc605db4c0a653040c6a651d4967a6c81665611bbba5fec9a2e9b14d79c35eea083010a20130cb78819241599d816d87132b5356d66b5d01b3011132befbddfebfb110d8988444522a3dbd255ebe41f6b2e62b1e68c7f2795bc135eb837d7cae48490424ea156e829e40a41855ea1e8d6ff0f6b754e935bc1d7f9cbd16d29723bdd9612b56e4b3f4558a185102b0fd0618719484fa2215b7d75e504038639410c943439d1742106d1d6525107ddeef532c302e2c0f32e8a82a8617fe18c5a6c4bb712c8553b16b12ddd135042269bb8dee7a8e218d6cb3943f960a81f0c3584a19030d4124339618c31c6583b4e7b93ec372ed7cae49e6bbad4e4cf9c73ce4b521ed6fc7a0649e93aea44d5b53c77c7bb4175c3ea86d68d2e1c343882387470f46460666a727757e6eefe633ab92d8dda5334aa9a958bd60bb3cb6d6993c66de9aa3af243059e7c3449d024c162703465810fd74c8a3cd03c77c75b5a0ef3b3101d0021d9197a471c89b800636b838f8607394a6b67bb8a79ee8e972e3d153f63f9779d4071d57b5014215aea5cd3251aee9ab39e9165add97bf801bafcfaa5dbf15a1fb7a53f7b8886546b972e2f9f739612a27abdd5477605c5988c9a4388e070c5922306405c470ba09c59d1d7be09c87006baf7f67c2c0bcd94130295aae2d4900834ac62860a29435a1410a00093126645784c4d38b1823e208316475488419f46136058ecae8a42a012696f26fc95900501b490b77d20633d034044084202764f8bb410607f5d215d1a2d4686b635552e3d6b24906cac30a58039e73c5cb38c29050d823a4ab9c009d5c4127341b489e42a89499c341966416e1034e8559941d105aca9b306a8847e670aac159c5f2c9006a8f5e3b67428460b49f75816dcfbbdbe1f92e17f2f4782bf314a8a39e79cb3ce9e35ce07c8c1ab4d02dc48a3d367e92026c9bec92e3b1f7dd464d7868bb4e6ecb9e76b21a194c2da70ee4089ba4466315b43a752c92c26ea5431a3660b248f86dadba8e7132f513b7828d5a44092bc909bc92c2614ab716ef2c063a0902cf885bb5134d220c4dc781db0a6c923937f81b354b4eb3e3cdfdfdd73ce39e7ec19e3b4abb25d267733f4ecb0ac7316548adfb4345ebffe6f42e6bce37e01183a1e9c4c1e34202eb83357f7e6cd7375cfaedbad24b972a2d5364c39860d54b4ab29080f6cdcab242c0e3cb4c05acb0722b1a5810d118bc8850548c4b260b6027cb17e4450e960c4ea52a169683fa0a4045b1e16141a174865c6c1557a7032f3949220e32034a6c466a24a0d6041600f1cb49da135728445c5c9e43c086966183a4041b860d050aca0018d91a9868183b1e95241e03101430d12f972a96098012a604d915346971cd9d9e2640eb0a64d1924f2cb6b3cc61928e4171dc6bc9826d21f638c31c63a2f2520400192dae5d24680a67779f53280262193880a02d0b53c77c7a331642a7a098053cbd4a300009061646e80a0025294e943c10569c84c468000e7e65a999cb3e834d2983b1e3c70e4746616040a34dea6cdcb84e5b3f942820465b16963428425d69b55142030019d1c20d494864e62840730a047131ce85a9ebbe3d9283aa51ab41c5d675503a66313b001cb92b1a947654538a4b9b0a9d470364945a031a14d6f025292c3122b283390d8dd3d6865867373ad4c2ec6704652c2c99188dddd674cd5644be00cad0762c9360405980d3768c2463e69a84c511a3e1a3cd3482389031dc36943cb4f2e8f0aae21fc81e0ba96e7ee784f449dcae4ee1ea3e4c4b674b7aebad2c9878bef1818c28c6fdc5fb7cb18638cf18b011d3b8a52625a6203d65459e32ac9bb755730acf596cf9a833af018defc487e886a60dab25a6e25c1e94e04363a9a1a5c0091627261b96617dad532eaf315b89f2573ec5c2dc6cff3aa71c595646a45b2c9975ced4f45d4bc9708614f3a54bc8559f2bcc9cb254cd47d82c8128d369b2f6230d1e75188f6809dca774e94dbd2292a2b2d989c2e181d1a08aca95b90b0143183b1dfe4bcdcd07cc74d78e172ad4c6e2f75826b7671e70b8313656184c0200ab0782a89aa216134a35cea44a1f0f89a0651cb14a83011083b1867d83dcdfb896de94e3a19118419a1d3241bd2f830484b46b126785d5d0b63ec05cddb9745ee9a7fb82ccbdee85a14b7deb07639f4b3e6774ddd82ce396723e49af53f87746b69c424831f0bdd960e89b5bddfebfb314750b96bd76f54416cfb4b4825b41a6122488888a712edd30a276609a2d6b04f1ac5788dd3e3b6d467ffb82dc519725b9a73cef983fbfbbb6b2db401618c6bac18bbec0618638c5920b3c618638cdf9fa9dc14b4ff327f77cf5a87f4aafb43c4b674f75ca47ceff7fa7e14086f30204dd0e82c3d93409d462bf3f7816917c21dd967dfcfa9aa4095c76f8bd66d698be756f533d9edb85c2b9373e1aa32994c9644a6fe4bc773773c16426c4b55ad6532d9cb88b8677fb149262c55fb8f6b00555821878c1e2d2984325e95062732b0a078ae10db0f2b2a2b8a2652682658a09314e7110d450571866ce6e33c399100b935939d885ae02046342a1591c18c492525b37d8238d3408d31112db1f1a7298c11a8a03016538a40a3da04c8270929a24964150409d8e48c0aa8517242066cfaf66ee0f77489d16de9f16f4b90ff295cacf70b976b6572cc0c42f6831ac6e2fdddffefbd78dd2c98f4bb2600504d789a191825e5b830e375ab1d886cbfd36d69fb74ffc605fd770b2bc2e176dff926e7160d4236a5474f273dccdefff7fa7e1bacdc966ed0dab4d71a7b1399c6bdb9562657e3d640dddddddd3dab39bbbbbb7b76dcd54a6e813a6e4b7b62803e5a6badb576edeeee31dcfbbdbe9f87d6ddf5efad7b79ee8e6703b579352d68dcff41fdafb3317bb9c123b6a58f44a26cb7835507ad0e5d5aeb9e10c90ffd41a68619159a684fe33ca101eac4668e2a3344151a285265c6751641a9ccb04e1f1dc0174bc4a96aa627ab1b2af982a1db5262f1768151ef0092f7eff5fd36138f216de4f79098f6e7d36da97b7b42b7c6e91d4750b6bbbbacdb52a07048bcb945adf77f3067d7f8ad6be48e26ef3245bd2937b4d63ae79cb3d6ed3c828717eff7c718e376d590137f40bef0d26dcf5ec523b6f3eaae5dddee15cb20482603823c8a618fa5d019cc479bb27f3c9734958a65327b61082327daa565206cd4c9edc770df8220557c4467371f42248f112a34aceec063c73c77c7cb80ca6da995564c065d378fb76e53de7fafefd7642aa60995d634fd1a49dbffc2e55a995c17f1bb8a1c38d16307548d0f9305b1c9aa0935d2dc98ae28ce069698f0b03d8e1805ddc96cc2f52102ba1d0a0da2191356b9428ca2092170413178b0c4870e0526c704ac6953c612acdf5073fcba1dcf6ddd963e5d688cfbe2d75ea28675cff7cb41cc51cc61cc71ec113dc879fba0725b6aa515e3a32bc50fe86da5134d7beff7fa7e40a0405e20512ab646057479995a71ddcb7377bc20418238d18244d55c62423c6c25564dfbabf77b7d3f1d486e4b971ea3c3a9f63baf5f5faa71f07b337974ad39750b108ebc76ed5ab7cc0499ca3539e7cc3ab1d8b346cc1eebfd18bf2bb36658b4cbe48c3cb12dfd232fcbd62fdd916816fb218b600ad1d938587a64aac1d6b077a95fa7ff1915edfad55abf8b2e6932aa83f858074c6be6fb18c82cd7cae4d265121554cf746059132207f97cf5704d97cba8350f57b5421ea6513d1964cdfc58a0e3d936dd6533886c8687d4098c73887c26197a65f8d3242b4fd2f2a42ef7de101398febdbedf11d06de991701f0d6934b1ac7b79ee8e97d493e493f4434b1aaa2521b9bca87f33d3b8e7fe5edf0f8610c610069106a3587351959c7a4fc42353dddf18481e63e9319c3c4694c798728c43f557925ab37695688299f617cfddf16444b92d9dda371954b424d10ba5212524a565b0e77bbd3d5f8b548dd6c9632ce7bdc42e39c1cad60ac5916d07664a36294a968cd5c06e4a2f92d5ec861416c940a16958f0eb6f615cf33b233ad61e81fe9d75ceae29d304ef9a5ddc9d6da9e19a115f2fcbb2383df931cecdb532b934baa64c393e6b76d13a8daa2c3efce35c6323cbb23c44f5bd7dae29d34dd1b5bb4fa9af0deec9ccd53661836903f6bac642966577d224d70ad9bb4c3c4e6b76aea95b80d954a013032703164e50160d207ffa71f1232403e1e286c9c5ce0320740e877f1dcfddf1867c867ef06bfd62e742d13df7f7fa7e4650a3f7fdc8de3abf2f7c6e2f7edcb36721328d87ba88687a6ced6e4473330afebfc6e5d02f5c1192dbd2e5adc8c9dddd959eaa5af5ecb85619026a6ba1a2db52e34de858b3f9207419e203bb5500bc3162d96dde2ede9b1934f646c7be199d373f56d81bad991027436c886393720b3ae2905001c26901bb01191790e47a42a9e2296ac19eb3cc71ca897acc43832584d36d69eb18423c6b390744db04a143b7ab6d16a724c13a70fc7262fcdaf78e55838d01c450a8f57ae7abd732cdd5ed943b47b21d102a507a41032952b9b38302cb505f639c96e15cf3638c1dbb3f63a4baea3c77c73ba259b3cb3ffe47d1a2559c8ae4d4be5450ffcb3cd6aa1264dfee921251ad908736942077743b941d5b31771dc6afd599ab98c6e55a999c0492c3d7c1d477ce40f5068004924eddced5ed5e580b19b29d719b47903cd348d043d821c021c221c6b4e2c9f1758e5d9b78b03feb72ce44964fc4e989443d91292c4106a25d1e4418e1e080e2420d67b40afa45157095f00217d7bd3c77c7830ef53b376c45f0fd8640b12d7d6b4050706f55ae8a8353a4a6c887addb3dd0524a51af5c1bb32f723cd158c77c2bf204a2e063930c152dd83db55aba95132d67c4ed4a98b322e586457472189e041155a4bc51b7a52c503824de8e14f110ed85e4880489c4f9b057a7c4a56cc3b2966e4b9da26e5953525aeb136196ab3e1392d6c5c9b0b40f225ee39cb3122daca40b6fd1e0ada0fe77ecf895f9bbb887db230e28b7ada3daf3bd3d1f3b03b2896911952f44a8dcb45a25f1e96db2637527e8b6542766a7e7b5e3fceff5fd48fc9018228154a2c8dd75f6ac7b1f41d67a48d4c3a21e1a6b46bd9f477b2e31c4b67467bd8d52bcc63d43ef217a4fd17b8cde737c79ad29d8ef019593a8048c1e2c8e0d0800231a0410410582240ad358ca8d011400091bbc5c78ac8c543c1a1046616148480a848181208ca3108081188ea21810834953590be969e5e004b47e714917a511e8f1523eb788e988b43d395cb3b4afb09bef5006610e2b935f8ef59b0b22f783d4c3177569a71ffe22a803524e22a01b8f60f4cdd5b93d7b0cbdf8e64968ee084706972e9258bcd2fce1b8836c7411840404a0b91481202e02bdffb9555fa64992c3ee54d8086dbc7cf1fde05762662e96071357893a130d4812170c5c49ef1b41d8e9e153f803372323cabe58d33eaa605ab1c607bb027a5be0d36c4e43d2b690231617a5a3902234590f2b8df034211b0ff772bb80baeb562246c0526230a045baf4da9a92ba5667c479158ccbc9c1c183e7f682072eaf63048a93420874c7e8e7cd1efde6111be712f9794205ea4acb6059f0bfda661874ede1f4c6c8efd0c1d3807d3e0af904972f88e84e457be96a87edb8f405feef54ca2677402179b27f6f614d2e27d50c6835aac2a7c7fab83b56f23ab41257f38673fd6ee47581a247b7a2e040c646028445388a59b587d48fad701564766e370e95a6831e43f734d8412be5679e1605cb89ac952676b7a7d4ff2220f8404447a894313ebe568c76a27643f19fdab688df4b7edf5f73a4ce0ed491a34c5f1134decad97a8d93a878725e3f05f189fd1c1efc8115f34b35a045e6f08adf231d4e4fa619f4d944503ec447f8d494352254e4097bf0a4044a5b214fcda48780e1b16de921ef3d6b9f4f136e11cc84e88cafcd206acb72d8592d867e75e580c798ad8f209bc51e96d12884668bbd984096ae65e1cb52b756da18a9d544e57590ec19240b88f773b4650a78fb9503ab4bd69b43ce023895f7704b0b8271232bc8465a080030ec1c92035e8002fa35a689bef3b4968db074f2781b158aa3ede24fc4dad18b9c67b338afea48d4fca900f02455022f2b8b3b72bcce4353e313f7868738ac45f43feceae2422b64c232f48f8d438c3b1e401bf27f9daa4d6faab58ce408a99f2829841f6a00a25e12ea3f67b4cf8b50fc06085fe7cdf7e14402458133740951589904f428b23750b79cb45c82c23a77b9f629a6af52205acc895b329015623772f0422107919fca5b7f4b1edc5feb44f826033a19882bbce8451c0a0addf0109261ac511c428d9f58cd3eaa1ba22e53acdbbfc950149a07bb040a74af63fb126a897e48fb43289da03b291fde8b426083cd0a239db005546c780407cf317a24656f34f6e9d60737478e78f4dee44c3b4b90f5638b16aef7b0ffabd431beb482e23d97c58b46f3ba648fe892010badbf0fbb3fb39bd9e963129b5dde24fea5b06554172134e9b178e241616b46f98db01eff18018dfdcb63a60528121794ee9820b6c61b939fdea0ea2bf8f059c1d704a06039617967024ecc162ce621e6634889c1cb1ca9f6def9511d354fe8596188a8b13cd001043a5b9ca47235168d3cc89f4f77afdb53d0fd3cb6ee68d49596693475d647b11e3e754a4eedeb808daedacc655186d46754cf0b1fc6053d3df3c3ae9198a88ed2492e014be228d0e15118c3ba4b222b2f556eebcd1ee2127af9b861bc1297cf7bb6ae76eb4af2a0f55c48792dca8b0f3e8f02ad0f53648c70f6ff1f218ef1d3d9cdee95ce59b8d1c552776aeb8fa28544e2194b736323aeae53dff7dc27169d0ba9cca32826e49a49d333eb5f04ebd0f50560289679b4795930fef0921057a0394a8c8e4002ef1c632d6a22dbb977929cd7f6ee57349c730bc9a35d26f0957a122a01321d26bdfbf72354e3c8a269762ada46110acbc660724e9c02e4b56087407aafaaf6529d1ac96694d609d36e356964b879a7504608384d8335b3a995fd9736837cf1c83ed8c37164264b342d446d929a2c96cc88c1890c9ff6d9584ee7344c06c187a6b42b2d632330652f5bc74c1642453ab6b8446850819bf909f5a6cafc543649b9666d1288a02694100c39f3c8b42c0aa238b82526845b5f5770a4263c1a8af0e8f5ab8964c69379d98b0e885977bda2bf1ac7cd4d1bb78edf609a128d9370e3220ff1b72e4ec64ab021d4349d100dbb61f3b37103c21f46c8af1bcda5d730ff6a63bd1175c34540e52c627adb9853e8385031f6c578cf608780c0da3502cb490fd9bc104926dfde4afafdf53a9bf381a839e424130796aee0c5e82259d87359b1b7a394d4fa4f5a2e6d1a4ebd1af2a7eefec46a13628330e60cd9545cae6e2d8255ef8545f68c5bc67e44ee527ccc96fb601ca3e0b735f113781b9b13dfbd664c2c1b10229ca5bf87cc4bef525638770ebd5051916a1afd79724d98bc1063c3615a0556cf78137cf73cb6ebc7798eb7a14b4b01c40e4ebfef81dd306aa4caadc428bb27204d591fa2c23670a7807beca3902bde6f3cc52a4b9c22d4d1a9b65d681aa127868be90d4a9cf1d8f95365543c747f28315525af384b4d59e728cd70eef92ca6393950961db5cf2f84562ba750268b9469103526da012e7fc16b3b296829a7562670716bfec35c0d23303c7a83ef42501a05e4465c30d3eedcc39f7c31dd656b8667fa2633aed865af4c23418cbae068515103ef7480c844b78c2b28ce5158a0c08caea926588c0cfdba2a98f4c37b8e064b7769339653526ca443840a55b6c7ac9b3bd8617c0c51bbc9478281c84431ac8a6fb940561948f302f27bd46e26b929fc494b28f366f00c4a214077afd8926c3d55c9d2e10f2d02738aa789bae6df6a97f9e69c8dae71e6969e1800994c56b5503f4b8f18aab257211dde924f2cea4a7422f112d28737b218747ea9bdc046266e4ec9e2feb44a32b53deeb6b92ed31fc372b066c57c0375997f2f3c76db90be0eb4d86dab2a2c630dec373b2ec042e8f456c65473bcccf12d5c9c493e6cb4cd303309fdb8aab4ce89664ebf00fd2b92a0d4404f9abb99a91f6baf1e38222b18b28055e8dade4500de6cdd0c285bf5e504da25811b6f5fbfc283ffdd53517d06912a8260d0090c1ce9fe00fb1053dd3147442797ac64d18204b3bfafc9771c49c23709ab896852cf1ad1b537f6dfd71e8d6457b6ea90355a1b82846a0b508f2c9588528fc49ad68e46f27860621dec53fffbe93dba9d25f2b4d08b9818124f82522f0710c637321765a3a662a15d55cc114b70048050a55e385ea0e9211cd714499239e5a166145722b861ebf013607aede3d760d7d5fc022dd3e9baddd88e069800c60c89db1e8f7dce47c4d40148ec739e3c97a5e20ecfd9b5429d4509e509d13eb33b0c7af4f86267b6fb427b7b97a2d6ee417cef3694ba205f440d06076203f50baa9ed05b55345038c8c17b78ad34771ff7230541c8be21f4e82032bc1ba1fd23429bc12253ba82d4e707974e9d5cf57d5647658eb232bc6d8bc9aa93796437bca404a7f86291b0b688489a0f99dc1620dc2bfe87d30c07f73b5042259f309e1ae4f5ef4b9ded3004ae02393f68a2b61d582027e3cc28699a4e2f9e42831d34791a8885a0a70b341c30225918be06f29e3da4245b6c6dda5239d4800deaa1e91cdb8112f8fdcc055a47f3d3b2efe1ca0d288cb0d60e2f1f220f976a2a4c516f3c1e1a817793e4d8e053bd30b7d3e18fdccdb0c89775cd4abeee224a54252d42b704b1275178a5a160e4750529a48b20d73c0e7175b84b11f2d94e119ccee50e41b76304795c6247e30c7b55ec2e31713f5ef74a61ef6d8c374aec7688051ce48b9679aeeb91df1ae0301d471a5d6922e5af770344b8e3f7ddcbc17e41710f75c42d3050a69d8c3b63b0170b08b7ceda0c2f21e83e710efcf685062dad2f47482b491aaa375813d2d780c28a1887fa85768b56a6f1747bd2f8c10d882b57a4d36dae000dfefbba8970b5c92c90275cdfec639b723a073d065b1f0b63e9f8a25a761ba200b6fbeb631d2240fd887fd04346443dd9475f37b7c789ef511bcb431dce851222f250499b9c351437008d52da80b98c6c44d115715a8b80b0191bd4b453b47836caf08909d85de53d6126119d26c3513bf8bf5773b45b3692d9e66e8f4a87c74129e7f70b32cadae7786b07e8f469d314a4a76bf90cc44ea6d305ac8a560d240a32e1625ed6e9855a0a31d240c0a40d2ad353e487872d8d484b1a3cf0a246fa9cccaa61d0080e9094182a44cc8388e343a9b37626a043770638f86b0348b0874dbe6e72f43b82300e05fc1197b2a5d24b6fa1c17ff71ec5c3ed7704b3f5597d65a59a7c3bef1e06bfd0d137f7017230c31c6c33104a2b57faf79abbd080bc0a041a31d713c682b92758ac15cb92a0a69f30fcbcb503f901d358dabb81a273819e9e960daeaf0e79de547167cee35a0b354917511267c8cc96f82edbc6b9e5d02dd0536e6ee6332569f3bac53c4ab556b408b49a90d6ffb42e02f6d911ab0ffc015a889126e2faba872b2a362a7b49aab1e2e461f0aa6afbc22b22afdfc64f445b9191661d1a3596528265b9519521099c047a7c2077fdc709f71b8718a8798fb35b4489fe6ecf55bf2952231153f8eee2cab469cade10c00a7a281fd19418d7f3b027b7667cb7e900a3745ba1238a87e33584b915c7441615e4630b516edd0feeea21f8e2153aff6c42361b504b8e98b3ec1b5ae56782342f4bed9e26aea729fb2c0837afb0b515a7ec38d00567cb7c0ab5946113ad2fb19e755c18f666b9360e8920e77c75963457df47a18798e52c963a27c7c6b750f0873620166cc0124bdc076563ff034af1c6cf318648e1988d7f8505e3320ec28b35b59ba38c79680683e519363800458c23af3ba72d64658dd79eb5ce0719c3d100d9ad85cf509af03a0efa9b35d699c0f1af4f9b6472c40ad8dd9ea9b45fc19eac0cfef732a12c4d92a1fa72bcce82206572fc6125187d39bfb3422c3239ffb012488b6969bccfce23c0f043f6a8f4ba1a98202023008ea3618eef6c4f995c082ca7178dae487973c5abc3730f8474221cb50227b538abdda9c445e3cab6f0ef70cb116d320c1c4c34051bf29b04d48c1c169499aa7ecf09f19b733bba9ce9f6236df1bc2483faa462ebecbed66f2569bab4c2454d61258ea03d3dc4b5cd6aa6b8d2695dedfbf44413f782b09473872e9c44dc6e3ba53f73c15403812b4682f4d9048f432ccd1f5d0f2c46794179657a44e654f8a216e788a82b3db055ac60cd9561c0ed480670832087ff8f32d42a4ecd92e0ba9ef8218fb1d5a55daa463b556fa7e878bf5d012ace016fbe2097c9c1a94ea36de004be84ee89e6c30b853a04b8718b973b9ca12817a0befed18002110e20ef2637e145806f704dd247c52a371cda90234df47b7a4b2461a49bef6ab5b351547d0f0b861469953d343e0a4a07e9e0ae11fba1b0e14df8e86770d2ff3806783e6835e9dc0ce08ed59e95e68cd37a53fd21464ce9bc6b7098db351e5347d3852b6ac24214011f94c8e6cf2e1aec3cf9723f357da5210e445e16dca390ba502ece58817b1375d033c3a6bce66fd417f03f5510043e418dadc2f95da2eeb679ff112b134aac020088cd98f07f182dc71c94627851b0a02240dc779f699e1911c6e857ee6378cb9844838d0e3873f7335a0dc3a8cfa1a133bfe4231f096071d751366fd3f89bbc1635aa4bcfdaa851fe6b124bf9deccb09922a4d6320093cf5c63ee748f5314f29c9f20e8c28b16a513d2b01771ecc0143438a2554988b522a298093e253f194193e194eef4eb54215797aae5a6681a17ca6352df0d3c09cb14553622437e06bec82711a2268aa306b193e139cd2a3ab7a618968a1266e94c034b8370239ec3b0bc2885c9871c2e95ca01cc44f25ba5912ed2614c9e89f0617a0c334f6a8ba435ddfc8fbd2fdd5e94c08297ae8dd80c811285b11f807afad4050a33d34de75e739789b33ddd291fc927bef9bf9d3628c23b212245463273527bb0c0997c72a12fee9364d27021a0c0c4fefd88b4c80376134dad2dc044a1d45b8e65927bc5f80cceee8ddbf8c9080afd2937a534691bffc0774c9a30b9cd06abb86680bf6ccc489dce2c0b179093a4d01300b7deab07c88675069ed985e1822183dd310e56fdafa2703550924522c12bd10c72cd22c5cc3285aa013db32b1fd057582aa683496580344d38e4575852f362b07348770dbd7b227acd128bb7f4a0e221d23b07aac56cd790f2dbf693c89ebe82b7d019a0680ecade64babab7dee99415c5ed8b5a2c05a51137b78f83a41b88c6dcb094c8387e0b71369b7520e5e34bff2ecacf3a12683ffe4d9c5bdedda65dbf9b3c548ef6ff01efd54e00afe83308e2f1355ca4640c86afdf215209d43080754f52ab123ef117ffe19869b97486e09d5edf4b728a94b803a9a0f25eaaeab388d43212a4cf3f5c740d6c9ac1d7e2c93a5c1f283d3acabf72d57e5b6a33e8f04479a48ef4dff90752fadb8beb9116cbc1cf98725c29c2df0cbb1aea4397787d980a3b5b9088a223eae466f0b5a871b45de4850d2cf4ae1023030ac8e6d188c229b642730624dcfa5493880dc4da198b2bc324439337e24477783be3a9e58857c0878e6ec8f65091635810acc3e0d5cae69817b9e20cd59e1d6217e748a5c2630b1c875db0062c9e1e7e2048fc773921ae3c7de02beb401b467f1341782ad0cd0ee09c0e0e5b36f4a64d52181a41c53cae973b30d4c37e9503119c5daeac47a7942173f261c9b6f11304a6332d234396ab7ce859c2454354b81766139135c53940c7dc3fdb670b0b09e03a0cbf5fdaca6b4f22038b8f1490e881be55192fbd4f0c9345ea53d03ee8003443dd3e0b03a9d8600ad44b614b14bbf1bae990cc08e4b91a7ac0d4d0ae280dd5c6a3f8ea054ff2fd5fd436d11d46a909071e53e87d5aa1059ac9467e294ea29ed56ec73dc546c11ce58626c9c1d13a554ea50497d34cb43048d68c23a7474d40343d3387cab4d44365965371680eb02b1923429e0c0c0667d141f72028fd380cfe172def92691e61c9bb637e79e3b8f03980fdeb18a2e5259a47ae49a445467de01f432f3a1895cd1ba4704738cf332b8a220429ddbc4edb5764df040ea5043db2c1c6d1eed46a8bc23b83a06c6c06c3ff88bb97a1cc31125428855270e0f69b510296081c2cd6439e863f739b6e5f5f14adc1389fa298540de83bbe945a6501b059887261c4b43dac2223d4a31ddace7a0b216285a00a610a4401f536f28ef183692355941a088ccf4ad28be77aee215ae721b3c1b3f724a096b6c5c8bc525fc974db41a4e25cb86d27716c12f52983d08db52959a17c830efed8ed9cedf1cf5e46af8600d7efed37a00bee37443a15b619a6bba8d43de2258e9b983a00d1c501d4679904a91479cb70d3ea3edfe2663d1bcbca76b7a09ea29b22312e8bd9d3b7cf4935fe94d197c302b2c5035b88a5de33077786b13c96bcba7ac7f260989e21366c085aacefda5b440a6592cf4c00c80f22e5b2409e15b377c6a0ab68c4fb97506706be2da33f532fd8d520b863b6e8e9726310973a5735ac633f82fd12bb5237144ba1af6531ee243d915b6f98cfe6b036366d2a6c67e70220427e2bc0406de063fcaba16b227f8fb3a86b773a4679a40cacc021fb51cd2604601042992f14ac3393b980020efae9040575948c6ac6fb849298fa0dd9188b3399ca435105af0b456c03bd168581251f47eb149b856e2932b078e81a8f11b63cb64e457363402d35705f50b481b5e65450c0613d94619a912ec33213ff4339c13510bc1506d6890c2264303994391047777306636106a993cd32025318f38d9370b1819a9f120eba24a36a90c2587378709f359de76b827458e5a85ce05014a78033b96e188b3623ade2a4495026c9c733db209039712b213a9dcbf3f92fd88df6a4b5a705223c602d1ae97deb84bd9b10fc36bad8703563a63aa1adbe1d0c39026176e70d523a5e4d30385c80ffd22579221a52c95e577c1e8ef48e49d98a0ed75f3bc996dea3a43cd2b80debba5495f20190dc292569bd11a6a40936f1d21140f43a83e22de381a5fb8095d39cbbd9fe79e2beec5764fdb05e114367feaa2dce6fe5fe9ea3eb9a329e51f16d8ff36a57146240e0864728edad68a156e8bdb66b74b725a4fb1c6f84a42c5c827d6718c3c1c36e6d7fcfa40bf226d97896fe45e4ec236146ae69c715c2e8d01d8adbe8c571f7c68747b3cc784fbb5ac98b57442922b145c2f8add8b1f1ff7433b88f805a103a42db825af93b47d32b10529bf70142ec9ed702559a2dea67f38ae9fea080858c2bee9b9d0af5351833f1e3bb56bf30e256c3b199953242a459ab6c6db7705871f5799c6ed2882e55baa001498ddb9e1a993666759e680ffa49d63e9fd7e63b535ce6eedcc1080451106adb9a46860ae262e9aea98a8e2fe887f428dcdb015626d6469b23354f09448d82199793cc3a399cbe2419392b4bcef434fefafb102d36102d6163b6c64e1184d22a3b081a023369f0da8903acdc08ea21caa869026aa94145d6847a412608f48322a729bd56e0e42b49b351c51ad5c6568df71478b955ff269dbc7140230bad7c44672a089fc974a1fe6634a47bdd78f0aa896159096b1f233941b6ce366e35a277ad7cd3c72ec91cb53e983c92ad1f4b56144f22d5856809d3517d94bf9843b8a8483eeb425830e69e873a559b7e4b3516b3004cf5c4d81b14117c20ea21769cc329a14b7581f82481c68f1e293958f9ba02292352728c50279abc03eaf18ec6db526ca6650ba1568689dc15a2a5f27359242318f9bb4ac8170f32d79e87ed53c5384091675095187a76403017c141643f4a3443db292be4114c15a2b2ea08a16dbecc2d357ebcc4f722d247f062eb9f72c02efc27340a2722677ef3a86145e01fc3c0a78ea7867b2e1546eb0f31a8564a8811ccdc6ceb92dc455c29650817b5f0f094ae6142ac49b40d2bf7d4f0814b3d28408a495a04974de3ff41d1e0550cde58e9a7a0ac83633360694367a0d0e372943d09cab35a8ee50ac34b93cdf14f371834cff83b24e052cc6a90deb2e6a0f10714bd2367d65c57065eaa8625e2f055e5fb36d458f7ed29d89c650e555858727208b4b1bc7242c5c0b00ad6c49642e7888e95018e3c4913b956a20af1a39c19e71ee9dec9b7d7c4be227ce83329de155d8ddecc95dfa96f612994f5150d0d435c68fb7b58ade65789d3a5309450291459781bc1aa5055751650ab2aeaeb169592aa8002d625afdd16751b598fa7dc232df304823398d3a8c964d0a2eec953286c509eb3513c2ef9a3be1a5856fcb982f7545a933bfaa24283052a69aac36225aff1ab63920b7e38294610912ea3875f6adb7f413f1d21b89c20f1354b328251e79e47fcea006cd2611079170c8b73348aa56059e658840981e09ca252934d7989cae93734079e2403117a150caf67b48860c18b482f52e08e76c0c496c75ef9ca8a38796a259a6a90de4fa5167471f195f3002accac58266755e5f20db82de52ce1a5cdb663fa3784102d4377204659b2fc9b62045566a22cdc6599e712268da01c9cab0de424385e8bd4abadbc249a943146f77f013ff288955b1e7b653459f3527c1e5531ad1416671a6162bc27279403b1fd62c2bc8a52cc0a5181014729407e3a16624349c6997871e1ea04b9e8b880932c3bd53013990c3ad435a1189c3f7f3a12325b49564f5c5c70550139c95885a8ddc3b7eb8b2c4627d4c989c18f3459c12ed69b2a4ac93348d5d5e73a4bcaa9809fb4a7353dab7ce8805e330e66c1a5b86637fbeb85461457598714578f3ca22826fbdf5296ed8275d7161f47a834994340c3daf77d60282b5fc3f70bcea314d992c9c5ae3aab26e35d95577ca3aa17a8b493de0d6456a6722996c561658e2ef7a43fa3668bba733d9ea3087d8b728a3e556d8b580752ed430f987901d80b80539efa34e168d3130b0655f946730265dd7bec2e5ee39cdd368e703d744ffbe81c7c47fdbf0efcbb4946189cf46c7b89ace78aa7f6b0cac92c007e37fdeabf07ec0ea1325a7f65185f3274fa802f34542819d453f22bc3f021933e7df426987fb610553b0c63e44e454fe304061358ff0e0d8fbd26bda7b7bf35a9f691f704f65be10d62cb0576265df654d3286d97fabd166a85978caf5641459e8dfc7d5c22f754edf14e2b67ec70d5a0cf94aa5bf1c87c9c6a92042b80a20f283399a7ba46cdd3184d24a7771875c2a153093d91a3d7211eb315d1ead251cba50e018580c20583b871f58ac55b6b06367533b95e1ffdee66a50124fa20a1da02d4234b25620d1d6a468856cdda8eef69d9114b5a42f2bea2dee32a60c2ae0eb6fcbbef17851d174affd62e795d6c12c631077c7da2f569e78f14dc4d911873d00a0ca987917a93e0acefdcabc7d9ffc9d7cd788dd8819f341f24330baff2ecce5104009ca18952525a63f16887d871fa961355a012282e8f5ca52d53bb6c0b76b098be3a6b8234637316c2e9d59c7ccde71630c4940bb6cfa357d6e800ccd2d64cddc3c4ec13184680523d5920d3639935f44d5369abfb7623643d24dc4d4dd1a683ef7b6bf0d367fb265c02cfd918dcf3983c7b399f937cf53880656cd7dde9fbb442b5b931d9a2a35d0e47a3d38ca841eb843f16282552b1798049a31ada95d38b446f2c4ae5092ee144e650b7eba59d1fdb05323a023476220cbda78f82165b8c53a118b49b9704a5d1d1f802f94f7d91cf22b2191cb9d979e744951ab8ece7c480da986520d75a55bc1f65a0b20cfd9f8f9a5cd027e8068e95acd17b13167683ce42d4f35aff42a06e1bfabbb6cf9923055c0ac89ceb37a879a323508fa55ff3ba03751662199bb47d675f6d3b3bb5481718736c0d2c9d1cae0c020b4610ff0ee90738595a55047150cc152adb6d0e64b4e99c7cc7c7123e1c3f26cd39e3a9153a022c52adfe9c5c043b8534928c810dce3fc9057ca01b8d023a1f8a3cb8bd8320b275632e311ad815a56f82ac3556923e02087236431410a8c666beafcd0db8e2112ca914b166f2fae4f39c0fc8de87caf24039aea8c413c95c638dfcc51d01720ad86c1087d42a1d057e8bb125c12404a847a6f3b594d4040b2541be350a48ce0b3cc63ceca120a3d3216657a487c699c3a0065dffd8b8eb8261bb73c669b21b22efef39e4ef9133ff3ab2a72630f9348a81721784953c7f5bf4552c7b13c89d8fd37a985a8e8cfca119ee3e370308c2c0bafa66fc77f5879408032b511178b5585194e60f426429c9e91dbbbd2a0e0f084ebcbfeea4c24a3146b39fe9bfbe237c36a0d2fcc94b1dae9d88b05415eea47ced04114607e93760d832a77fe86fc23d88cc1628c3ec26390604843ece2b41abcb989b9a8368c4fc0953bb02f1291f248e55711dff888db73138cf2b236c57656a7206309c111b65b604dde0339f2ad5e4f61e67e778c15262d48012a38f2d8ba08994ed0258c48b740c91b78fbc421ad6be540a6b62b1adc2a209951b085406203a124640191fab0ae2d82ccdcf3812dadc263d2f5db34d95485d867de3d5cfc30a1a857175dcef1b89236c9c7cdfd33e0584e446e03b69ce9f823c00f12bd3552abced9428159e1099af310555d3fe1995519c41eccee0d6f6048b0b89a89c19cb894dea16fd11ac4ca80b3181f601235821661c859d95e319c66f02feedeed6668d8599abe8560abd5aff12c588ea787427f3308a14697480e214bd0b45a560b0e6632f0a8d549235eb92138d0050d44e2ccff3a1e494af9c3e6a8577ce8c2f13dbd19e64e2c0e318b57168c785d7cebbccecce2335bfb10fcc4ad45ae9ecf3518d7e4989c43809af8ce85d6c66982883169475e55366033f66a73e2ea8d5be1f9e0575b7dcd169a51b544d8bff1de47c7657b83a0754f90350533516ec50315f050f9c26cd6a90664a71899ac5e1740239c2a88692e1602c39b17c82f0b10bc2271997494ebc1cd5b6cf190168418b512fb9907f7c01b0e0cd78d1188f58a46ab0a35d031ddd47b7d91e3b298fba9982d8a1e78902104388d4975653509f9091275a63e64fee44fbc31a6fc4d17c9c790951e4085c510f9143375f76c66bf985b69ac23c8bac93b9f67467a1557a7357daee5be5daad5ebceee9cc6c38df7df1af7d8c1e45c756707f8a21f7cbbe8a7965625788c0dc586030c303983592b09a9135262eb793ac2b9a11092eb1c3e85314f499a4cef4fcaa2c5148af01a5bd1e9200fa5b14aaa84dccbf86dcc453191fb7b78ce2f3873611a4ec040c194498b5218b2e4d3421eba78fd701d32673c78aa847d0169d444e24215fdbc744bbce020218a2960132bbe12f93d676045240ba24462f76ee9e0bd78ebd6b9887b8c994cb571d584580b43b097ad92664fc14bcea8808b5061212435edc4c872da74838916bc9db9b3614b3dd4c964f7ae67ac64e81d8889aef176f484bf31ed847acd89107058a5482b075486c7a13e0bf92041967ed08c4b6c28e9b15caf320b1f49010cd5fde9b733fdc0e9fc3551e8d41578ba7451ece16cccdbbe21066dc9e737c81f22ed2a22f62541443baf45cb533e641c438934097a6f6f3168e39af6e8ce2774ef0f325af4f1014a8e4c8b09a48bc156d9ab7442e090f5bcd1c45a533059429088f18254109240a2532c92f0e4e09272a97c9d5f67a632dc467763839f89c88fc6648615ebc7ccad9dd9f820203b225b90f56dfe89b6cfea8719ea30b3f6f11ac4964216e2ae5aa64c816856bcfe672456c0c17fc9be4fb09ebd8d68443aac93dec4607095c68f12aec3182cd7050b788b26c1359c5d47c33ac91e5b69191405ede365af93fea2a7b9307e69345630912a50d8ba91e5f9803996a03e82ce9235e6f739ecebc7bfa235af60bb2e560e5ad7f7c7d1bf0098380ec098d196d9b8b4e34bf789bd9ca205b309620a628882ac8de56d2c5416c306b124f07641b51d614bfbb669d7d436318959295e31815ec6cbb5439ec09635f4387e21f467dd51cb2c4c16869e224d967f00a0b176bc38b74a78c7b2d2c627ca6a47a6b0414be5bca9dfb12558ed3776a2e0db89ff30d404450e0a42a1df20c2b1663b758faf19bbe357da58c094cc8590e67d59516181cc25fd6a253f7dd182dc8ef9af11c0bd671f4904223311647670b00d1f77b47d0799c81634899a7cad829bbf8c37c0d7a93021e4e653cbd0b9c60870815e2618462d210a1e89859c472e8710037fb1c0c34eda38e446a1d9aa74876f659c65c5eb5fe0eb25865847e6aade83ba7c4a4198ff290799be809aed48312532496d934f7ee4749077b1a12fb6320d4e1423949ca86c06686de3ed29c744decb4940835fd2651c33f8a285346d6ec372801b749274c3220f969e8259f1f0d69e46a702a75035ac6335ef4826e905c1dc4071fe783d2ac8a1230dc9aa3f2bd88bc22b3716699e8608cc98329c558b290ca676ff4f10a30b0a10003e803dd268d6644bb210d30649b2799622af7cf3fc21ca86744a3648309e143420c7f04465d403eeffd0e4272816bf92f36cc0f377f7f713e6230854a35ccb7bc2b5d538a72dea7fcecc86123ae6ffd9e3a86747e110089bbc2db7a07a843f6d727e917e05b993717241a6bb61381922203127e43ebaaef1ef239bac3d940b26881a4add6f2bbab03735ef342bf9086d5977c8180eef5d848a95a0a5a5ca76594480bb67e811a85236289a83a381e15109a720457ab98455fa414ecc0a6c85a86014441034a608a785930561aa5036ef5243099450ffffebc84c73ebbc9956eaf56bdcc378430ff0e00e13e0df0e838cb6ce7094e59775ca7f7c34101677ae51a4f015b17f529b487bad5bb0846d7bd704cd4a4d9924fc8267b6fb9a594522699640aef07f6064807dddbe0bad5a3b8eea66f70cf0ba4e16e6e542b70dd6ac5bd0eae7b120a5c8742611bd7695a0e0ec7254d1c0ca771b3e3d79f7575eb4de5542b12eab25fadaf5cbfb68f66b061c3860dbbbbb91702e2757136e4d3b79e614ecc349d9b9bd5ea511a0e3c6efc0e071eb7bef6ddcdb5aef5129b21fe91cacd8f980dd78daf539f524d43a1febb55bd5ee3ba9b97c5eba7655d5bbcf2baf2d139e70b5a8d8fb1f1f605cd440198060e3a6ee91bfb517a6bab96a5a3d65aadb7b55ad666fa2bf5a6c64ad67eadd56e4adafd71cceccfa06462de47c76040e8b5cf9d73e3af4e27077bd2c3645afd1b9b0ea4e9576da78d346d8d6dab5fdab857597d537dd44c95d96e6ee5baebe9eb3caea32854af56b7d3b989978d19ead387dfe45a78d9ed49eb7d40257d1fe7613c1bfa194ac51ec6dbe14bdfd145719cc492d783e21e769bdaed5aca959de21e2f700dbc30182871bbf975d5d7ad7f7a65bbd3ddfaaa1aa7e515031d13c3f22384c3cdad5f006f211daee987a157964e77bab293917a6bb59ba51209f66ffa6da9cdbe5e1b0ea86b3b69d5477339f8b56c451c7ad5275bff84cd502b2793d03a225da23af5da8468f6bbeb9e86344efdc9ac607fbd637f3dd17eb8565bad8d2de7d6e7447f9a6ce0e7e751a1db9109e3d64bb93130304fdecef5f508fd69030c67e2babef5daacb5f1aab5c90698dcfa437eeaa3229f6f755ab7ce6fb47f41ca1db10ff38ed920df7efc4e7ead5cf7eac555aea39c92ee24172bcc578e8b305fb7ee45b931764a600df461de475fd6d29f6f6b98166737cec6fcf856e5ba20f6ab0df6eb0f691cebaffa1767d58d6f8df9ee45b9160c36c3f5953b521fe64f980dd7bbd6b2319c654fd6932c6b596b49a1b9bd4b29a574c2705c356dd99736f93ea0a6556e48af2286fdf5d5f69ddf2969ab7e8dec09ed88fdebadaf4fde4ee462fb32977ad5ef94c057dffa8721e0aa4f39cb7ee56cd08f3febc7b7be632e93cb9cd094c06b5da48d7b00f3b1cd7b0093eb94c06c8b1f83cd60fd918b9b2f83d9705debdf93b763d59fdc9027758b975e5a190b62e5052d7e9d75ef5e9c0d06f863af007f8c6b72ebd6d15bfd75f5e37cfa5b6eddf8d2cd07f4214f3a884937994c5e136f2b0391ed999785b880220b1421d4651b40b1c41151aebd3c0509c0f88991e28b8e1245ca900f10d7ba3cb483511a3c3c5145d1101ec801104129e0728410971e6e7659a88b2f7a5678e25e38f0e962872ec688527435cd7b276a873b2e0ffd000957bb3ce4c5105da2f7a4e01bce1da8ec506587257660c10e51ec9025420821845076fc0187943c1cc5c083979e187c7e628c7246ee4097543cea00113a004607ba74e08b139f184b0e250824a22432d3184229ba13e9c1a869b88723da8317eda707f5f3f33f5156f6c90f3f42f8200c2892cb84488a961c2959328517212755a8a427b8a209695cf15141119c28411750b29055ccb490a32144370c99220d2c47514a4a9d0551b60b4891089191a222469e74c6830f45514a2a8de881111554406101b55d1c49f4349cf021a26431824aa908b650e183193d4894a0a00312d92d483909c99223254b8888c289c8e24460e1446881104208bbdb218410429725387526e46808d10d4380849a86818628109106b405f53f5cc50bbabbbbddddddbd3deef064664a8c089191a222465200d4347c252886146071f7eeb6de2e671931f14252b4e448c9929f2853a63fe91f4070dbddbbbbbbdb5bea6084d9238c8e383ac28b94299c3cd18314294838c982c7796005102dbbbb6d5b1f776f9fd107986c6b4ad330d095889232cb4c9c150995a0eeee76771d5840851c0d21ba6108125a90e0820411900003892e435081810da0184288248cf001173a90ddad0312a69e44888c1415317285057d258a2b59b42b58a0ae68f9959452870fc0c824ba24f1a58a4f152852b69452ca96ddddedeeeeeeed696891089191a22246948842892c4a60a1841625b83869d9ddddeeeeeede2ea4cfa0d2854c216a1ade5214c314a369dd494fe8e0ed2de717588444888c14153142021f12402181141250f941f5e04410bcd8e28c21cce0e91d5871032cb7dddd76777777cbb8c5d4488a961c2959c2c40f13519898c204108a892bbf0a7a3db2b5f8ec7702304ed0e5045f7a4022020f60e1c10d8a7a86682d46d322913f7cf1d2450c1e10a1082e4ee0f1d6c175b7820aa0ebde3ed4734595d2344ca56328a20a4a0a1334a0410854942ea751b068c92c087ac81082e534882b4104696428c1aa400451a7434cf1c1b004911d1d116308624b15540c407889c214c30f4538a04de4f403465c58d84f88142852a46836584210ac10421d8310439ae98a86651891a2ac1042b943941f082184107a7bbb43082184d0a180104208217458c6191449d19223254ba8f802448df004661239325254c4484f143db14740259548961c295942a918c3e7fa77d3404687220ae968824cd2286408d10d43a830c2d1f58fb13a19420e4da13eeae9e929e209274264a4a888112abc2c81e59a1145068b9c76169fa3eb37b8246d2345458c5081c6968e5c48fa28154088510742a046b8eede2edb0c204449a9f8c2e8ba174d0a008c30c2155ec8c04b1421b6e8401868c4e950dcf40072614948c4485111233f00011121b416c29845ed16523484e886213e5c8134fcc30e668c36b60cb4298d14153102254bd330165206285aa49c160a0f657c51c21967e0a00c26b416926bd9ddddeeeeeedede4310362485972e625cf0a509f3e7a703567a604a942bf65044a5bad3273d4f3081853238310a6aa71ed802699862a132f4f004a129c3cf96a91f58fa72fbdbe403e576eae766f34b4759e9487b190c487c12e9a309861483ba98715e8d5eb90ca846e968e37b749404eda2b421c34cbe5be3925cc3c6c59c532d28ed3b791ecb31113ff503732c2e03aa1950fc79243e4c613fa49cc168e0fb1897c660c2edefb22bb79f1b0df93650efe384f2f83bd178546f4a78d1b0d0c28ecf99b151e33bdee2f39e4acf35a7d3c37e9cb87724b7f44aef754708dfe68e05d1ae3b06e435f13678539bc634d9fb66e587f2a05eb5fd683ca88c48f6325bc48268979491b818b7be366a98b4ad44c612ba6c325b6a43bd3471242ee3e4f6e67c329b3b9229612c1d515ae5b7bd21a7bc4eaa5bbfd3f124af9a94ad48305ed66217328801794dc89f8c93fae19515a99fdbfd8f7132205ef5b3f65dbdfc9d75f93b5bdf7aecbb558c007a4851c50b976700ac2f05109233856e7662869ecd0db8a6bf6be1f2c5ac5c6f7df1c1fa523a8357fd25131453098ddb2fc4b483d00d86fabb4b4726e926ff61fad2518c2f4d50e2c080c42f71ec42f7f7c6e6384a6394c8e09afe6c2b2d816bba4bc9cbedb77a6ebf356d516e7f0e0cc86b627bd76e3e170763e59ac718d03cb65e80b20bf01ffb2123d7add4a569fa1f0b421f03426fe9886bfaa50ab4d73ed6db1e1e8b02bfce24cfa5c472cd8631a0792c6b810b2d7621fe86fd90df4c137fc38250871d29a7c27eccb77456cb5e14a3946694a4954c30f41443a90ca53394522aa35348693f4adf8caa6836a94cbcc98ccf084ab076fb1c386ec7dccc7d4365a3460a35231373823195ba1bbae6a40cbbac55e994d1617333373333733337b77d0e1c3754366a701993d70436cc90ede7ddb01b42f8b8eeee7ec85ded7a77c3ee6ed8b01b367733a361ad5cc2d9995d2ed1eeeed11ffa60eddb1a7ad6209bdda35f2b67e00721c70b239c93d28acdc01cbd303a01d94808a72efbbda7419a0e455a829939c39c2f18a5f8930cbdf80e8642b8ffdc6a555640e56148e392324ff910429494912daee16faf9e02c874c22248d3744b1f69ef57fe72065d7e28440fe69a7e28662d1b82e338a4a1574edda55328218490e9d6711597a5cb76f8e03f9bd72305ea2e9db66cf7c1f3e6682348df777bc965aee9223a6cae8f6bf8b5d8e1d05b4a8fcdc26ac535dcd21b1ea057fc4e43cb1f5cc34fbb217497fe0e00a177295cb644324a14fa735894720d77d71c1a89061ede0edb9fe41bd5f99b5ed374f9f935aee16f8d6ba494d11936e9553a2d156cc9c3b5c969249d1dbd8a1aa9dd25d4487dc17e2e2fd6a68d55333fc66ac01734f898593a63ddd9e39a02d77c8e1a49ce5c93820cbbfda2efa439ec190967a4937ed715ee688ff2a449d8ae0369e00da47129614b14f4cd7bef3da6327c49e9b09939660ed3cccc50ebd26b2ebdf2ee2dbd6a2c7ad54b402a979f7695cb2f395393a13dd6d181dfde2ddf120f0a182dbb1d973936b5d65dba187387b0e55be6ad9bb6e4d7b01fdc0d63fb75d1fe9dacaed279c2205cc34fdda5d32925840ea5f4e8ddee6348ebe6a00bf16e49a594dcd15077e9b4a594afe7bfa79c133578232537f5ff1c0c1b36a4bd7a10420857d4a58c971f6c32b4f7f2218430d2383784dcdbf709b4975d7efe8b6b1e6f40de75e61a0aff69af9219e51afe0767607c4560e8e8b4ce12a8473d84e191139393fa4e152f8d83309fbd6d99c95f31bf9bf9b8c78d1af770d585d9c33cec2bdf4a18956333ccc99d3a47d534f0d438aa5e755f55e39c1ebe66e2ba26d7f4d9d6e9b8993ce5002f8cca4aaecb7ee6b12d734283796b6130989af9723b6134f085e12a3643a9341f8342836fb11fa67f1890ec65de07346da8cf745c99f7d12796f98e569919191546035f19ce4acccf9813a7a3571af780424be2b73ff30b43711e86ebe45f3fb74edbde356d8fd1d2c677665bd7e4666f2dd95df79a7c9a135effcb28307926af31d0c11692bdb950cee93ea74f9fde9bdb7e8f514a6c8ff108c20821379faf0042b8c57c578688d0834751c214685c0182255ef0a47f70211a495cd8040a2fb4d8c28328aee839014f7b2145103d88520481826bba2c451053d2e096f01f05985cff1a4de28380651efd96fd2b3eccf55fafb76cedac4e51d1962d44449687ac55bf6233b0f0d7a31a879f1d0c157b187e746da85ef153ec87e554bde2d78139efa706cc332c3d4353cc5bfb7ebac6339c91493d43d45b2b638c4a98700b314ad9e57600f82bb6b0c3c3783bf2af16668d0d3bb81aaeeb4b93b15167e52477244a7630fccbed68a4f495f4b5717a18b485997d77f9d1a52f23d511021a227a1fb9eee6d6ef98083b324e49dfc71d89cf29e91b8f8a82b65c21021a9a22446b883fadba635aae6e1d003889e375a8f02b76306a9e5acfc27659342ba480c296a3dad47000b0b019ae3f626bbeeac04c7b86b15fb26fb29c0d170300aef34b6b64048a31c628b94a7fc7f6be051658b8f15d83ebe80cd769a497e13ad4e9535cf09e9ef9f4d766f2691aecad8d9b2626f5938282f97cd7f43ea069e38b63eb72dc2e0322dd2e03ea322c9d094a57fad2997ee832185ced7d74968a52cab2c829893772366ad03e7ee472881a7792965edd44bba06570394b0f35164dd45b9a0b7596e2cea6428696220a1a6270807ea20597638626161591432122bdedabaf530977ac56eeb065783b2a2e34bc9d197480b733b13c9bfe2c41439763828491debe3a5dc7bf8ae8d9a8b65071793b0e85cbed9f41138b9506afe0f7abb65011bd9d5217dbf30389839ddd01c618dd42ac06784f27d3f3fb68263d7784f4dabf779245a2110b42e2545ac450282b59de8ef5e5d9604143abc1c572fb3309a38586f545e550e4cc66263327fa31a457e65b06aead9b757dcbe1cecd2f89e19b5bf7dc1e942edfa7a49d96f2c1b31d373a2c34641fd74aa3ccf5eecef62477caeb9c8c1584de2e03777247e44b29e79472729dbc9d942653294b62f996c12927693a0946e9d69d395cbf53a65ace1d998f42c56845f5a46cb3927a18a5b5d7d63ca899f97866646810da16a86f2d0edcc959554da5a49cd3519f6d56aeb756b59259b93e5e2faf7a5d5946b38c52afd6e554cb1efedbb29b6d49ae356db0a575b32d876b625eb984eeeea69b6d12d03e3e671e3d0729dbb23285eba4d27199dff6ae85dc9dbd9b556b5d2e49a48c944592c7cee2bf2dbea665d55a974b929cf3b5b367534e7b019139948b245363c37135b8637d611b20b847cc0d1ccadb89195a2186538079369d7ac2356db32acf26dbfa4e9929d12d4ddeed5be90c189328d1ee0f37f524f533a77097379a3827f57363cae958e8cd2932d74e3157c40c61959ab88e6a1cca9237deac4ae39c4cdf32dfaf9d3614afb42ce8f6b766e466275e692fa33d4af3130e3d1d467955ab3dcbb22c8313deec0aec393ddbfa665760cea5314d86ca4a30caf9ae9457b6f1cd929436cb925446c7b20b756549f88451a25436b3be554835d4e6c384f64e9e07f5d7f6f33c28cee77a27cf73714cb8bfc9b5cda4f9f3d55ec37e689c8ee69a3bc7e3a6bbd1b209a394b1bc6e3ef5adb7a492172794c7c7c9f3f838d1784a67b00bfda532580003e89f5802284fe54a47ec42bf5401bfcea6c47ecc9732fae617ceb62ccb99c6f4d76632e170ddcaf5daf5160ba299dc04a3ac96c582b86579613523f9dc71c34343bdf5dd4a87857888df3b6a43314d89c6b4695b37e46a3fb351a6297d6a2ba18c5ced9fa9b4e46aff4aa42f69abd284d15ed5d2f846d3d6c92e03177e9366b429e1d3718a49e294f045d14c30098c50c28db6164b2fbed251ea89c7cbdfc94953506185d50e1e5cc510633183fa8eb3a47ed8a69ff9addc1a66ae327f79a7bc9e81556426177247e6bf171bbe6e276d5664643e6e49a215949581d0a7bcaa8573660fce6cc2eb99731d0664bee94d5bc70466b3827aebaaf65442bd0985b228eb2e3120ae4d9f1fb11f24d7e624f9cc3e4af9f192dbbbc0a516b6495e496db31235702977243e49c6c88f90f4156872a37c5c2323eafbca8332f32949a4247edf6dc24aea499b15d5c7d467a9f7942ac267d54cd604aadb00f619104a66263523839a7ee77b2b8de353c97459ab624dc86982b9f8df95cfcf4035b3a2d56bc53915ccec76c69d622ee61ef0bb28e7657a9d52b8dca970f9bb154e5c03ce8273c03ad8c9f11d6b612e38e606b7bf8331431c0383fd4ec78e140c32cf5da47c602fee062ff4c67e74dc4a5db8a67f6ea532dee684fb6cb21d78b8fd386ef8c0385912bceacf3c50e5034ab89c3ea74fcf3208a10d9437be571303734aa1369977ec47132593462a7931f540ce85c891b624a5258cc136fd1203426fe426bf492fdcf8463965ae20268245d0a883e1ba9cf057373cee133348064baf008ac982cb53c8a174121ae95e5b8c90a927cacf8d36c6085d534fc90bcc893cbe01f8b22b3003f2c7fddab72c0392c9806837c46085d88fe9db2565748f573ba1a5369fd4ab3e66e8ea4a473153806eff14ba72fbb110dd98a0a10b14838515fbd37e661fdab7aa4d9bd9545afac7e354442aa21494cec9aa344d0b66b6ac4ad3f43750154fce2b5e47e4a3b6ec059915a6e94f6534680288fc0c069c5d8139f52d182eabba5de9a896be948e3abec47e685f3a22994a4759a691b2127c3bafcdbade38f2f2adc238e9d54e6834f563b3209967ade6d73cd26ba45c72494821b52edf66ad150b42e5b52c0b0b422f5511d4763add88c365adc58250bf76beb5c0b5b826fe85fd90171684c26ba152a69f3b000c03e25706168605a1262a5e4c526eff4ba12e2c064bcd2a970165407762995048ae8b81c16d2cb7d3a650c9682b798134556e9765b9fd9db56557204dd37459141996db9fda8052509aa69dd0ba0cc8090d835cea67061a0cfd440c16ee114b4730c7b2e5523fa99fc82523ee21533f42978425a0f2585ca92109fb31db4269a6ab6e8fc74b47250c08774b47a5ab6ecce31b5f0b9926be090b02d30f72a0b5927c6bbaa415eba1f571b3f2a3f1589f6d567e503cd64f21981333340473ec37d56e9701d5ad014cd39fa1e0fd70fb4d5198b8964b7d60881098f376986d3ad2ed523f242b55f0aa9fb4592b6c16568b47042dd534ec06cd62b116e79b8da269fa49d80fc9592c43dafbce62b9fd76075609554ae3d028754acb2959321331d1f55516741985262526afc907400c9cb9b5054d0460295e0bb771aedb6c6cd3afe3c265a1070aef9f7642a970686f47068bab32e0501d8000b7bffb29075f80109e2c5455411980704dff6927003c6a58a1fff5ab80700f1564783b3a6a80e185dbdf352aff8fd7d67fffeefd81f8cff97ac22ba3ad1263749a18bd728f0710a3bb9431f230bbd035b931ba9431468f2e2593e9510acb3a3a8e2fb6bbe964d3c5dc0ed5a162aeff3b72e21affcee6360c004e38c0986a6022602aed3049a0a4b5509a804662414342ca684814c8b0559604bb56c02a7059152e25d64ac15ac0aa3aac1c2a45a15e804e8e2e99729b1890b1fb2b331073708fe8376ac07178dffe1b14f52aee11bf29f42a0373f08a478d0a17252300d40e142905148adab7116563a4717acc814d698c29142ac6f73721a907def0a590246931989be6a1be944c6df43028eb94d023dd31312b372f90c147af5a8846979052cba18ed40d239465c484839d49b806c975410b5ace4f187950870b7930128357fdd48cdb4f803eb75f136e2f2109f7e83090bc9dfe72cbb86dc4e4db685a6d54a77cd8f482274d83d248d5aba65d9e97db4651726d746124286b542b8706eb9606988384b90ee51b12c660c2eb813a5c23ea5b83f103726dd44656fc5964fbe4037f0d69f42ad9abc5526850b3b01f0ca1cf663969b5ec85d959d2d142005eb87936dd2300285c7edf3a07bc6ad85edcfed75cdcfe00708fc601d7f43716cf660867083a5c5ce82e6e7f67737907ad83db3df4de107cef514c2b49b855c88147e7943de2db6176b6f1d7a4bf8621005ef95a470dfb21df9a2e9813a4749e623aa68a6a94b3ad682d8a8c62accc76ab50ea7ad8835c0f7d6103bc32c2205cd9439a09267e930885721061992fe6193c012317304aa1f177b3e8bed762f9594717836efb742f0d37e365d7337a3bdab379cfef8b47c67b49601cfff70373acb712f6cff5d1fe761e18f4edbca3ebedbc2ecfe6ed3c2f26eef19ac035efb1bffc7a12d7f5cdb823541f81f17620d1d1db815ababc1db8e5bd26700ff803ae793b90cbb3798f81a1a56197fbf8bea0c97fd0bde5fbe659b80816b9d050afb0b8cfb30869cc34f2f9480fae0f88dc068e83fb7eeec0b9dca2fb1e6af12deef32beefbf7f007dcc36bc035efed789667f35e4b16f77dd72f3293297fccce85ee7be6c831908eb18ea05eefbdbbd77f75d37ad5ae6933becb934f8c16fdf7d5aad1ab3be79c9ffcfb35147ccf4afc1725705dcfe43581d075e0d5d38073bf17108137468a8a84003e85900a0f17ba6422fa80ca97232831bb1882095b50d14248d110a21bcc10c10a4ab0041144d15028c1911862780e1128414b17f1c6104634d04265441142a08415d4c61421840008a15a83089191a2224700c108319ec05249786104163e7344174630016584140d21ba61081e183125c214b185113a2001d384140d21baa14a1653bca096089191a22240369822034b48d110a21bb24cb9322b11222345458690620a08a690a2214437104183229e4006f523a028e20749989004588a10a2e24411556e92d039c4eeee77954420f029600025f142aefb35f42827bd56e0f6b9fcef09bcf3a43c9bfeee318171743cff338377de9467d33fc5cbe57f64b018bcf3a83c9b7e2a63a8f0dd4bc265a0f7c5652cccacf38a80aa5cfe3702def12174c42322cb1382713ef082f0e13de951f17380776e6ed2b8fc18e01c7887c7b3e9e7918427c03b3a3a635c4ec20e0ccfa6bfe007f0ce3f102ebf031867e6f919c03b3a7428806de09dd54a8b2b76ec102200ef689d012eff0b8c737a7e1c0e00e3c03cbf0defa09e4d3f0ac7c4c2ebb85d8e7eecbbd23531cef5d7652f777dc4e5ef11f0ceabf26cfa1b680a11bcf3ae18c138f43fc03b6f89672304e3d4e7f6e1f2bf2a6fe779a1f955952b6fe77d595d794e9e5c7e342b6b6d5de97c410fce39219c935a9502996f2d7704be95f2769e9727a5ff51793bdd43e5edb48f9307e4855a5e6afba0420a3a50e871e2e3039d3d16ad56a5766e5608cc792b609a7e1848e1a5fb5f90171f6fe77da9ed3361a5dcf63970c0c901f83d67d7e4567af376de170b61806101727b2fa851a7652bb5f6bdb538fa73abbf63c74c396aa634e9d631b9b6d2176435b11ef6c372d6cf8dbe0fe8a3aded08fda9bd9df7c5a25432a698130ca4ff823a5eaff2057de7dfbda078abedfc56aea340a8893b025f7e69eb82f8edbc2ff6bbc7a77ffa7d79af678a2cdab6007e2fe07eec5571fbaf3783dbdf3e0f8afb847b3c17f4cfdb792c785808a95cf7acb82d83db3e2fa87120ac96d2b7f062ccfa1764b92e5e6ad5f806bca35c46a1c9eaad008496ef978e6c427b491ed53cb6c727e013961b67e33e070e7e958d1a29d48c4ccc09c654e2b4cbfdfc9e6197b52a9d323a6cfe8de3384f824dddb0be43b14cfdae449216a510b6d0b7df75f0cec491820ee4bad4edb41bb7ff51f89aa6fd606753f99eefe3a293b807fce61a7f6f273d0a47605947a72abafd9687843173286cb3828a48c714aa5b0a0af6237babbde953519a94737dcc7163fcc73db887fcf890673807f5317bd2664b5b2a4aa77e9ed04a33a4a058a98fc291a3beacb55a177d86f92ea0dfa8744cdb286ae9d0cc000000008316000018100887c482d13ccf621065bd0314000d628e56606a3c154723518ea3200ca2186388318600400032c6284376340f6a0c9159e26f958c8946352a6e85ad78282bd7892d08c3b94dc0eb68bbcfa18f7ab0ac6b54116163494bc300cd1960aef1122963a0f595e73f328844a58bcb84bf27f25e658b76607bb3231827bf0660eb844b6d74d48b946712c6398c0c87452c67fdb7b428f9e441c9a662c7a4d915d097fe7902ddcad22439f8952351ff83cb09ddf4f690be4aef885d0143ce2e712f28131ceaf10d0ac88d1045e58e270cf814ded1d5ffa713a431aac9a3efba2bc2e6bbe4425e2e0798acf0ae2f505311fa680cb9de5c1ff5ba7328327116f8c9a77f30124ead38b315ad56fa19f4246ea8da2d532e822c2ce7bb434dd62d91e86a11305e42464e244bbfe5b6141797aaedb7e19c33f3e52f7cc27721875d93208585b0ccf076fb5b02ef7d470a4d7b0cae2d2cea64e2d9044402242226d60c56c005c4f6a2f32c26a93f7fafe180bb206e9090b46bff491a319395b400f02c697d8c0d08104913ef01d18b940ca7981c6049248bdbdc3278a94336afafaca3d2aba9f306a441e8b5d3e0c689e36db4249370db974ca294815cc393a581f41285429d15c6e8302a6de14f70850e0df20cfe6557481276aba7a64ba848012893fb4643c6c36510916013c9ecd27463309cbc0c8eca1dbe1845109452913de6b97f57bbdfa2d12b1f8f738226f2eb2a1ef645bdf04d2f9940b6f1b8ec0b3e111ffb5a7680f622492d22f59f7d168302da1374946992a901682ff5a0c8b4f93ae280f68bac69afefa26aefbc085327693a0f4832b7a873442440642f1516687f00de4658885e2a4b5cd45c528913ffa175863cd0dee4f8dfad5b229959f34aa37610f1f535bab19079f4fba39a13642b25b81a488003df64380cfe9a87318ae164205e9cbf254b68fba59fc825b8a53a659c7ce8a2665371a59589863d3007a1247ac635092c08cd9769598714b023951ec6613913f10253f85823f348211654ebc9199623115c318d07e319de09b440a89ebcc338a41cb0b688fe3c9330870605cd18efeb04f046256d0f87c6fc956210802bde3f677a7bd891da947d489430cec00f6a6becc954cfa1ed2790e36b056571cbcd4fc1d6fab4271b82f3087cb2ac7c2aabb7cc57e0a8867f0cb36fb365952ef55751b63265d1f44a2b78bbc2e606ee60c2c2f28a46f979fe389454a36bbee630995ff90cee3286592a153d53858a58320449405e36a3f89c787a2d80e99c33ada0d01d47166d76c63a1ac78d412d7b876da89486becba68ec5cade0309bbc382fd0f6963a4dcce756a6ceaad8cb18fe699d45ce69526fdf89ac84b363668ea546a5c3d80097e0641ed3300bf1a2b39b67d133960d285414bef3b786cb60afa4fd050d637100d689761f3df8379fa9591185fc06f360855983d3e75643c245169336fac3560025346d1298c6a567143e31cc9005c8549e4f50ce3860fe4b3fdb81cc18e5b12c90431ae0e6d115152ab99788040e381a9ef9b0deb4cd04c287dbf20abae17a2a0651ebedba186df9b56886f7da5ade0e5ab1801e6b70524db28b6c5e00b5515de748fff1314f3fc4c5b6d19b4077eae8850876e471f69b3b0cdd339524050749aac9b2bf3aeb42b9f88e68015c87bf98d82c5289e27af1c288f93089e2bb9f2a41877c64d6f19e7dac398ea3102a325422a3797da266fb5625a7a493628a85781621e14be1d05ae5d9976f3c474bc763a1b3fba794e5076ff909a671451764a3e842c0db42afa02d1d67185c1fea1d24ad381470b07ae531eeda9bc854a4cfb06d6a8489ba089399ec66bf27f4d3595961bd2608c21a2fb415223148a3f3e734f1a649d8914ce360c9553de7122c365fe605484b9f09c15342d44962bbdafde2a74f91a46d8d0f47b968fd2bb813a14ba2f3101a2442e6489bb2fa3851ffa8d186820d6af0a489a56ca776231d93f0f2a1821e005112b27ea541e6050a3b05d2cd61eb2fcf508a99bb5cc8a7865f5783f575c64b82af0ed03fdbd762e7628e4ce419369e4c141d20b80a2577ce5895f304d9b5becd42f5ca0ae4b05f4a4011889aef61a4c572145645f6d09ac5ab55c2af2e7cf08599d13148231c235dffca91faafb0cfbcb5ba96eeef5eea02777669eeaf40a808c8cdcca97561dbc5a91250cded331a11152938876d36bc28f7c8d6191c31a389fd62657f59c9a797c6e6e5ec014f4025b23117793c1e8f1b9a7922299da5e6463efdecc384ee4a408c265de0e8ca1d2a8b7d44d20d0ffecc9c8d51b3d3b9529c71a3bb81d9797215fcd16ca5d33ce280c74ef0e6ef0ac5a8b503a9306ac656cec0208524db51d7c80783f44dc0882db67c1650d81eeff4f610f3d11dd5b1a52efa5d1a86615620d5144f7118d301d8501c27cb8377181f89390a6f1adcf1eb8fdeae7240d49f045ebdbd516eb2c5c11e859aa294bb370ad506302e0d719cd28a1476869e53ab5b365bee3473c30e82d7905e027801fca88cc0755c08d05e0e38643ae9230c0906be7cbaf0ff9a53cb4a6d36f5a037701afa0d033d6ec006602f63bdef08c5d3bc2f0b7f965bc20b9917c1ba38b1fd573fa435d4492be216bfaa5e2b011c229b5201c2f31b347dd93d89b133f7aa25eaca2112bb8c5f06f2ac3ea3e30498b64cc783a4130133d36e2ac61890429acdcb045051cefb947d468d40672bef06de09269cfc83727c17afde0983258a04e0758bb51e7e0a4c5d74958008d90d5b3c263d09011f207fa8781f6f493edb7063dc44c0e9408f0e25987e22e5af748abfcf90bc2fd0f6ab6c26c2e65ba25c2a5883c73844115d3d76f0e2616132561f7671229e794fe38b0266b8f426060d57dd970ffe8935194a86a3f657227f878de0e631018fb05a72438879c6d4de05ccace81d67724651c68bdfa344a67bf2da95c3165e1af4359974ed8755cf71a51a63a233eb2d74492b5609568e37bc50276bb4ea59e7d8146f6231923376e8ddfdd67e16131c955d9d8af5b673de7a9c2c14618e4e766d8a86e332a01e564eae23219fd0316662a86a12fae616edae43649560861906f11a3fad591f5150176870f16fbc4c135ba1e7b28e4db891f91864e65611230a47972d62f5175a1ded185bcbee1fc0bc403680431bac383657b02780a1e0084866fc07949fb6ffb5af4148159187e62414e872bf68cf2b50c3d324a14763164e02c6766960435f9c4eb3f4c0f86f439680ba7abab94652906461c1741a9069fa87016fe31097c970807422028e13c2f3e73e5663a8e631251d98f8e6dc23901a26e89bb9933f360633bd924d5a9b33d775726ab077ca246f13d5e680c3f4a8441ea6b2f903384b09f79a9278016fad73883f61c060333fe13686f96c767783addac514c05d894b92f870ab65389a2a24376a38953e62bb2201ca5461f4e96e2ed34959a118ae73d24f43279161b828fe3294fc3fba6ba72285215f58e0f417ed2e9f3eec47bd597077eb7c95798d339efb85d3f5ee7b76ab80a9bdefbfa82e3e6031501dd9997488cc5515189c8f5da00966d04ae50d3c1f3300ae757ad391d14b916e756434d12d5354c091f6a6a9476a1bdb843bc40dd541a162d0544b1ecc3c283a0823adba91ab80858b5252f9673e54896c2b30e918def6f7d1ec8426f83612333af84f2b2355f1179b97b470326de75c53107d60305ecb840979158adbf2712b5757c6b7f62fa64e0157e0cd96298185b73d9c0f220b5d4d941fce0cd56160bc1f736e5d1d8a07f947b192411ab2b2845a6d3c8a5a65b4e2af5c49416086419100b96a38e09e367be374a85da2bd86527f7ce2d7bf17cfd7375791517c8623863833bb5237a450fcd455ab080f0efe54c44d0a6d5f2bf1fbe6b24e00cbd9efbc70abf723d3fe20d7bc8947a44bfcc5305878fa81bc63ab18585287ed9cc38fceb642abcca17fefd3107f8c759723ebd8600cb8c8a8f33f667408a428230c784c5852df427eb917ed65086809aef491ba4faf5e07834fe0c7c31fc03a96a6a1cfe0978497ffb7eded2acb595851cfef4081d84a6b35f3f150fcda5da661c2bc147f3cf5752d0146202824ae91bfde72d717046cf1e568a4fed9f8f546aa7759b7154a65fcc3f4f89b2d617ca083c55049332d27e365a83d8bd3fb04fd9695867c391c42046a713d59f9af7c83dacc31c7e730f145ac617f0cf87b45eeb20ab2ce6f00ba38960320bd187473b8c33eccf48ea66ce32d1973f1ea18bd0ebbcfea7e60d974b164a9c29b08926eba7a33620630728fbdcdc550efb449c35183c8bf791d11c8a0f192822f198a51bf6296566995b58f7ab01b1e4026d239fa3ca619fc6a1068333e87e468f691368e6493b433af5bc8e344f0ee4cb7dd6dc62f583d10de2a005827fde6ed238e9c0e832bc07ea72195f06180dc862f0f7343760dfea40df12d75a9e0cfe81357d6c17dc4e9093e7e42aaaf3a71cba2a063f62229ecc8121c1829c0ce1da5564d105e59ab406522f075e1682ac7368c43c1f9eb4c1f5b0ed6276008f0e8661e1ae4b789be23aa263427e83cfffb8ac80cce975235aa16d8a8548636dd1049cde93b7ef1fd36d8d4c00b36b1e379af720d350cccc8b6060d92ee0012dfb830789d5cb7123b009c310775683cfb86b481137deed9edb1c199cdecd5593f43693824955688b84af32453d83a717b9bfbdb2eb92722098ea03c79a466fdb44f4e65274be255e6f8edff30e23d9cf9413dde530dbe83f2c98423015815a5eda24f09752e429baf2f56428ef944053612dced849a43634b02f4fb2ec34f1596b2362570e19eb68f343e4269f5e1e818b90a4d1972e65e49df7975ba6f70813798bb1ae807fc2fc22f931422b5aea59f8a9f4597a6021c4f53e597a1b1e08fa8b0f20af7c2e09ec0146d858088e97f440071c6af6b511b3833daef023a4e5c431da8882a9b57356a4b241dd06d98870e3f41c038d13ce94b3f5cb4374a91a22d6ea512b781fba34c6c270f6d3db9b378e04653b82f9247e73987005b2b2e1030343a6df3f7222151e2d780e06f971ad8164203c6b55222ae8346656607147f962ea8470bc602742cf6f3d15ae00e81c0e03e125fc2303b9ce8b26529223dc189c8aad2061aa39bc0b642420f2e12166daad6e7564043e7d9d846bab84aed967db87438fcceff995457a069f84d4a737138a2ec2897e468b08596d8a80de20778b094d9478f883c4ae1f19fd69882f46f15da81c2335771af48411afb2230fcef8fa7e93aa77b891e85dbe0b3976eaaaeb56c855e9a744008f6ddd9308762010e55f18643438a2be81bb2067592ba32e2d7ae1c09eaa42a1ad2dc2d6a88bad5ca8de140e1d1ec7e3adc4d72928c6c43acdf4da50b06785c7bbdcad7b7be30e2d3b489525a5ac87d4096896a34583ab378f749f44aeee0b3d0d309e26ab7fb4222477083e6b33898dadadf386da9dbf36be1d6f0a6fb5e30d4e6a081c45f850b5ddae0e53cfd4a53d428b9ec88639376294f203be3d14b79e3eeaa8ddb82f3333015e19161fdd7893fd2137de399c6b41975560afba3630db96cd14e0af7d1120d18a313a5ed91b4b9bceeea6b430a7820aafc379590ff99e3bd53b2b88ff70bf061bfab93a8b81e50863aeaf494b1ff025daaf2ff7449818e3ddbe363cba45028362bc85d81b319049d90ebd980fd05ff83925ada0372534709047d00b650e4b8d107478ea9c6af932a8dff811cc80df7ce8b0a1ea150b807155945f4fdb4621f4ae3bdd82a550ff3214fec5dbbb47ea758ba4cc1744d996d0e6151c818045ec5948aecba68fb731414250dced3a8ee0ce3236677bda05983a98c53b5493246479ac13e688dd0b1828e694f3311b2fc9a6ccaa3b13885245ce2953f76f50c7164ee8dfaa0afbc26f425db2f04676b5a5a6c59bf422e42927ab4f4c9f03ee67bf2211d6bc5ea4fa10e1176014e255750b1eaa3e1dd39d8a241c130e18fcaf8d009017fe3ab97d9abe553fdf1444347dbce8ecc6bbcf7f7324868a2f2047e628a069723b5ccd98c3d2e4d8defe4935f9ddbd5f3243dbcbe3974c30e1d76692c5d968bae5f45f059340ea36c8c8036f16900a4684f7e454589cb0b2b9964e07272e49799f8d2b84f5dd1d822ba5c9bbb6be3c09debdb411c09350d0164d1b25d85a44a00f21b69103cb02a46ea483427ffcc77b68a4d9b884207d73a69d98b4b485138f53ea11ccf32e48aaa5fd34148d2d0e0b2095fe78981aa6275ba0a21f860dc4cb8b1923809554e10106e3195ededfdcda73e935c2db4aec09a8461d36df223bbd1b79d7ef56a01ad8e930eda4dbe75a8a5647f3b381637c39a658388c2bff0e8029bbcd901f1a26331e4a58aa57e160bc2c970324a7401bcbc0c8c140e8dbe19bcc34d1b6e1e796377f01577ea7c361a22d428a831039bb4170f3e6205046fda23af38c817ed325a59b7fbac16d2311ee7758a09e3afe65bb886d6b2939a8c43ca6c85e75cc2e6d85f02b3f831588fcd60f47103d313e092566fbbaf807709952bdecdbefb074d20d108fa83f18559b45be5caa8beb26db2124a9bff204a1d7fcd6fbd7363e5877f8026b3175200da914456def87c5c54a5deaf3515f59634f5a999acc7c2590a70645dcb8abacf671736e29bca7f78f80f56366b66d1b0b5f45f420508e666443db004b1f22f7855c1690900622f9a79a6173121734784b6d1b79789d1d3f9f14e86d772d9c13b62e96613ff09d0a41a9c6c02f309c409c418710bb18c8b8edd89b03f62c2e5752d9eacf1f37dc8a3af33ecf06b2b818a568fb8050fb5d70b2be6e0c5037abac11b5f69f6cd54b964934d09baec1d028f0bdeb683662b6c109268c0730b01e34810bc9ade5f5d2cbb0a285d2762155daa470fb3d8926d4c87c7d2e8931b1e08d2651dfa7dcd8cd7c50c988ce744b4786eb253c5de3087cbf3d5d9514441e34de254f84c5f132cfa424839a1d7cb40b918658f35fbf9b17454297f827a8ceb825eb9644d4abcbc92eb7979c569410019d78b8371e8d192b83b5250e6e7b45b9c507a63fd94184ab49e1eb40743c4d0d5a655d1b2ff42af0249b4353bdbad9801751b036c88b8c6a7197251e0d261f164c0f7902953bcb6f4b285c60fb781daee29d2d0bdec05c850c945d30f7352b4f9225ba7e147c9cab7257c5c4921d502f64a2bdbe0a57b21b74ab621f2544868c3f571c5c4c4a98fa4305cc5c3e11bdb61898a5723ec51c503f29f6ba40c1c8935e8924dd8c677f29bb6a49933e4715b9dd209b9211cefa0c6d10064c42ae531b269c9c6359296ea5568be1dc5724750d4a94c36f90ae1df60131e1461db42fbd20611709d734dff61f9a79cad64016d4d4289980588176fe6f22e20cd0d8ab4d0f80fa6ba8a2f8e9757d4e2e793c770eaec2e8229a4c57a3ae65d6c2906f7cd01358893c140815cb1cc8e736ca8b200fbc1650d93096267417523aba0cd546ad7b1f463c32a4526d31a9530d05c3c85c21523a7994c116c6fe5d98b6dc95c27e81ad5dea2228f595812141b0a111873b3bbb8347fd94117e928d8f58d4ae99a7d28d5d18450582362e9e89ce25244753490b337e60e5eb21ca8aebe0c478240f6c58da3ae24ab26b20b6167d4765e916760c1a13f64170d1dd22887ee7b1a7c4649ef561da17d19da7b2dd369c11a1fe223065f7e597a364010a71a3906a88b4bcd0da6ab33553dc0177591e4ba142fae6d3c2a5da2608e9f495abda9717b72831074d20b656624fd87a22470d0c8a9c79c529188478b01c5f75c19742c35db390c69c7893256a6c8b735238816df9078594c614ac11d7899a5946a2b463cf64ee3485c116a66a7c263d01015305161416fe39b358b8cb0f56a45018caa699d4e40a085fd89bec9b79175d7ded421b846a8f24f9c27e3ecba3300b60f626124ad6ae1ba4a7a7297788b723d59936127f7bae0f06237207f4d5cc11b1d869ac3406e1cb0c8d2b1e87b639fe780c3e935d06135e3a1ed600da104123bed6feb1ee5e866e474f9fbc23a25f9ac82616ee876436a24afedbdf653aac8e3146514195103db154324a8ca8b12182a06ca15931bc61d0fc779666a567fa15f0c7fb48b7d964ce8e9833381d1feec35538641e34b4477c6333488e49554494c91cc561d21e98f0be4bdeefc34fdfa757625fd9493431bbb38014e815cdb6438998df5aa3d81bc50f720717a71a247ef2af5fbc1e7e8809207fcf4ee5076761e029c0d2a242d7bb0ff6e077618c94203d4c2870be94509ac6cff59ce86031441c5980b452206903617772fbea5f67e55e4a6e180f4fe18e2f095c243b225e1aeffaeeaef23c0aa521d3ec1379fba9843539b5015ae94cc7a5d98c931ba2fe3559fa5b6350e604daeb6521184375321c0752254588427382564d2cde6e3187e732634f9c8726ffdc15a929762b51782c0ac10d8924a07d97b7ad81661b78426d3317bdad5475be810802a15eb814820c095c4e40c19fc447bb068df8c79ffeab539f0e3390b94b783284c7de8e218d9a37169c5033b3b92801f056334cd24dad0eb4e121fec7400d0a67141887abc5ef18e2fb55abb63410a214a0d230689d609d5774f89b2e89b0cb0953dc55061bf6a3ef81bffeedd802b28d90718c2c8098b620ba89dd2d1d703f4e643735518fc6768c47c6b94effdb540cb957463f21b542e970916ad6626092fd246f79c59ac3703dfb559228642d5913185b528e869b13334156dba51c592dafccd65e93c0ac481aef20c04930d55db926567b927a39a268d02ce867f21b1c59ffcf4eae899ec453285497274b9c2d20ae9c1442cd53990dbbb53136ef417e8ead9f1f6dccbf03e69e2dc744395c219d49a8924982110a23ff9840ab57c8d2d17e1d13db961ecda0367ae3c1906337373475d2579241ee975947cd9f1422bfe3f53cc8bd5622773d44d9b13a46225499dd0b0c05d915accf39706e23a05ff75a9f6396a8b81b5296b93845106bf87f0db5c7cbf8dffa8e96fa6a2bf8969709c7baeaadcdea7f7e40b65b15415c46140121c16f3068754081833c40f44c8593d701fe476346b9a97a67acbf2cbc04abb5364ed37dd071ee97c6f33f7db330e1600c03c8035f1c882f34227286fc8bd7b280c4a98302d6966b04fcc345e8c2f3968893a2288bafbabd54a3863fda36a4c62ae151c0666bfe7bde192fe36f19c94b549de3cf7426946b62c1fc59f1de059f1d9f7a5028c84e4f560acdde8a73187dd8ab78d9d5528c19c771ac771983a03f95a3d0765d220c2e499f8fef95f94c2b5fefd397876fa6f0a29535885ebe7cbf09c5cfda15fd0547617fcde676807c3a9ed54574b99aed00088503af49f9f16fd5c142e03118686f93cc5d2bd6391516dd21a149470e06c72157f3de85088dc0af2bb2c76356ca9c4a363804921e826c04b4a7642cee35232cc63a66d8c9fc94f18f4106d065eaf99f5a5435232ce01d814aca0ca9eb2c9bad42435cfc7aba39371f566174eb60b381d779e370bed44848bf7f31bb516c071080b6a90e930c4734ca80dded7358e87e1025b4f4e7dce21025b55ac045afd48735179569f340186ddb7e86321acf08efc1edfe37bda33f39c20aa40a763e7f458aabd3094e901ff1c9146d845a4f21f9b9eb4d3efdf0ccd2e76c5a2744261d1e532264f6c7086ec4f44c85cc493b68b4985ac717692d114b1d4418b5671705e896daf3d8a3058691717446157b1565d961acad2292d782e043321784c19806b6867de03d9093aa169f07e3777ea96021464076c51385c50496154dc84b3bb3028cbe0e4cd8398a69d208ac8ee5f32c73c6157055c9c86268419fc622369af6789ca35c983d3a6ab6689199a01932e220e86b2d8a55118353e5fff0895312ad24a25bc9fd9388b2c1856e6f2de8963720060aed568371f5288e81bac81274521f8dc6d7fab63d0b531b627f3520b2107a5434e48d399005804215e6d1b1b4b3f2a687c630910c33095486ab947c53831692a0228a3223048eab70a8a663e8524bb4cdfa36d93657cc05a925d1109b748c96cca9a676dc20f6a3d87c99a7e1f711596d47f478e9fd4cc14d3d608b04b7e7a56a07accd408927c2761bae6e9b582f552ff630a286aed9509b483d666113b5eef12d7cb78af9dc43d2fa158deb76705ab25317547aa585b185b3d1601748b92b73f1975fb7cd365b7a4709723013e34f4ad9c86b7e198daef71637cb7edd6a137d7a97d6d04d42432f084413aae111eb9bcbe39694fe8ab9ae46104e96e137987f1d6eaf9c43cd751c474930a1c80db98b076acd94f11b4b2d3fdeebc50885b9a0b8d96ae070346b98effbfbe4f8f194fc5e85be60b9f5a1447f17bfb99e33071872340be41cea32cf8b84cdda3d04bc744c9733ae7769d441f50fe26a8c4da3e5ae0c38d8116bbb54723e0350cdf3a11a50727a604ac64f516788d6f1e731f2c49cb401edc5cb1fa44ba0974470a48f375d9638021c75ca0bccf499cc0fd499b2c35732e87a3868b40268eb2dc86f750944226c34aba7369c022473cdd64d0169341ea572e55dc294e6a5fa0f9007966675c375fb1cbd4b1c2ce3d74c6b831210d590477904d28c09c1569c33146be648c5e05d0ddcdfbfbc02922d1b8b33b31792e9fe7bb808ec2f5d7168ea1b0d159ba21b372a7f1a0ffcf10e355a0a867887310fb32aa6225cfc239fc5949315271a301f1e6df5909500fc66ef7c08a77926e100b335129012b13a4be52bef7ded2032242e6ff608e4c4fb758bd953db00b6a2a788283474cf3f8ad3c784961e083239160ab34eb51be3675e3026a1e68ef31ea2fc75d23522d8a9b3296087aaf70ef7328cd9cae7d50492d30775a9ee44f014a70def4df3f70fe176b3f46a815208524fc105502d529fb85bce8a8bc0f5d78c1a54e18de0cca57a4fa4d8c1c62e89795064213cfcb088fa75133d50bc17ddbefec09dfcca89fd0b5a459e807c3f0746c711262ea6daa465489af495243831e20185a800772daf9a81aeed91d4b8f336feeed0c98c80c0cb9ab9ec811ea7c47c57ea7a9a8b633f74352b5c695b082ab29b51608875afa20ac9170f3b04e4885bc702fa6f9d5a58089f627ebc791868353901bc62dcabbe6c7bff15b2dbd76041fb40e114f24cd4e9e21129efaf4acf3decd82f451ecd24b26fa4e64ab2ae29a649140c1795230a35587bbe3b6a66f95ef70f2ae6296e3b6d2083a5d9428102011eb82985fb1e0bed463182d0976c765e1f6781c5e12257f0bbb030cae0bcbea7228bca05da1cec94d66168185f7b81514c3cbe38be09fe1df26ae99b5f739d74abebaf928c31164a4eb0dd7a5402a800caa445b829b92cdac384957e70de4ae5ce7bac9e4244e4bb79469548b2e2c237cfb1af6a323a9dddb8b3dbe844b66e7b3c12d6890c1d2f64309bc266fea4e1ad2afd9aab439c43943937d56de9c535b796c392bbf583797f3c1250d4647539166ffea76d8008c9264bad3503d0353fe4cf059bbfe645d0ef96c7b88f95d542ccc5cfff027f4eb6ba4d62ca12477227e09833ce0de8379efd087bab0cbabe8de7b7827de29a9bb8688d11a964c11b9b448e1b0c5d56b10ca8f76714c707ce8a9e08bba7225e4a01d68ba5e36c896f475744a69061985b1b4087e0f4f2c829c5d8122bfc276d7966e3d8ce9ae1de6a811d1ceeeebcdb55fae4f7a7592b9b827606928d48abe9d7bae0ab03296b203d1bc7848b69c6359d34b3fed3b755248123ebfd615e52e0be8c0b18d776845c31d9f333f1493cdd7305fd6945a70e36441f9fd8efe2d9bae4bb8824c01adfc1b51b856f239ebb9c20f50da8141fe17052b8c89563d43cd8ec4644c151a2cc0170665ae37d174f289529f605eaa83e06ef7d4b76291ff206df7506e9eae9c20205b31249c4651a9cb85f2cbab593a405c27113d74df38a9fdc2d7c3783067cd03ba105a841785bd3dbd6ccafdc34d039e1e29a340b3a4a2672add99b0b796ccee040bc51d6053393da3f7d032c24029b39bc30e2d55365049105e6a39cbcecefdf6ac70f627bd51965d0158d344a99d4432fcc841f0f96307ca52e0eca4b8f464a9e318563cf07e6043d46e8462e19f0655626d41788fbde77b82c94e6ae704bb5c5f2495056635aa9592c77455df0b10bc1d12d587fe96ca9b15fb5c650fb15080baeab6607ab640dfe568ad74c414366dedb379a16fb3e8a38c3153a67eac1ea718a92017a1de099ce8b7aea270055a9066864e205fdcdba608938626005095f88796f85ca94738cf8820f2dae45a1606b7f318538c14147ba31c2c8c3176e614f7e226e96652fe4ac67f7ef0e9981014d0cbc8b04c41b7cd0ba0e218a54efd7c7405d8902f71efa1087580d2707bc3d6bb4cf52c62124574ffbde27138b15dd141073c100ed9e49e465cd6dd17d0e34c1fa5d7aab4309cd9c132ab4792f6ca448051e9e30b3054beb6db080da61c488c289d70357c08fc6ba0e8d9a940d432c9a1304b357d2da68067bc354e141c3ebfc314f0738992f49c902ea3fd85b54eee8a6b429ab7c3211042611da8d089224fbc1d9d8c71b49409dfa5e8aa1a8b87afa132f3a615b15e0ecb4faa99ee615453a70793c5b8870c9a4ea6026116f39f32fce0f3bd630e9844f99cb3044934b816f9b975c098ec3b638dc809bf3b1063c7919ecafbb7783b162c8ac4781e21844a6288c2a782e05197f90ad8e5924a4aded804da98e76ec8d8523660ed44a79d84792b9e321d66551fb907f74932c8f5c7c97f4190aa90b9c4091a898d6f05f6a99ca10cd021ae92b3c9fb997e037670cddc8f1c08357f0533c6fd041a11ef8da39a2d593dad87c713e081fbc12f57f567bf02b166ff42b423e96f9b25c63eb1446c122013755faa06a404a2a0dfbaf8385da0ddb0503630231702bdf1601dbe3b9e335997f98f22143b9c2a42634ae730c82b82f03339e65f68fa4f6fca08b3634c69885f5cacc5cbe4260b15e069fe666be6072d0581ca27ce46566ad3a9465e515ea30d56b4709305a1415386a51ea5edbe0c2237804eff2cac92f1efc6b155eef1128bc2b733d2c9754c510c4a88eccb9cea18e4b915f1a8ea28a6199e8e9e0ad36c10ebcd2bbd6c345a73035442e82e0ff704905eb763be4f80790fc4235056bedea6b78e9a5dd766d57fb1f1073409a893be60dd57c0fb75ab61ed986f69e12c51ac0de0e5e36bdd4952f874b3ed852dd1cd86952135faed8dd4cd4e49d86929331b3d844a4b8cee5b3980337551c1b448a7bebc072d04e702abf2d14d4e66c91517b4352e84ced0180fff4e5628bf1b65be7cb56cee3c412ae0eb8a7c1c381a3d1b830141e8959d1967dc1979f4e93f3ee9d8b73a059fd3c2a7142dfedafaf4f99e2223ff674d6294d9c992e56852492e0c707540333f8c88214a24cfbbe17582f7963a07b1ea670b4a71e78c3a43a8aec832d921cd7f3f6d467bd07f7143e0ab40fad40d36082f58dcab134bdeb90b4a2a5c61d5e10d51fe4566c0db0ddab9b437171c90535395e407189a9b80d4b16014c47f86658d0b26a1348bb38453f55c0900e5408fb2f246d83598aa618341a577599b8eaedfba0dd160f040eeabd9bcd9d8ea804532d6f046019a29c5e7bcfe502ffad9de63c5e1886a3eb01c736107e36d9db088341385ced2a65bbc8ca0088da63c393570eda313eeace4dbf870d089e8240e431b184fb1da05b2691330a8f1708ab7c7c3585b2054f6bdf1d7983847e3b8792eb03fc90ff1f2cff1a83f3ee6c83dd8df849c3f6c5153126d977629cc38c2829ae9e1f3990ac9dcf0e15b1f5b347f40786175496d984bde71c5e8f7657aa84c646bf8f06813f8e14b1c259a7880f0bf5c08734a4c58a6c0e6a235ae462df2db8de52fe815547a566976d789cb65375c30bf16de0ac56f2c724ea5005e2200c5c47b807e29eb85d3f8c8aca8d77a7b25731b8ea002fcdf11ebb2d850c904573da5fe730e5d66dffd6f100d630af92ebfbba7b95a603bd4171a35791af7595f3c542915482d7aea2cc603f766536f81b890a947421c8af27422129c52308c508916c01e2b9e2ca77c9aa476e517c2f0f72ef25f6f0c589b13c0e2f5f7c127dcdb1aeddab398125536eb805adf1c9602954f30571b9009fcffe15862d4a0d2e333a37a6216613545de5ca3603d925cecde54980bb73034721b60cc122ccca761bc1357091b77422bff5fb6811572178a1e718ec8da51f85c3ff3e4c7d07ac70d6180f2d107c426d82078865f1dc744f68fb83de26152d9cfd8ef7e2926121bf74781950ff1607a244e62e30df300c9449471eba314c4e950616eb763840f48f418543f7b6e74009bf28d5824bd41a4f2d86c627ab2e12c3f9bd8f1622f002e9f907bfdbf030976511faf2084cc000638a4278135c710fab7d1595e453573565de6007a76c0dfc6895bcd10e568937d80e62be8da9467a86befd5b173d6d23499de180df349635d8912999463bb852dbe00753b64673644e698ace21e40813019492844c284365d78c8fe4cb26c2e58babb866e9ce0e6898ae10407ddd30329e00d00ca94e6292d4caf5cfe28046d1f65b5b08c7d1745f4408ccb36a20e45d235939d507cc5da7e73ab6ed9621757f0609828686f7c9a6dd89fba2c0baf2d4d6fac17dbf73f99c33a96f68d35a7afeb408bf104074509918281378387f034ee2c3a6888908731a4a1bbecdb57f19b659607b5411bc753395bdc0c3aa4a4f2a8495be8673194cb02284434f6a12a895c44c2d36a4080a8f9ef6c7f94185127876379303779e566770364c804b49e2e4ee144b82f1db3f0cafb9b596dce77b9f7f898bc2900675b64ac431dd0a9efcc1773e945715f1b8b620a5e742c5171e4fc8779524561e8056bfcb3bf40a60e602c252f1280c446b4beb05197dabb36cd59f346b89590148ac55185479c826c16d43cdb2e9a758e46bb6c9e28735519c65b971ec4ee5d07e0629be38cccc1c0d0f969d0c98e193f56f7b335c3773c2793e64374b1dde812b51a6b58c3333c5d2db59bf7d33f973f92bb786832f805eb05f883b58158dfadbf124a0e34af5c508936782a2eee3e9bcd62bd95434571a10fe000550624bdf15500c2281b3655d9879e0d1b7c7ca9eb77c52fc96d8e9eef908ec78f8778206dd0a65831293c805f85de1db00d1dbcc0fd2b12422f3c7f6ac2adaede47f3373d769bbe5ac4b23369e5ca169cfc20ec9802ef9af72a481c053c2da79f006cfbe219570ef15b8cbe81726c5cf8da4722e41a4254267ee9ed337f4648b8b06ade132c0aed445a885b68a73585f4e9c0fd0772d5e6d26e4bcc79271ce208fb5c1b5a0cc0611ad4db6fdc026467fb77aa8573e16874ea124ec93246c3a6880e90399348bcaa2b037ed7910f56798ac31d4ce5218a01e2156a622ab457155df4627a8aacea08cd33d8e31b7e48d1b3f2f545555ec15964e7521d9efc5f10779544e9f4536043382e6d025fc6deaf8842543cc8bc334321a1b61b3d62fcbe2dae7c7b035898d85c48a473e4d23b445a7dd0aa7bf12c8db7a507e2c912005c5b5c3effa36ba8b2501d4f387dc65cdd632f444464899f385c468121190da05bebe9c6df2391bb5b76174dbeaf3d7dc6bc4776a4b31794ee069dec68d924eb3a2c1a373949665fc721e00d684db2599b14528ae3c54ec008fab6fd2941679c271063597697922f98590ce63848e8db7e40e67971f974bca5a31949bc845d3b884323d834fc40f075ffe0c9f710b088f4a345e745187ad084bf6ca06c83e7485f72f133b551ffb408a4239ac8f94423ba3e4de600e00de9b830283255c8eb58ae4677758c7d79052d395d327a0e2d764b008b74f35f5481cb7609cdb1c48dfd465e428b489a5e157e3c72835cd652f49ffa75c52dcdf6b655d1d1ab89589def0047ecfa494fe19054b4ca110b5968645ec09582c9c76460480f281a94b6388ba00485128e5cc65a3484180648b07c084089331b0015f34c620a87dbb73ad220aa434cca9396613d57625a80d7228aa1205ea17b4decc4bfb7f0cf680faf5937888e615ab2f1e95f8363e6c9a2903b1ceca382c097bea95aaa601acb9dfb88d0810c65aef926bec92515e03acee9475ef65a96acc6430f72d53d39a70d2faaaac7a91ff3c27a58513d88275ec24f87a28a66420cb76a9ff2df80b4eca2c6922bbe6d99ef0cc469225057b522e37c88808b86f24c0ecfdc3d3b411dff799da325e4f1589f297d06ab13bd275c7858a08740dfe5d887cb8d93f773c4acb8dedf21d285f7bb93b7bd5348ea93507d3b3c345cf268814040c2aefe0102022955616fdbd7d4c058ffd1d041f15e66c9d381b88ed03f3804c9baedf4cc977a37a00243ab25c21d9ae5cbeb1e55206ce85ee7b816ed18f8132d6fd1b2d0bbb90280bf79542490c74eca0c2bf1b455f88f25b1665aaa16f2070286996f4a0fe26798f1805a53fecd55b4013959bacce2177c0f97d185afa6d19736751da290ec801af30a829397c0b77d26470a0a54ca18462fe4951ca81c8c4daae877ef23f2702deafeab9ac7f7373b87b9d8fc3012406d37a8913165ce0720af768315042fb1da120639ddce956fd277ab756210aa054f9aeee22bf58647660bda1049f1620e600591786dbf78a42b0129efa5dc904f99384065eb4adbeab3700bc15914a442a531e4887b84bb653b56c02907ab3b1fd4a1437f26b6c40d66d707ae466f1d6ad004d8f7b9ed099fa4d8591613ba508e4fbfb341daed8f417e7c4ca8e8e4c013c311a0571a2f73dc244ee4c72cefa42729d3917d3283f0175033e14d9b48a5f52d168d3a338c0116d94bb42a9bde50e7333cc178e9b23ebf6cdf45cb4105a922e185f8e0196149781a9a3cae29d5f9106b7df7e7a6d9facfdb3d60bd8f0dfeb3143a7df0f4fdde2a282d2f8e05ed65ff1e539318b32c45093e2bf45ec016ad05b9438d6a662409456cf70a1cd0d9732208c3411759c435c743d78ec7e9a6ecf46b7d9d5652f7a7063f6bb6778f7d4acd6895e1b5c93a8ebf54efd9b9ef022786b307a05f722618af15d2ae0de2d432909fe8f9c95f960841f7be1f25e2fb641c413452456e8427a442fe8aa6692e57671df338bd71cd5524996f2a57fbb50d7caef4390d9058c25542b58132eff215af47c635926909d9ea1737ddd60eb863881e10e6784780378e56d2978c500b6b18d9623a02aeb910469f7e01b9cf4dce285ccfb4d98edef93f8e4b7da4036a6316c2ad0f9f346936cf04a8c199bec1ec1fe78d48f9e40f07c5a212f1e184e30d48b7c72a95ca9d9d5e3f8e6b9d5823ac7bab7b7e04382a1667ea3ae2dbeb1a463cb078fc155901da1bb3a813d8982f925c76de710cf4a9e7c862283f666ea890c1245b96f7d3a259fc3513c62a6f048535058193e5c58e382470cc2e5a6a6c623751906342307a100d081095c4a2096b32f2147eb528ac91c85b603619657d0e69046c02b86d7de56dc82ca34ebef21b9d98768ace66bd678075817c1ed5776750584b255a45d973d7158779c23aee129a91c6064865bc36a2d7e9d6489445a82a1e222563f95b53e348e8301682574e3ddec2179d353d95e29f7aaec7b9d9629132ccf77a897ee11d4e4289099c101b94ad5e35d6f5b1f752b22cbef02e61a235fcae23124f3068e25b8cd56ae94ce0a618618da1573a0dbd43b5af03ae4ef4321f9bb59281833c9aaa02757ac85159ad44ba6419987127c7b66be26d649bad939315985bc192b06b067953c1f833c8f1bf96696bee242fe26e3774ca15351085cfb2001d72d1695032e93196ec1b071c4949991cae16776ec531c2140ac121cc20c9b0d73d0ef9238241ad2e131decb7679644646318ba874cae5d5edae1b92d167e75872176aeb5acc18e7ad0aa9d8d89d02b5e0b55ff30e66b3f58cf6bcaa22b36377f10b046d1396ea1e9f321352e8944bbbafc27122caf4367384aa2804bc73fd98777ba3ea498511764e8ca7898378571ff845cd7ab87b4adcf3a06ea5fa92a07a6b4e972d70ffb4b532ed54c37dee77a306b2fcab70292edf021a7d5f6650784d6652ba2f1b7181f508cbd600d7c18646bcdf015e08f6b6c6e925e05af20a8acf73ee308ba149bdb5ae673bca9ee49c435890686021e62da912ac418828e972473abdb1b0241c4018f98fba0a878f610323821ce4f60150d45ec8a834ea987f67cab9c61b1113926138771759c343e78b02128024495afe16b1c54af043b26611433d2557d25d8f15b90842c60ec82ca56778bac698366c924a4989663f3c2528036a477f30dcf9ba0330a33e46c92de5606f198770fd0cdb20ad818a3f62399b05885b4d5845dc114af9c5c37f3570ef66ac498bc2d3350dddc024c21d6934c05f58a165c199964c2494f06915330e8a085c38fb58e3ccfe04b433ecac53fff2a2bc2595b5d2fb06d9638919d4baf94e4c953a284d6819e03213a8e95f007e4c078c5d1a42dd5306ea5c1d8a8719c3b5d5d5e39c074d396ff6e3ca20dbea5636efdfa1aa022b61ced06a56fb1d9f4b8bc944dd0624728c5ece7d24e184c73f65a693a4411f9bc639e4ccf2e1e1572338e7741a5a07e68dd4206e025d06ffcc6f42621282e9e9b36bbdeef91e6eb1db13f4369ed2437fb98c532024fa183aadc1737aa13e27904cbd4e328cb7022b3af08cde708d637ef15f4cb5752942060de24c3ed7a12dd6351f5eab795848688c56f072d9e44fcb5294893d866011d9a906437d0144cc90a38473d23b6a111091f680cdea29ade6fa4ef3dacee8d1c1d75f4e68e52de4a7910bb8dff04fbe8d133bd6bb16c807b38e42939d98c2db488e10c36cd33c78a08769279c8e05158ac7076e4c011d6c4b0904f4451bf2c308d88b946674f43aae4f92f04618ecacf4a552757facf96a0c5d33699251369527109d6c729beeccfbe6c68e0685cf9a81e1c835feb84f71751805039070a5f4c15ab42578b7b6742b324795dc71a4723543dbba863989d028744289a8d99f4ae23a44e6021322aebd9340f06714ba14f0635be706607a8342377b8fc630cb2370a8caaa41a3a9c992891ed946010d2d8ab14adb06158b4c06011732d1200b7580af1c984e67a296c90192c1a48e1000581341293dc0d9c89dfb24368b2130b10a786d0dba8a2ffe51214888e5443965b0ea488221ad9da111a0e9d937a4433b46d68f963c4176d43a6985cdb9b3a411a2d2a8c9f62dcb11021c78118165ca962ba670287d12715bdb25eb8941c52497b3c78ba87b87dfea9ad7177c4c3982e4e316c6dc6f15989eb8e6a7a92d16ace122434d6ce529b417bf9fbbbe55b63a2b575357e10e7ae2a66a7a44314f5dd4fbe48b67e40c725a53ae78e144996e4df8e40eafa2ec1fa51f07f8614537b2b5cc55dee6de8a610b8ca7ec175dd7945b5a536ce9657abbcd2ea51706ad422adbfbb99b9101156fe6c0969784acb74c912b70e4f3f679915b98b71c9dbfb94a1e151284abb813b95bd11efa7cf4bea15da3bf7a60c5d1fa922a340c02b5af552afa163671b0eb75b49ff05eabe21cbf1a5b73b063ee2d9f1022480d1c4878089845b51bf82a45cfb7ade864a9e7db43e8b839c6e787bffa92a5d1d0c6e7039699de9c2cd2c280ea27b6b5f55719f9f832f8d516fb4b08826ff4a837c46d8eb27c7b9ead367f1ba67610b1f976028fe1ec5a65eb67bb7ad42f82febdc3da2790ceea03251d3e980e2ce19b6f26bbd4b03399d906dc8b28e7a984900ec803ea8fd7e3df83a9856421831e89bced197ef8605c1476fc6bd0335bb66fea150c9c0200b60eb64c2fe704ee04cfdbf8378677e797be7199f5a87a6be51cae8d6686d5fd43777be81b288bebf240c8992292c5767475b6b1f73d7ae6d1c6cc9550304e8ae15b8fd2f6abe1dbd3e832ba88723e10e844d9e60c49ae9ef44504915e0201a49f0578f4ae38e8e8b7cc802dcad9e8231c39f6ba105fc0b621e9e4fd1c73cb419978e8230e61ac8f96dd888c3e30ad50a8b21dd6107c022b029829338646f3b2fd3ae835f2154fece43f815bfab6b6ff1f902c6bb173b952f931dc92ec1cfd94be297d5ccfbb5da7a7316d0c8f59c8c3077bdd695b6de546ebdda5dddc0be6ea1216a96cc6bc9b7abcd5572d58052db50139930902437df04dbb29e2670bb4cd71c7b276bd7bf916379cd1db732ab7272606dd7f94da368e4e3c75fa921866e4b2933014961bf43c72cb50bc9afcfa5b00ef0cc47853dbfc370ce01591d2c2c65c8d5fb651a2d2b70d1a422e090202e4b13672e1dc050108a6a58eb24eeccc2c3f3013afa9a5f819ac5e658ee7de77873cd0739c8d122be328d2233be8cd5b1670a98a796160c7dc4f2232c491fadbca02b3a28faba69b1114c840c894c9e1060ade0b705173e90ca51c2f80d7307a2ac221471b8c96e6ac33c98bcdb59445cd05dee70361f0b55c889433556fd5694b163d4695d9992801ca75a5aec30da0cb9a9ec4d3579bf8d126f075434e8b1f2bfb5346f3bc3a4f4379e366065da7ac5df7cbab1a8e830a2c01b2e7e1b6da42abe962d0c79abadc2c1f2a7ad2152e1097ca8013a21ee590191017a385ab25f33c45aa32c26ae6a7009de1e91338223a1406fe5398ad9830263495f89471d530c629ebe97609311d843c4ac0023b8c64514f757e299959a80296f3693140813dfe98c1789ad47407ec0ab7d5de6fd5bc1171a7211b9a6e5a209ca4dd2d821f5cd02de15ce7a1a65fa49ba4b9a73c472af668c8e9d3db38adb2345e121ac077f9be5ff0742ef12d74e9fc995d4ad9ccb0839b0cbe0f2bcd3d5b2aee9b172f5ff7492e4e4f330be5626422cd583b121197af51e7a4f09584398e699a5fb610143a680e1876904a6cdbc00534683973ebc2100ed0b6ee7b9fc39c52f8ca3a38c8ebb0ce39973113efc5e7966fb066fdb4a58d244bf5c9e95b675f6b36b3dd8136fc320ee33464365c84784a2882c14e5a803f1a37110e9af7221c8588bf71b20c17b34414ace69098aa656b7a3c97422fd7fb72a8f12b3bd59ea5bfc47c190f339313e9fda756f43c420600c4aaac6339e9bdc9585e025bba2e358a046665e9d84afdb30dc225e649b4f27db74493e3d5203d861eb9c843abb9d806bafea827807cf123c1d91084f6b24101574ac61e4fb2dfb909984b6a184f8dddfc0eec2d2d1b5020c03cd1137c5c752b87962cb970eb57a1dd109ca77388f34dda2446e06abd98dd3550f1547d6cea541d6eb99bc606f4be7a11ba0df40749ffa8478ed642e7af5aca22bf2d0dfa63a9d25c0020cb74e7f34f2cae0ef4d5b07733b034548125e3774120f1414df63aa5009ee7036d691940633e580ecc68f233fe0eeb533e18b809341d3413efa056e583e7266c118d457d14cd2fe9353cd52378ea4a18f6ce070176064aea1482492ced343068d87023f8c53837aee24bcb7fd83baba94e89b06bd602cf06472cce0c9e490407bae1da91fbd373c7db2010e4e86f09f95c59580b49d8459fc978b6cee11349270a631a74c9b823a3d50d099309938fae3e1535dd2416affee72201cdbc66a98ce82e6117a8b99b07bb8708adf5fc0f8f8c0d474ff7961146d1601f46f8ffe9c4bde96421f9e50c87273bc75e7c25d3e69baf230b3280fe47c5ae8cb9576fb1f56440a5d164a961227c6dcb8b28db61852bab813ea9afa279b5589d5611fb9022672c1c8f984364f946ede6c5b7abd6490d96d7312ef15670ed65b4ba2b5b84ba9563da2b7de1b9adaf2809cb5751d17a231b6372c440b356b540d04bbe22f05caa69359c19108fe5ccab0c9439c87f349bf399a700a08e9f207e038902133be1954ef22dd67c8e38c22010dd742bf40464addf4adc32067e0f181d675b4f894c62414dedda7c9a821a920e22201de5c1ff8288c89a28ef59fdde8621d7b057165629c816af3020e8fe802e99e17e879145008bb34e2b9ca862075ff58a1ffe34a02656031b76283e747be54e87b9efdc939879afc8b11f514b2c047d2d8cd00363166451b0741104219ff95ac52256913d36520606503a403967907bdabb77d136cbf6023226f449bcec805992a845c7c03b54cab3d1d4182c25b93bf1b6d071cd69dc6f1abc2b848841656f2b051ca3d5f6952128b89950f45a568e3e91d86e66fd556154e6b32d23a8c139b7f0ce61c0c57969e3797413ce58d3971be0ef1e6b008f717a8114512018bf1d983eed6a4d6ac9e0ffacd0fa32b854dccc6a6ba8cce41e1bfede71ee808e4cfa67339f9b65937f308d2d27eab15698d2676408a5a6dfb1e5d39ca951938257664ce9ac2dba03954ebcb788d8f02c78809a664d30df0b02169342d9fb0da05e0fb256356ed090f71b7110f890f77e54fd2b752423d3aaa1cd69ca984eff37309b77c46999ead051b866375ffeeefada79cc3bd14ebc738d453832ef37efe476ffaa947997b571c1f08a6aea79339e65de4b3b13540e7a1fb905d87813157849f35edb68ccc7d2bce71a31f9b032ff826c0f032d721403504325e50e6c257b3b75fe816e1099896301e716d05069f4b727f4ab580dbfc2d6d068e9bf222152b45aa67048378ef8b7539b9f49bcee491175a8a6a8f00bd3cbbffd954627910c0a52287819e42a449e87f7f2217f381cc83e64d9f16ac426e9bb843168b6c0033925edea0c0df41e2461d37ea7fe2e105ac959d92b95979b69d351dc36f4208e5b7ea373cd935431fe549e5430ca38625077b12a8821ad7c35504417f986ca96d136971f82e5805d6adafd419f9594fa352f32043120aca2486086f92026583ca5506084a051ab93e8073c9215e39a68be300e037daaa3aba7d9464c53e2f347051d02d7fb9d2a4e957984806ee0b5a1b2c5d90e0d81bc01a67b913e613824e9000580362b2e496ea2def7abb03b8350b57bb2d69f68d51fae4d08996488b7d85736e5c637e5a9a51d67a3e47d99c6566c57c537b4ecd9453becd8270ef0c20fc4898524b864cadbd3d8c5fcaf8e730eb0887d87eb357458d1b8f7c5379037b238bc663acf3b45255c451c4fbff46d07ef25ca41f342bdd3084e26b1f572ff7860b40d21f947bf0f4603bd877a273965e88751d0ee2758c4537b1e0868928f523f86411b39dbf99a2fb036f0d9eace4f2ec3ec80349e0be9bfe4f49f4f8e2494aefd5c7842a9e842888c8aa0c069e89c34c3f56ea07b56a6e924e78eff4b56ab0a3dbe5637c5cac4eb1d94c97ebfae6927f293b78485a4b7138c5d1c98afd823f895226f3478976f595a61105f9a85aeee975313b1a89489a8a5bedbc31a2c86ca95d5615a7a181dc85e535413d15de2f2ef0c4d67fda849e595f758648fabaf984565b7579838e11555e29f00cab97c32c79a9c990d47bb2b78830053c92c4c5086a24f17aa5684dd69aedb74d761ebebf87b6ce20ff74eb8f1881d9d00fd1fd3a64c9a3341300cd92dbd7f35e9334231216b1eaa385abada8541839c3605b8513daff818be4171f75c3410fcb2b718205b568a1b969e87b5f0538360206594f613ea5e1c93063f335234a3af6be61d3d3567d85e392510a70732f7ea54a81e9df115590d8010e322782ac2086d2b26ad239b8055252338c9081f6ed8d9f383d9e0eef5f176416afdd079cfbe0a9ca47333592ca342795ad57d2f8cd1c2480415a9ac9ef6e4141cd6272e86c4ac8c1a6c45d60986dbda311250ccf2cba31f4a01f951b9126258aee193003919b79c3a25af713c6a97f23ef8e0dbd5fb6d05ea6b58bf6f0181020191ff8f16b699d52293e68fe58ff41ca412e72e0c5d12ce4728e5a612a295924a6d488992fa2c76551d9127853a791b4f6024d0f62e48ad3d03d7f50c9690625bf34f4b0f3c2bc362887b64daa600d21109d49d17e278a0460e5ed5a85b92e990e48391d569c422000fe70c988c5f464211ab53f0502c09cba387d5b671e7adb3b0ecf818ce80f77053830247c13458072f208cb64e9407875427f9f31240ea4abe5210a9a3ce479bc46c309d0a9546af776a607aa72138733645b1c2576f17c13279664d0d583505cf435a6c17ee464f86a3de2e16b3f04cd56e172f13fcf89830e2e3097391a7907d63e1fefc77a500ef8d63b3c84030e153c9e00437a4aeb3772e4cc5b370e3ab954105a7404e04500c5d1dcc93f61694b4107afb1f50be8d4eff52d64f70b3b25832d6d4c9a3da5bb03a42df7936dd7e81f0110714e492a382efb3966cf90c2b171bbfa1db84523e1851879146fef87fdd49860ca158163b572f11329c65a0116a94ada9b5699b141bd1924962a9322f66acd70d74ba018a457032476e2be9a36777f11f01a1ff6d43b20cf33bc26d6633c884eb5da0d3bc5c981dc28d30a1cc19ca50f32cae854b9273efc65fe7914e450a3a208839e6f9eaed9375d8dad636f3e292689d3ad6cc8c8f71e5d2046942dab8b18b50e43d89c6ec490c5bc8f4b586eee9a6533d07b5c7940023fb1e79bb539185bde2b243d063c11860819438c47a3ee454816e2101e0d6b30f65ba73f6b30b0f234045234324a315e9ba43325a0b4621c6aeb44d9a4b9f4e6b0b1d878da23f5b787eb1f5389be395a8baebdd4b7f03bb647d8308d81d3495b9655001b62b170f10d599c8c361ead422c9317f2195a9ad8a998a843223fa5ff27d513b604936ec2234c962f3ca841bc8a3b580e1318a27f43b67ef4f5c829cdc0975e37b398b5d04e414cd0c5ccea1b78da4dfda22f92888369e26e3feaee4c6cc011801e1bd6bb20829888804f89adfcf60b044bf23ba09c35f960e8da4a0d027939d965520725aec77d3581a58f6d5f2f26f8ad7109d77d8944fae33a506010d21d1038d71675c17f0125684e3724b5026c4518508ee3e6222c75e086b22a25dbbf55d6b76857f318ff098bc5e0e5ffe946c7dc9cb449eeafbc31cc113353f90d34036676e880145e156780e553c6bf35310abdb240f34a0b88b2bc7fbeae53a2006c82f32af4d85469d19d48a910462556d55925bcffca38c42bc4dff0482812353f38d54501233cc17eb58e3ac753ccf3391f62c9ab927e43132428ff2979208bb1c66dd66dfecc21f96001244574110a3ed218fb2c65b22be9bf128f59f4a60e79a71ff66f5c676609501868c650afd2b7f5c873f1eb14b257b3184b937e604e521634797ab0312b962d1b29ef77801c57cb5c7df36e587fab3b536028b45866b9bdb21110cd5ece9020c03eb2af70a7328ef1bc40f354ad247218681330b4277fc494eb462f73dc3c5e4388d8f5da636fc6810235302a0bc189e867378bc68c91a687e3fc379c90a69f734cfc9e1865caeffe93a1931ffe2bc93d3243483ac2f02a959c94aad4fa8d55f19f0c38879bdf15c45f2b83d5983be804d2542efa7e5cc0ee02dcd1f93b174f642ee392eddfc38f50ea9ecca8f31721c78321153649c4d8fd56ad6d2b7bdd6dea4860733a5013b2dbd8fa890df7abe3b97eedb55dfee0ded430d1ddfb135a33681cb3cc827ffb2fb3fc7c0b09101cccdbb96c3046d588029eb69720c8c48d1bbb4394f46a5e8259a396646a6406795507574dd0de1b4c318ccb31a61d6f2a8f5cd326580983e06680dcc37a1be5e1598ae653344e24e5cb4fa674720730092d8e350a2a96139c68486fefa229c5f971d44ed9a85588ca285195e92cc3a4ed2656be4aaf3d462d50cb0ebf59b9113f49b3047963c0faea64c5f59abc3bbb689f2641166aab52599529ddca292346d790d6c46595c10aa7d1248d2770f678b0b7cea696a80d2cf6614cb7958ead72266ad0bcebe9dc967d29e25801a810f775ede5229cc47e096fdad70a89a23338b0a444769b4be3e048159790dddd1ab534b65776845af99c3381e0fc9c055c4f704d52e3530451fb429d32de818d9ab5ed660847f50953dfd628288c61a0d2cda66b0219dfeb8cf12ab64aa9d1a65e072a97089fd972196039004eceecbdfb7f65d51e6923f5aad64b0b24cc456b8d848c9d4dd6337117b9f50a77c9e5a9b350887b766479438c47ac4a2c3ec048fff4f8fe8ad5e8269e0cbda8afd8409950fe003d1e3c51fd9a1a11cde9fbc542a9158d7cec91737ebe1452f47f65e9a7478301a00e739607c267b68ca981a58db92eff59e97cff1380494bd0556c6412bcd85f25fae8c39647eeb24bed6430035b2f0c97251a9d73f928610ace662b210eb18a081e49036d181619452103d64ff35cb8b6d139ef9960e3d834bd4f06da529ca8a275da7204b2f896c95d3f5dc5d67c4ba17c45cdc1761d325caa4c61926c8cba9cf92268e12c64292c035b3b242b8dcb9414aaeef713a06e1cae8157aa708e9e1f3fa1597809af269d1432522c52f9930c09cca5cac0b56a50edcf1b030a9dd943469403545841d66cf15ceb21eb4d708c44a2badc2d992d821f8ee365c2fd409db65410060a9c3a5956b4c0682c7c88ad9b2892882e83ead50951c0b05345887483263658586eede6e638293f902f629b9fc2e9de47e7a0218832abe4ce845f0ac3a26b1025721a6851577abb07fa0b4a6db19f21539839e47e61ef4e5ee0fefe694cde35f71f3be091b49cb38eced530bd128b4786b1c36d4141e465706b5cfbd3a01c32958d976fd4a2adcc47c5c871f6e32a89ac05d9fff6c55978b0e6ce0b067ad796ff091161e03c24cd442b907f82483e70faa26bef4855fce7a8b81b887e30b3dd0812a2c7c89064e317d0a21a96d40c55495ca0cb1c15d1de7dc36c434b8a162268c33025acbfd5e5c308eba9a0e0a2f8b0c104c1efa87044f0d877760d07675a1a1a2b29b2b6ad3cf0db5ef1b5c1513275d64c08d0110f40df363463a7b1108441d6f226b7627eaa29682f5b4837fc7939ec67bedc2b112da8e5cd49b36d9724b29654a32a305c605580633675e407dbc9f0f73598c5a959cd35312f346ff4e00c8d2a14ae89927354fcfdcd63ced4bcdd333bf953387e7306ff4631db2c4628c2c45980db284bd0664f919c06ac03080915c46f25380d233df358f4f354ffb182fd33c53660e0763dee8a741e27673e773079b3b1b28534cd9c780178cddedde2adb2a9a19d15573d61d4c98f08b18f7761cf5a1355c8a25eccb580f6ed733da74a77a46abf8989ed1d273999e51a7e60163e6a058e60d5ac3620e598a301cb284fdc762b05a6e9b1a6dcafdb44acfea12cdf5acde9aa7bfde68ae67b549f3502c3347e561dea8d233faf494eb1975a25c92f0a49e551c2ec9977c29f77b0e7e6b282828a81b1930d0e66f64c0a84dcd4b65abad671587b32df5ac4281b274eb596562aa3ccc1c558879a367354af35424a64e7f135252ecc06091bb7631e442eeb731f8d318717ec555283dabb9e66921668e8a254acfaa537b43c99529fb4f1b63ec19bb4fd6a69e5923b54a7fcd51b2e672bf6bb448467a86a53ad9247b648de47e5be4326a91e47e1adaea176754aa3941f0a967b6a84b8eda92fb9fa05e8a7ae64b68699eae22f777177bc514b99f355626c0e47efc25f7afa078527d7d029f5494861ef863dccaf4a77ff4e7a4b34e6bcb13832096900eaa11d2d4fbd1c2c2613ce757ebe8fd0e8ff298fff0a9d679cc2f20c914c40c9e8e406acea134e7e9f86335f4340d34d0fdf029fa148a58f67f4f673e486e9cc1cae431c779ec4a79ec8af15807227d1a02fde8c9e1d310285c815264d94fff474fbeab558ff7a9666808320181513cd67469385628ad777dbd6199bef1e58e00be8cf17c39e6fbb50b7abebcc9f70ad90ce04b57be32d0e4fbb3672ccbc1df4b9694ac388f5526f0a19095a94ccf58456a3d6311350f4ba8672c23cdd3335651f3c83073b08ee60dff0d9e159601c087b5ec2ba12bc675fc6f0884f320ce78a5721ef677e732d62ee98bcf97938a4c8932c874c6973732254001466a0438cabeccb1dd60f0654d5e7211e0cb1899ce647a5be1f892c56a62ff4b2faf588fb31b6f0f224b8cc79c95d4b3b64d9f245bcf1a27234b5f72022c657fd6ad67fdd43c8e832c3db39af4ac75cde3df24fb0cb2c4347f4396220db2848d64f9342f9265ac27d33c48963db9fc8868fe7e445ee84183ef853cc25f8d358738045ae17a56899ac77b566dcdd3b30bd53cdeb350d73cfe44b8b08b6ea419ec95167fc5f0bc5aad6825ea59b823f20b75a1fa8a2ee1ae67ab772bc29d981a5f7abea0c65ff0ab114462c6a08c00ad3438c48cd92ce3a7cb847c1802d91065d41743f0c355e83d6965ad1eec7983fea7eae92cf077385d916510482fec8a71190a8ef3fe778783637372c86b39187bc6c0bfa40ffae2b38ad8bc6f5024fb0f600487e819412b1df3e711c00dd6518d3fcb883faba8e603f07a001065b2f41ce3632c23d9295db1c015183ec84457f4de003da02f8aae1dd455caa801a9640799ca19b90499ca4a33aed0b942715948a2d083ab4c94ce564fae77e67bb057aab1a3608f3333c3ba38aa63e3ba2e5f8fca37e7af0637835be3de7b2ff991ad1b5b0a27861fd5521ef34a546d332ca819ff91578a88fa804c54c76f25ca9d716c7c1802fd9852f2eac31068f5330499806c3c68630c751ed2d0a69bec47e37ad5d0ef296b3d7d3b673865aca7df8a31654cd9f7942c7f4c29201d43a9907e54b8a33afe11511d7f9b1a567eb9685ae20c2b5c7de18e82e12e83441ef474561994c35f85ab3004fa285094cb569fcb6cbc7f6883fc113f1b1ffde89472a7945c57e595cafe1a643082553ce65f6304311841278ff99323f8e4a01607698c2017077550d45fc6cf20817288b80941269c71e61b90a904a3b23fa88245b94c45dfa5e847a94fd176c0f900f6f42989824fe55a83f519f118fd8a8a9c6c55ec973b385e5feac81547756c56e22b5758fd7a7f7845fe117d44d98db44d45da902018f0cb8cf9bf46508a19f3778d200ac02066ccbf35825266cc5f1cc148140d792273841658c218e1c5694b1159565004115472405c7962450715285541a252c39419a48c60089e4d640ea08501c214c08b8e2db32c398ae880ca0f103e4f643a104009071207356c70c30c03b861480f191e2d0410e686979d2d01c802802274a8c480b0f144031d3250aa8184410da40d338c360c793234b4b820cc0c2f395b70b2dc1421830a0c089b27353ac4507a21b96aa0313243cbc81091cc8c16ac30a197d516300b56397d2ac042783f5c9cc5a12ea13024873d2c27046c8d78f492f0d4e35a6b3d8a6b2892ed579287134d6c8ccc3266a70c1110a4a0cf89e79c78b4f6ddddddbdde5b6bfd3166ea23a54e8574d0f5aa049c38c432c7dd7d5eaed35fbe72adeeee3ddd638d2c27e283743e6db560395fc3f36ac07c622c7e2d23b653f6f4fc68f7c8b097836a7b38800110670535606a7ada04f33eda247ee90e7a7764a2d2d19d78cb889dbf195fdc7a9ff78d2ce0ec51a8265c319448a1a03c1ca617091480386b2d3b105c28136d22cfa73a0a855b0108ceaa9e7d5e0dc9b233d581e01d275de132be4dd4e78ea13afe38273ec1a05e172b29d31d93dd3d1cee12e16e11eeda70f786bb381c13f5f1a4dcadce4aedc6f85b9bb5d9eccd667136cbd494c350f586a5c41dac8ef95a6c08ca12619cc8046bfa5c85cafee5a88ef7d862454f04fb72358f1461b07fcc348588c7f28ec1d4d6384fca3da9eb38a7363ba6092a7bc550b56928f75b22da43e597cb343c96730ab184ddb1c44dc323f87d1f6b7acc82aadc3f274f69733f0d6246ee77f730d94ed6956a640167fc5f2e973d83bdaa1e65a2ef4f593d6ff4eff0a9aa51ebc2414a8a888a29a618fa1215b5a5e68536eb7b97ec52e42e0900717a9041a66d39312603f10ce48f0381fefa95ec006d3efd201a1da76de138a98214d9bf015ef9dddf7bbe8343470dec32ffde3ffcdd8fc41ef3ae75eaf453fa95e6140a2c6d93b35e12745cf1bddd8dbbad4889f81215f1d36817ea28afb5d6d974805e6aa1a8b2d64a62c74e6224e06c1288e5d4cd5ccb24fb57f71ef7ebeed527099c3ebe75c64c3801fbbf6064f68f2d65ff9d9e4a577929b6e3261cc9fd27b8ecde2b75e655f4d34a4f910bee2f7a87e12ffc0b930b29e8a53e8f1043850a2f7880e2b6a379144f4cf0e599fb020bcd02629771a0661fd43e200c21189220620a2949340fe836902aa483acb751d332b9ac40be7c9fda5a3fcfabb5da9da11d22cd43abc57fc71da1e6a1ef594ceed43c5629114baf90bd94524adfda6b2db563ed9da1bcc39477781d776abd3364c79d218fd97aaba5352ac059e9577cef1784e35efc1b344f7dfaeeddb1a7797cfafdba01bd54e8d21672758ae3527086f7eb7871e4199577f89d61fd1d8ec36395d611c7a5f9ca7073d7cabd72addcdcbd32c4102f184c5c89ab177672adf8008233601deaeeea8e9df2b879ce1b340c41b712c51a02f5ed495934ca5a299db5f55e5c57d5f370cdf98775f7d3acb51ab1d8e77c4e0d18dd4dd8aa5b9c4e9c38a1710495c583ca11f1c312fdf2a4c2e589af94f14375bafb87622c8ad4bbbbbb9bb6cc5faa872d4d7e901244163b5a4973f9b9bfc67b0901145564f7a64aa078bdd6bc619f06859606eeb434f7945e55daa2d4cb0273b6e3ceafc0a4c09c2160023302b3892c49e480e66703e4983e73f6f3d301073bf96de4f919ccd98f53a6aad13cfe7dcc66ce62cde3bf239a40755c670216620897a4240936a4759aba9a18af8aedd4516b2da5ded45dec5d4bfaa0dfd3b310700f8f04abe362cf45d3bad6fb9e85e0f5b82494408179c33f044b26fb7b330b0ccc98abb6c8fe9f15d99f040acc1c1728a167270c59d2abc8fe74429980afe7b289df044a71ed9a1679b0f5982ed35b94cd459edf58ccb6a277797eb3a09b8ab2c1e4f9ed65ca58ba2e797edba80fecd6381b502f1be6ac04f2cb1e419edf219832d5cf6f10cc9909e3fc960186393ba163c8f37bc894d5d47a9681f2853c3f88cbc0a93c2797a965860e9f3f80396b28b3e420cfc7e13f7e63cac49f3bde53e60d00cc593369d0b2995947a11144b9252770b9256188c0316cd626e507294d4c20f1793bdd14db11b7e6c3cd09babbb8a2a71c0c452811050e8b2820d1114a5c51bf1d0b42db951fca5caf89cdd6fa68b5cb71e1a105366ca2b526a80871612841c6ab55a22946465ed31424285e105fb85bb7bd5ebdfdf4eba84f524e204492ca7ad6decfe692caad6b82daa2a9a989195cbbeb95c05b11e5b694e9f2352404da6e5472f932a2abb72cc49addf1a04b38f946979413d8de483f1c5befd2ed5c363a1d72986221be5e4bafdbcbe6fb5d52d4a7e6fb5d39dfff22a23e387f23e3679ef520fdd2a5034157199775d5e572989ad220d4e5708082e572100362eaf5865f467f063883f4c0f38ca7f9d790ac73bb724f9a11715766060d48712e43c8f7f158f6644f851432887f3ca66387c7fa7f5cba95cd653337b4e49a7259fffce80073a60efd9c7167ead0c719754c1dfa373532d581d1b7195753877ecd88eb8cd1778d73c628027a9c90c112480669320da942900c82646de2b1db7def9d98b47e8733091fec90c7e74b92aea8fbad317c3a7abf8396ae31afa15751adf9e8d279ac3f7b8fbdeb799e85912e1dadb75ce7f227ffcc1c9d2dfed0034cd62f62883c97477ae099be4be78a7a11bd92dcc765738971d9bcb2e392fbc755c6a3b4f255cbede56b28f7cb08b5f7c76525cee599fb75e05ccfee3b982bc4d2a5cbc5c8f3ca105064b1e632d9cdfd740971859acb9f992705914b8f9c375a67bde9709f1d504d8383ab71d2c00ec40ff4c60d740662f920defcfd6c5a624a9e61026eae5768c8365fd72ef77757dc4d012e2bf10d0fb9ac57b6dc4d6ec45abe63e74ae608c1be46298a3551a83a39ce79ac573697952e5d5e72d9e77ed78efad41bce8dc9576c91eb08f6f4bfdcc7a5739d7e0f7f49bdef39c3ef79effd4a74d97dafc763b11d9613f1f1b80290ef6fc463aef4ce5c7fd4c83836215e5005bd962106d05611e74fefe64dd91f539ffe89e3f588e3913822508fc4f19ee68368f883e078e40a3dfac519d6ab30c2a405118368942483ec506226354c0ac14f3f28bbc8201aeb0771ea38cd18c2d824ce8cb1f187ea349e4d6443511d7f92650271d268dfe32fe753100d8f41b4d5ab46d57b230b9dbd5f8d1fd0ecd5f07f64902029501d7f13c85a6e81eaf8af30c2a4a930c2a4a97e8449fb6a73e7d99a282c52d9ca260a47cf5ef87854fd6af448163aaf3e1c55f0bcfa1ebb89aed0a35f450609a27a15d93872844913ea176ab2713feb0771d23ae3d9f992962c5b0ca6b58ee637880aa1d723a212b9185326c42fe7c010e8e370597d229696649a976eb8617c3de8fdf0d2073c30e88729f59684be50225346290b324a60bc50d275a1c4c418252c5c28a9a0054a51b6507a32a59483164a4ab2502ac24289869d12912b967c61c592a92a968411b3a44b98254db060c913982557a4960841c5121fa658d2e4cb12a5a825475e9684a0cb9221299484a153d282289454018592a827946ce1a224892d4a8870424953134a7e8052c203134a48b0849224257a28a9c16ac9d65a6b2df63c6badb5d6a34a64c8a2c485246c6390b05df1649be208db13586c5a8cb015e1649b52840d052bb0e188b031c9d9905cb1d960c5564405b6215592784125091653924849491245539225864862841049aa0491048828499c009104871424b1a120c908989280e0871e493c906b3d41aeb5d65a3d4a6badb5566a9194f10189165090b0e00912299c2081ea01c9113824564c8024081e9040d901890e4d902cd10189510e4888704002c3ed08184c8e6c518223624870c4cbd21127948e20b1e4484ec991216c474e90e4c80e488e2c1d398294744404484762383a526ba3242eba28c98a1e41d297be21894bdb9094a58d24ada06b4892d2224862ea102499a089924ad034241d69102419e90f24cdd045925ee81990ba681990761d0312153d840445c380a4441341726a0f20516921a414f410a41efa05a45bbb8094a46b48378481f401309084be2f8ec87c658eb2f8c81c81f9bc38d27d5d1c31f18d39c2f27171a482af0547513ebb45b6d65a6bb1e7596badb51e3d7af24d1de5f06971a4e4cbe2a8e8c3e288866f7744e4bbc2e88bcf0aa3a9af0aa3309f18a32e5f18a3263e16183d7d608cae7c5246427c5418f9f04d61d4e4fb62a4f44519217931aaa18bd10c52180dd1159189a2480b288ac23c51e4858b8fd6ddddddd2a22db8d65a6bad1ea5b5d65a2bb5599c28a2092a504030f164091d9450d28294a586248a660853941c397ae96a5174b620869c6c319e2c15a89b9b52c4566bee12b9e0e1a618e12427e5242586e250ea435e64be33e1d4e6bb91e94479fa2dcf2721bc98f7ca104c72e951f2a4de2de5b26f31b373f3dbc9653526e983de08a133423ac87a2508814b7c9e0f5221a23feec6d4ed25abc76aadde65e726b190ce9c3cfee40258e7d3bfd307056f2ee95772ce9f73ce39e79c77de3bbdefdef938b6dcbf53abe755afdef1478d9ed89038f3cc1e0c6248f6b809ffe68382681e11f182d7db9149145d42744979acdf62115d36c37f3d089265b7c62029b41ef4561857cff3bc9750eb87ccd47cc93ebc9f79878337e177980032d79b07c4d2a573e96cb04dfdd7b746224fdba1fa10bff30c81c49b31b4aaaff32bfe2849ff7e0bb95cbf0422956b1ded5310549966af55553d2c0281ef915e5006c70f3a8b6fc7d263cae5eb7f505d16df1bcba02c8a336a1d53a0bafcaf039cab6fa4a91fe3de9ff5c1fa316415fc99f7fe860d88f1f5a73feb2f59ba2cd5e56b555fc9b25e1204fc1fc9033fadf7556349fff50bf0c70eb824cbc98cbfa3ea55ef7508422571eed71f719e8e3897e4313d16c416c4b6838eae22594e448ffc4175332ee9c31f933ee6df3a969e93f5f535fc40fcfb34e4314302a139c64fb282efbd870d003f46b5f6d68beb05eb7b0db0242533aed77beab97efd5ac91208cdf77f3cd6f5cb1f1ddfd33c382580ff8e34af52d13c48a1587fc918ef7a30c6781dfc18e3553d08132ccaaeceae9172f1d8bd0fc2242fcdbf2c3969fea321cba04c55a38ffb81889f66bc3fc3abfb1bd6135a6e2028ab1eff7cfb37962c7f501dfebebf2afb37372c274f47d61391eaacee5525f8e4bbb5240b9df11c31e9e37e20defffe5e900442f30f1df97b0cbe07fd371094efdb113fa5af1a7960725e0c1e1c4b21f92bcae5eb29f983eaf2f7f75f5fefa0df283e0663d902537e3d39962d34e5d78f6319c4965f64d63163860c08ca3f87465a0d58c3c38926e1abde5c4f5987836007a2a53a6bbdd77b08f4c343a04a32a9f920b6ec7d1d4baaeb41bcde10f1d6d77b23ada48740afaf197193d7882bce6393a6fe9c321ca319eb2f2912b9d2a75c5fb817c4fa25bee1266590ecc5ac2b89ded310c8be37ce4cd9e0660eeaada6d51beec7b399df22dd8a58ceecbe9d8a2c83be999dc77a66ca6333f7efa015276936e5262e4381ea727d815e08f4b2adb72d5208d55daacb33532b3cb39bd9cd4c1521f1d0934b8bcb5eca1548f56621ea00f1381b5757940b0d1a4c6e1e3fa8426790c9cd7b37ef50983c46ddbd3969bc1f4f141287c4da8f58fbf13cef7bc209cce47e9b1cf5697d4701d5c39d883a76fcb8f0d3dab9a6c49a58136b3f3997aed5447572364e1e6b3c848786f0d01d237adfd93b40c6a30bccf4f00d37b9613911bdafff3df879503cd61e39019b0fc93e2a738226976ee6a87189b1699ad9e10773c6d6d79195bddacc2ef7d71b2e8289f0d0d06a657369f15818a20bcaf5048658ba74aea721ead3f29cebed0bb1c4434556b6faf545eaf3f57ba84fcdd7ff421170eabb13d12a8916e7a80ee84ec41a24aca4081fadde6e62ed7e29d65c3afa249638576bc65a44756c142a973fb9706cfd1db14daef54375c88825be795d582fc49a1c2f8789cac8a9919153e375d16404af74edbc4becc9c8e9ec918da130519f9b6f28778ce8b9c4b755ebfb1d2e824fc0e65b244e8fd6cc08274db4d607d1c0cb856883139b167ee7c49acd8deaf4d717e12b7f9010cb7afb11a169e1eff0fae58f0d534b04a785a44b47bb2d10cb95cda5c3ad5fdda84f0ee9d2d5e0962886e4dd429cb974e96e535aaba6a285e3a4d1184b315b3ce49a126b3a46a11d6e0dbf8e2091a785e40eb5ac4f735f08f47dde0b3b893867673bab739eb113f69e35d726b5de56b615ce46ef8a6965bb53625f40ced588d323fcd6b7c820383d5a4178989852a3b5c8ab8518440b3f88a6c2b7d6f4c40d9ead694b11c64ddff714935ea8142b98b0921832453309010800f315000020100a064542b140122599162b1f14800b7a9a446450194723811c46310c833108c200280f00000020001043885184e00020e13b90561d1f544ae1206b39ee5117c0e347c43645a3f0bc4937104dd45d8376677d1818998f7adc178f1494a6e58841ecf78b706b055ef94b5edbc1c4c3aaf83fc9687fd5a461b6c39c5a903300787e432d75df858b17bd9c244c7fc893af165e5959ed245254404ae6ef88dc7aac930fe6cb43755c1f56029849806aa423ef8ea7a70cb6a87415f0d81035c8838584a44f22d1e75adf53918b27a2101fbe3bd599d10a9825542a6a6f01d46b5bdee960b146b83c9065ae3110bec7445aa275160a27e4ae71cceda128c5bd1666320385f4544ed9224fb26d8a876977c999ae582c52815ec805dd36754454da02d100ab25dd4e5061855354d9ac66a2101609897a39d035611dcb3a542e8066026ad085bdf7e4684d6488db435ad43513b253c818e587ece1881e7ceece65e8d8fab4e382bfd9f4b781facdb0fc2c19dc420de59e08586277c3d869fe1688fb23852c24c147849636841327a59767e32506e83ff325cbdc8ac2b968aef3acd341547fa969604db23c21989872c824e2a89d9d6bc124259825eae19118a3304adc591ab5b9df30e1fe2c82796faab8de41109fe066b34f45f1371e20489bd66b528b94fe1601db0e05cfb031529b8c7d3c14a54328470eacf7f653fbb387a893b733c90e0a368ece423185054ecd8740a6b8662c2e593c9ba801f879a79e2b48475b36f446d1ee29da40dc1d3a6aa27b662eaa708c21d78d55778ebe44d46bbf3fafbc490f24e907551dfe1d4bdf278a60beab253b74adb6cee9fabdd1a9360ec187b3ea21a8e88c6f363f46982949aa6b56085417ecc47fa7a6b44105c64fb1d6b8f3c84008e25d8d6b1f563242a1e771ea20c96c37ed762b12d19534609980762c803e95f844ec223c07f5acfc2f634ca6608fe852ad9ed3ff4f2cffcb2bd35e2d4bc2addd83fe9c3e8044fe029c75da1be51a5977f8da777fafe73a5e7391ad20c4178beb13e82f979b046b443b503e85422a0146097fabf4b2fa3b72c290f54280d34982c24e0f3e03e352088a525115c866a1bc6245fbabab13e721c117d86b8d847799046709d9723b74cc626f2cfc8812d1ce8b03f656c659ff92b4cb3ada28435d2464f98d18c12a0f5aa3ca1586caac8507aaa5e7afe9246a35a6a3899a61b84bd14265b4a55f10fc7aa3988c22ac9368832a766cbdf143ec1e0c65156277317086f341541e12be407f7a6a13a289c5fbd5ea33acb0e4aef6ae01211094514903b444e4c3f38c245906ee1dac343ca51d4d3711819f42e7cd8bcea266d59c55937255db57fc3b7d23091c1be575cb50edd87da16dc0dd5c379bc23640c8d65b0892f83a337eb410e642c9df80fea19ac81d9b2fb015937ca525d5b44cc9ee25ecd70b0834d21cb0c5d2e106828ae48bd899233975f2525f5e13469076af0c556a5e4d877697e82c3616df58a0d0a715860f3f449a251e52cee36f06733a27174344114acf1d72e7e55a076bddac8d1e256bc65aa2fcad0c853b2260eef71658d88492ea927058eec9f3184ada0844448ae203239ff118ea41baa208b5562dabae940b8983407fe0f81fab92462151e11153c1b4d72a0e220d1efd61ca1c5ceb6abcc35e917aead56692365f4e0c68214b829d5a6c6dd3994e4c9c89ab2b580eb82fb4004263b7628a91289c408d0ca514dca925093abcaa7292d6a07aa08a0c254af9fb38bed10ebfad8da5dc5ba3d7a44853ebd58759fb0f5ac650491ecd0ecc0e721e9bc34cfba31c925d0398b9ed25fca928911be7d91f18aa83336ada5d231392b4d081736bf0f51394ccea894e4407ceacc56071b3829807d2602811a1a4e249c0aec2c7266502644a7f10d70704192a204e8e67c4af38ee933ece90d308d28f35c1bd5f5e0ac5a3d8ec020555113d93b23e09d40c2a36a195681f9c454b3c8fa6ef6b5f0ebf8ab09f7e8486b4577d16c8794da591f839d386fd870e19e3e9b81e4ae289aea77142b0641a4a1da2e715496deae4c4c8ecbbe88e95985bb30196898329562190b2349e05aa6741f8ae50f3785b4ca70d18f1cdba597ce9e7987e9fefa489c80f6bd5886f5e5a77c807c95874195c1c3dc187462bda5e83a8685f42531b4271f642358faff20aa3ad7140acf348754b67954e2e3121a43f724bdecdfe37b4005f1171cd2f81efad0b3d7cf81312aa823b5e60f1b872d17190e27cef28b4662468b4730214b6e6d410272f4b796c6af37cb45fb91a2de539de1efa4bf7bc7ac1f5719b7b1e9f31d0a6b08952c74ec2c505b5e9143276eebee1d8263a6cd9f882f46dc1f2179df3489b18be97bc4f9b395963bbe9cd09c2894125bfbc3c4e1630d74ee8ee8df0f4bcba2903e166513cac27539c07f0908d1ad24e346e351f40482d71a09d527e8a08b6a665e613355c5129d8c65c61a7da8df0ae8dd11576c752ebe0f8375b9a185cc2fa7e715f5b3de44304e31e2900e9209217d9538a16b6d4acb171285f50eba0d54b3a8d7de6e18d261c5842481e30cd3194f17a8c8e0992a83ddd50f8e855c4fc25193778415e84e1aef4c1436e08b2b4dd9cd233dcf3d412c3cfe2d6458d52c3ce96e854359f5b0e0c5fe9d4e22a940b4a8bd6567f43e766922c23e8a6c8c9b37630e3143b61690f60db4a2953a89f556102482fc46ac2e2357e86b32ac4181f4fa45fade1ad73d14d33efca6f78e564fc8aa8f293681a2fde25cdbf5f343d49562fd2bf09753b1c2e20239d933e8bf78665cfd551ac2068b6b3aa78862240b72249729463e46b60adf36c1601c46e7a16cfbef5a1ddcd6b66c54a726c46169d5c3b38d21a4ab5f61c1625d42c0961ede49284ff25eea11702569e1c1c2eebdb0a2fd7b8fa135707e85b8c00114d9d405a4ab6780fc5240212b829216c0b8821623c2323002d9ce76b000d3892a6fc91a62c61a30ab74fa249c2a5a089d307efbe4d5b60b60656bada9bf0b29727ca505f04e941d7863af76c187cee36fde90c50586154854adecb530300c6d58a2590275b3fe87b392c97c9363242c80bca1b2f8b4a1b057767202f266720f772ba9852edb22aa4b4a1852e97940bd43c6cee86bee6517b2bd7e013f9347c67d01be6617b152d194154caa951f2429faf5e784558b051080b2c4997f8825a337d2445349e08894d215e7c893ca6bfd68540f87bf6fc6dcea1131e1e093c84394cf2e19efc51436675385815318888dead34c246f4ca45a234847ffa97a93f525fe31ce2e95371ac542aa025007c1de656d4eb3d36fccb03eb3a413d1b02c0f2d9a3048c5ed799c98b6d8d0d0af9c62ea8288926c42ada895df7ca5a976c385d24a037c3ba13dd0a8798bd08884397d995daf50071b9e38b88e55066b5dd51fc013b74e608efe7a3aa5a52057ee1f685c19cc28e0635df5c52ebe39ecd79ebb9c1a9974aec2f27afbdf1ef3bd7d80d1168c0a9c0febd9ad47b8fefd373d2d3a570c7ec28ad83f4c1df5cbd36936679cb60edae4c932761273878327348417d5bc9ea6241eef00fffcebbd66f40e5288b7c1048a239d676cc4e0f3ee011248cfca3e1a5b3801c1ebf4d05ff9ad4ed79d3cc3b5158199e1a46562616ccdd6014e18af24652a2093e042ec210a045c237e6bb11a006861c57fb50b7ef794a8ad44d7bbebe873c1d3e10e37979e036359cd67998dc04a8221a0e0be9af44a03f56e697136a0aa2f74ad8184879e2ca2016c17572eb0b191df6014c44ef1d8dd0a626fe35635125cd459341f6cac788a476d6bc0c3fd1b3fc2fe239b76e7f4f0ac1b1840a45bbd7714388701be31e59bae040c1125f4e7f183e1a4958fba6c8fb459e6a515700e76c00fadcce25d728b8493b1ffd3da240a9067009fb910144ae4ca8c6a8eb27a622576b69df4129a74403578ee507794912e9f451fafa9e027e516894194181ef554c3b0d1d1e1297dc9947c8f1fca8a240fbb3755aaff622fd6c3a79b59dd86c4d6494c0f375572169fed01ea570e9eef594a00ca24f3a272e27c47dfe73ba1ce453821018adf1130590e36fd94b86c9fe06e96c1f8ff5e97ca932bf208069cc554ce72a8e524b474dad6d5b46495a3061e8458137c56b405edca3887acf0bd12b20279164e61c195c43624ffd74b67ed0f8202a7f92ff1690f23fe8e95c56cd97dc10bddf5130d6afbdf5dfb86bc7d4bb8a4a6471b67d7def2f4ee3ffeca4a1a73061d7bb1a431c82e6be896447a4ac00aa44a005d8be614c13063da07c2788e9bed6713a34103ce05523a1d8e1914c35ea431d0776fd885431c8f2f8a899066aad614228404a7595e066469e7d6e221ab747e23566112114d1c06ac9cd093535d8ac62135898eb54008f11e806826d725ab2d8f0dace81437ebbf77734ffcabbd448a26b3cc15265006cc13541a0556e7043cc7140ee63310e47f740083df899056b2b6512851c2b6a13f89dd8082a109683f15602b98004f2c7a390829b16f0d02e37d215d657dcc98aed5714740529dfc9f08ce6aaa73e745c8d5e1b5d210b5e62b71e0262924792371944027b0750e37005acf7721bbeb1d0e5d60d948daa5d02d1805bebf86c15c8419d025aeb37902451d10912134c28663ea133075087b354909edab042e41da3cd3a3fc6c93797ca119f9d1137de4a4225f872daa3a3be328ea31c75d25cc568f61e4e17e3ae040b83306fd64ae127b9e342c79c93837ee926fc0c7624c2df22dae0c9ba271f40e84608e9f97fe71a2b20160591904ad073c9147e383bae8e718bc6ccbf96dcd33889a7e38bb7304255a8f99d007cb95c6a72034fb254c2290858731afd4d3b09b3dbfbeef464def9a28f4375fcd6d696c89e77027b81dd7af71aa01c5433ef5e882171904a7414cfba73066db69c744f71a8127b7bea85525802f85e45aa7b3930cc1b04f794e1da5732ff79aa3c1bc79b3a73540e9d3379f76b1eb0a13d95cad144ad24e0876bc5430babf6f895dbf5be933f85b71391b9a5aaa193dacd85dd14aa74b7b8dc2e730702d8b49d706749caa71a0a91bede555f5f41df5e3e5853b99ff0fa59abe302244391dc5e35640709834f02382e65b6a6467d44128219d1cca4c0110e0871def2ba4e2623d540dae97d3c88cbed88a900609d6d85da6dc741284020d11bb0cfd74204bc1f269f2fc57f33545e0f0e68ad55832e9a7119e0bbc214bac8e32dfc80428fb337e6cd2283a9d406316282e954c4c85f5dbe863927322167f644ea9112fe4c897b01f4894a4d25cf79d6e7da714dcc4877a9ecd72b844a20062a3f0b095cfe920aca348fc47aafc8c6d6d89683a4e501ddba5f0fb00407fca0e5c0b514b9a73ff5064642d1b43e444efa99b3754809864552e442ae215232a4151c17b243343923030f8d74b8e3990a18cf234d3e5e7e2dd2156d3782b9938b3af0e142c9ab25704cdb8d9033b898aaeb6c50d63511580fe6cf7697b0cc25ca10b4b0292d888de47cd7923e13122159da5399fb12cb7d56cd035d7a11353eed107102330208eb4ba434cc3600c69fcd101070085086d27c28f4c1e05ad63d65d276e7acdf61645fb134a21b059648f0649bccb059ab19aa5c90b6f8e8bae0c803d6dc4e4e42156085851b86e02aa7c75c35645155eb9aa2c80cfa5e14915d87c5dd1379342bdc13075de531dd463b73da04b662475e006782844462c000d46e1b44b0b6cf8ae4bfa1248725c7a2a7201c2bcf91bdc3f314a05ab1d5c66fa5196d39076ebd0b0409717cbd212f9e42c99f47945e389eb45e97130c6741567d42263cf275b523df508fad7f0c2e66a54d1db64b97dc856fc1116bc78c9bfc1044d75e186a6da4e30ae5ea23df11d492726c95c48dc27bb97790e8eeed779c0b2d0cab34d95dc090d540506c3091547a3f62bc3f0cdb27e787ae7a3c3446ea8fb60a4b11edfd427ea0e53d47a3e8d76a412413377578e08ee12bd6b9cefcb48d95d3c6ad369092947c32a86b65caeefa948ec50748b9c348040c7618a0d54df2f495f58e37c4855e20caf99184a228ce9dec20478170b4e00279b6dd0116e8b82c553c9dd6ca30996b290d7a3642fdbdf2ff3d4967b0846244d01f4b1fc53a48b1bcd35ba34d31e8ffc46629cd2e6dd48cf08aa0774e5d86855b3edd2b7908eef8586f56cee2338d0df27c2fbe0343d1f1b5388f1f62df8b58d0101785fb71053787e54492e002283d97f22f9714ce99704a56be017939a528ee81a8310987c67111a0c2e84084e1f8a62302f1c73a31b8a1308d781dc10d11904cd77207fa18468992b8a6fc48844ab64ab8647aeae2f28f69307e1f21579222ab37612a04e24d0edd26782649bf95a89b70bb3ed4b2e25bec62ac9e81321c0e72a9295967e2578cf092b79421cf583a58cd665f2f44a545133c996ae82d03eb98b07a136276c664004eadf66b9e09beb34699066326804797720216fccc74e5b456e92488e0beeaa7a413e459b818d5a11c7013d0d8357ffb679c5fb3112ad53c1275c6349b185f4da3afd9cc37d205bb3092b32d60fd68824a7ae9c000f8442b776a8db56b1b076a568b6ed0a404458d97f8bf3ff0619f19ed728794a895f807782d9d076d1ae0004cbc0f904bc08d01c0aad1dd1f10cf8640086ff40f5438a7bffa6fbcf05a48380b076f33c507d9882cf0f0a94aaea0198838bde5c70db719361ca372cec99b03d4d51aaa7381f336201d85adc20e45d4e475d09aaad8fd35d919516aee05d75259fbf3739473d33d97193cd731839b2e9aeb85ce9d37cf1d92c88597e58298c6cd9be4824472e7cc7087a673e1497041a772f3e6b9a0d1b9f3d3dca113b970b25cd069dc5c135c5054eefc0477e8542e9c3417f4546ece3c17048d3b77863b349d0b27c1053d999b33cf0585ce9d9be40e4de5c291e3824ee4e69a724100323bee22635f96615545acf27e5b0666db4caf9025ad7f12e76b1dd89a4c2beeb3f05c4f7c2e6a04f7fb646e8e3c17143a776e922b14958b738e1b3a919b4bca0581c29d9fe70a85c0c59fe5864ee7e693e7822273e74f7285a072f1e7b8212770f364b9a008dcf9b35c21c85cfcb3dc0ab9ee4966783409637ff6604d00ffe9d29ece6ca1c43a376b59b32d9e536b395b9274665cb2cfb96fb75c5330dc8f4cee742c9717342efe2437a4241747863b349d3b6f820b14958b3fcf0d2d9d8b97e60e9dc89d9be50245e3e29ee0864ae5e225b843a772e7a6b940a37271e7b921d2b8b832dca104714717c205151817ca41dce804b8d081714717c61d753017d4a05ce80773a315ce851a803bea00ee68c2b9a001e742339c1b8d202e1420dc5105704713c4051d0817aa61dc680471a103e48e2a8c3b4a181774642eee3c379296886b3f95cfbd42f0e03a458bb997a7985c75e83ff75b1c31d7ba13cf2993ab3cb6cb84cbde51127f3e7934f04292387df6bbe4c15c11970633cf5551e3722f213fb81fc5445cfba97cae05c283fb2d5accbd38c5e4aa43ffb99ee2c4dcf78999dc05d497eb5c5cca759dc6e05ea17e711fc5845ceb8fb92ff75c33f0dc8f4cee742c9717342efe24f7417ee7248321990134c54a80fdebcd8f8532a143f8ac3256684c21754f0d58fb499e06d29e73dbd612f9145ecdd6f25a9dd0ba5f5574a8b20aafb1c0a9c6217f0a0379ca5507a8eb6dd2cd3d754343bb78797748aa2b2775414fba79a7b821d0b938797748b22b2777414cbab9a76e2844172fef0e49baf2a42e88493777d20d81e8e265dda18fcefe71a34006c07e3656355a2004d83653eaba91475ed7b9c0db62766b74113fba77995d7b43f7dda1ebded4b57f76ef3fba77195d7b43f7ddb1ebceecda7976ef3fba774cb8f64db9ef8e5df746d7eea37bf7d1bd63eada19bbefce5df766d7fea37befd1bd63eeda99baefceaebb66d7ee73eedd43ee3d53d7ced07d7f76dd33ba761eddbba7ee3d43d7deecbe7374dd31baf69eddfbe7ee1d63d7ceecbe73c07567c0b5f7ecde3d77ef18bb7666f79d73e6bec3dcdceebe07b5bbfc3d5ddf9feedf47d7e7d9fdfb76ff7cbbfce191f5f3c14824ed008cab16f91cdd1f8c8a49008c2418c6c62ace2a941341c7aaa033ec7d69526d0928970fb69ede49e76d1d5b5c36735fade4c7820101e2cc576fd94eb96f29718aa37fbbe9442847aa5e622bfd0df53eeb960a85053bb26100af7fd52ae1a6b25746ec7780e72b59c45c1b88dfb74b403d83e365bb55ca2e7f0b67dd3acb64d756ebf65a49d66620ba832e6d3edff7680699e50bab06065f690fc4f22e272aaa57a70d4f12fb933019d3669601adc14e9abc59e898d9a329190cb21653040b9a4c06483c48b7408144224462599ce9b586b043a17337d613dee78d139cb101bf94ecd7a8ec73bcbc001ac58e2c77f05c99a3368175e4ac537f1d09a339dd3ae47f07b8eaca5a46260ac00d06eedea3a96b893d9f7efd79c63a1927a7523dede2e30e4b3f30a624002021e5d0af291e6f477b80180c8779f62d3705a5f9aee6be860959b60e5606839a896fab1954364b076e1da52c770e8b85e0356b0bdf45452d49a1a3065fc576f9ba928d12fae410c3fd3ebc0969c41a1c914cc96a630b9e27d16991072e12c72a13f4fb15a9818960c70d56400c6ce2bbd4ed7e4d8a400a4cdbe512411342b7aca04e974bb637dd61c2a1d72baa481147f50b8321560337be39c5fd9a66e0aabc0a482de4d89aab02a99946eb22db8d71ec942a23addea289f501074ebea79bb813bee99ff44adcc34bdefdc51e46c94c463db6fdb56499b77a731cd033a631e2b9e3dc39e79a0db8dadad0509bc43fdcc12bdaba3c47c3e543035ef331b33a31148d93c68965698097d3709e240fa184f890f0a8f71ff68903336db1d47c0dda5f20750738257afaea463f4896a353b77d69234c12643fb0dcab414ea3dcdbcebde884c7bdb7d006c477aca59512b2dc90587c32abeb2e37a8cb005d2bdba9ad87335ec4d0228fcb1a5eb3b7c34fb22c7d6a0d7eb8bbf6f6d684e0279baa7ff7e3eaaacb6d95d5889eefb323702f67bbb6b12c4b6939173992e02f40f7a2f1bec9713e45584e5556c4119670bba86caa1e4755b12185f108edc9a2eaa04ca0d991223c16c7732e5ae5d297939f0c21fe702230ad2c7a218604378ad29791986c7b97b70143ffada0fab9055ce653dac03b70c1855e6fc96e9031533dfd1ed5c0a1fde5b4389b89ec4b4bc468da641690f169afda18e17f54fb267c84cb6e21b164b3fef035e31bf88a337e29c132a2592e70e31c5af76d9c72c21654d453b83dc1d41ab7d794d2384d4a06023e2947275cc9c0533027453d23b1d6f0c20840d85eea48ccc005af65b04448d6879a222ba9f8c4c948b18f447899ed56b3549573c53c0b61009f58a2ec1b8100956930bf806d7647613c9acb3559d54e3bd354b777009bd98c7840b60a4864f2ecad70706284c7af6eab004d78eb5ae00e86b96a1260e597baab7976585ec77d86d07163497167b93937b24a3923398a8d92b4612ec95d54894dbe37914d9cd172155662b3cfe9d56041f0b1c48375b9103b1bb8bf34c3e61ae77c5459c4afc1a3e10eec3a9add67b5f675daaf357c87a9d4ec7652c6222962fe4a516e69a47c09ce4d170c6fd7d251972479689a40b617f47e11ad721bcf91ceb36082e8207f0ea59773578f88e862b32178e1f915edbd93a8a1cc8568eade3f2efb18f7890fb588f5811ab8f60afff3533718f650d21e246f3dfe9b9619cf767c1c2518b70cf26ab25f490135a9b0babc3509e32864c5683909bedc155a610a9f08c688cbcfcb731a31f0172c33d00de688a15fc1e53de1bb3ce1d145f0c038faaa805f1d26e46542fd197b224f2a47e11b1d2a2dd8c025ab9565a5ad0e04bc6bac483bcc4756f57a630e19b7818d6d820c41fb49a468ece6c4e720b861c120ff61ed74fc6c37ae719d1fc8047b56fb8544ee217b6a997b2bf0e93936b58c19d92881682e48cfdb1a441f37c3ba06df250fcb0a31e30cab6d1a24ff88b9a0bcbc9606dec65c0e05b16ef12ec1035d40b2a419e48b90197e4d116c9501b790f1b6ca27c846a86d4ce3e96cf0ebbd07a280ef21773fef1e0107397ac8902533e13787ef91646c9f70e4026e59291afa1fa20dc04fd2014fde001bdfc3dce9efcd28c83bb894323f223d88b3a9e853c441de51f8df43de5af80387b9483c3c04417df9811dd376819abf0483402c507fdb75cf771bfdc9dc463beaf0a2e276ebd9eca3a71a50eb666bc70d360ebd383c19a416ece7823fafae22d6cd56d583ef10c9575d26686a35242fa8138721f37a434460c9d99fe6551a09f9dc8918bdbc322927b73208ae022c58ba32b9cb879d88f851f5fcd87b1a29d301ccd7b3ae913acb7da0a570b91857611c7607c08ba00bf505108ef2128d0fe9ba9ecf3ad2bf679668e6694eb49deed2a4dfb4a157ae466fcce81f30ee31222d9504012da7330ace09c255687aa6c0b63485dad5d702e6e027124aa5e7b2308b7911e8a3bd5844f033b1bd854ebcabc36e8d0d1ceea94330493a1a78dd28571b72338ece27aa2bf89a8d1f4922da4b12b027030af7f340dcdb1dbb8d608a512f8f4262227e0d632c5c3a61c65d758485f79b9eb6f743428ef0ce9d051f9183f4608d0e86e0a051db7319d459d6cef1c05d2fbaf3ee88c939cff10437c39e4b2bf91c4f4787c9a5d16293a2bce1532e24dc379db26ba35343d022d05a96647cb1841cc7248432bef320964025966853d204b3547bfab79130630087a09a5c1b30714d674ccd329a6efcf45bd2e823895e92684795d7beb85df30dccc4b38b965dd57144808b9d8187c33ad58cb5a52da6348c6add226d587a0d84cce078f5c7214a8e110dca648ba7b9a051a1eb03dcf40169ccd400ca4e21af336ab4731275f5f8440a204923ef2d5d6101aaaa369043dbbdb3330819218bad84438b5f0f8b84ff3fb8ddfe8d87b3822d7c1f143009dad13792ade24abc8cc5270b62fe75a60f9771c412b34dc894999d43d4acda917ad6ba1261f1aac2ac09a8053b731b1965ebcb34db03db93463a5b072af3d286d8bd95abe5f5f94a0f4834e94d226c3f6321f2136b764228cbf6deca2f0de080c94d5ff0ac93d54c61ac664b3f67c4cd20fdf9ab9a1d28872d97da7c704df265f689612788c7bda49e1b7622ae6a1425eff9c48ad8dfcd69976e9a501751b01a1a5e82a3d0583ff1541a4b97419363b67412cf2d38ddb4097d6d055ad736998ee960303dd17d9708057a76dbddc799a56bfb02c84bc8db77bd640fa3ec4ab32c322a536d8ed9ccb2a387e4b4abbeb18140133ef4fb03cecdd7c8e99ffc2724f1237487b259801c3649fcab91b4ce34cd1367e22543336dad87b87296737d424a5c283fc9b611e67abd92e317ceb563dbc8299253375bca2cc69f0cde7fa16d83c5e7f7745d52a30f5342ee9cfeb2abbecc9ddf75d9cce89be160aa8e8ff063a79377d4c1d21c8e8cabc67df6d053f859e9755e88d396f4036cbfa3b453d77dd4377e9091aae0c838d3e14ab5fd8acc0f37419a78dfc83a2f579f6f1acd69a43ce05f76493d30a1c8a0c5bd1bc81b6f1e2d3da3b29cde4618918731caca7380f17d4fccae5056f476d6e9a6e92d253eb809929e553b7ed78638ee2b58d268d4cc6e8c99a5e12027a78d1e34a4291c6f05bbdc7ee3ba1079e0a3fc3b90414e08b96ff6b66ce2019b2cea21994597417097f3ecb1273b606ed7f96804b03d412cb908a257a7e5d54f2bb08c0394405ea27cc5c5ebdda2fb8cd011515b409d84722046100174fe991c236653d6eae4e5886e5ac83d45c7c9b8275dc06447e6250d14143ffdc17dc621eb1e39dede2b000b5291f4fe6620839d3ba19853417d653038c230c2da852d3d308411d956abc4b855350fe47d55a6d333ea019b28e10105a01e203afafa1ed829cfaf1150f065151e3f776a41751787c17bb0d12c60e3ffb3826b3853371dafe659ba78b5478ee5a9623f220616cd7f793c6223e81c8efe19dfcc75ab73ac360cc4a2256427d5467e2bc01e041823b84b28907218ec70617baa781cde6759e41eb860269a3718ba8bee37153bac68ae89ef64d31fa4ddf24367f0779fb7e182379dee90f924c162df9aa8d82460526df590f49644c8ffa28f291fa2d24f029c7ae73e7928d19e3bb190443607cb78e63a614a2786681be54c69fe845acd0ed4dce8ed73793370392bbb84dc5a1c30149058dd439b5e5cc3838c2e610c6c44133ce369cb1c9f56eff2770e9d44c8386a3b6ba304123f839141970cd2528409af34978708d1badf314b4edb3726fb1dc4c5370ca7101c151522e2a20739cd2bcc2c1bafa6c3cd205771418b26e1281717bdb3485867d0d4356f9841709bff98d7cc45d7af3f48b909842cde9b65a82481383422a397b1c1c45920938bb61867d54e41b02e621726429b9a1bb340712d93b676060dc268c44737c88849434423cd74ed680f8db471a2678f8c6380460e1175912f604e8ebe38750409f90b3b03a2e5fc0b7dfb2902c20aaff0feac2a1bfe6127228c699c5b04d3d07a6862d9f7594d8ac99756914446e2ac423292629ec9080d72afc0a95286900497f4dcbf1ad9b17e2df8dff029fc7f5a14eb48c414a038e3459ab2509b3a95381e579a3d4d8c38cbb662a485598c3456317b2300dfebbb2f8f2732635adfeb6283ddf820c1c4b67b58dfb3388679fa812ed22c213b4794c93cd1a223ab7fa101340c6c6261cc451aa68fb1cc43d4173855e490808e55abc90afc0de6a29e99d6f9d5fa06a677890fbe119cc412d1e115980f8feb7c4967468fcfff896f94f8adc42e3096128ed68a89328a6685cceffd2c9e85cc8865671b20740a7e8518121dce7133e8ccb80a6b122c054508ab0785b2c97e2c3873bb517b03ac30fa9304adbb795a821278381cc5d8da1af7879700d8d9ccd72dcf61caf13d8d83ed2776e026a6473434c6b8c15c12c40ff398941cd63840512281c692ff233566ae76e2d377bc9da5b727102f03f7117cea4b577b07a2bb67b68ac440af5d4dffc390c114368cc5f01b3c3801118343e6f605ec4406f5c30aa5a6a75c2a9875bdbc6185933847b4c3b3abfc7409f0578997b232e09af2ab06d64cff10b0b6898976fa3f88d5b47925fc3db55d5df8fba6bd1883451052ad753c45b8c970826cd31d45e97cb968ad5407724b9dab4e71f75c903ebfda1f8e05bc98104140a6d5e411c673b1611b6c4677c61409120dc843bd5676e1af752d7bd02bc8cdee49de2c6ab5574085d370fb1fe204edd26142312d47f09bb45438a154051f9167687932a148301e91b3695958c6874ad30efbc3ab766ab142a88533c32a9cad73a6bfa31616ea7636fb39dcd5a58251b71317b380e03373e7734ad7cff16bce5636b51f8336c27e246d7cf6d4c7f2b0bb2c01ac4dcc9ce116546cad85514868ebccca22f4d24d6099a81a3a8912c78374c1be388f6c5e65fdecbceb7ab904791578e91cce7bd61293ab469230ec1a54adeb5b65195f4da0e33b35efb925f71cd7c38d756f0bb2a02c3dfb1a4739c37feead8727387eb0611e39b149d774e34890cff3f84f3b3005b7db28ef99730e4f8aeadd9ab68e3b51d107b515f6b7f1bd389f25e7809d6a56cc402ae6f1001771dfbfaa116cc96ad991a3bd1084d542838f750f46b1986f8f7c6a341d7d46a72bcff0227a08b054ac4450ecd77d36c890d568973cd5fdbf7042e567c6c3beac1bf671c304bd83291c91be45b57f52b81dbcaa0567023b178b404f4ed2cf2c422e07089adb6f86aafcde2dbdbc3eaee5aaadd87c37bff551fb3a14d8461ef91e686db07c4535ad1c5a32069a1d1a1e47c158121a9e57154e874f39f68f2f42fc81719834f222951c03e008ec06030d0120f1c970687170a1f719848d6d3ea47c12110ecfe2ca617e0711ea290be25d24918010114194ca061e76e9932286fe637287c8f85647c8c31f0983474c079d76b79d67a3f1024c2c07eb278563e5aec7d5e14dbe39aa74fb53dd39dfbeb2951f030d04fcb804ec315c758aadf001d130573d70578ce1a1aa960310500466e1ecf34da551670b26d0275aa1cd6c6b0c9de3ae130e6bfda4d2b7ab12fea0bcf9faf01129dd4c140e1da47d15da691fc40daac1a919067984d4f366a7fca0aac2c9ecd18a79a152692221acd48d346a862e0a88510ea7580ac1bf02c593c1b54f1fbd8e2e6ab87e66863db796315a0afedc9424169ba589b206a65c1a0b5a7606b5e8b73479a7890224b16534c594aaa4f79491630bb0a6a4b9d3531ba55f51de8b2e6d77f03e4529018de2cefe534132ca93d32fe75e88f73501529536d295a46d795c6301621156962550cf0cc833af2c6b5d7ce291520132ff5f14228163f97656085bd5a4528a86025dc09eaac413f9aa4f2ee9ffb3fffe4cacfd08c669590b57f1726ea2cdb63f2b0f1854e576894f502f07df2efc16a6891e699080ea6ddf9bf727492409773e0da0e6f58d7cbc05c52a082ca18435a930bf29dd7e336de164aa1ea7be078fa956b09b00c601f377212c325bf8b6be9160f5130638e9fbd075a40ed2b5fc51edca4cbf8602a9370bad1e4d22fa975e1af4d1e69b3a6a516f20f9800824195f3bf87e700c16f06cb14b320132d2ef20db8740d1938860966f8b140fa4f841f5005d3aa793ac1b2c10a519878d10a366520d10e0df34ac560306be31b8d6b071e8b10465caac7f1d92dc7c783e9e4d7966e6094a81a799b746e9e07097e85234bc961a405e6a4285caaef935b11573466f796f2ad917fcd42649f9511dd8952bc69e649e453bcdb987c92705b3e0c0f8bb475eac0ba12b44f628b5689afd2561fb0f61c1fa9ba344b1c8b7b94f0c9a87191cbb2839242b173c2c692ac7634562b994cf417d3714515d74f16a802f13cbbf4105dcc77ffcd2143afc2396e91f0a93de3a35125cf6be77d2c5301b19e1961573011ffdbcd6d1415927836819efb8c5df3ede09b5e8e0bc17dc6445b9f922ce7bd03980fa7bcf8dabad9c48c11c5e7fc84c295721e51bb8f71e24ea141251060ec0e4aaf33ad22cfd34bf9d6a5eb3153854cbd553ceddf721f0ce97f110d1fe6084b61b7bbd11921e0cf220ee3060a6b87479a129b7f5235072ab584cc6ecb86eb1ce63d736f469507a96fa648bd68f6978e0b6ae7125846ef507dff9c46bade269360ecc190773151c303cfe6130e7a62d94274483053c358c853c9a5d85571d75a2a0f9605c32cb48666d453cb813e4936a291a53a02fa8c7e7656cd79f2ff1c2be033b20bf4df1380b28c787f46280e4f959c9174799ce277ac51f6e238d6f17b5129746cb02daded0703bb43aad392fa9875364ea756be0fa382cb4901e713aecb1a39e092e0011e0b306ae3d683023ff8d0c967b8c5b64e1440f4bdcca81d0dfd396a50a8ebe6e038ad703410a156708e9d554deab6dd9a57a58f3839801d1a62976533fab7fc90e060d93205b6942c15516ce3f21ed084a6c6ec0ce73a324fba294c4d2e98f198a5441f5fd73e20a65c9e3cd3ee63ec795f6c9020f21ac17afa9233a2fa2aab442fa3c1f788b004de03f0613bb239421f24326950af2117f8ea67058e585ce0b3e43a61a07ae64ea7c5f3407204b39550ee54aef635903533b8e9e4a6684d3ec90bc03b24018c9a74463aa4b891d48132b1e764f6c4bd46e7eaafa5e8b507481140f7aba20723dee6a3f78683e93698f3ee3536ee6fb60eaecb8464ef9aa2f6a8b45902d9f1cb1cd02f83f748ff53bec3b178e055573e0ff726a4c0c507055e04e10659afadd4edddff88ea9db5a0ecace314a15577ceef7bbede0bc98634f875c4264ff3efbf0a2ea41a2168b29ab7b6fe142c068b04919a9507da0070594b3e513335c9514d8de4df4da1aeeacce24abb91c66a71774a9f121ad26e62c45b9387dd524092b4678b317853a584d7da0d85a2a4f876a39929a2e35848ab4479a3af1d816b6553eda430ef41b4c54b4941e1e2cf3cd4ce165b88cc4aa2d6c849c5f669a94bb6f4c92c661a0763880d4c8af249a246d98b0adc2f75f0860149ef5c7b7cdd75ba1c426c5d665fb23964dab6dba7b922919a4a2ca82fa856c6baef89c769881cb01df888d52d6b4fc27f70f792a5b28edff51fd83dc5f82661f6ca2f4db10152b7469c53f664713c433646ec177e65aa498a7525efea5c0a2dd1978714a4782d981b63ad859c452f89a02d6fb86da1401481a732717b686a8e80b14a044fcb0b0bc38456f8387bb11d1a08e16d9bbb67b44e43857aa5b472973f1780531231b530e6a11d6471d3170262eb266c664c1befe013e081dbe8428b0fa117d2a88028402582817752114f0e710c7a42ac3f287475a0b568d3ccbea0fdcb326d651c29831be9136ed5db7e61cb64153a80286294254ee1a8d0a0e50fba19a8d295a62455c669c4d2bf8cb652b74e632bd69025dce65bb6b12f615e3339d4da1dae80ba78215a787f7f43c6c9422ce55d56d180fa0fceaf5e961e874dd89e54ab8d45395a7d1c16f2d58f2bcc5da5bd333f257e61d68a2aa5746bb187e13e7e837e89502ae616ad0bb8fc52da073fdcd859185ed784f6c81f319b34be2e30b06be11f63fb8db46df62f59db1603f60d6ceaec4fa9fde1da2aba0f085b07ec592bde2dbb066d9294dc62fe694d655cb8d61d1af0ba14b5fca30ab4ee35c923e98b0157a251ffa99b6a58f61e957a3777eb5017356989346453fa5c8048bf63b295b4b156cc26a9c7afa6f4ad07db62d92f27ae3be4c65b8cb330b41e6bdfa27f29a81fb0f844e05aeef04870f5310686644e948282bf260dcaa464249d14070dba1449790831815140d84b28640a0d300926de5f03be86a13c5f04ea6bf651dd7be1376028cae6c87b89d26bf51f7a6badab7ffadeaf21b29bfdd8490bde5de017b0f600fd20f277db6eec50f46ed6d8a61f6b4c16017245152873018bea7b6a57aead60e61f7c6cc930e7b7f3f6037cbf8bd9711b33e2426fd649de09695f12ae34c1a93482b973f8095566d607635cf9a6f917e3a3dc67ccbf33ad267ebf3f5721f12accfeaba7dbdf9dbad374a6470cce9f4a7c73eef7ffaa13aeca7d77b7ba80ebbeac26e3c3d6633ec327e005712a75bbff2934da5b20c3e5d7e3fe67dc13eaf7a3db52fd8efe963cb5eb0db03f6d86332981e764f19769693eb304d6da64fdd520f407aeffae9c6b8aeba31317e8259268d4f9f36d3cba4b1ebd6189771faf920fdf4f9f588716377994ccc3afde9667b6987f3e6d3f78744ebac3b5bf374aab3aa26eca7d7d63c9da77a98ea663a2b9d3d6f569ff352da8e7aabcd847df5453cbddad5fc72aceedd7bd7baeaaf6dfd5e7e3f528f71558f59d6168b5d9044491dc662a75febfa7debd60e63a7d68fd45d5dc65b3776786f5c1db6bab0c34c97cd31ce7295fdceb259c607a93e7eb565f7b1d8cd4c3af6d35757fdded5897418ec357673e3d85dbf3657dc04ab9e7a8be2db6add4cb1eaf71e665ebb7accbb4ba5bab1d38da987910eab87d56a33acfe54633fd97b95cd3258f598ed716fec50f5934749270b7bea30adb239c65f4fd92c458fd3cd321ee332690c7bec50469ec1308957304b3ab5a6cfcc0437c1322ee32c36cb6019a6958b0304c1cba4e74997cab0553a944d238524953a842a70c4119fe623a5499a0e29ad86d2be20f3f2e810c81bc03ef79712a2f78788de3daf93d1654d972480a76716ebe6108f80e3aa647ad87d86c10e835dcb0dc16e3ebe978fc1601b6c83dd7cafba776dbda9b40e55bfaad9d13c61c9d371290624f3c049e210bd0c63dc7c572b7579cc791ef3a54f43ed525f29ce5cd0125a6d3c0e8059d2cbcb2a8d062cdf36118878aa77dbb2f01267a619b6c5565a0ec049cb000573013445a19e274e44a11e1c2b2d0d56344c7551a757588cc3f4c40298b9a1f94287e4fc014f970b2a492e489220be48a1e8222fa33d488108b670c3132c2fd710e5a5ebe61a072ccf8d01cc955643105fb84bc9022c03cc5d141bba71ba8c381c2c45575d18076a083a2ab8374417f9993b1acc511cbba2742e995108302e418a0f8e4bf8c2a685e312a460812b2d02b1a5c1063781e9e724e17a6a93b0f0a430bad1a10ead04da84362a5c0e77c55685b3d986b81b0e87b382a301a2407568b5fab4ab4f2b80a2cb6f2fdd3454e9b0873a148a35e42b7da5551b2aaac0f295a74ae99700542a6cb0e482acc0f23aed43850ece75c7878a22e05cb3a83858bed2c905b54cd66060d967e0828422108dbb4abf7455249655b07c2699bec72fc7774ff77e00ab298c30c2a837090b574a6fccea1dcb14461861ccb8c374ebf46649232333ba88fba243e90139abb4c8831cea5056e9300ce04633c405a92e2f852695348042f3721bfa7cbdd500b6546b5538f5d6da4da87687e991ad37d305f61833886130d8cdf5f66e422abb5139aeaabb51917116195fb919c453c64937b3647c7eb40db5acaa9eb7a14da84358ede9705ea9badbd0dd84ec46c50ba1a196453ab4d190b800f6a9156088e77f00eb5f4f53d6fa2a4fb0bb33043a34e92634e92634345fba5690050618e3990e4d95eda14a8b40f4908e66bd6533932e7e419c4421fa07421bd345be53f737c6d26d17fae560ad6c66e119c3e69a411936572958bec5e65a45ae61582257d694294d12169ea64b69a71ec2590a0d71a31b30531a4a43c1d38c5e6f66d57ea9b49b9374387f2526098111cfcb059deee931f344e0d168f493cd129f5c4c3a6cab1c950074fd359ffaf7d6654b0442c6a5fca445207e9f3d0ec4206eac431083885d9e06cbb0f42eebbd4569ae5dc2048cd9254c408f44ed12fa974d2a06b54c2a46019687551760f92511374ed996c7b0320eb3f7fd72d9c75a5c8b75d1775044229999d90744ef9950cba61c8a40c4b8bcacd232d6e59b2602b1823d7bf20d3108d8a5ea990567c9811884eaf27d2f86a574286f427468091350a5ba2b1e53c1a4e74da8b220ee20dfb2958ab8c34dac21cf5ad98a136bc8abecb431d658c1a426545acabebb5050af8fdf903eea3ae1de5766f40f886e142544e0d3a598c1344cb3d8cc8273a579a0cd289cbb648572ad225722f0bc959133ee9e373f2d94283c3033eb530b457435d05746ce643ee04474226633b3d60145f479a144e184bb9359fc80f435d057a667dc39a196c530b264d2e17939a1cb05d97041dc17ae0e67ae67be70d7c976a3e87f40cefabe26ed74c01c6b387ae368e60b17145d84e68b04e2389a04524316387341587e5e019c384b20530f8e32442d470d30dde096ef1e80f3dbce9a2e7d9acec7dbc9de8e254d018ab8b0a471f67664101237cb0ab8b74b91b7d31ecf86393980b9eb11eaa4b844725a017c0911c999e8be4633333ab2d5826b00dff94ca1e8d2afe19e42b9f311da3c2c3a6c12801e8fb7c301f0a61b69853975cc2b9161cc285e9c3a9307a7e9c67531725d953256d18887241a79a4af24254927c6974a3a2b229e5a508de78767e82706c59a94dd7352ba71b2e7a474db38ba715cd7d52af248dfc82391be4f9ac0af643281e0698585c2522aca12cd9074252a551a38984013c8882ca594d3c2cc4b4e4a29a59472db3a00667ae3064b1e079e674ad2f9946860bcd38a2c786a52a6ceb4a28326a5dbc6715da5b5ce969592368eebba5a451ca9ab55241a8d3cd168e47924d2e79148df572a99a8fd6ab07c89a664026db0b4a72f1a0b2e6a3f5df03416bd53a59fdc744e57d1345586a44cf909f2a226a547da482b648edc9157c81b6923691dd49352f9f191dd7352bac99e93d26de3e8c6715d57ab684447a3d972d455916834f23cd2c82391beaf5432811404674bf02b994c20785a596141a15229d5ca66189636dfc0f22c3658502852eadb21b1b4aa6f87c4a95aea12ed19e756ea5b4308de0f200a4f30cac01a5f268a8819db8dd1c671a39beb26a235d25751ada28f6ad751ca5d1c1d761ff141d2b2265a46df5f6c97c70978d01bb14d1f7a65ece171794498697944209f1e9f1e203d18e4bae0c519992507cf7b1d3bfa4412ee0d770fc03c83863089000e01a45d4f874400e9bd49fa01ecb2e872741f66ca2c3a9c9d143cbbd4ef783a4c03984d7fe9688c271820bd29675e534e87f3269c0ea70907bcc224d4e1fc3c0378af67be9870a2cbce7c61b9892ef3269cf938596e586ef07c37e718bc1d2daeb7136b4c2e405315fd12db344d3893ca148a356650b7136b4c79961cae055e9c718393a3b3c3d3f3031424d44334b41c9d1d9e9e9a4f90100ded066787a7a7e6d33e9166233c0bac1d8198a7373f3d95fee4f4549a13d45369d04e4fa53b71a8a7d238d453694f95336973959f3d3dbf2f7c284d15423a349496b3834516d4e666a82644a58a909010155a436994c6a7ce972f4ec081179801c7c32210513ed213ec0067560e9552e7a47942b74b7b6af4915e8ad3614be9b06fb677efadebbac7d3d4bad63881a24b9fd63aa43d540aeda1525a164f391c5acecd4e4f7cbc54e7d29c0e4f90d321d579a639d48a2b333dd5b954274787f6486919e502f7e94e37069a403f3edd15bc8eafd1a90dc5a122553734875af112d17033ab501a5117d4b24c79e6173d81421aeb6f08d12ff10c395a3c8126ea26d0f4625299431df614a2b1cf31c1932f3065c0f1b3bf1c925a983ae505c1405f30b7f028689802361bba2f900e29ad757b7d8e3edb632a91635105a70b7dbd5924a4430a440891aedb2e8e2720905a8e5270aef494527a7a2362c7512f4019b91ee1a8451ab41051d18f3398c10e07e544d7c66671641bdc25d2e18d0e29900efb386c921998c3616d34c7ddc60d1c5d921998d3020ca003f9e70b90e8426d8498d6790590c3d30a20c5208e3d559e803b1a48df38cea01e17bced71469e3edf4e6d470b26bce1468b2650810b5f8f1a72000446942f8882d0450f156660e56801c6163d3b5043cb8e942510410ca69e1b2ade163020818deb304d9bd2b90424d06c394bd842e884042a483b48c841d3d935797b5061a8e382be8041181ba765b18a18a5f04527816149a5cdb0b64968cce72473e248d9bd23b9acf46cdcf001c5ea41c6034cd23a8c37de1240fa2c6936f2466606b561b3c436dec33b1ede7d3978104203cbc7f8e5b8e1c3a3cce1c33d6967dc07dbb40e6de267fbe666fa7063b9004adc363f804d6b9b1a9b65f0ece40c1bc3c487fb707180edc3bc2f1ff489c6f2ca9a4be2be1c3ddce3c1ca2a3aa43e9c871b374b9c67a0e233a95f5c37dec3bd1bf13d58890303f0c68dc3b4cbb64dbbc44b9df92283a64b3cfdbc19c4b9e28ee30198254d387588320976fd386f0f52361fad6897787a33cbb60a64bf2086268861fc0000f0f810008f31f2f491c60e03786e4c80003c37ae41e33b0ce00408c06bc89b7b933592a66557d274189f250f364bccc33b1e7c380fd70234b07c0f39377ae8414a1a3ed0c0f4fa70516087f130d3868d180076090d80cd8d021c3f009bbb05389e86cd2d031c5fc32ee930016c966503882e6d5a660118a6f54d27a1b81e5d570a98bcbc16806111abc348236baa65d261bc4e7418df4492961dc713e101a406395415044d211acf678b17ac80d2d9171ad2a1520547187bb2acbd8e6866ce0f8af0832bc060147b7ae41635d8d9a20a2b443b4060f4b821063a1d00848296c023060f6809406843a53e34478b38007d345a54e9c00e56b69d9d220cc1270c5a80765a016c4a654e8b660b15e0441f2054a02d5460063a7be2594587b1d621171d469f5a87f19b0bc02c6bb5a6cd97d4e37b27be79bcc7774fcb48ef5a47f031ae34507bd132d5e33ba8fb8b96bd1e618f6f2a2d8bf1f81eea2a3d69664dcbece3276ddab44cc64dcb66b40c008f9f382d0bc0e3a7152da3f1f87945cb08f0b8c3a38d471e1e3fb368590f8f9f3d2df3e1f1c6e3676d72d17a7ce7cc17d767ced4c1b171b6a6cdd339057c152e372c2b863a5c646131d4e1d53e863adceb4f495351717773133e58540c75780f168ca10ee7c19262a8c36dd81a431dbe83a531d4e104b031863a745dd77557890cee6858896b5819c3f03ad8bc458105106548c346ac83cd128702902e56e2015849450cfb293003ee04708fdec41aed62230e6d96546429d080bb07c04a9b184a5a943551d2c450a6496412c37ecc3a1193c4b01fc33681241e8961df65815898e8d2351c31ecabec0d1ad1a58fb2e18cc3582890546318c30efb067736b41a495365888ad017415e00c94f47ecc1a2abc409dc0981e306ae97427017ce388c850249b85ed6cb2abf1e1477f7a66d64d33a8c5732c30803cf9a6c49e7cda9c99973861e245441e96c1d9f9f96491ccf4306d18fb20b1ce5140e0da01c9a2f4dab4597f8982b96351d29e0f851a0a09d1624810b5ee96687a6670a17c8f071393b3c71f03103692507488b1b1e74345aac41091df82c504ead0653f4d000069b2888460739b50f70c1045eed61430c967bea43b8a7ae93fad153777427a9738f33afa6eae8af7e7d9cbdfabe9448bd7e48eaf5d59db03cf521ab57ae42aad7bffaa2a3ced957bf3bebde8b85c5cecc5eaeb7fe3acb73157af5676ac5322412c27af7b64ab0eeab1fa31582baaf3eeaa2d34f079016aea0d2861c1a9ad9eb2cd66b66c64a7df4d447cf55a835336badce7df55c85eccc6cb5127a0d9133ee4ea208617df53873c2baaff87ad557f715ef10d5eb55574626ca0b88ea41e26c0837a40233bce005351a1a5acf549782a69e355de4cc62043f800214bc50dd0e708fd36566361ac2bd9490b311778e04397396ab50159a2e4355a84e97179078b3049a9989eccc2cf218a0a66716677216da903168927070e3c8a663945b0ac098258f17e79424f9e59034223f9b943ec5f2170af7b650689f71f7669c7296f2ccb4342727fecc489ad1c5cbb1499b93a14a58ab481e896596b59e0ee551386e418b026e2a608301ce2ba2e9b00ef5b44ce239976c3849886387b90a51d1c20859601b386a618411604fda48597b92487436cf8be4992eb4c6913c92466a22f38507953c5716410a21ca681684608512a060f9963c34882f92877473c539c0f25d0cc02c6992d6c100dcbe23e63a84e5ab8c0e89aa60110d96221a96efaf0a51a943429247d678b2e81739935808c99c2a54a9f44b9c9542af49443c19e74a5f07742865161dca2b79cc001ad1a13c4cfcc13486db89b4cc0132a4b2b79c96e5f82f9690458e966f2296dc0083c221c930ecddfb018c9e9704863daf7b0198ab10ae42f3455acf3b676b3ef05994bee4f1bc1af63a576fca2cda4506499eae0a15ceb10602d07bafa17b7dbd4e38ce5b03eeee6bc8c809f7d18970f725847b79dc7d79570939e31e67757465cf7491e7e1913d20cf749131a8893c8ff813834437b84ab1cd6cd4005d2000948f5d003c69b630e158cbd9999125bd4eeae5b9eb248a1027917527e6cb2b9efbcc6cbec97c79c5fb52a2e31522cf5d997a795f5146beef2bceccb806325f9c988f3f1808cf57ec2e8493f815ef24ca76277dee4ea2889c708ff7d55d1bf2f44ee8b5315d70c0be0d1ad9711fa0f2c7f1f482753badcfb74e1739a5bc717e314e137c31c2910926f8829452b62b891a1354a1de93ed8423136e62c049301ac71e10a001b33ae4be8dc61af176d13d81ded4f03ca9659109373c55c002ee93a49598c39109373b5e27c2910946184225e1c8841b2f6aad552462c28d5064420db6c0f1b6ac52f0e4cc93a42dbac8e812a5a8949b60254df06c23742820b581c4061295388a20aac3282ffa1ef013126f977123f350332bbf05706ba3e54d7225cd746912963749877d24cd62e139a3949735344993631a70d344586298965684254dcbe48bbc9197f1258621082d88a2043514210b4c98c94b222d93f23a118190b8df6466d63956c13333f92322d8bd26ca36ba33b691cd21963ceae461996c16c811408e802521e1ed7393a2653c708e351f1b1a0edc534cbf1d33583f600671ff5561730e4478cc171bdd5f0706f01d8adab3c203d2b239ef451e47bce38d17080fdc1db7d1da711ba547acc1035e8cc18b294193d21d9896c4cbd3e0c8d1e0685fa3388038e21fc0f86a0410899023da8b29f4913a2183e0de5f225fb6d3e708073cfbf259d26cdca1af8c486f8c2e598779e50f5825d4b2be13b50b70c911fd2283da25becfa369bc90425df44ccfd923f269599c38bac7197798f952ba4eba7fefee4bdea3dd2339ae69f2e7528ee338d139da83b7cb9a2f238efb28c749ce13e188388ee338aef40189420203983afd36e3de1cc7711cc79d38d64dddd3f5aeb762bf8f6ce9a01d5d47474747c4711c773255903bd7b4be691c8e4b9dbb0bf59c4aa5bec9a10e535cada9c794c7ddb3b2c671d43b77eed207b579db46b92ab8770ec751ca9de368341d5a67daaae8300773355398a670a2df1cc771cd71df12fa3a5d09bdaf533de91c87c36d1648776b6a44ff5e337a69c6bd5610fc395d20a6fba237d5fba2f7a5c477d3857c37fd74b07de8f7ee434ab72f7afba2f52cefbef29557cbf2a27f29c18d236e1edb2b3d3d05e42e6f40da14dd83c459776564ea4557a6fbe8f105c4f4207166ba32514e32a27fe09519d544895b44010aa64d81ebbf0fa9fdee4e66e93ae977cfb5f40c7297b4f9025e13502d058131721cd7c46cc45d746b884c17eea3cb83070e6e8a7c709421c5acac9f2ef6c4e3982fb3ce97ef318efed90ad67fafffea267d708783378e6459d3a5bb67bdb633b3919d9975d33aec2aee6400c6597dffb53dce5edd6d4c97ee5d0e9843dcbd69dd3b9faa051abcc03d548043d7bd5aae0ce04b48bff6cd74e9ba4f2ec0dc34dc3db2b638a3bb31934a4a57e02d993b2d3f69adac7131a5bcd2a7d6e19c55246b2d1bc5ae974a21f14124176096b5882987e547c4c647e425c4f45dd9735f42bc7fffae0ce9ce9ce932efdd49335da627bf21a5385dbe7b33b3fe847cf7ae8cf7efc6e93273646c390ba70b255d564d92e2cf4b48fcf98c1219067ed1f999432acdd79295dff46cf704ccb286bb1ab831e18b0cb03013d6ab8728f7453318a6e7005ed626cd7c9939d1653e67d2e0a9862b26b51c9e3bb53d1dd449fb4634388a4e00ce4a137feec3aad1e0a820c89a3ad365eed84d8766fae01aab878786c56a1d9dcad3a177990670bb7cfe6e442800f3bca1c1dbad3d1d723438dc0d4793af3d952b71b2f2f4f4d42c3aec21dc9b5006b1dc826a4fcba674d83df2b7f664b1fd5001e6ca33a70073e5a93c358b7ea9b3feac78092698f5e6837babe1ce992e9d379ebb840988b72f486e9445ce7c21ed98b81c8e935b1802d740aa9901776d0303fe3880530505911b41e6a6f8be44caaf8b0e7bbb9fcfb7f361612a3d9b4c9f8fe9dbf7fd74ad20f8dd986ea64b97ecf7f3f97c5d7c3e9f4fcbb8ad44b78fe7f36959fe6adf4fcbf227e5ebe2ab7d5370ffab7d52b094967d178a173f9fe802da21a630c208630eb3d175d281f9d165ba8f6ef7d18df28a74e65913fd9488b3d99c03f8cfe7bb992fdf4e74e9fbb03e9f6f8764064b2243dca14faacd17d217edd29914b48520900a25031849414dda91a41ddc1ff1e0fe3c810be20b29badc4c14c4b98228dbde37b869d0c521d109c02c7164943d4b31d6885be0dc50c0d2f62ccee81bf3014dd9a98e90e5abfc372927dda88c4ebc3dcb53b96d32e6f9570f4a43b3618ae3d743d2d0f4e0c6730a900a1680fd0982d9b326e6cdace70deead0a3db85b2620713bb8df3201c7030e2748479b5600698bd6b2795fb5c38ef761f1e01ea000d7cf7027eee0d148db85854bdce438ba4929373d55869aa3f3056254876ac09d069c475370fffc7c3e68a5de45b672374ac859fd6b48ad97a3b9992f9c9476e993ba6716f71b4ca5f44be9f5a49b4928d8e8dccd33e8cd345e4ad714d2187d868805f36ee6a8d44ba5e216cd67ba50c1022019e01b54efdd0a40afcecca816c03cf2c1d2a36700c14f2b802ff9da38cfbeb2ba8deb1a2751e415327abd13efe0bd2b7a8d93d1eb475774f04346af07e34b9e89c42fee42bce397bc93fad241fb92f7c55d25bc9b3ea4be74275184945eefc474ef4ea2d02ba4c6d9075e27e04f5f017f3addc94aa7d3b576a64b4b6ba3717c367eba9f16cdf57e8b76d9dae1eee966beb8ee0a95f70614024b5f8001fc5a3e31fedcea796ed5f0c6b574708cdba2c1b69b41975dbd45fb01576c9cb5684d3ab15c2d1fdcefd60feeeea6b714d461a954a543a1de6469a8c36ddbb6ed96844a41a52f4a41a5a09671a7d14463d37a2224040ad55af773da992efd5a4130ce3c7a06d07b3d9df5f80171b9281ac05c1a1202855cb6a666e5e06b56ff6a3dedcc1716ebe6d169e745ba404ef7255917fce942c09f560e5eded5bfcfcc4e27efa7cb2b04fc7765ea057fda992f231e1adca6d70f29fd2bbdbe7427de4d406a6871365433baa3151b04a4e634fac17df08e40a1f8e57829e1dd7422de3d91ef7a072fc43be89d5a3d9f9995fe01f9ee9d3ceb79f5d67b1752ef5ddef3bc253ae44b0939abf7fe1ae21d3c080a5521dca900ec74ced2b56ee6cbc827f5a81ab25af9eac619ad3fb93444a25f80a6972efa807c9716a4c1b4960d8f947e89edc42d6240c3ad1bdcdf16310002cead2c70b7a61cf974d1b216c2a5a196e5124ffd51dd177d9cb5707ce6cb8b5e25e4ac456bdd743aa8bbb2f295eb04bcf738a31f11f0dee91744ce66a508da58e2992f35dc43944a3c11881aa46760ddb1b9f6542b67530860ae3f98524a6f69a7c31e01e1ae3bdd83bbea5001cc2d9acec88796baaeebba5adae93af2894048210221df1f4d41bed42c805fc05d86166dbe7441a4d9a2d9c643b8d6daf5e7fed0ae3af325ceba7be2cceb481d0a4e5005b77064c20980b007927e006710f2910a762485b843ffe5439e9ed2608e062f51222ba6f7a86d8940eed0df6ecbe3b80ec5c29222a54e6d1212962d9d9415b88fba622776985b58e07e8c354e00665a738f0a30539b9a272a56d28531071a2c6f7703ee68dca2294522914814e9a4c15e47aa3ff3057cbfeacc17f0968632eb67e576cf4ab675d3a299008cf805a446f4d14f58e2972c954e37fde095015ffacc2c97864eb786fba6d780b7d563b23bb8c1cfcc7870df54ba7ca974f0de964c0b07778b66b27156ea4a0072df1131178258a32ffae8deb7db9100bc1ccd74e9d3cbd15668b0f703484f58706900738b46ef69e774737ad2dd55ea41eebad30eeed34d871d496792cedd23d913cf69e784c569e7b4d3328e92408e76f484d3619f766e70ffb4d3322c5a76e2e95316dd6dfa72c8eea714540a2a058d7cbc9b3ebdde0d9d02e6d290473f25e2cc7b2928baf42c05cd9fe93283e650ad2058eff471c520c943b3d361cf968d0d98e7cec867d405c7cd709f239f0efbad1b9d3ed7ba69d17a1cc192ceaeb48d7e9eb4682d6bd9948670b79ee07e698867be743fd14567be74b54e07f70e1a7a7216881057a90760d7709e3b239f58a3df8d60e473433b42c40122f8e9c151063723a5a0331cc7c3c78b33b20d6c85e319f77aa30f3fa3c3a637c647977e83a1041bfd05af5301d8e04bc87c7cbc3239c4f238caee09986d60290f147dba6708a4588153382e414a09308deda10ee3a41304587e7ae0256424f312d2175d746544efcfcc4657464e7113869b9914af21a3ed33b338239b7a486b0063ac6d9c795e24519c8396b07cbd894070b85ece30c0bee8aadfe74a9b7310d24265c29cb08fa48055feda2a45246137b3f09783be668104b0ded84f16336928b47336ce62d5664aa53900c3082229d05e30150a66c14b201ff40a3ee2e78d396dca013cce9b048a0275ef0750f5f80199627a3f8097d6742863f75cf30bb036a5f5ba5eadcba57aab75552bc66374d67a736dccacb09f4e7dc0aeeaa7b75e6debb3c3542b6633c5a91bbb8fe1fabd2749ad7efc5c97d2aea534af969bdef2b6af96c7d98c7b5eb5590657d5692ed7e797c46166cb462ce4f520f6f524ec8ed761afbb2c93c6af03b149584fe2f1cb51e4c624712349dcb5ba59e2d57bf596dbd556b6f3f901b8fa8e8e8bc3741d7259af6573ebac542aa5ba289b2b4649da759228b8a1388cfa977418f567d4ff589017ea29aba4c3acdf2661ddc5aa435588f5887fb05e844acb8a086d30140cf6f90139cc7405b14a9a60d681d81dac17b94a26cc32e924ae1346bec461bac51e39eb5ac0c89778578bb8e362330178242e718dfcd5d26b00ff7a8301a662b1984c4203a75e5e047929d6a350abf20ccea9ab50b106a2117f6a76e4145a6e2c30ea7fc4526055877f33066630ec4654876954ea15a8067d290055875d75636037f218d85b60465e836ee4308dba990646ddab37ac229e594d70ec4d6c11165b181b3bc6baebc6561a0c4056b5b9f5e6139a81515fc130ea2ad453a83f76887a7d6533cb6610e79a93d0c0b0bf8cd8d78f7aec5e8b8502739885f9765c815af66ab111572f5e3e508f095d81b216f8399a0eb7add6e1b649e97043fd0a54cc4688446b99ebdab86e1512ad00e40273afb9b8a0464680b9d58b0a74552a140a854281e102174c7f4fc05c85bada5bfecac0c431aeaff037d74931ab3aca723d9f8ed655f7563657bc5a7df5d4ff983dc70305e62c1bdb257695cd1566aeaceb31eb7acbe6d85d4ce62bf63883e99575dd57ec28008bc0eeeba6a10d5ccf91c72254452ebf1c2b944fea2e4a039089e74a830273ef07b0abad3a5acb2b2d7573057f33182bf2d8d783c6d8a58c7538f305e62f382702114b3d374ee23106c1d5e40edb93b0e9b02683a8427187ed5bc3580dbc886d1ddb265fc2b2eecd299e8cddd3808579cb1679138bcfb24b3c661b4f91896aea145a8de362bb9020f728edd61f7beb7fa6f897758f652b50eb5ec0f47702506254cf33c7c3f50481b12d0baec7456b60e4468e7a5da5ba4a5bddd9baadd6ed3a197c5480db5b36168ebdbedd96d5cd207ebdde4a3d5685628d1980a9d80dcd0420ea2bc1470210151b12b20188aa412ddb5287bd75cfeb19272975fae9581d057bcac2facb01bb35281601b61e3bfd7ec4deba173f1fb1ff291b13fbefc5ac575747fd36b54add1cfb1312a7ceba6d3d655ba75f8ed68d98357bf7e540e2c9e875297663ac113b4c579fd8cd484e449ed180add1c08d82e44d6c4d931b25480c92199213d142f2885b0791b4902079f7f540726f749f0d1bad982043d8520fc0206fddea73cf55c2020cf288590783b0820479fd7a04b942dcdac587a3c3adfa549f2e5ad6f9c06cc70529b6baa9ffb9abd5b86859ea769f0d88ba1767ec4ab1c71e43c14c953df2975d22b190246cee6480b7336173f7e4c88dd86d3b4c733c5c163de7107b805c1797965b815a86fa0654bde80f852ac2c6d991226ca5d22edbe7143076d4e397e3c88ddd7a732bad438a03309ebbe19eb42cfccf26f4b30571385c155c0e6705a7c35db16d58c89e379e023c6f59dcd8362978d3e179abe16de3026f9bcf0ecf5b1736b66d0adeb6cd0b20bc3dd39fee993c36d9e91b28fab892e9f761d5c01ebcf1d4f2ace96d7b07cd17b9b30a0a0ada09ca9c4ddeaae0ad5bb123b1bba1ae7aa582b2adc76c1d62b26157cce58a4994ab0c67c833387594cd7f29e230cf15ff31bee06710ff37a3de7a11165b181bbb19f5d5594f6c98f566b12e936d87ebaeb72e615497c147dd0d75d5ad421e0af514cc8cd9d651b60e31691c1b8ac52e34d4b288ea46c52e19c40063ab17edb21df5d71feb2aa22bfac5db91c51e3350c1db6f4cb0713d5fece02cb2026f221abc896cf0f6c75012eb60ddc505fee1422ca10c53f00f8f1dafbc497ad96af3a36c455dfe8542c94f87ca75b3c4aec350a8170ae5aab429a0c4a8dfe5b212a3ac44c150a8d76decf736d2cb4aec9aab1853aed5f6d5b72fc74ae875734ddd0cc652973fe66fa638163bca661954ccb6aeb21975993466bd75abc7b20318c00770d66b1ca659b60675b809f120accccc2c0820fe0b7120de1f12b10be587cfefc70f17020acc9502e641dc00a74159c230698cba47513662aa33c4b7d32be80ec5c2084fcb3211476511ebf937214f7d9b5d75592ee2d3b2dc72d6332ce7b811535a96839c09a096652047e2451242e4b095c7082bca99d96e8808dbf10c613920408678101b3b0c62c461b6a5e5458a5c488f2f51811f71e24690f8eb88bb7c7c1ee0dba7ebdbe7ebdbe76c08f5ac23efa0352dcb3c9efa9695b8eadb125fe523673d1ba13808f8765a45cb3292e7f8769ad3b2ccc489f8766a85101a09b0554774d305753a1d6e3f80e598b0b143264e848d1d127124367688e4396cec30c78d18f991235f6209254bae030307f8cbba623e7518f0edf38ab933e4db27160dc8afecca0b7000172dcb08f8caa76539016775d1b2ac80b77e1ef02dff388f6f79c767df3ebdd0f18a23a2f9c1e176d8d8e18ecf6cec70f61f3676f8e33c6cec90c7156063870a78026cec300147808d1d22e00bb0b1432677d9d8a1ebaf13b1b1c3241f62638716b8123676780125bee52144bebda9b42c2fe05b66c051df72031efbf649d3b2ec80ff5b7ec053df3204aefa9623f0d5b7cf9b9665099cf52d4fe0ad0ca5c99bf8f65945cb72064e816f9f392dcb508af813df727d52e5095b6f3260ab0d056ca5d284ad13b09d046c1701db41c076b5ce01b6bb6980ed6c18603bda022c47c472432cc705577bd243d07ed343c05c193a83f986bf35b971bae0e071338a46e6b879c64d0fd16408236ebe21cae9219a7cbb389eebec6616113787f843086d361b6dabd9689a56a143284bc4b721be51e05b13df727c33e2b2d979fcc7cda8097cc7cd2c095cc7cdb01d4772f38c089c09085c48a5e978904a43722095c6c493b85988248004f926e4db8f6f43bebd1b6a19039438023a043c015d02ae804e015fa223f223dd026ea46bc08b740e784b577bc061370bd1d15ab6c4b777362d3bf2eddd4dcb8c7c7bf7a46545bebdc36959cbb7773a2d6b7d4b1df6d7cda8d75d37b398dc0cc3c0cd3396dc1c2ab999861337df88bd0237e3e871b31018f8c6e45b06be9deba2654bbe9dfb6999926f15f8766ea8653deec42f7033ea02b7c0cd2c0b3cc9cdb0248fb97946ccf3cde1016ea67180fbb8f9868f1fc1d58e3812370b812d8cdd6ee287c4cd3318891bb14b38f9cbb644f1956d69e0319bb25074f8888dad8ebc8996136104033126abd6919b83dc88900d10f1da80cc8b383952a4e54338014201274964e066233fe2644991249c385919b939890ec885a21271a1a8430049e246648cdcbcc48bc81829f29a28416e0ef2216484dc2ce4406428d0c46ba2247173066e64899b97bcc88fb4fcb581d7121b3872a120d54469b93989bf36006403440c81812fc1e4470e6bd204f61c4d5a5eaf89a2a489134d5a2d4d603727e0af2612c8d16ab281bba280b99c388f28949840143f2e70f3ebb0282c1085cb899b79fc47146014abd7cd3f3a252e145502178a2a01257efcb581d7cd2d776de0e57a4d1404dc8c804b600309b83901576203d7033551262081d744f971f305fe6ab9d902771dc6a3b6becab16a81b5c05e1385c7cd3f9e4389af9ae4e0a1e42d4e1c76968dad70c5add744a94012cc5a19815b170a10024958ab26576980b543030a888006626e5e9da5816b40a5811d1a88c06ba2ac6e564057ab02be6ab2bab975559395ea355188dc4ce41168b2809b17700834b91ea889120108bc268a026e8ef9aa7573beeaac24178abaa32ac088d45bb1b35aacd7441972f3902b60c7cd0ab81146ec784d94d4cd15782b767392b37e7b07dc0cc59978c0cd0e788289d9ffc7a0b8f9017fc201678289275e136576a1e8f0cda9c7f051168a0e4329a236e0e659d5e1a388235045a0741431bb59c7911481e435516237fbe8a2c45e13e5013737e0482e14d5013723a947e0180ac750af89d2809b1df02330929b1f70263012265e13c5c7cd3e1e3be2a8ff42d161280778e2425175d406cc0e70a120612830a90b0529f5d74461c0cd0c7803606e6ec067170a107ba026ca4cc76ba2f4b8b9c75307b8f900ff6166069860608912272e60810a2489c914b048de8465e213b0482e01cbc42360915c2830878065e2de0d67ba6c5fc2a67ec4fe466cec452cea2d367598fd5f36769745bd6553db59f697ae6cec5295455dfa002be40eb041de000be40cb0497c0156c889d820578005f221368927c00ab91b026c90bb296181dced874de26e48d8113ec27258e04013a8601fb673022d0b3dc007b093051ca881817b586e045a088501f380f98e22ae033f8785027365e40ce6465828455c999ec17c66a1e02b336730b7260a1177bbe9701be26e4f3adc8e3280cd3398c904628f5d080b25881e1c848df2c381b015a8c3c63fbc06b5ec879be755df7ef30cfe513666333deae61ab3f992769da40ce2580c857a86e1184a49931e1d8ed9c77eaba4c333a86571d6a00ac405b002e10de545cb50f789c6a86faf403528767180a8180a45855a167ec311c033a51280673a84375a056fdb5683b7bcd1ecf36683e3e6ed066f7795b0009b06471c63785c903f3f370a207b21800f3df06063871addd33dddf362259659890b6025be6123a66123f6c14adc030fb6b18d1d2c8709f05363ebf1c1db4ff7d0d06100db76d3e1f6bab900ac375d2d62179719942387e84d10a5a9423a5c6cc745d0769ad0f6b83dc15340d4ffd89d55ce00a2fedbf9a09efa86baea3995423df5fd403d26a5b2b5537ddb52b4e9a2faefa91e431da6bb5acbfeed1d172d8b7d7be7b35df58b037c2c76f331aabfd8be51c1db6550cbe29f4255394cd35437c6638c81ba2329a1ed6a1d6e1780edb8e8707b006ce7d3e17600d8ae8b0eb7cfb0dd4f87db65d86e4a87dbafed803adc6e6de74587f938f61f751a65afa35ea3cc75d44951d63aea6094b18e3a2aca56479d1565aaa30e8bb2d45137c7fe5b8562d6562a1dc61ebbb5e5562a316cae3878bbf7b27d86186e87d926430cb7a7a607f076d5e400debedace7a03dede6203deee4a03de8260b1652366452c7a03982bade254da56c5f64a65439d470b6c628d8833e5d1025a0c23463d65e38661dae3b17ddbbe7ddbbe62a75087db59ecfcc24ed3f6d2766efbb79db47db45d6eff5941b1863f1bbdc024cb61cff2d8e4ce7c89b30ab236d19d553adc68b67906f0b983f0d6d1a2cbf6ed5d6d3b6bdb3a1adeb89a0774430a3923a568921472e64a21673892d4c21770080183c3068f23da08b08f63db2e6537aa17a25dbe1c386452e4915058ca9b93dc931606c7128488e1f7b0657d1adffb25efdbbf233af48e00f2e5e82e0f2d8039c42d4427fb1cb7d1e830a471d8bc2c963c9d1c15a850893d8035da0fd601c71aed0aecc5ae0637585e8b2fcc10bdce0a9074794329a537369c0fc0c943df590166c98349dddd4273fb7a340dee2cacb469e9426b59bc36b2091a807d7a254f0c92b496358d9246afc4b289e9224f6f963d92c74639e3e54d87342235d27d91622d075f88730e4d674c43192817288d74965ac98c53f208418809585e3e8b6857f2c41a330079ca7043718eb51c730ad89786018c229c234ffd6bbb2f25ba731f92fa4cbd106ef4944c3df79999a7aa334252af2c4fbdaf9095ccebabcfcc72159a99bdfa01919bd22107d4b27bb3fc013cdda3271cf325ce229650a8384a88a8a2c31a8b83460621391077909732678a5843ca8fb667269b84f2ba7cddd8a34877e8001c9aa7679288e6da9ad33873db9eb8b76b15a0a9bbbb3b0334a64fbf1cde4f96fb696e4a8731537ce968b38b32948c44aab5fb957bd772402b96fbb9cfdc0f96533a94bf87e95af36ab1076749533b308504811c4194912e391d166bc83ec621dbd2f2185fec636cf9bc5f4b7a17b40dc920381d3028dfefcad2a57d7568be541c9ca18a3334d4dd7428716c6e47bb0294f7997276a541ac3188a1fcc95617c450bee399f29c8e0ca2e2c81de42598ab6c41ac21391d2cdf4501abcfd75780b90ed5a15a4544d31e859977d925dd6d36e15c714c9246d2481a7bb3ccd1d9e17e9a9bd2b227360e085c59b1121391018ae75db199e295579f969dee289e9e5efa7a7ca7377739007bdac627d4e7978365e8fbf6fe72b0fe59563f464f5277f7e7fb4322c69bdec74e6f6ef9bc75e88a689438f159ef6dbd4ffbbdbf1ff4df379bc17b16c4d3fbe7c50ebd4b3b9c3fbe7b378a5eb2f93bf803dc7b9f15dd79d145517adb8a718f236db6ffd9151f2ba7f7ac13dbf779eff3deb6744f7e0798c12ed1492ed149327daf07e9a27f96929cc0ed44fe9ea2f72bb7d40370de1ff7f4c6dc7b37c632a1f85e7aad8f530f1be397b6b4de8f1f12316edf6629706f9444bf73ed7d3b9de7fabb7936edd7211a110d15d17438d4afc23af5d8ee57ba67b3133fb697ba1c80f466b97d3db67f87995e8a756a23f54adb61db5fa54cdfda4a6fd1d3bfefacd25df7bc8d243a8c25fa0bc4deeb24d1ca6136b68b77bdbf4437b3f0d67ac946176db10e7ec6b0fe5d7e3e4eff4e62d98d542a515a8a3886febb573ab5596627f0e65d9444c424efa27b3776b87ddf33138abfafee895e12954e5f2a9d76482f132944146f079f67e8e99d8160f02a9b8f60f0299b9dc0e0eb101586aaf44b9ca128edf8f54881265b6b38004fcfb5d24937ef2d83bfca45e9a5d77e19bd7411684bf1cb219329ee0eabb48b7c770350d2a80dc04f749285322f931ec99a769117dd57ff4a9a3a142439105de44350a900a5aca004e90c240d8802bba08a537186ba2029e64c4a8a9ee1a4e819500a39231249a01e789e890df10d510d38e64825822177e833e0d6731483286e01f508b6441995d5d56533dee5be5042a26ce5f14aa0e20f804494998a8841b0744459e9b165081c2f840c024644949ddeb1dc1bdcadad2bc410b106094bd68d1d2292dcf037231a9138d1773337ba24f9e520fd844936667451c7ec98f409b8cf4981bfc3f4862727852cf6ac608e92b89b4767b9fc745c00e74f6563e6b9c39c2e90b29885c482013cfa86596e8e028f2e2883f88c90d412812040ac61e3bb37461707e90a217720400462082de0be3105dc05be111377c410a80a110ab88fc30943442074c41a42c8208c8889b229316201f7fbc339f6e0101d460a3cbaec2fc77718d2cd1c267d1b26ddccddbb997b7f3ab8d77a2e5f004fcacd9828b4324f5bb8218b37dce0188eb5a12ae078f2e4b402381f6db4e06bc5747b8cde0329d821ce1593b6d974b30228e5b78f1edce8361f658e31c62863bc3622d70621bad9b881c3c61761121a73ce1b5d4bc731cf8ab0988a41c0acb0fc29ca562e3f8a33ca50972f4df05d0c22c9b3080f20d6980fe50ef352142371d8f00128bad1e18499a9fb63880ce757ec0362387fb2486c131dce0f60de8824f3a177f092de13bcb7917e00b71b3be44de0cd7276a648853cb2397a01b7ac7efe068e596bdcb0bc2f1fdc131beeee0cee74a32416d93961dab881a3c3be8d0e9b880d236cdce89738937531707c3ce138c213a65ab9dcc10b22b4f3309944eed0c73d8456621a5ec07d30d0f8f11ab70013a9d04304228923e29458859e9be1b15819622d2d646889112328060c3606d8eb258697cb150657abe5458bc502036bb5fac24aa5f2822a95024aa1505d40b1b070816565650b2ba7d39413086a013499b2602a95b050fabe9f8f44ba02eeed3ca687b71ec51a7384b716c51a73abb1c6ec4b1e5dac311b6fe7116bccc6db79b46cc3b1c67c8e3e3fe4939833d698db91e83e220221257763ac316547207a24bf11a8fedd8b37528f51680a8e5f0fa87acc8bc532f8d16854ea98efaacfafc777157815fd0e7eb472af492ad08e783aec1eb3320b2b7b3aec8ed0bd24fb807e00471b938e299d6298062dc5425ce0584343153be0581372c19476e95e925f0edc8d5efb051c9de3e1a9bd94a0ef13a1972667a2f70589d47c808899e83439ab8fd345fe7c3de0ebfff72c7f78b26859ec9deaad7fb6f41fc0ef3fa8acc4b712bf5adf37658cc72f07ec65e5e8a598d1555322912f30f80fcc33b804be3efa5e2afd1bb1c09b6e22956c8cd3638731ce7d488c6ecce8afbfbe8dfefd1bd9cbb2e489d3c1335939783dd45f1f7d4898c019fcc5388b8df91ef18a5512c3312d8ff81b2989e19697be1c2df7e267bbd985307d13ade8b0733aecbaef47e9dfcddfb9ef07f8d1cdf9bb1898c12ba3959b58febd8e7efac9643a68b22b076debe4649998d24f2b3d56aec4e2c911c0dc37b87bf360b1c362b17aa7bbc7c23257541fa93e1abdf499feddab24169b592ac7d23b2cb6797a8785d458f44ef3b00000000088a3bba93efa724099cfaed3ef87eaa39b55f7c2d3d23c7d7473e9626006b3fcbb273f2e4e075fba796626fc57bf9b4ddd870478f3e8f907cbbf6f5f8fd2596efe4a0208808d2b56622fca57025d86787d77c910f9fe107af9be4efaf23a919137ca8df22151fae99e89c6e3f743860f1696c78fb572013c7e3fee577c0ce02b3766741db089866d9a990ed6c7fd3dcbfa9071969b67b08c8336cbe00c80873fdd25b4252c40003ce24f0000b80002602595236630006ef8ed387dc6259e715f3e64fc5ec66ddabbbf771a8beeb15f44f0d9fce802a8b8755a362abdade81c2ffcbe30fc768c86bc7b4b5d327d7465ceb7526b43151c6b54aa7467e158a3e2056e430d6ee1586b430e2e7dafb5210b8e746dbe5f29dd3c834b9738179d30308384e9a57ff613ba560e818f1d152993746dc4fdf5003f7a04617af4f530bd34badfd0b5117b3e7c231f463eacf45879e966d3955874d87de5ca271dceee9e27bfcf08e01093f4992edd617afb7e7435d7670430cb1f9e2935201d2f5a96e513dcbdebb0c05dad93ef62ec0250f0a3bbb2313b22b6b79f9f1271d6377601f28d29c99d46e2bb31df471f1dfc6eb62f5df9e4ae4cefa44e69e78a52e9df572a954aa5d277f0fdf5f80efe034ba57fdf47a3d1c89aaed461d258ee74d8fdf689c6b0c7ec138d59ee499cd9bdebaae8b06b592e7df4eefbe9a58f3ebae9307dea2e813eeb8d6cfeb000993406bfeea0953f262ba774d8bde302f83d62d3949699ee138d4d074d5f0ed0744ddf8eefbb32a7c3eea39be5930e3b9d0e25b9187d148f2e93fe011cfda786337a01bbd13f8a65ad65a677279f924d02fe5b79c93e91e4fbf715eb63e2d2419b04fc4b89c4a54fb0e59f6ddcf2c6a06db91328598963c01ef1f75d1c200c7699347edd970f8951ff7248ecb2252c4096124b09af6e0ceaa3cb272d43a16e8a5f8e0ef469a6b8f491cd337874d2630f41d3a7b72676014affc067f4dfb9afc7e82ad36994970f89592e31cb3f9b6356feddfb728cfed91216e0ca23065fbae93b6206af5cd3b743a542fd644b3637369f7da2f1f752e351e926b047a31b53fae8f2eb51fae831cf8037cb60f09fcd147f975fecf0fbace9ca1293c6a3d1a83bf81501ccb286bbae334d016a59e91dc8c5f7eea9142a75429d44a22a63b950eacaf3e8e0c501ae5c26a7d3e8307d02ede81fd84de941ecfd008e46371dbc31df29f63efbaa1d8e3e71638f2375a51d10c797835a893d4a32d951e9bba3d31e82f4d16b0f313aa987f03e5a22447e5e199970ba749777499038fb74e9ae24489cf583c419e91987f7386b92d79d6449f74e44ce4436ceba7b69e74764b957bb5d7e4ac45913d3a57b69071d04a4a6c974e94eed6bf4f9d1e9fba51d80dc7d7ddb7d7df7058493b3ed72b69d745fa3f7e9bdfb1add97124d3f44ceee2239eb9e4bd19b0f60f4041b8ae7797293534a5af1e4628cdc9c2d25456d1b187bd2a6b3a980f194dea6b3696f5ce0ced5d8519b8984972391bd9d72763d420b84983ed34a2b86321fe795229c45e95b69af80460b2a5c50b9c19e17492320dcb3c2d3f1a6403df180f056d3e1c6d1f036d4e1b655e1b280a138e00a40d476e48845a16e57a329008b7813d4cd3218459f80abc34c140cb7dc9b6f008b78132dc0d43d2f5830c75580a93ff57aea30adc2b60ac5585774f3e180a8c784a8dcd0684237acca7a8a6643a3d9dcb068363743270073056add9a0eba50815487fde5b230af0460a519613dc62c2c161bdad17294459db64c3531eaf5a6d2b0004a8cba91df0e55fc74a4fedbaba3ac4b6559977598c9b246feb2478abcc51a3172158034a7899d4514b1468efacaa2ee7d3a6297d4e1f6c3ee9a2ff88bfc573da56afd673d755be4f7856ab9b097eb05a39e911620cc3462f3ea75b30c7e7dc5a2bdc5fa552eac168e351ecc20868afdb1b79effd4bda7627fec313fea30ddb295f616eb6f3d75af9542c55228140a5551b15b6f542e958b0bebce16a8a865d2b808ea723d2bcbf1541f2cf1d13aeaaad49fba5528a78ebacafe681df5b39effd553b647eba87b5ffdacb3582cd66ab55a81b118576d01dc1e71eaaaacfa4a75d7f36aa5faeaaac7ac9e3a4cbb6c571b3a764d23b7c85dad6eae435548153129954a1da63f1e11dfce678b55e9685c0df5588c18997e3e5a47dd970e897f673c0d58e0b2c4a9fbd2d17854337a8261fa52b01cc90960eea02a221a212aa85b6dbc29c05c85684254aa88682deb36e0ed221ba16dabf18008b1eb55310242cc020b1c705817f68a613801c62c138a5329d663b1a3502814eb319b8454e5b60e89684435229ae86545372dc2b1a22a3adc58d7a30163df5e9f542b22103383b93e16abaa9b2bc8626154edf3b805c7da155332577ba92e318d307411d100cc55082675171718af3e699913a8ab5042b07422f5d851a75f8ed445d91c62d86f6392d0c02dd58d41bdf58d068e49bdf51814aac7eba8db62f30c6eb90703a37a91678a5d77a96c8c4a75d745b1fe2257d92230ed3509655ff73c94edd825eed83ba68aa93a755b8fd94c2306c650218ea11efbfc7228190066a2bac4f3f3b1e9e8b04ab5fa7315f2b1ed74f8586e79eab0c35e36652396b8c546dcba950603730465b35dd1e176967da17ee4a8c3d817ea7ed1856782226f7535d6b7b7acc7b299f597900779fd36037992d75b8f9f8f256ec4d6a1d7ebb0c384b02bab82a8f40b74e6c11ce798a29101040000006314003028140e09c682e178300ac448891f14800d91b056744e1ca7498e52c620648c0100000000000000804401008121e085e5eee7bd918f5f7ad19e4cc4dfa350f5b184b05da681c49f407000c05e13a71d6d71294e316defb203d3aa2b78fb9c922c7093994a8143e8961c927e7b90c3727a1c464561f0b69e4738505d3d5b8657fc088a6595ed2e7cf12faeaa462e9e8838e0101d0de506a1f4edf08141c5d45b0176564eca012b50b2eabfed28e0ab5ef141a844f13e6b8130fc81d9382e552361502072c43b9112d0fe0e616f92fa625a75bf3b9ee74a577594485892057eccb298725049cb7c08935273c62b21b9e33edee9ec487b24e4237160197d1be1c14d3ac5f01523f2b03aa0e6b926ab254d60214a68f5954c5231fe55fafb215f37a5963fc77c81e9f503bb2baf7632d761e663bcbb69488e3d935f7e3767923d8b1e62a87485211a8990574f686df61be9c9f07c6939662c57381e65df7450d228a9a66df27667a28634a1be6ef517e8b2c364e9fdd577c7dfcde9414fa70e54f16553e7d75f2aecb12151bb510c9024289ab6e8db15c2463b35fc7a0ef87419cd8358f18ee74bb4ae4dbe3ddb0af2e328684270e75155f5fba653860c7d34d6ecf376aa8bca0be87c2c0bb1883a3178ea7b40e4fb48d88a76f7c3e0ae25c8b9f9f5825bd9674017fdabbaee211e57a58efda8f15efd503b850df41d6362aa80c4278b55bc3cd531c04f993e4c773d14cf3c604b0725fc588aa8904c3b81f760ecf0e7595fe09e6ad21ba8ac64235045b35b55b0e61458128523bcfed59ab07c2c5c1f1095ffeaee221b3313cf04207d75cf813b31af08329a3d3544ec15d41ec7594219e0fcf52cea65fe30f75423b657c44b0806c3b92de7185cb50a5c0309d9accde049484128e2abc2085295a996165b6f16565493246050b6215841af1f54b9918002f2079a6a2faa57bad81e933366cde03e4b49a2fc7e227767ece4661cb3aeb180b0280a6b97fe0692886579e9b405084b7f915f85e20b7c523966d0c41234c9e99d60029c4f6d387a7e61336271ec95c1f84b1cdaa0256367e85181aad71f75a4b4ee3159a93519d127a11a61150fbb35b0a116208e53f374d01ddcd304fd48357e5517f45041a7c48020dfa5dd3bd99fbde5766f06d99af292354970abb41a03605ab6a6eece6fdcad8d57d86045925f354e4ee5d4a9df45d6914f75ea02a86cd0da3659b0e12b8f22b22a4a769a0a181fab307cd9588f1673dad0afc49a02a9921847d8ef6206e55f4c0e379499c9f288f80129c6bb4f5a957fce14f04e31f7bee5a538f65d2aeea385e83d2868614ff3bf38ab474c7a2a7d8d311c02f6b34e278aec58c3711f776c26b20e4eac0476699e82253d434fae1900fe953c13db4ab6b1bc744d157a25c372d25fd2c2633e65bec16302ba751294698719ac56233ba7cc472a3b8176f15d67bbb017930f1959a1e9c0b7dce6cd6511131c28651a885498acfdb6ff5ecac4f6807c11bf16601d394c1a324bba2af3697afa1c2620c56b2135ae724027734c2749b911729886e707815d54206dcc01e92a71273d94ca99c8c1460aaa881410506c7697030d278c353b18f3353289951a877460fc94d1aa316ad2c209f413d0edd30fe3ec531cc0713e6ba1e1c243bd214c5a684902a032f35e569eea72b97939f49c26b11c2c3499a0310549d9e482b44a8c34d995c63b94b8dcad96a5ac35a60bcb742994710a891b73596ba30e216794899cb85a17455c03f82e20128efa85a2fc6ee10e99e47a5b2022d1ae5004c29b4d70ae3ff07560dac9c50007968f828f9f0e027b784252157835323b940af61747b25a110ea1a67b5163078f95a81d308f0366e2a0c210a2a193a08ce2c7b7697bad80372e8df5164e9bca57ea3173be01028852c259e50010c95ceda50d35836404f52bdec754c4b018abfee524dd6e45d3c208eef2b08f407b060cc501be1ad0e9b3df78cef634ac2e4b4401e937b5946a5f4325f7f290672f635df52aee519a9bb4e87c26a05361665426626c0efa867cf72c50af8d84adb5a31e2dfff9790fe12d40243e26c7ac04ee0eb5a8981b5250a924a0925666d24b49245662795a7c9a132f4e1b6e54b77e46a89866d6259b4ad3ff8e9362e7e6dfe9e9a777c0c047f1c3adcb421678ac9956ec8f2d22aa178ade776b8277f628ef9241b7f0d54929b773ef39781263c2479d8e83c146d5c61c134b935097d7c006d77ae87ed0f686876eab61b3cfdc6097d71ab3ce08d011b975a125a4bc21d68c1ef3ce7c36a152acc08ac5f59c350b82121f2c94c7924d61658b8aa95c0dda33a346a1a2ce61b8ec907d238fc0936e8aa80edf3d363bac1f630e8b6091cac918c024104c9b31b6cda7df1fb711d8e607cec5ec01fcbea991daaa06d46007c252b38af9b1c627ede0eb8b2bc19ed5fa4b58dc6f4e9b4d9894f1fd9284636dfadc0f8d4b55e2015fa150e66de474c4fb1b168b503c43b0ed531d69bf359b643ebf453a1cd052d2e25af3bd6b6c484f94531bb2e26c61fc87f0e0b87b9af1cb1d883104077594aa5f8dc70047d7e89a9876b6dfb9ae51df1bb64c6b87982d849162d97ab453b8c632412094a803629570ca6fa0495904841e818b06289bd846f88766390b881c9963befe13a274401acf19189c83433ed47c46e7e819f0f92aeecf241aeec3f0c639c48e0c26f1b1c039dcfb3b34ea572eb89591ee08817f1b8a21aff8cbfeab1e38723827c49a7a6b84ecf3eeb257d5c6d83367e404af1865558eb817112529e68f78699f40ae282292727867c97bc585aaf4b821ddf7c061c4e56371bf0f4e505598c698344476b87e86bdd79743615005b7ac470e3a330f3f42a32c0075c8a2e294c4a6921a3be89a3a54ada6a43291f6dc44f93d0edf18059669545cadcf842990fed582bbc0c0bcf008f937f5fb3d386213ed60f9c7e98cdba12f4d013cb294afb19f00c4f2c74adffeb14f615cf6a1372fdac428748b4adf39b9f22ad811ce147154e7a3751854f027b223767df308b612166c6860b436195e89f802e8dd9ce7b1415cfd9c67e59920881b2bbd3185dbce169787ed69b49e182bd6e50aa3b55c3308044565d11a756709a89a7a0172c2bb456aa0cec5a5ef120af89e9e58f792c0236b97086267ebc5e4ceea09fcc4214e097d8649d54aabe3fb7424b36a70250f5d623ed608ac26f7861b378272a0a6b1ff22758199e4f00a86e62850f24f270fe021d275a8dd2a6f147f9af370e7309a6cc586462634b6f64c3aa671d205dfe36b6243233a0b5dbb5d182776c42dfffd119bef664923b9c445a3424b90f3a8eefac65bbca2cd78721579bdc94ee18a1037feae6e8e82581a763badbd2fcb3c8457d2665936c6eda9a09307b5472c950915dcdc119b6e50f4da037aa91739528c307f69fb142a4766b638baf453f5da888e7b5a52bf5e7a369a93b0fbbbe58378152f241d996604788780a7290f3dbe133cc321886012f2516be2052939c728aab3059a70cd934c04711bea4dabb016441b0973930950ccdb1a44d1885a0c450e4a813bc12d5d3449fb6df270fb8efe4a52789ef434e93bae4f121ef6542f9d3e04068acbb495df675602fd7f32a12f8d70022d9bfccf349835480f2a436927592e97abe62a436f13654286a93a6269d590965f4c1a4b888f3cff0ddf237881d897a41758b2b38cae0f503a2f064c309b5cbe0743d4bd5ce17ebcaa1ffe709971d4a87530c0fe5c0deb10204cdac5964955f9aeae3fbd596118fb4027c844dc84a9fe6d350a33b069810f127e7fc363824beb49a6cf83ba0856e05683c3d9a990cad9c627af8297bc88c07a5e6a54041eeba13ab833d582a42b838dcfc4bb40d4a92bc25a427839c68b9d8b4132da219f497416569fa6101db0ed500f38f8537330f8b4f5e056621d4e1798e10359bcd393a33f57eeec27fa9667902c5d21d82f6a55c4586dfd1c5d06f53e0e4bf0a6fd63e6c12d62695dc587248830424083779062936c477158794dee378d637b755e28631178df622f6c60c9e08405be3c87a4054399f85ca958c12d1f4ca9ad4825ba4afe5f705238d44446d3334eacdadeeb04f6ebcae6948236b2b7631f5cc2c8a580758b6ad907a816c157af08227d8a78001a899d25257429271c34e801ce72ad35082ae413dd32763bb17345afa13fcc769c2ee7cdc2e7d091865963efd639d45a0dca67e15ea0a32c7c62b33281a1133be4a30d272f8cd80b133d9171b987b57fac10fff0ad72b4d8f258a1430ba0b394f4db2865fa227d18fda12e65d2b197b99f7960469c42eca7dd6455f776b735dc9f6d5da193f00cef0184e31efc5511031f84390760ac61a68d82b38570463808bbd8136714fc22a702c08089d977084337d62e110126434f9e43b8853c52169e732654f9aaaa9982db52b6f1dd772d1253ea23009161a22b137ea74b59a8bb47b88519963ad7cc3943420dddc2bc6b6c14aa0925e997b3ee593b0904983bbdd78cb12f058b393915975388a389980e29219aab24ac36897f4ea9911fbf0cc50949ea8663718478441cca88a762abb3bbbb8ad69100ae96823ad7cdeb12c2d98b93b70ae9bca8602570dd8d9685db412abe6c26a91d85c4762a558edea3539b7361c218ebcb7800d58d4a24f04d42b623b34b95a6ca643d32a5cd0eedbadf4f2be56d052c794f2d594fc6193404511af52c9f121cf597398d39f73074955111e853d01c99b4772f82fc71cf0083cf2b737aa95d707384024d9454463dae66b8937437621149df9a7d6fce3fcd8d4716410b3a7229c79d7f00699d440dbf514e7eb5be16ab313f512d14c30199eeb9f0b780027899494d0f8653d65e624e6e30e03199c0603021bbd8eaf7e4b3240e24999e1e74bab5753164ac875f96d88e6e5bd29d287b19e0970ab1ababb230a6db9759ef992fb45e97446fbc393f8ae0b3cbaf26013fbc534049f71fd4a156ef656eb6fa4137c619c72aeed36209801fda3113bf31c412b72d48cfbddb51ebc0770bd23d0b4aed9bce2c925d2c1bb80014ab0dd0d99248b710e3938bb7deda35b34d637b79bd9e7798b4be3323efdb9418c8ef9ded5ee5797c41767a22ca06becb7c93d4acdd5a57143b23f8cac0badcd03089933647f740f6176512983592b1e73816400ad9fa15bc9c082dfc8ca37dec25183bf47edc1a76204c53c0804648acdfcbdb6d5bb89c0a72955902fa865afe8a332f39b2497e783c192ea3bd7e709ab8cf52ec0bf01838cb8c5dac1effcc9921ee7e805988ee5381ea7416d10ec03d6bdbcac3e8cb169d61fa296dd7807dba7d7cbcfae3230ae7ec7504db57612ae0c8dcbb0142283a6c647360b03f09ffbdfadeea0112eacefcbe047fc94c4192358c37a27e0a3bf51e870034858a99087196e11e603b10b798a188e1cb55c1c9631b40428d34a8907a6fb0aec39b6119e1caad82d152ea261797b07ea1a0120a2909cec77aa7b6d17f98e52eae395bdb097ea6a7de6c5a2707174e843256fa03e5184d8af353d10573dff11b6c70efa2906a53440695a18809aec8050c2ae63b12525dc480d7728a69356596bf1b993828a15549ea479e82a22ee0a08e690e0542272b4e05ef1401d4a5e598319758c0a8f2989e1d4a60d01f6395a360a478bd6a60e254fedb368311da526be1f4f082cd157b276650833e0e4e5892b6bba69bf5421c3d7219e155e790a44682039c8d2875503e9bf206fa36d20bb3b19d7ce7f63cc0ae80133318768c01a964d8fa45c503ab99a8cb7d03ca2eef5ecf55045ac7c9036ef01766892e960e9dbc83d52410089e3b360747c803e1dc301e6f90373f006b615d9979b4ccd206450484f10bf4cbaaf4acc5884b51c893410a8417ac1acc70b9efe2aadfb6a4db0c821fabc12aae1a476def441bded346f1ef61e394d17f267737ad7156de453931440c58f91ee3c9f0414c5d55e65a156005224901b4110d52804856ac292ec586075c96f92e12c60f25e142136dae72bd43b594132f5e6d5c40417bbf9478a03fc2144c3e81ed137c903d96d4c2bb938676e87d8a887d7797aab591fed3ac79d55dc5647b3d5c653ce2d82b2cff9ee17af60ca447732e1ed6c28146c32727596e3d6d315f08d10b25fa50585129447f6c6c176632c1fa98afd1cfea50dc9611bf142767260d466e25e0c6f350a4d6f651bcf690b2fb41318da9ae0820575ce2f7052fedf40e48cd60d81b588fa011bb84c1a36b7460d6b379600303815c52d7f5cccde461c91d574959e20f3aea15fe120ffcd1859f6b408c3fd2b25c85cf29ba801efbb83484f1d84267d6bca781263639463bfe1b7cba5041aea6caed4cb7e10858a90e5689fb723b06fde68888eb475dc281bf108e0cc30e139ffc378025adc7b04fcdf423f48129ab1aba50b2c072819193eb8606b083d8d2e97213fa617078a796d8906337b84330722648680e4708fd5ffdf16f90d36d952d3624d89bfdcb83c9c5df13cd7dce7a7e89aff6269ef2f65233747096b012d2869ee4f15aa923398a46663ab0d6e25cff029ec1ce0fee0d7805225dd2c8fdd39166cf3a410bb002aa7b606ea60afd3781b699c0d2afe95cae0e247cfe666affa47acb9678aa159df1cc9d3d730400379d08dd39b9b13d2846045bbd0ca94d8d292c8e1d7472e969f9c199748ad16496b841f607f8ce07b6796878abaedc755d60c6ca42a00722660fe30d1df01c95d043a2558d7cd73f2546a22c1d46732298b0ed59b650adf591ca176ef2d4a5144d09e8da00293bde1ce9cdbc0d4831069e40f4150a1aa05d7f20521a41b449b920fa2567f20580552584bc9994c681d55ecf9571588aef5342755daaaa20047e91429b40d5d8302a42308a76c3ff4e13286a5442773c4989a5c017de7533a11eff15a4ce3a05dc898310ed86424d5ff1d6b7ed421594333d1060dee2981da545a8d3d28391ac9a0c8fee42bd9b765bd274499590d9a9d24e3a594b52014cc39908beb2e8e3683cb75e0622ea27b421e96dc49ef130b53671a2e6667bc91f3fb0d6c2dc1eb46a05218c3294db47a3a5c601d147e3047c9b002bee407ab8156cf5a1af5fb7223e2b49efb5cea494d1d13f59745b0b052dec1b3e9f2eec9de5c5553b29dfbe1286119b0341a3a871223c46b0430417efd9333bb2df89ee10c9fa0b864d0bef996b01dbc46099d2fbb91baff560f7b3def03e1b88e71af880dc371285100106678df3849a81c333b703501a9a511c532682209af2780e4faae12050bf71e7ae04521c5925b7bfc7fec9e0f0d5886d7058ebbd2b68ff9c780f9eb5c17d667570a720cadab91ba9e36ccf98565939ebc0e322aab60fe2df5eef92371a17b835570e5f6846a7ec1c2f5470bfd11f48f656190a54c078230b86146a696ee71f982442b8a199d822e58d45515219c7522ff0c73eb0c155cd8fc8d38fda9ae605ab002481549c0b62c911079f75005eeca2054eaa1a3508e31ed4fb16a28a72faa1ef0188c736b419cf29ccbb022909d4be94df5b78faf247b4cffc15fba4d4969e9067fab7419191376ec80121ba1851c8fb8e55e8b3e78747b7e5570fc3c26fb052d2ca683280e362a9e7388f83f3e30ca352219a0179df103daebd457fe91fc6f4952ef71429d0e6e0b5c8d40d7f5cf5125d363c0ee3e3c0ce79a1596602b84d9af753350a8d7d20f3e89372e77b09ecf941f3a50a54fcf9107c0d0f08613e57f0eabf2c90d9cfd2fb5c214a01df205c4ae053f9218cb3ac543b0431dcbc90510af5c01cb24a1cd099156903c7eb47b8d1f213ba02b51e546860d14d44cca9601d159ed110116fe5b8708e655a32692e5be59d7a471921eb799a8f05eaf428866b3bd2bc75927cea7ac982546ad5307133714aead062747110e1c1f7c2e75016a9582537d881c70b72027dd418bf5899a9b3c9f1946ab5ff590fce6cf01a68fedb65a18b4a4814e7debbefeaf76508406715c76543a7565d451822cc5246047e79a049bb8c114640881cf41944e362f239a09a1bfcef86cff4891dd75c736019a4d3aefa13f1e14c5e49efef5e6bf29b209f1bb0ce989aae66060dae14b84e890a0e725cb93d9de772eea03b8f35a2bf8a9936f645177b493637617d8491195902db176916a2b6dae12c3eb95cce735230fb728febdf418a3fa453ac72798ae1bf3955d337aea179ad8c2458de70b5615ec5e4e8e82c1644600f25dc27897133876f8888c70ebf347ef7e97d2e50638bbc62eaaeb314af4bf0a095771bb7bf3d3848627583fad720f2e91682750d0c77dd42daa9e9ed752de21b9ee37f168600e1d6644029ba46132cb75774fd96df3bfa16f9dfd1531e74dd73bdc25041f0452e3141e193613bc4d7082b14cc00f799334dcb0fbb8d157b2b7fac831a4c14c18900756ba9d26a06a1d8bbce08cbe2b9e3835c8379694a57e74190215d746c9dda585c9080f1f23a83bf484ba4467789d12c8d17d89f2e181c9cd30daa7dbc22876c43befb9b5133da764c6173b356efeef9fc7d9abf17f1899d72ecc3cc5bbafc099c50cdfc03658eee76449afe74c1ae5857e5eedd8994bc0a07df9d3c28ad87a59d63427860f2dd37b27280a7e74de8649fc67772c2da2029b9dbd6807a6df8904ad6bc9600ac876584ebf6e38bee41e8ff862cf644811b125893054b02cd7ccc7bc5d82e7d666ec1c28ee1364d2ac6335b8314cefde14c392c32ef9dfebd02a3b8846274c656de33c176e28043c1ab3df799b69bf849d509fbe0eec7cacae0c514f528a792530ea477a34d728af822f81405c771ae5ee745805b28651782c9911d1ea6bae84cdfbb1e8daeef4be62e5eab55805b5ee23f92cb69a087b5f06bfd64293cb340923a175e5a2c260513392f00cc6de63ea14fd089d265a302ef719ff1c7c3c00f8c8eec26c6ee02bf347f39fe299efa3ed2d50528d94164f75a49a7d3db7432be5abc3a519f719972c98eaa4180d1913b295dd32adcafe3169d2d9b5b0920315f125044774750e4601145db176d2bf466eee0d22f5db0a8f4ca8c78b57774bfd6cefe4b6b013c27a453ae96dbf78ea76ddd362d4da1dad876ba0e7e2f7d5419551ee753c14d1447d3fec516a8947cac624c4eef41418aa10bac94cdebe0bac3c793f7afca2cfc57f6886c6c8c76e0cb84e0ddc33e3a63499a013a8ad30607b7cc74f22771654ecc1f33004ef3021a3a9e100b7c2dfc1a5e92255d8614fedaabb424cb50857ea11d4b4815e9de5449719ec166814c71fae4d4def81f9e8a8f0566ed6930a97c770364cb93383deb7447688ad5262301a8627a067b73f430f306bfe30543f9e6cb4f00e089eb6ab66bd297dcaf0892756349d13d2abc9569ae1415a980e869221cdfe238a0d2416c0e06fe8e8ca074026d3831c2d8022d2ed3412234e384dcb8636e01497fa7496a2e73c22958153adde6c197093e45482a7219f625dc5465697a5ad0c27a9ed7c26bc68984f83edf991539d51315ae6162a991bbc3f58d1c29ebcfef17864b20350ee1dafd790f4d72b98353490c4abb57b8f8e0cb031191276abe744bf7c54474d260c9be2acced0c690d04bab38577ceec53f03a07ca4ee4a0e1389f92ff299ee20c9cc588c632246cfb4346a80ad1bee82495dc5a46fec97b2fa1dc4cfc537c5ef7d8ff075760ffd64a1cc465b85d239059fda1392747c8b90aab52fa993c4c843b9e0ff3291e3c364486d8e606446a9019600a6d84dc0866c0e202b839e08ecd5f1bcd02866077ff9c8421000444120055680acb158eae249a1010d08d437bbdb7511a66346915d7cb50a7a37b04e5ae046568e84231451bb1910c9231d8b6dbf054a116f36d45f711e40f3e6a1f56b904877976fdc3e05cb24dd2e1199bc7ccedd420061c751fe0d45427de45ac0678ec02f3534fc6b614e04e77c10fceca184dd96e021eb98ee6e223e58b84aaf4645ea4a42638a2e922783db1028add7e4108374e360ff3bf74b8b955282878368dc0dafc423f584490c0297d372646d120dc6c15a9b5ad4f6df70e681d485e9b2de10b8963c17477f1c69a1e04cb520ea8c0ed648dd50539e077edd7f1bb8e4a625256d87890973a148144f48bf49f333b84f0b3911c8ba79f42fbac68b6d95a7c2ae7eed9d9acccca4adeabcd4c167a0daf74e2797e69f9faf3507ed241ffe2e45721261a3b0ef1e01ff58e3df08ab796c3931d4f5fdb44d6d7787d367b071f279ec593ca3d8f7d48ce1135e3fed7d232f5ba1f46ee86f1c88e763684ea5994eda4b15c4f7c028e2f567950ea51bd09a4a5a84abb49cce646ef4576810698b2cb33d661ea66191cea04b8804e0703045083ad3a014147aff28e20996a9709cba85d56cc3ae0de2aa637eec489bd0dac8fad4c02675437aa764661cad529e1f90163ba9811aeafd9d75b8d5c66cc8d0e1cf4c683fb2d820f87f32e4feeee78dfb6a118a1957fea73722b7902ebde949f3cdd6dacdfec54302c2d236041cd11127029f59883a0138b496a21b451c9674e68709897c64a51002faebe235c2850b0df715042d13045a6b2a9ddde78357611e018ad86254de2036d4eb9b90911d9f50edd6b2cc399d483634439c1f406b7126b1fdb50709e074b05aa7d8e85f18173faad9a2d204348ee9d16d66fa8f5c176783483f577a64543ef53fe70150849bbe7ae1ca81f26435742d480ced8a790b81c4d46771e9ebfb8526ea992e156cc66649c6487550aca2aeed34b230c5a29b64a0c85e3beb99dacac667f5911f466b7431dc72361d5d7b1adc7a7f2c07b11940746dfc0c1615f1a37b714f5bd158d8fc1df4c667ef7e85063184ebcf0a48a617d9787fadc4b5d862e97c7faaa3105e9a05e2364af216c3155ebc75c77d7e6a58a52b167f6e1753ca179a141c456b8fba02012d35bcf892f9d70a547486f90176982c6c2cfd3a4efec31ee7fc206b5e3a1b2aa8d1d308145d1ed0ae4ba755285945272f14cc9143aab883a875335bf5f9e6d2a26e7a0c564e86b0a181cd799ceacafdbd1ceaa2a3975f369d565e8eaef1be4304643da04777f8339c93a05a83d35974a1ae3d13c27442e1d23a6b3948f96b9f673653c41c0bef904cabe35c1a77f2eba88606de6f35c0ee6e31cd0dba5770704736040a500d30294cb051b273ca8f138f90bac541a31b06f1c05acf894d7008a4f361f0b0959bc2320cad803cd1344e71a09c3f2648fd4dbbd61dfb85e1a2c9e83014e41cf1354452f491be7bb70ef510cb1f52609c9360458a776a8ce6fc6c7d6360a55668f6605ae5c8f81020b93351765161562721628b4e34b88c2691e989784dff4844a99a04e739f0dd754f33eeb7f162b6f7120dc6aac331244962743f626f91d041d6c259d0bbcb3005bbb629dbbb2ca9e196ef8ca7eaef3368e73a90d54276d2076b6882f436a2571ad42951f77cabc43fbeccd5e158a734065b7f485e608b566363e3b93dfbaae50bbfcba6c7069bbf533371f86b8c791dc510dd8ca6d35f6cd65094a2c7b05b7dd5a2d2ad6cebd131013032827167683079805d013075cb83127ea3d85b32060bce464cb783fe875b01e63e822e469bd9c09e87bf8bcb514951fac8c0f867cb4c31d069f77237c7d5bf60efbdedac3e77f4ad7dd1ac8109e1d64bf1803ee81280c63eeaad8c6c1e758cecba3042a5ed8503c4fada1669fc7051ba61c22bcc4f58c6bef2b83addd8f4e9e6ba0c4d1fff9d69f553afae2227e8cd2d4f2662dc59cdf3fe1b661c769d3be3715e592bc360ae3fda928e0968ae60cc21dc8198a766b38b51c1045b5ae6316ee137b885ae0338c1d6fde79b3e88c8060fc164981142b13f663470aaf0fbe6084208b61e6a7ad679e6dcff4c4bc12ed01d770f058fab57303582d5b0e02c8fda67154338f08ee7174ddc2c869a3c88da039c8a4d389d9d31e1bc6d36c113e7228db6885b1a6ead9010bddffac051404094c9a91c3f3025cf8cc60b09e75280ccbf0ab5df73b6d10ca554f0e2883f06515d4074d686ba8fb129630c8be923ad9cd1e06d913dfb804a8f68ad9f39f97ac3d391bdb57186a7d38e9e2ad637b1be6b7bc076e1deca64a14d6e837d857407f7069cf1cfc60d4b0b0d486d7c593ef2d9be35841cf67d1b15bd70b763084085d85dd05883c2c4b52d45feec842aedf4ce1a2a3ff2d2853715d10331c85d0ca1e40d780b472b70d6db2e983c5b06a828bd5c0a296fea77572d35c1b348545d36c1067c979aa0f3bf9a45d86785789764307b57709218441f9c8dd36da91c21463e575744273fd18e97984296c2b8a380b1047cab8e5a18091f82511951d2a2d8a714d2893633327da4885745c2c10466608cdfb20fa304cf6455c4edc67cdbfd075067fb4151770748cf9ec00ef638bee71d0824b593faf0b244a721a049fce40b1d3013de3591e7f5f8e29fcc06107673a1a91d0650414caa3f35fbd930572a6d0a974f64c664608c6ae7d14265323a251d4b4670d94594f8b378bcfa29c758d71de88ac6b40f5135a1e47421e408cde4474e2c7b6c8e57d206e7044f7a723c2cf91835af2e6628d5be286a2cef0c1f5a656c0050854ffe8a7b4a2cdab13731194372edd288673d288748dbfc435ee547cecf2271de8c922c281f6c19f7250005791c144603b39f9fbb6c10f876826c1acc9aae1e37980ae757609b8d7faddfedb385863343b047ee3c3d6f94de0354097e9259bc5ad11ba429f2487f88cf9242606924b027ea519d0eab3650b66bd450092439f3e33f72fd4b2cad38404860e50ba7eacddd5cfbd059af00164116890aba23616be52a3e1f1d51f9212de116edddf41ed81e4cd8a04d104c6093c647e6b0e3968a71af0693d0e16a3bc1c0bcf8f1544d95880e8a04782ca9d8d22acdc08617544c533c17f8558d188286c1e416eb000622e2c4e1e0760f6d9310920486c2af75a2f8abed04177397533cc0e4a73f2461510c8d4d15caa2ce90fb2c593c80e075155d6a9b5e00a9949e82d558b515a63d3e7a3f86c2da7ef05f3cfa5a900117fdc9f36ba8f5a1e6eab115bad979ed304e1a9b2a66b71f22c687e2e3d153c7fa752d7542d003dd4aae153ef01503010e2560252b8f5596956f2f0e586ad3706724651db9c68c10cf36c442be79aaa248277954a4ee2468b54611a2d3a56315a998756e266ce53cb5ee32ed49dfcac37df5ca76cda79f1d50c76066f129c3b133b43109b798092a1fac79851855d194f0a4597582132c1435bd5fb46e49e28dc7d36cd599da7019d7c8b23e759c84c9cc30aba0dab34ae6454d0f909ebb57009a0ff0eb23dc6e943b051fc065640002c3684855e69e6f8d78c6bd2a7fd50bfd9ef8805a08adac67402f12b14765db4131a3777281afe8c3fd1cf688c0d99127a400da7f771257570beb1cce63f48f67e056c08c8ef58f9e3617eceb59a44053d3a8dd6a25f411eae081bc7128b93ff88fb7ece845ab1f8d6795fd8813f7cb5715912b1b321bbe0b0b15c648f0c81212e515d245060b3dfaeed404d59e559a1143285108c20db84686dd3d59062864842fed8e4e55d07a2de7dfccbb458e0497a10cdcb78592cbac33fa41a9e4396d49b4a6e20adb22cda780b70290ea704347030ae2880dd7afd32439522f20d853d91d1890695af92a141108769c9a89cdfe6afbf0fc1158e3053fff286e5dd8d5bb744778a0816f966526d4c3ac747cfe70d44cf9fa9e1552b6e071a5431f88aeb24345170f7404a3a5094aa2ddcde84851281df325caa21c5aa38b318314b0446c0265f2dc28bac0ef5e41c5ffedafe4551499fb9db600775ade0f130704571337ecc43207d047972ab413692d9005223e7e2591758ac43fba1c3d520feac1ce7e0a647cd3767cfbd420f92ad11004aac6af01d3bd86ec5e0490700d9cda8423bc375bd22d915c28518e160e047075143079ffa0d7544338c8f38ba20cfb6010a56ed2c4a8a92850936b3f8e81f3fb231c801517703ca138b47600c89b0cf13501c93d39c61cf3909b48f86b407df338715e93eb28b360dbf3a117d82efa586984b08369035ab769ae2d4d93a54883ca5a392e1b0cb6475aae809a825cc9e4c736c72191932bd60d87d860b68a66a8726d80117a0f2536270ce0c4345492da18c614d05b0084af12cf9ec1b66e12c1044a956663259a903c377dfe56ed46670950eb75a6071b8d1e700e6713593384b15496fe689ed7aaa3fc8739f99f8a05e6a381feea67992913990429666a1005be73feaeb2950ce5e016b791ccd08e0347a97317819d92bb46e1dd27142ef9ce0a3fe21d3c8b4c7c3e47dc13e2e21958b5b5aac9ec9d6614aa6a3874261d938cb8ebc19a956d45f1b51fa5504773137d39e79feecc6c859e4a671c9d6f2d75b0abd7cc32d638f07f1a41d611fdfbdf3910f946fec089bff04e5389e97fe06cbb93d949a2bbe241b54f54d436abec94661c37167ed65198c4a2ac81635dee0e6446b55d25205fb90f21aee5103dbf53f565e735c6d5e4b44cd60fc44b5c0563d6073bff1e539fc6c1784ecff5af0865a8c42410cfe353ea9ae6b926824c1d3c75e942f1234b8016ca79477813d919ec80ac16070c5137ee0e9854fc73e5a0efd3de9451d2876343a7522f00a347d85b1a3443357fbb924ea79b16bc04db5c3fd4f2ce4d388d99039b09c87eec284fcf634d4c3249b49f30ecd3cd2aa846f1d3844802b1859782b9d4a43831b20b40a48df0b69eec84efdc9ddb40653f4697e0ef5ff32e1ab338976fa85add5a654664268ac80142c3ae8844b3cd292f85e171c3ce8b0676783e20119fc5b2273e9c8afc5a78c0a0ca56607810a483f2e8198fa921c1bd0f58aec81c41dd34f7862ba2d7f1c12301692d366cd5ba8325f321efbc0f711303001241ec6a10a81b5d2e60d95fc77a479545b7261ab09ce7055d4550aa04a8e2ca9a94215105c9c86a64c97b2cfc4daa1dc79270c599391c3a6c36c93729d57fe16c47467dc6c419110f150e3ec2789374ad8509d25a4f1458aa993f61ac2366bb30a436b62ffc0c8f36043e1963301d0f4f9b4ee6cfcde39fcd2118b459856d2d606e7368c30cfc6b7717709619977ef3309d7e03002b6f1da9e88dc21b7a703ab716d2c607a83ad0d32c2b55c0cc5ab06697085ffbc47585b8b460a61ec8d82511e9a7bf03b804eaeb40c9908d5613e0671c637e1d706879a3df52d1e081601e0f870b76379eeccb917500b34a7262d1b28a5981f00139178e2b1e75d23134b57aa59526bb0ea14e82c732dd893c8fde83ce741e1e4b06d633173a2a6af64e75493f234a8f0632ca98d439d9910d12d413f977a1b8f4f64655bc0f1c83888baed204dcbae3327cefe29274f58d0977da92a9ce9e4ffe83a78d11ea8f8fa4a7f13f02c949a2b4a66ccd61814219f42acb77a6f23ac9f1fb26961f87bbcb9cd7935004098084f0acd3894f6db575a97ff88da318bf2488e039c110f4d15514c801249928e5d20345e2f586f8b8d442d53c2af619383bfa7016d7cec1b1c3c4aef0397b772a55df9a8d9d0b0623474c4406b8a71e163fb8986ced24a630ae91356e999eb880e85e1c8653ea983d24619fa2124fb7bde53cbb1ceae39d4b7a510c4e8a89d3e231f29b0dc32dbf71c23c995a5844ee8cea17e2e42d98c87ab0e93c80f08fb27768c3882ccc3c9e5d9f00d14244af3d804434261092c2c436a0ebd8d304afc1754e021338492b1b1140678101a17ba72237b858f590386d639840b4b3259916b12a221757d14d40e5888d5a84d0795ffe34812da06987f19a7ab14a6d62c6f1d4f7852670cee939ac078b88ec1920888192d7b1537a6e1cc4be2e8894a503fa0c8129f1ae9921078540878a44fc72d0c29d88226fb0a909b960a8157ea3a18d42e3c1604a66099bd621c3bbd43258f05bb144be52a1858ba3129d5b6b513da0503d71cb05f294d0d9d47b02547a8c1be1f40d9d4322e31375ddcb25776f241c5e2d16aff72a1c83c29f12860ebdc26c15c2223e10af190cd3173de580026fda7faa6a0e1d7890599c8868696d4c5ab0f6620c851094607085203b62d0f168e0b1c7997a68598af51288fb85765dc5e3d87a96502b718b8e33e6f1718085f9f1139bfe5f49b665e0af1199ef339eb62f9de2bc681b1809d9d4ff73e44bb70bb65dca34fbb4e143e7ec19937898b259b5206f29b83db911a0e57395379d4a80bf23d07203edda4094127e34f265b6793d5bf5465c8e3297467967c200a5f166d047e6940135797e2199b05fc613145013fa6834cc690a3c9b98e35c8cd49c82377afec210341d01b649be278746cc62660aff4120d15545f205608a265b52bcba1637fd4a3111c324950811988c18fa0819f35efa1cc1fdf8071fd5ef92d8fa93aedbb1c3647b19570a6503913f6383e6a3bbd6e13473f4317036be6f5a823464f4909c147b7e0086aefdac1c0e5cb45d61fa7d8fde1d4d6cc32af7aaaec6429cdeda0fb30d293251ab6a2d4509b9fe2a8e5c973f0230aed4227969435317d272e7d99abcf8988cc1212cdb62e060e4d38cc43ea757ed55afd8c5578fbdb26f40d45d61e43caf6f2a62238f36903a2b95f790e6fc0af4c32dbd2db1f6f87cd4436b0bfbf05d93f35748cdcdc34d21067c141220cb5bfc106ccd6fa5cd95bc61dc694674f479ced7623f2b4561aa4adf49b8bf66e16c857f2dbbe869d424dc642f3ccbe6c26d665c8dee13a3ca6573024f2d46d4eb9ccb8c76f3a2da15104a4e8f4c6ee013fa5d5580a6e8d1ce4316ffe272a8dfea405bd7fb4e11de3a641d1e3e2126e0bb9ec482bff0b850326b62b540b982bcd35aa7964d07d955dbbc5a3d27b4702a8646d2b8ad5ae786328e04f8d8aec21e13f97bd504a8d705110c5e76512fa184d2dac64f11296449fb310f6aa6ccaeb51613c4b4cfbbe9d424e1a9e7ad0e8df05dc72e1474626870813b4bc750bb9c0f8f0e6932c2bb2f7b1115040bfba501d2661650019584c6dbddbeb2002579b4829fdbb26b1f11ea4ecd07821acbda3511cf6a27aed2d91e6926a10a9d4c1d32c4e146ae7f30a19d25cb1a17c911351f4b9db282956e0f65724fc6b7cd232c6573cb3038ba4dcead46b5e8dc77332c90677aba2358c0acf6e54233f812bb3aecc3d5ab90855f91ec1b594efa953298f96d47103b8498217c4905675ea96fb10b25c4a0461d08bf877a32f67a07a7b41664db80a0e71168a9ec1ad881f19c6ef004c3fe7ad54a6983fabdade128938916f9fb686d2e8fbf829211b285b35e757bc5073e6b61432a864244525a0a62b88a9f7b8dc085d4a6e1c1c99922539b7387484ca80ab4508fca102eef7cb42353ab32be19b6a281f625a791d091702ba6ab2545e94801d6ca06ed6ed7c3603aa9c648c3599e1ea8b6b80b33f34626d0165c315a504aad910bf511e82fac86cc44c3432823dcc7b103553066ce522aa187075db791ec8b05162edeffff68a26e11e4082e36bd3923488b0c1e6e1c7d1fdc85df580373e338fec7f4cf06fc486868e1275e72e94d7a312eb611f48883cf62726163ac43ff54a89ee1b7ffcbda8633bbfbbb7e161f8dfc52f176903cde08992a3a75701f664ebaa7281150fcb082ec96510f5f8c89aac19ea0871557849397130a063cc43e88e2c1688687b24c15b0d7cd2311c323b9b30c2709047d4a6d0ce340c0ee4ce9666fae41144f425b845f93f3cd2b6357d21e7c52d0253c6a32d521732a9993a022145eec78f1f5149a79cea13c9eb6e88f7974d89700ac9dc75d54454b4ca2848b48b029150a6e5c20c2e350ab35fcae8a3b4328da31839b786342eff118fdef7f5fd23fa7b8d5c14c7a41ea8e1219c73e87add475640184f340e6cfe1b7a57cb9255f14e2cf75c2082134fce98916b6439e3261d4f06f71367905fad53b840b552acb0583c9e6409aaffc6e88fd892a5cdd619924fcf1edc3bfde6cb17ab0346e82eb51268fabf7b6e65139676d1695c5618bc7b8bf51b7ff60bb58f8b61c86829a637456fe29f2a4aa93ba14f1b13e6da845e649f3e4c015e352f726f78b4d208b76dca77686e1dc4c86e1c0041250743a3dd4e5905fee6f435ef38f70865036e6fdd89a26bc26585fd5d5d3cfc8cc1f55311986737057227fd4eea188434bfa47d825329e17e254c219c4940bfa78bbd4a3c690efe0f02649f18a77bb5f9730c098fd0d63e1e01000b5571a3e3cbe89d1d174828fb45b037389ec14d49c8477b1b9097c9bf90667ae60c4dd9c477bf10b2668378816327e775105cd7e6a73da1f0509cb09ed2fa723b8026ff08df591e69625994205a834d605903352908405c47970109e1286a716a56e820eb91caebc4908f8421a78f14d11d8288e01991c2da7c505ac2d8185ffbeb496ee1ebd4e88e27ce4c3c38675a87f3fb1aff5a3dfe652925ab2baf475b484e64fa5729de8edfed65a549ee59a54c4a2b4bd88a946dc9ba3b6423f3544b2706f120f3b767edeed7997f01ed59c971f69855e0dcd4a810915fcfda7cd8bd108150d55105f4f45e4b799e0cf4bc35ceba525bce3f13fb3c1cf0949fa2831f32d728b3a343f9461638e77917e1b89aa7f7c957c86296272846a6a1a9d8e592a7e6ccff9f61b2a7f32060ee21d3f4f341b6d84b1194424ff4d4e9abcec925d9c2c884d56fa0ef21d0a69668a1859e2653f2563527b026c6b39f1e7623761b871ff295b664a1653ce96873868406db4c1f5da001d99e978b22997f244607514c6db31e1deb4a6e45fc0506bed9c38961bb08b73c557108be7d121647b29994dbffeb269ad11308ee8d108f12128fa2199e2d923341cf9a0b3d502b47ad8700610802632a0a274cbaff576e389fdf73d4d771a3821e7dc1fae5419fd5b5d6c8e57a16afff21cf992ab987ea7ad51e7e18254d9dffa81e85029950e516661c27f6ed128b9f591d4dd5bb0365440775bd1b4d80d61a0bb323cef98508d8e92556d41b540322b1af279491938462b34611d573a708755bb919686fe7e3c28843db1793724619b7fb1cb83f748b7d12d41ab8a73ac024ae7ba71ed18afb89c7e35601f9300118a8524ef3a8745929b7cc2f5015e5888f3f8fd17d69635131159ca8ed738d4f2466fce35fe93239a66411bcaa69c162755d13a2cf88b021425e79417b425cb606f79abf2fb52f3643946cf56f004220108fc4f2e78f5b74ebd5f7c96fba8e739c5143b34ef673243ac755b4a6a5774e0cae1d384bb4b82d13008de4dd57cb5c23f311394801733a879478eb4bd59fd3c46aebf6cc267bd5ec33786e1999e3350e18ef93eda90a37690f59196a5d5f705af5a03c4a15d8d669b9f464a7f50966abd376ef1b2556e5e63bbabf10eb034d91f196b26eaa9bafca1ace0fb175403499cd9c7f25fd33ad59cb0a649173eea4463a461423d72c8f179aeb7c5b3e0d77d625a08bdee38eebb823ad5db23d60f7c36da195f1d2ea5fe03e17766bc06417003a7187ba807c5376b420b2f3498235378163200d827670f541061238aea4101815e8bc6148d117306259ba950b20c39fbb3501fe3dc213add5ff4ffe119cd1b370f42534603242e82cdbf1cbae20797a6cd4837de8fd1a543cd34beaca21ed0bdcb54d426fd635f8d011e5db9b88014446b432191297cd6a9195c7d1cd8d7fa9ba71bb05678364d7f0d33e26e0854fc3ec976159be4cdea09fc076fd87ad5f7ac2f4c8ef083ada885b01788fed4f3c7f313683b30176bca3af82ebad10d131a1fef1eaf23cfe914254bcb260b06a90b8a54024394f857ea836979df2dc2d935651b4fec00f349c6cc5265f445a47863c4753e0f20fc59c43f90558ddf42f8e664081f92aa0bde7568bb76f159b75d76f9393268bd410b89bc62894bb49d70ea1015dfd6a813e939ce5b0c495309e46cf7a9d07c10f580a9dd37545a59ad8b6e18425b4931b30b4da3c9a3c43c41821b9d2b5d682a26ac60de80b735250c6247d97bad82b40a258cbc9630ab6656e15957239e83583524ede521be59208c6967f35714edbebf42ffe102b041bae5161044dc2221e45f5d09a60347cfccec6b21ce0f805f28122f3671a03db79f8ae3492230b85aad8a18c9dc00a1ec822b140a3a0c3dd8d7b55b9ef1beee911509629482429924c70dbc4a0fe8493a1b9283f8f9fd5719e2bb222b6f5840ef1b6087dc72f6b42ed5fe5eab7ce634e4de97a4a80a77fa539aa9e55965e7fbba5edd6da874cd6c7c03809e717d7c8f39c3b0bb362798d599fc214eeef709ac1fe6b376d46afb74dad45998e11d35bd83ef0a6ba8019b65cc7bb073cc4f270d2b045208760beac210f35d76c97a393333ef9a84b7bd15693fbe99b363c3a1b846aff61c56eb9c20bf826a00284aa534cb7c8a43b91e304635aa62c9cabe1bba702631451a7efbb798ae62d1509a4b52bc034a13099c02a3901819c3b2f6883190c732b6fb0044760f190b46fd2ddc96be409b3a6f2d70b29c2fd125d18f5d65c6d164b6ec9a1f8fab316beaa7c1f4419d401ad7c94349a93bbec7a9f39c5da25128261125db06f037597bc1edaaeba409463df088b8fbff9862d3e4f1ec60590f96c3cc238aae6ee7a588b2c8e35744bc984c2f4bcc57150279be0cf8e3d7bf77474f8da5ffabe48fa4449646ee752dc4138283931005fa62d37009309030ae2219368563f7d8664307a10bd01b3907840674bd7a973ed4b5cd82527dc4dd8096284f29a834a89224e470a7a49c66b1e414dd380dceb90a0730bbb016d1afb781671a58eef5d5261433e2a189be8836084263069e9de86d5fb3c28b142c6720a4b4f67a2636b82417bc36e9f5dd1d836eed9993933631ecc36dcf2321d5008526e613731669a1f13ee20f088e04c2b81094a808a200ee0bc13197ed69ca1a85ea82e9b8dafb47ede60c5495e3103ca89935a430c4fdc9c0465a90afc02e48b88b352252e81b3992865bc855d332aeb6e88f0692213f6cbe63a442b402802761d06c455384426ec6ef92cbe53e507f9271731633d4971d62acd832c258ecff2f9d66bd6df88a9e2199fa5be37a91f4edba52532e1290b90f4f4b88bccfa1dde381df35e3515600a4a6f1a71a5376a85b86a429e7c2f2e245a1517453360b1ca66397c9ae508a9fd9d1206415b02894ec5010b5dab02ad74137688d2541f2ae283430c6089338cdc5f045fa1567d6068e70f76b3aba888f5112f050f746a151eae0e0e1387ecc84ea6437f094398ba0c772a8edd6639e7a6b8f55660b89cffdec08c8377b0831eedf2eab8ae3cf7d0ce084565844afc87306af3d509ef2d7bc21243fb48a0a16e2c6e9e1522bd3f8c8fa538df36205802ec4254a5e42a631052fc1a3842988a5a6e2d67f101618608e3c8081400b0b1f285e5d1c0d8f0a2847ad1ce2e2930c6d852dcba50e7c4b95da7351b92e2ee8141e918b5866748702060b4d4a3da72ffebc52f32cd8a5da47fab8c2215892a07236cbb23ac0a7d18107c808132c5243172d0e92058d796c60348a2a8a8117fb50490a413626f384d542488f9c8d2275431a9fce16ec67e5d9f642d4a936b6ab15fe72fb3040c1f8c0e38690b6ef1c114bfca0af1bf8ae0f860c2bfd7ed336482833c6fb80f86e893b22cfd3a883ea61cc18fa38a91265acb6f8d0a5f227064b4f98227c622915b1b45620214dc27d59e14ac0c7e15299416120d0b2820dc36b42c90c297401084ea6df9b9cb27433f1b8c5e1a16009dafc60288983377a50d9a915aa60389ec77974140ef6d731d5c1625cb4d5d705e6551d4242c1a480b1d082df66e92d955011be4e7b8cc72a4534f17ea503f67cc1e37875bce41d2a550d860a4149d4a34ad8b37d6aef146f3e44eac18a34e8e58d0064e69503eb08caf075e05af2d3b78a85dfae6651eb24696e617654e7fd628d5b5cfcd189fe7e0434d44cb2110c6b50f44da8a49d3c95f9349429fad1ac02416ad73a14c64aa3ef317908189f3cb5f8130419c92a227441bc73887bf0c6f0f79e4594292f3e084b8216aea2d1e9d84027c1258c9ef27b053e70d83d6486f18838af338678be3e8ca827a811e5dfefea46169a0fffb0f29031002173668f6a97b14a413e3f84eade3a5ab07d94d118904abb15f8fecce15f545090edce5e4199b5231c22e6a39d5e47974c444eca945a13626cea98865f560c62cf040c9a0471ee1cb3134bee3019eaa8233a072e4010f38121c637476d7a2640cf23b261477ae754fe215dd13b19849bc1e12e70a0ca7474004d739c2614b5cc5a5dc827c42b6ab9b20bacd0b2b337183068e3738362a296a25632d6c891d334b20b6f6abdd4a88cdcd71762beafbb44d4ee6b386333308e9a208ad4ba76e57a3ca93acc38e3e285b45b6c8db1183cb004a54a66d1c797236f39763daa437357df26851c3fbc4bc89ca174c73888ff56d34b572651e9eae543ddd791e6efbc3fd54d516cdb2c95682286e54aef52dd929dededec6784e44cd863c7970a246ff4957c7821e4ace3e3053315b09e76d1c73fbe2978ed658111ca94004a7e821762e8e4f9108f94a611b0bc67336ef83aef98595268bfed950b95fbc42b610a9b12e04c99e10c2b9745cd23cf6b6fd52d7b6ec08e07a795b5dfc388ba05632e2a02caccfa716194714ba983402adb3b208110698b018692a412469f1954f7e4a41aad8b4039cf36969a64095f90de880d2d1deb785a9cdc43c07105f2afb50e1c3fa0e77446b6db7c087804d30c5fa425fd89490005c3c054834a7ef641b74806626aea08acf5f534e538b4080cefe617623614ec23bc96557e3b96f557bd8e71f1f7b896f2e30ed7adce177993a922ff5075da6d7c83ed8c94efa5068a6575bae3ae36751821224d8a134c91534154a0db845abce6d50ca31e09202cdbc50f67a2df5e0025798c1882935c33a6e0b1b4646a1134d52d2eea5d2b58b47c45978b0e5923791c25d7ef994e8fc05ef3b4aadb3c1861528cee53fdd643301343550644470d57b379f933979c8e215e7855adc3d5253f87df59c882209770012382ecf203a3a11e8a00a9019bf9521ae90ad47b5a587befee35d969b70a36daa136ef4d858aed036caf4fcb835db1161ad5151337faf2d6f308a337b1ba57748695558dcb0a15f92a3aaaf91d2a1cb638e735c09c297e2fe8184069d86f869f45caa475c856aade2e680dff62d6bf9c21680d31ef3af134601150481bb3da6409e2310e5687e993a434391513b1ae26aa054996f7552ac944ea508587337b336f5ac49d70765f85240087caefee8d14fbff3a2479c337d6e09d5c8c08cae8653390283aa2ce5f3976fed9c82bc2c68fd79d2a7a4bf5da6a5c25589e8e213f7614f09042633dc9d0ea2680b10fa5896e0ce142e5647c0744f62ab8f003b84112a42604879d8241eb94a896ac255ff3a6201f9b9c2b8b333b3f456a17665c310dbe63b77ff655f62be42897c73867b4d563c562181bec0469eb38c132a8382a5490abd1823afe5d5d0297c1859859dd4253033bd07980bf78071ad5dc84a5227dadc28358cd6808b02b9c4ab49d8bd9e5785b9ccdec63f86aa794e36d9b7a88426f3e6b3605b274b4bb86fd9455df392604ceecdb585907b827cc3953df0f025b7ad94e1218a30597baa6b5f1c2ce75d60dff3d92698d3e40d4d0e658fc3285a7d7014ddc58d5d56284ea88d7267b7213395a084f1b2e1f2c198a98b0f2b8347e51afabf544d8ab9635f797bd78cc32976abefcfc2deb210343336d8149b17766a0cbe5fd08013f908b4e621b9711498e0957883ebba6312a217211353093e4a54fe2576a7ed5c88c32d2a6865cb93a41a70278e062a9467a9cacecd41451b21310efec5d684c8f6b45b08ef695b561f87e1deb6c4d0b272b93222e61a5bdf6c0aee68faccb08eef4713eacdedf89226b43fad9090e89b8410d5b692ca85c0cef29f32e4f5bc58ba260e71c4bc103983e8418cac8f8a072d4574c4e9f4e4e59453e5bfab5d42c268229b7147d2656ae3d3f0b722eceafa8ce05581a5f7d4527d3e714dba7c773a03914c2d170123a1bab489fd0a01afc3ba33f6bb36710615f3b6fa01b7cdae841bf5d07b3005148a6519fd716fd9f2006703988c0696f2f621b90b21932018b425d7b3d90208f0006f66178a4eb5fad806783e258a4f400d3a1e38e9e748795c36660308693080cf6b09fb280c10393caaa138361fafc6ae188343f78ca138acbcf3c4762163b9f39b3bd2864a56bc7cc1da2747e87d12129a01a5ca5f57d997304e01729f40337f362745895838c479c5f80395e6d30e5e7a300f0b37fc6cd75c8703189bb584e3806f3cac0742c7b46559b5622f07c71f01ade522980f3cc91dec1a50eae5b1ce1a22cbca4f939cdc2690fd09ed3d85c4b23cc93b1dc4aa1c53e7347cf838aaf5262000958eedac4b3ad3e9d5ce2a5e4a739898c0db8f41c826650251a21e3e0a05ce928e428cfc1e609e2e2b43e8f14c10525dd6bfdcbc529fbdb61919eac249e293692f55e054c60319c6fd23be5a64cde0c3e9b3c01dcd0c40e6a0de21a037aa7305e2b02b89cc6ae87c40364c47d9a1adff1ca1dbd4c07b0e3830f48e9c69824903647baf04816b09f28a274e14d4f7f862cad97a7ba54c6390e0cd3e8a94dc83580d5ce4a8caf5cd08bef776846009872809ca035fe56d03da1d2f1502f1e1be2909437c3bab1498117cd21d26c048d21ade440e5b5c8087a089135e72191775bcca95fe59fa40673f7c5165d1eaf43004dc29367af750902e9af4f6be0e1149b9444c3072aa090ea1d0d1dfd04c992043907e40b6e50e209b90cec0a6087cb31203c34206a1004a68f79657b3ac75ffb1278abae28d6ceda80885ec144135122c4d0f806612e5dc3df22efc37c4d736b816683c885582f041e3aba68ad81c26faabb46060b5562a60aec2ada53dc04cc1449e439b8438751ed73b620577c823cc7ab9759443fe32d28094fc8b0a79e3c4ca203cc56917ab04889b27c8be42f31606d50bc61a758595127fa647ac07d050ddb6349295fe6808d885550b486cd5201fa8558d9a480281218595e7ac0284c962432f57d5e8dc95fd024bdd52520d55fe019820a519f064f303463ca589ea26de03ac0833f62299bbe74b0e4406376c996ac427539d0175ac36f92d282d768da053e17981888a4c49c4602521e913334829e8baadfdb8276c198990aca4eff51691be0f51a660b1f5719155da8d4037eb966204a9dace4e6ba428e9882c623af098a694bc42e8f76d529b64436f363e725b194fb5fcb68dd13480630621c51907ca2299bf2b81d87058066a838eff0d3e0648c4ba29c129185bde6fadd2520c5e90c3e9c1f827500bb9575081128960b5ed3759cbab0301799f42253d157d1dcdc864d6da06e9df8e7abe1f08650ff81298a4eebe8ad48577beb0d083004e8ee2ec174e687cf4715aa935994cd46019ff98390973cdd34ae05965d02ea8baf29e0514b4e15dac39d8a9a858efc2677d3e711ce0486fd899dad0e0b86e31a832e46cb4a72c00b98de6e96937a27e5d3d8e3a588fad77e2971b5dca359e62f7429e481c028a2ff48ad21db98328216c77af0f8c7391550ba73833a6146d879b29a4852d12148ce9ea0ead639816c3810e542e74757f7450ec412d7128f968226f240bfc4ffa28b506f57f94cebba689fa1af8de1a9018a51824565ff84f45897338a189293c79ac081c375149ca314d777ab281d57b790569f6e792e9a2060b4ab39b65fd9b3e9f68a7ce16915d15e413cac33b25a2f737f50b42ff1081f9f0ea2d51081b84786b20878a23ec9624993b7c2cc5882fe04021470bb96d3687eec9f77a5d22e0bb3576d42201160a984b2699317ea6512245a81c1e07c6114a14dd295cf9075042ad6c304d152c27b33bb32e295b0e60e1e252cb43cc2f1d3cbf08f0d1b87eaa0694c50e5f83c1f965dab56ae2c46a47629331a2aba0b412de364ef20bb8bed1d177ae2c4099fb3a5996f21242a134fb7199afb22cf1254df6d10a6c094a5003a16f3a4408f6a121ccd45cfdfc40ebf13474ff3cfad09c25a029317f928331c3ae222d377b42fb771eb67645438bc3ba96f11a667a0533f75255ce71ecb420289f5970531873c90642a265e7041317b632db49ae57ce1bc07522250858d6bcc3188ef0624999a14674ac2642fa8465dc121f5126e2b15c1cf1cfe50854ef2b8d1a59dfbbc6668cde59733f4f04f92b510355e34ca5eb6d0d41cfa9fc3939381d48445b4a9215734df4c1e94292ff83f3523832d943552e0bcc90bd5aa710b40e2bf6864749b79d744cb51749085d4992a92a8644e649e5b7f6caecaf9647dae2a04538dbfef1b2bc517ce8dc458093d681f8247064954e3500814a8cbbe9b3b36f59a354dd05f15b4248f18d0541b24fd5fb8a7a3054cd0b779bf2385c6ab642428aa01344a30ba0c1481da7373d39cfefe4c6d0e85ea801a04befd5dae8acd37d4365973edd79c54d71f1d72578e25c89d9226216f1f8205b716cbcb50ed0ad86cfef9d90b60b048a16aff74446210b62993f78b9438428d26c5f0dd44e958d7519e623c43755a11d8ed6d0c13e4a3346ad52b5e98855c6e683b02d89f10b9a7d486eae9450f40844e8cb17a9b811602061e0240425e86967400c9d5bb802ac706b2d070b8facf319acbc0736bb982ce6d138add0a023ef6beb8b750db3643512cf24f02eb64147e8251d42433a5cc77afb2c32deb10f27417dba80f18ee35a2db22cde05ae8e1681d16c16c8a44235582e03a808e58f4a8fb59d959b600e9cb2f5d3b02141a51bc90f92d8bfd1d5e48fabf55d419e77492a0946258c5365fb526e791bf965f1b79f3d65a9cbfda1ba57cdd32871ad4fcc3933a3f0735ee06121545f156cb59eb8f1d6682165b7139b383e8a35c34ba556016fab8089707e244cbe8a580a73b090571dbac20603d4f48860eb132f5215c98ce6c0ed5a51a134f934914a7b005c99fbc2599d90413e9942e621d20fd74c2d880eb29731233cc02fb493a20dbfb3bc1196fd2f53c60e289dd1a608851a3550a17187a8b29211020ccf68cf1bce1c74eda31a4c6700015c8df5c3c4c00e1dd1f84021e8809fcb1d7dbe23a922e9c0d0193022bdddd05136449a3a25b823f12db608f4f87db80b03888e55c1b7988dccd64a2811d1da3d803b6f96011b87a2f632600b00205f385ee1a909b43cb12cc361457d52ee09f74822ddb290cca80b7ac24c7d11b823b2d5203867a638252380b571861e42a328721f712e4046548b0c78960b5e9557b7bd4d7ad44de48ecca80945adbf93beda8372d562033ead21b8ba05ae0d99016c08dafafc2ddf255d9d86b203f8466ead384c47d9ef5a3d8061461128ca178ca40617a6b4d295a301635ae48181991e5a7cf60e21a5c12d868642d7f640c3e391c2724cfb9db5f3255efb5197ae065f9666abe4426e0263eb50f99acead883a71ee7fe6451ac65eb34d37a1d52dabb04a485b848b7ccb1e152f348fc8e5944b4ce4df975d07000e948218b4ad56ad5aef8c70552a20d9d7d6022d1ac2df8d06762a403a0f7ad061ed0c2699578b2b88916981d2c505ba3a714ff9f505b21a3d92bd3e64b41222b685164d0ef13f4121b9c9c74a286c8ae1de97d0a5a4bdeac1b1840057353962a2832c9b180bc8c8cc2ea10a55e689b6015c5cebae6f198f3953dbdeba1201fd82cf7a9c2cae3af369342c961962bc646e8b46df80747046ebd1c82fedcfdd811478fc45ca5d9a855c8e2a2dee83165e232d5085d2ebd71391836303fe380ed0f471e026a9711b6e832f16e3f166a38c63315b1e4a2e3b13b9031760623faf8132660c5726ece4fd70097243b71f4bffa824e651b6fd929d92ea79efee2fb4ff73fef11f462cdae148b063e634e7852b7a6d5540c70042a5a65c05e4a29b914260971e539c6458dd01232e04647d21b1c1a53f54fc54d58c7b17a5c86d1d536d2f0739935f8c153467390d303602d6a09e8228ff7d8fcae109b459ffceae16ebd0c588fafe25e44041b2483e163e466ca12e2b0d4a6fd1c0c6094b2a28718c66babcafd1b6539e0f2e2b63263334b6b4b23948e314fb1056199c1b7a4f65f45a8d0b7f56ff6c5c3cdea05b2fc62d640b9d2d6b3e414e8b2da9e2ab7ab1f47d84610ae50e966b6e530a9a7880d3248b98b0986abf915146db6f229b5f2081c7d1fac0cb8ca3aebdebcc48213f2bf62b01c073046bdf0b9067eba24e99155ceca478bd2f74555a38f1b6e076aeb51e8588f4813d14ab8d9ab5b18d1363d65580ba1adaf78f0f4ed86f4c469b7c310ae720f4972a7aeb9d25c5a024b443b7592cfcdbe8132ab471ad088bcd9141d778392506b9dcf398cb95477ed66cb9200b811164137d88395aae567bb079505e25fa9c07c6f487461678c324471aa261ebbc8e00b7890d14a32950bcf85aa7aa9aed3d908c0c1654f1d85a07fde264410afb4e3a89ac7520de2007a49413b50ea4ac71e8119fe67608f4c1ff52d0236e50dfc67eb9b87f11848327e1ba73a2acd36020e0f5c7a30c5a905c3e4005fbbb1f9caf624094c0763d77f2c0eb50345ea6a653c38dcdb06dc08b9711d0562fc6e987d0702f4123e01cdf721103723199f4ba766b2ec7ac05d8043b9256c6b3e4842950c6801c229ee9752a7869329cc81c325a98540527236d89e01343a5ac890a423f9e154abbab202e15bf342a0db6c6ed50600c5f764164b3e013683b133ebb0e6b3a6a7c44c2c0ae3b3b503b3afc7a085904432878b6314943f4f0ab97890feb3de114d0ad455bd2b82a73e8bb092e21e09a6e85298a58a441801e3e13e775225835a30b9f98dc354730ccf225688f531558d45b0114cce14274f1c4bfd7cde93bbd797e85912e37d38a0076e4bfd334f98ca3da117ef242f1bb20108aa874c884e2ca3b0f50044c2b8564d786db25b44e1cb1b34d6c6d8c925d73dda2ff016db29b2b90855b389bdb1fb00feba16637a1175bfeea7db91fc5e0173792d6d98ed74582d7dce340e09a85020d70c221e5d6b1d989a949a9c6b6751fdd1a01bbb89b02efe21433bb966bcfc05d1fac8adcc5f2b203128ca51cf57a6d402cbf24531844d0994495925f68e3f9a936480a950b4379c08f9927c5c9850a272dd6a50370d5042997d1c6f898a6fd1b6d13803a704f74b2219b90b668127d716ae2df48e2d3c75eacc860cea7641474dc5dc97c9cd61fc84c7a89d63f0cf5093e3de22b4ea5e7c742a11c50be56fa4eec86f6196b94266f143478428184f9104346613f3eeaa8cff26335302a7411d005e10b59f9666400c6351448adb5196d43c8ab63d3076c96ac5ada240682999d4fc4873b55716aba144b2732d6485faa548dc1d152ef137001931a1b1c8436e523e3d2f4f6948760844b5a647c8392ec9ee40fc4aac42fbe443c0034fa202d90ef8ce0261e32d3e9c5ef93b35efc2a1875b54898578f9369de3e04b85a426837429799a8e6049f68d204cab108c2156f95368c3df14343b82035b22f3b70f64d0366d740d65e577a5d59aa4c0a103a80e520996aee50c29d2b6ad66d35504eca719e90eec26a2411e9514524bcc745aa24e207a4fe4b964b6f38ce178d6bb3c84939eb7552fdf9ebdc63891c0253c548b44a27928d394f572cb80c3004f75e1da021a850c8a31f99d6b08f95617c61e62899a4f9751c577a44e486fdf52881fa06f104b300bb7d464d67c01114dff8562ad85347e6990188750c35cce27b01206e11486378ea5904b5d504d99728ff1e14453eb54679ea047fd97f8138254ca45c9a973a0f16ba6429531a6a48755031ecdd4efa60c42dded2700d0662658fc74cb9fc025b76b91454ab2dc1d5db03e0f15d409c40ae36150eae4e010619260597c94a9c94a9af6bc18c40c3baed00e66b2fe4350a2c41ff5bce770d8828021e932c8ed0387636e1194552e5334a058feb35311f464620efb2a63f591130aed86b5cce73443f30fd1435b6853e229cdbe539d131f1130e722eefacc8815cc277183bd628c807a54c872b8af844cc263b1cc400c491ee0f50352ba32545b5135dc2a39d5b03c094f22b4025fc0c62e8f45c547c87318525666810a1bd15cd888115710b7c56b1e94bfa781ee6b70742713892cc552e90202774a44971aa255f68107420f700d3eb8836593ec20cb401f67c67f212fca595458b8cd59a0fcc1c30717537378fd95746a7baba4a54c47a325fe8b53e7dba99a60cee543f42284e1a5450b0f91b9a8640bcabddb318d3019b3c551a4092c3990733f2f2acfa8a2c6c87fbd5f22c5f99ce2cf426d945f3c12241d0d65f1b23e6b69fe88e56a74cff3331d7c10909e6e74ac5595506d400c7398752434106751bd36000d258d332ace8b1c3d507625c421607f89e93927aae7df1f203e98ce8c931ab2612d5f38679ca48e26d66ee2daeb91cf4d5bfaa57de0ccbf4e1d3407a166ffaf7c5981bf09d49f735c93ef5f79271c0a85c9a0808700274aa2dd771043b40f8be6c79f93eb4b77f92fd71a1b05091aa0d8c2f2c2fc7e9396235a09be5b89232a10fbaa2a84f61fd014f4702b2efbece30041b14abe6bc9057d18b47bc2a45cd9835769200873816c52fc5207236f171a5fa6814661ef1c3623d727a69f4d9eea6095e59cd86bd7e9a93b191d5a1d715117616ca9107b9bedf893d1f533267fba03d51fad8717b92beb77280ae21fc208605129cf2aafcb8c088e918d402720806b4039d86c0ee2f076bcbd9270a27cc72893f0570899d8945f0fcc11c268bc3b28ade007da4208f2f7cc62e71800e7c2a2a29141231d2458939258c6d009b49fb0776c3c57c9fbad8f32ade372ce9fbe9facd43134a51617c3d050e3d9ddf873309a79923f35148f813ed29803390b99bc1ea9fd2b41dc08404e0da1b11d20b7d334c74c85222ccae07db7d1fd46715fbabacd711130bd47f8f167272639f9c4ab9ec332090cf1b6e39da8daccf919d267290b0f2e1cc16fe582c641d9597855adf084ac0684df9801d4e77bb30ffd44bfacc84fb84313852b24a277c03ecec31eb9641780213ee25304924ec7a0665efbc0b6a382721326ebe0bd23cddba5744b747ede995a6fc288f3eb61d57882e1baa40b871950ab8120d029474148f3e020e96f6045d7547b1b26adb6394f7ca95f803ac3ef2f670d412a0b0999e1ee7a25445ba6739a83fe281511c3a06c26365590a4927ca1f4643256f9f5b4dbd7c1b2bc60d0fd318d8d275e671df01863fc182bad4e479a6c511a494ac0234728b20e4fa90a4884eb5287ecaf54ed11daad8ffaf093dd4db28f6663bd7733324dc46c98f8aa6362ec5a768c34eedfa04e4f9631d2170116f06b6e365296baa90c1598b3fa24de64aec892035c97c76362681dde4ed515f4096474c7d30d64b8555132aac85e0d25186fa46c75c1be78a52a6a29817e6714d3dfd0222a7443f4cde01d9ce283998fc23b69e09d17f2f60535237bf66397c924646a4407277d82aeaf7cf8a0065b1f88716eafaa4989efe7ef463f1eb608b0c7f6d135327328535a09a49731efa024e1c50adcb4098aa0f650a2e45d91d5906670c2bb3f228e2e7560ba379537ccef874af77601fdbf91c65b0b3750e8d5a065c7ed1ec99b5b3c542e85006ce541f577743d7fb4d0c4149a5f1910b74947de024d37ba9c048b4d3a817ea5440fb48a74a078f68aae7b7872bcd6c60ba8a82ce9abc3bac8b110a471a0ec1e751ca15585c82ab217986bed23f286aa71b8343e684d2046a1b3cf4ed7a3d58887f5fd52cfa021f77c557bb1b93c1acf32b46936fff3c018aec1c288949ae4b8295099d8647ba93e6e4b1578a6420d726b44e99b26d501850eb0039a2035b5d1aef65619daf5f5203091e4ada4946c19a470e131835503202e551fcba7e3da335d2814c88ce49a466ae5342005c8e68873a18be357a5b524261108da06f588d303f03f8e0cf0e7326136efcbfc104d44fe3881af3b3e068b7ab207ecb3ca66afcbb5bf502790b8c15c3851d75b4dfa318dd49b6261da8b2a71d5609aef8163d078b53754ab3ccc0568aecb5313afd582a513d6cfd1b709fca29002a17423938339b486cb0b6116becf0451acb188f2b169f473c64881af144facd64ec59e5dd66c51f69f56cdf8a0c7ab3f6ba0561e908357f36fdb5acfa8145576da7078ff1d47092edefa00a471fca1727af9a248e7f738b843fa8b95dd3343ccc8b6cfd8aee5cc87de2834dfe93eba6628b26594b64ee1e1d4f6d184a0df2bbdb91daa3c410fa009abc54da88eadc4acbe1855dc515ef083dfb8695c11e5207fd4313c1a87af9ff105d41eae66c1ca9e2f5b0ef6cdf64a57ee8fc8c9c4b971d87e262e5a43a7ae16bc7e16c6eaa1f977f1886846de76a50061fa67d1009612c7d55e7cb751ac294cbac6a2657f34cbfc3957c8b3cc9201812e35bda05b8e10f55274119a34800a454203f89f8507bbfa1e57cae43f458ed4d2c717da52122f99d055ed2fa6f3266d42e1e7f52323c12fa012df81887a1e9a762b4074f8f28484e623a5a10c62927a18fae5d855f50b3d817c2d91a856ba52b29658f69b5eba8321cdda075da427ca9b278cd75456cab1b3bb2f8abec7c3d507eae87134a8c7b8743b6f95f0e5124c469eaaf0b558624eec82509d0a07354e538ac3f24ef0f71e06cb4058fde66390940a8da159a51996110fab11cabe220c116a16a3ab5639fb12dfd5adcc8561abd7c2bdeb59d1e88fd925bcdd83ffa9144ee336dea5349b6544ca9c55b77e170941cc76b5064bd100e4be7f188f9746d1a1b613c267896a141e99e1f323e50bf1e81e0ae93a10520f5e369cf5f4675636616f908fecd5621733d582b1988a502c5ef698fa7e4792623048acd9889d1142430fd762d78fa6f0758a801d7cae2a3821779ceb5fd70e3b3bb90219f1e7b6fcc40a6e9ad921451facd5667af163f6855055d3ea9bc66f1b65adfad0297944d39ad930756bff666f29bd0117121811bb3fc443d6c77c77e846f3aa04004754c8b4e0652223a701c81bd2e3ba9b15b131129121499777ba68fc38fec17da3a41d7ffcde712e95c6994c1f79919e074d266f88267e23b80cf28bbab56b3b7884851ef7b7aaaba91437b847b4927755dff125406fbf358863bc9874f3008569839e9ca3e98a687c2ee52d911b8cd64056243efc1810179128c61f3a9c12d28d2c99bc1e0a5e696bd883f2343e4dd486674141594327f02c60387e2c15a953b0210942627d0d99fd06fab1eb379cd47d7734f1757b718cb3a98830c5010bb981a4ba1e123f33df7831a56888d1ea428b786dbb649489f3a3d4d38810cd5c44d8a3132ad06dcbd61240d5d8dc4bd0171c65d48830584e186704efcd25a17fcd2780080e90b0aa87bcc52158c418628083875882c3dd778354d6fbb75beaf5bce0154a5355c8d358c9401c18df81ec30c5fbb67e763c5ff222a8194d67a45ee79bea3eb9627a60ab1c42cab2401b8a151a3704e54ad1c8a0b2c3e68235a4e66113131e8b8250c798a69f83fd113c201833e6aaed1b37fc716b52a94de8446c775fa5f03c70bab405792c7924a41dec2de4517b836364b8ce863ec7624e929a84160edd8b815d34bf4a99ed7f041e2f5eef4aef180a4635175f26ed5ba9c6015114515d81a968a407070b216d22cfa97a8d8f7909f53268181322e41f9df03062e69a65cd07d8ee59f09c5df0f79b80412b4947893943c3c6119308f3209a5b476511eb6428f271c3c6053790295d66e4120c47e7f6f1e5181f4b4f4f48c2f92f015bf65239b8b2d0283be45d4a4266b2c69da4ea367d78f3d34675ba3887efa48514d31d5fe68104b5ff94626c24acb5a7ce3563f032e8e3bab2522c0a7f6155b8f36cbd368020129e3733abe9683c997271da196b86bf530d9a27015f858f3a7759263c8d0fdb860dc806ddb9ede89174a33a29bfbf6d3cad73f56a9ad91cc7e1d32437da4d73f09b75675dba9a29750928326f583049e95febfa518e2c8183b72954b1adcc2222b22bbdf504e2f5996de550cc81d5d03a6dd764d823ce374f893e3c82c92d391bf2ffdc82b72748c177e436678b272efad98be5d052cc173079fd2b696838371963aa30d2c0e23f2488ef9a9db4b4479ec883ea6cf28cec5e225d7eb69b7008566a0203ba943f86b04076a96bf830cee9c69759259a6e80f7a9271026a838c1e63c55e31050ec45eb2dc57243569175424da976c6b7ed013d462961b804d700f6cbb4bd39a7fab7672b29ef1c9f03feb9a64681db1762f1ca1ed51eb9594beaf9eeb57dec372093acdb28921cbd82df9de36df262bc8eccb40083b9b8d2195245d92da4aa4e6ff47d0e4947aec4c5f00cfb78ceb69af6984a4ebafbe843901583f69913a2a1c1fe33024044e88711b4dc4f8cf9a38b712ac3c9d399429fe75b150a45817b6ead6d2a0c212d496532e37e0dad40124c0251fecff9377c0d80028d66ca12262ae3489c45c087651ffccb14023781d2ff0a5109d62c53a29ac930b39bc2c0a47c3578b77636f213ce363363d086d7a73cc4891cb1b86716286256be11de5096517e329425d481045d3f885b9ca78671f29efcf4400fed8b7bed454e3faad85a88729f4e374e363cb2a5b99c9909dec026a08f434868395a439ff26c69a09b0722256479535abdea53060ddc4593da1ee4cc40a13b44627a64094e865bc64e6fd6d0e49c1641052c078f290e52db1092e3ec7325aa2b4a50de635cb91468e509ab348081c28dd4a8987d8a182d7833eb886cf6c34348d87f6ec8228d1587081f8d0296a1399ed7a2f80498e64b73032ee46c9a9da214e2891ce8d223fd32567e454950011318c4308d820885d8a376fb93035beec60fa16315cf3cb882871c9b8e32e3967352d89f210ee4b5d358ad94514296185bfab26a36308b2ddc60570f70fba9a4742a099f0a8f743a613a5771479b553312187df3bb88f73533e2110449ef0459a9f57e1f6a0bb4976b046d95895d1d66007b899df73b833da5c7b5d095daf61590ade234a6d5e6e5f5d3a9d83ca419bed35d151cac33ab62f8a343e0a7672d08e1b0aa8313e01d5304abfb7538ffa4dcd272cb240e8940520721d1fe71844930e2cfb124d014a13dd88cae874270a6d461db525356c75e1d30e971d9a36e9ca78ed6729b0f6e42e7803baf0cd2a2c62275fcf27d4c81393cad07042d1356ecd8c43515a38b5aecc1ee062412c7de56f056cba7189bac31a79e0f0e0d0df8354313c175bbbbb52f1a6b15fb48c295593043b6345a68a66f808137e8455b388f7a0d426b8e13ee8bcc69c2d9d22ed872d7a1ee84ba4bb8b2718dcbc145799010e67ff2410a35de3091102a65e827a11b0b1b75c3bee187c4e3a1395d810e4e4df588fdc94941a25866e635b33c6eb66fa5610261043bc1afcb8f3d91e40c1f1c29cf211c66a5426f7d34c9dbeed38f0f8ab92724b22cfc58648478626e4e41caa196722cde035eae84bee3f92c6ce57d6a9781a2b9caa523d9bb62a0f456959af408c3bfe8829de0bc4f2bc1168c59e409d382b797481d8f1a1d3c9edd765decd0f08300bfc9f73002f11678fd8b6d503aec82f29a340ccf304622af335e86299d68711a597241023a18c404cc29c4a2e243a1162df725c47b199f92f5d641a2136fd9f71a9a83f42cc0c21f082d8eb5c28bf00d8e45516103b3d0f96faf3fde0083114bd24fb63eec18458845835aa8243e70d71f8398458fd3c5da4168d7ae41ead93ffc7a156f6d69bcb1cd6af2511260186d11f2262d25aebf5107d3036d0a478de5bace62e287b213efd8641010d152bb127e5d61cc56c2c6f955f1b78c895b592738c85d6bc4d2738be608f962aef05f258a55ce1cf2ad5e0cbe0e1b69c0f28c6382b0f5e0af080064cba51c8307496bfd21338dad7e94a5449027a2e3fed23486aa31d65ec141638d7f246abdb47355554f291a8a216613280cd6ec3d7bc39c7eadfe35a9e6ff29745f87a2c9a9b2dc217b28d6e5d2819686274663594a8e59b8041a72048a76a8ab1bdeeefb9d8fd4feadb8df166d92d09f7664ec3fde697b8c52d81d495b90e2b7c236c9e2d4875a1a1e27cbfdb4d26bc0010864cb28512a108f679f60ad40c1078831bbb53e643f9a423a801f42dad16fbcdc2c2109401d64747cf090b2099b79e10230d028240217a18007fb9c0282881dff583987d65939cad29ddd2ebbe30edb3f2ebe772f21c7a3c06aba0edb3b9c3764c362af00732fee76c6999415dac23e0b3b80247b5909a8da6600fa5d7cbfad5f689c7c0406ce42b647fc7af78b3c6ede0138c12e85570508645e33785f84b353ba6687a8c82de02c7a5a07377c6f6891bca45a079e898566342b2b6c0d5070ae5540103ae9d9982fa1a55839a8c3295be283bb29caddeb8a25aba4002ecde37b383e934537d1244c2d644fd8d650e6d4b9147ec5acaa08f27a4af961b5ef9fe36e3793249a959f39ee8ce6a3e6bbda0785fa5817bd4643b0af55a68721b9de2a39c66f877cf5864939c067bd8a7774e13bcc2893368367d07a3604f7bbd04c5ba4762e590ccc6bde0347b5b41ef9c18a23ae6e74c0486bb27bee013524c0dd4e6b144dd72110ac0a1771b934bcb0f69d1f7ae906071cc84f2f4424d82cc6fa123f7a1d3650c709154461e0ccf04a5198162114ecf14714d8a26ce35a0c40569c88aae1054e20cb8d47fd13698f504429aa0cb8ac6142eb6daac36b2387bbc9892d045338820a20632a4951abc7cf0c6ada32a6507051514b83924fb9638bba9dcdace9b37245b35f87ae34beaa10578f4a86c52e71bc47e179e8b7880342327d0b987a687678cfae5ec532a0dc90b2ed103b4103f25a9dcf03c12f7f46d282ee7cc41fdbcd117d043e38e99a1a39a4fa4202cf9885d10aa15703b4421f344b0193b15b4dc8b800151a94518c922860531a484b6fe6ced81c610996a05c3e1fecddc72e4f7345e1642d542f0037245915e22c1124bd450f7645758d0f5740edd4697360400b8f99adcaa01e50b170783804451e9dae0de28a2fd1b2b6aa89e71c38f12bdcf809b9f391616e6c154de021cbe0d0168d0bfb41ff787363c6a855faf5a01e719053c70f4f20f9f7582974a0159e9593d596ed4f6e0d5a577e58ec5c5c4040baad451d095495059083932c2004cb9de8f8e5a4017a337f2b6d8955af902160061d1add4fb705f18541dc1a43551526909d351b0f546fd4c6f54e3341594bf2a80d2086b3005edf154f8da827af1a8c2ba3dcc3a50d307f5c404f0f58723c3373abdb15cde12fb32b7a5447f7b231b3ef69819a71f704dde24052111a75eda564b7cf886a9a9faa47f209b401fdfcfb16475dd2e215d0f9b1bd586be8744122335745cb11f2503663378fa3575010ae41f75fc63783c63d92cccf5a7fe1a2424aa4497a0c3ecee041e94d4d96bc4be23e1f3e63a5e078c38386a896e769306d9be1f424343f1bb5b9bb3fdb9fc96cc493fc1e6194926057db469a4a04c024c6ac59774cf7aab119898835a91514f7c56f812b1e175694ec7d1487c89a119a57717ab594271010a3357f32d50c7a73fe35959b179e6e3a55fbb7fff14b0124623afa5468e43f9daba375ed1f3465d74c6cff4ce733ab12fa8f554195c9ee7cff05998b5db7c8b9b9e1bb93649da539e80fa56edbab5476c03e7b974f8d6d4e408a4ed3b12c9189f6c1402d88269971e07b0879fe3ae2fd07c4ef263892b839a22b0e65401829d68d571299c79a52d4b24050ca37eb4510796a267c3e723d17294063a7f0dfad2305bc7b21776ac95c6a7a8510a5d5fe88784ff85049960a35e7e03eb0556153d80a0674c90c8e2434f34096d895ac4e989c27d00133a6c718b3605f6567ca3c13bf6c3214a558906c56736b051c0b2a5747c06d9b59ee425c7a8d685a7127099a1c541cbae083ba7bc611cd3642e19d56057c84215bd39fec726a92889436d858bbd60b6f7f8cd8c4dfc6e7ec0d1e463ba830786e2f29b85a12e5bb6236fa5790c1bc8764c6d0bdc14c42a8650570dea31762965bcc3f7a3a0be6d9b4f1208f62d5fceb9075262df211b59822bfb9e45adc4c381f4eb00ab6bed2bcba3eebd236369adef79ab3a2b3e697f6adcec6ad0ceef8ea6b7f2ac14fc7c9a809e2804a183c9cb24a098e1ed28a355bb7737bd9cf759e60fbe73ea2c5e74e9c35e5367d1c7d475d54519690c6859992cc5e01dc3b6e65e3023b1bd4a3aa4980afda9ad455d1f89a8d3d58527a8f15c2566372277e5e88073549d3a39f2cd98230c45d827463fd6ec6b7de66df63a49779967d0298b880935914868b25f1ff611dab8964076929aed3a700c24015c018ba2dc5deafd6eba2ede5c6fd4f061aa5f267dd30422b0dfdc3a267f0f2290bf4204311d2b13b324fd51e65a9da7a3b0093302d991132a52ce902a5fa33fdd1940cc4dabc93340ac67a079cf400d9f81377d06cebb539dcc0fe2517369d4aa0539e74cd38bb70e36cccc345178290cb0b09682296142891bbbb059c3b496cb575e88212d0d9a125092538e8039259181ac4add2bdef749beb625ddf3095a80c4826e141d2452ded4dc339afe50aebd018dde51660e24b7524da346abc3b5cb0e43f9359b9e5da54f647af58296cfb49cc8d75371a17da10a332da000911a99d3a2109911b904b6c3a5bd38719655a3c1c75f6a0468381657f415aac0ff974ea534f50aa9dbec34c1166a29be74aaece8844ac9bbcdf44a0a295481528b9a8914a2b360ad57191fddf45aad85ab1b7365876050c58e1f44d3118a18bb2daca74711b640f1a4a053360a7b16aa4e6f30121f8fc2983e35492e49c78e0b228cc4e206318c39ce7014c3b32d4bd7f4febfc8aed209551939f2862282144252dd68fff7048e2a763ca17e4819ec2e69998a5e6de87971cbec3208d4b1049e2c84270d5110785526e9b01ee6971e96e4a6660a2dd5e4ca00dfd68cdbc75ed0cbe4992f54e1e043489557bf79d9e7c9421386e1aa394b408fa20b60bc8951c35e0df7e25900a10043ad11d21a21bb114208d95bee1d6c0db30cdd0cd7992e30ded998615c97ffd389eb19ca85ba286e6f0708f2705d9ef481d7344dd334da5d151d6657f2c15215fd8a3187c3d974c2793ec1d97cc2599e5070061af93cf016a9d1054d9b1af7a85f190b3cb7bd6eddf4fdbf456a9c7bc53c1ee0b9ff28db83d2cefa2deade0c1e48b2b8a32cc711a946fdda3aa18ec92236ea57253295501a133e20148347d5bb708f7873dd85bb3a24e62e67d374b2d1e1038fbadbb66ddb369f2801a108db0f7ef7a3c3e074d26136a3f836d06e3feadb6c3a1841b013caa89bbd83dcb52ea8c36a64eb5187ddf38f0e83ff2b68bba12e08e95ea0c3a81ef0a822350eda4ea86d6ad4b05d50bf9e75426d137f67d3123ef0a0e63d6b284df3344fd334efa8570f75d4b1a33ebf422a42835aed6f7387ba6693005def413de2e8f1a0721022187c9d93fbf47838d0e6c8048377d9ec321224490e1f4c60f015c020f8e4ca510bdcbdceeeb6bbcbc625288931d061f0d3e301ef8f0e6f2e1b31cbc6d7ecb3a97e3a699b1acf3e9bc08b72dd0cfe3f14d7b03ea488ae9b9dc02e10044197fda1f83a5d4f29d6febbaeb2bf678128065fc30ad578c53c1e17c57346ed35ec11a00c54598a29f57678f789518ad478f434548deb023eee4c271d935dbb75010fded954c5c77abdd5a843a17ad42fd633f0ac67140a3ceab97a4980ef41dd759d66d92ea843140b859a4aa8a984ba99f5bfb26c3dbaad462e5b895423a37efdd92b917eb99ebd1eb15c77b96e37d461f6a6a07ecd2c77d5a8b2628c2b963dfa5c58ff1eb10bebea68cc7aca238e2f3e9b54cf3c8ae4b33409940e3fe7508cc9ee3aeb11ec6c13e9b08fda48ec30b434aaca9b210326c5d436dd346384da66eef0dc42863415d2897c922514256d339be6d1945ac825f20aa944562191646924e55952218748214e703e5ee5632811689baa94a36daa114cdb74413326bbf72c6a11975c81a346e605e74ee9e41abee3ac77b8791bf235152d3c87a68d6c22e563c0b8b9957d36c91b716952d284334a8433f9d6cdb408afdc7924af72f422e5e616569a3611885569dae4c82438bf9b37d5cd9f7caa2ae1ec9e8d46d306a6bba06943a50c964755239cbdb46617d42575109809859212dd1d364d94412f91653771091f4a441f4a2ca1d3612bd1fdd1264ca339447e227933f8e4e7cd5b37940e8bb049f454348b2651379d33a8c39e44b87bf624ca930adc9f53680a4da313d489ca6aa67131c618354a1bc3a2edd850e4b93994114d2ab0fc368da41793f0f5b9672e28e3869cb4d602cb634bdaa683b4186a42e4a4e80906e54808cbcb0e91644bb8e5a7bcdd4f48f8e2731fe18bcf1b6645ed4798fcf1f8c81e9fef186be09f7989bb0786e7a3943e9077ce9629d286fc36bfce6e17b16bdadd6ea41fee0fcfd8d2823339c150c5a0cdd510b00b2118c1133468410b30d86928b8e9e00321732812022ba4c10b465f10c24ecf01371d500045087885a3121423a2cc0678aa4a70e449159d7550f7f58474110730649d1165599605792cc801174c28aa820fb4c0620b7260811214a34ec99329f0e4704c6a4203ee8a2982c44005590802113a34210217e220793085dd81a6ada86002a51608e106444881169e62f00322ad881560d8811674c06206285843c3810e5328e982044d255134032b890c71c0f332fd52c131a9890a524a3a1f8e5188021166c131890c55c0dad0759d342289747214a1d3f444057e08a9d1c931b5bee9771eea3fec0d4d153e89b71d355ba38e793c3f6c4d05e20c1380480c582c3529add5ac50234c9657bda29e7f30ac3aea7e51f6ab5e9dd9a857ab7a8cabd91e4fea113fd3aed5f2a60c8a31f39ee7356d62daa84c6de35a4c525ea8dcec2facea29567596557deb97eaf22a256e49677ad4fbf4be8a49e08d49dff6e8a5ae0e94676b6733c573db5af398d1d75a162ace276394977544c5f9b028b0c74dce4db31167b28a5a23f6bef987d6b61d01dc288aa2dd1ca7d38ddb66193cf187a31780d829227cd8adb2c3ba24e6e78df7eb3072b2a3501aa98ab60d7d14c247ff478a9d4a3a704c70b4b99931f10588378e884c5e29a00c4dbf5c7af4e9e975d1620be67bd9525a577c36dd0e8fdf948839111b91414fadafa1340d1a04254b21bdc3735f2e687bda9e76622cda410a9137b421b931653983ae52ac6beb33c4a6a40d6d4cdb9266022c4fa5eca89166027a0cc326a5b562b67b955d126d48dec09ebe244a389fabc33162cc39e7053adcd83b6e7b9a363e9678a85d694ddff45a3a6ef5c942a3c743e73326a9f6ba9b9ee595b2509af23a6ed5e461c7f9bc7e7ba9631ef621efbea68aa01e3bc6eb5af53a5d04b5e2baa6a626da319d3b899bb67a174b75b1481cc3fe3841e39ab783c669c8b030342e5f69d89c634ee3e18ca76eb6387597cd1d76b94edb0675d7ebb435fe04cb6379b9238fa68d5007191101964850485248bf62920f9c74270505050dd9c1f9e6877978fef0e73b8f074f1b28158ff5adacbc6869b9be1d7aa8b19ae968389b98e33304064ac98939407c5418480500310788cfc440adb6f13ec566ded7620ed06a8b3940282ee600d59803d47531078862d6fb29d5cafbe04af57eca0b9517efb7585aefbb7cefbf7c405f8c9803b4d9dbc3fb30325adea71173805661cc0142c5c49c3e0f32ddfb3dd8f0c103da6a620ed02a889803847ac51ca0c6f5fd9b9803d4e1c41ca01b3107288523e6006598027d43c41ca00dcf7e167366de67c51cd5bbe57d20628ef7be4ecc99ef7bf3c526601b969bb15c11c7b21c1127841b7a6139212ec86e507ab0dc159c12d7592e89ab824b6239241c12674416f95242f862132cf396fbaceed3d5fb60f7e9fb4cdac2b2eadeb30db574dc7b36a115d7b305755e7d8f0685ab3dda9387f57bb427f5403a0a14dca3396107d21908500b6efd27c3df7768405bc27d5b377f174805b3dcdcb309f1912d371741ad6ede90743717c939508b11efe6222f076ac1f5e60da80563371771a1cf3f199eefd17c62dcace179815470dfadc88d1bf7c54aebf2e8db9e240fbe18cf5a53cc912dab8ee398e28c7ce58efad5c322862a8c18a103121212244992545145529212254afdeae194a25cd1af1eee8a2851a060796ea95f8da38e8959f79198e5724745be1833068e10bf19e2363a7f3db64d10af2a56870660040505e19dfbb0dca7e63e40dce787fbf8701f9afbd8b88f06b4253c730dc424dcc3a3c70364e7661f09d48259ee0384a5e679167135403ccf219b10103f3c4fa2ee071f9ea710283ed03ccfa1158d8de729f4a443799603b1d1c3f30c62b93f860032f31e6e066ac13337ffd0b0c033cffdd4e40406ccf2fc93e1990ba482776eeed984cc2851ea80593ea9e89e1f4344a9431d30cbd5e979846f0e756efe1037b784b8f903c0dd8a8a9414ada85eb4bea6a6a6a6a6a6a6a6a626ad494ba22549a225d1926849b4242c2dab8ec3b42189b5216d481bd286b4216d88293b6262628a4c3863626262623a626959751c961d65472c2dab8ecb8e647076c4921db56447abeca8cb8eb8ece8e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e94949494949494949494949092bc28ab022ac082bc28a9a9a9a9a9a9a9a9a9a9a9a9a9a9a92d02434c9b4c1f11b6fb979cbf9eae62f89cb9324c17137a51b37e7dec9448790d0213a4487e8101da2432dab8ef32e8f9ec41ca5fa48e7478526d3649a4c9349c3add4a1b4e92b84a44d6bd13143daa6dbc9a7119198c3248f8a949e282929292975bd7f6f4a452b57d5ba453cf8b26c6a25ab9bbf8ebb975b1273e4df342fcecddb6773730bc778dd206e0f8939378738cb26af478c2851a264a0169c352c70b72346942851b00fce7db8fba8dc87be468912a585f4abafcdcd7f32fcba64e99679495bf3a3977545f5d3f805768100f949619a03016aec23a160ec3f19b6f11f15eca3c2b55fde0502e4a7c33f1c0810c53ed209d7ff50ecc37f52b0cf10d8bb7c0bf58bbb407e56388803f941e19a0301cab08f4cc2de7f1a0371d9adba73add2c3cc55309c0b04c8cf87699c491d48b6612ccea4fed3c23e13dfdc19675297b7b132cea4feb21d67520fc26a7126f51abbc599d481b05c9c49ddb3a83893fa0fb6c699d47db05d9c49bd5a2fcea44e63537126751b56156752a9f760c13893fa8c5dc599d4552c2bcea4be6253e24cea2afb22cea4fec2aac499d4a95d8933a9b76c2bcea4fe59963893fab42d71267516eb1267526fb12f7126f5b6ae3893facac28833a97736469c499db38f33a93a60d68d712625e33236378e61337784e579b0b9abe1a271273a948fb13fa6d3124820063ce3a1fd01850a9af064032ce333aed395867d0229899fce8927fa15b1ac97715de631ad08ea9a1745b77384de0b585cef0f0b735da606842f6f45455b844000a8efe0636e5b9c3e9898340d20eebcecb0e3529fa070414f411a5190907cda913b33882fee480c78105f1e0ee42bc511cd000892043194299902e9022cbfed40b2400652de90421ff2a1a0459e00cbb7f090031e62d4c0410d18313788718546e10b0d1bd070995183192d3268208305860a98d60e33d861e5cae0aad818d8172f7a4a0c18c460c178018c95cb052ef065c8cbe7d20217550b0b5a522c2b60f15a44ad6e45052b5525052aa8172878c1a50849d9582760692b13ac322c6509b0ac189672e82341cc5151d514312735532388395e6389eba550cce9e2ccec98b9614cbeccab35b9d0167cc74d55f4eb4c5a93cc1b132cf3f694c51c70d668176a684352166fb891c79ea40df92a2a3458457b9e4c26930dc6f7b5fe30bc9986890cf04e2633835fc13caf56abaf6056371fc37c75573067bdc2d8d9d4930913d6616cc419c761dc449af3e8cb96647cc3c257a1acd0e09595e395d6ca8a0c3ac23a13c6cd1f4cad67dd1cd6af6ea6c171d34738838009044b70cd6c7d9d1e57e58c20589ab99154ec6462339da7c12d852e9b514578fec56654123ccf62338a29a39e724d922b531fad68427852b172956a537f6161b89bba35fdc2000ccd0d47b194303bf42a160313d7af582726aef747e216cbcb0b08821c68b757f0d582733671335b513957ebe5982eb7643a11f22d71b308ee197795e72c7b4fa652844a96654c66113a393a9c1ca6354711b372570e714b2f97cff8bc8eea3097d1b3c96c9a4eaccaab4deac2098e5ac031a98b2138a90b21bcfaca6b6339407e7c34ac728bb41e3d01c4a4a01995b7acd011959b53aef229fe6d20c5a6ac8f868b50fd2b22e2effa68f8dbc16c4c0a8a5e0fd54582b91d12470f8995ecb3d925f5a9589794caf74f25ca0b6c65a708778ef8480ca4f21a71975917eeead0b0ca55deb1ea75c954b6ebb09e655db27337ab5c1f0dd74b8fa7bba08b9d312dcb379b7fb01c4686c762b3a44c49a6a492ad5c6772df84e16e0681907e525bc9ca55be4ed2483ffa49d8e1fc8d922c7bad2a2bdf33fb232e657109bb6e8e4b5964c2d9cdf5db8fb884b90bc4255c6f8fca5f5ebda64ad464146464845f7054a28113ae54c3e2a3985351f96655ce59199952bf606e9618e6b35e98b7bcc2d84ca9c3f9169b251df9609eb3a44cc9759a498ce7c984295bf2e51f4ce80857ff7fd92b67b3a59e7ad4d3481b3e9bdd89747434ebe7ca733d77b3a50e2753f67a201fada7de8c694987f3cbd95db1dc92a5d9e2e1e87d67a5cead1c68e2954717a089b317aa83e79eb2dad207e4c553af4f51a99eb272339872d5ca8f572ed0c4295f59203e4fe09e1777751fedae5c171ec7d98f572997ff38ebbddad640ca5711b366acd8ef9c4dbd66aa4cf51867b2e66ce32a7d2406f2d1665cb4034d9cba75d12e0f0d7ff7d170eaa9eb23a3e0ee3e320a5e79cab2fed9eedc7d54f74762171e1bae3de3d5fa6878f5171668e2d55936bb7007c233de5917eef2d86e5eb9777567131a33ec15b42b4c1c3d1e3b5c4663203db8cbb89993aa431e68e2949b35a1783b8c6753c5e6b8845d5eadc43036e21decb59f05426f63d8dc61181608c53c1eee2ad6e52e4b3bff7861e05952bf5a3e9f29b550ac558dbb3a3547db7058c498792e5c2186251c1af0ccd13671e78aa538338f696a6e58eca63a77abcd1bae2a5f79555951a9d27bf123f18acd2e3c62525e79c62d7d3b3e6e49bfbe7eaddce07aa00cd76707b2f29f897956ae8f86555e7057b140537567933b9974387f265e797b3c567e7bc49d2f2ad9a0086719c4a45f3963829b44a51a44251b0cf5cee49ae08973e604cf261039c22baf59e295c798034485ab2a8f71867b955ee55480f844efb60876cefef868f812476f07ed90e3b468955b6428dcc1ae66858fd3a25f7932e1b288421cc92e2a079a987bc44d9363326de28e1047b2cf734b228e88e3888bcae5b161eefac828f59fe596a87039af9c7bc6f1e8956777c5724c1dce9527c1dd9e9573ef5939b7a4c3c92d49afc7cae598827cdc2377f38e887d345c0f34715de296b44ddcf9fcd14fe627937aef555219fc9de3ce39e1cc2d714b5a15be95778f9eca753a932fb25ba4f59c7a765db2ab9258b92ee0cab39bbfbf5049825bd231f355e217d625bbead9e59632264b98b5bad9a55895b21173dcab672396a17d87930a5f84e92738fbfcfbc57d3e9c289b33a72c7b97d17b44d68149e6346de651cc984c9b6c29c6cc674cf09cf3da14befce14e15850cb21280d12764848333d0904316475664c104da25a94a8c5c219ea1074e54d8a00d5d8c20ca0e1db08e12d9afd9445a12358a1198adcbbb699ff7a7c396c7ee4f87db8ce9f827fa2501f0445fe2b8a9a179c209f99f0e5ba6c3fe13d87da2c3fece900af40b7b670cc3b0db5b7422523a279db31fbf61bd4da1a6f5f2564ba6f5b2851c318b1f53b86295a313b080c210380a9171dc60cf36383e88993d460ef52245a553b15f8ce9fec2c618d3fd90376a64cdeaced78bdddcd3c789fa1a7923c78dbcf10387bc11eacccfd71c440f8c819fca46197a4dc296565883010104c67ef801633ef880311a1a8cd9b081b11e7ac0d8cc0cc6646430c6030f187b1172d69872c64c39c34923cec84963ca3963ca883372ca9872c24c39779872de29a79d8f33727ec69830a66bbe4c97d932e56469cdd6ca4422e6a8c419f9398f984f7981730fc6621843acbbaf0f14d8d7d5c49cde28d82aa6204fa335f85a6e44a7c340e1c44fbf9ae85704b228a59432cbe63d0bd331fd3a6d2871d8838f3e1fc32c91f5125996a12e1371892598e853792a29965d2626135937e77522d0cab2263aec67cf9e3d6bd92fa5c3febe9496a49206f76b6f4e4c6e70e8dc28a1c9f1d56838a49c386e5e5287a3f2d9cde4ec111db3dd10cf18763fec1bca74dfe0d069b9f595e9b650e62fad0ee7bf140c8bd3f8a23388ac081f12fa517cb32736e7bc5b9c99cd189d72a0d89cb3024a72672a71c49c9b135fdb1f8a7ba31913cd93cd37d104d74466976042be7ebe461ef5f9ced64b23e72679c8db75388fba35539e46de0905de3eb72fc1441319d528de6e4d4af67538696a4298be7ceba55f3013d599149548bf220641503b08dee5ca51600d05a2ba249c75f7e7d6e1e4c107ceb80c986707352c332438cbaac892709629c1f94e29217c309f7110bc371f4c4c78d46b4cc594e7a55c957a73b1e2a96c3701a1d8757f68bf52542bcf2a5537a956542b2a956ae529af2bb6536c37b59394bb5c2ed71ceaa6997d3ee957cbb3b7ea316c87a44bd22ff06ed8f3bc241d5287e47a4671955de79d76e87af56c377dde33c52eef761dba76d4c70e73ea1dd2133ed5ad4f3a0433efe067d3dc1ec507c459accf942d52e359ca732ae53df59e542a7553a99b53ae7a4db193680e09e930535df3785473680a9944d453612971ba51a1481bd93f1ffe038d0d897b98b9ccb6c34cf9cab32d7c5da6858f65339a3b6cd80cc4b5f189346d6a3c9b47d30894efd9cd8dbffb50a1e0ec34960eb161691177730b7333377f9893b91e8d1dae8d01e365250575e9ed40fd07ed7f29157166055a76d76dfe700c0d325502ceeec2328f5a3653212e1bee68c41c45e3312af7ba0ebe0bea57ead9c10c1e359da6d36c9a4e66934ba3d4e381bacb823fe83a8db4e1ba56e5adb3d35cae5722463acc3e6d8e8c64a827f5ebae6346ac7097fd41d005dee58a1e08dee50251d7e99a0e5d0775a68f86c11ce49508eb352912f17107cf72fd4b69a74f23aca9858f75d78f424da527140faf71ee66f0ac0b1efc7679b035963acca6ccbe04dece2bb66cdbb66ddb88b26aed54aacf53a9c7bca2c34c4887f566aa3b973acceedda934a434698f0bbecfb8db039e7bc43b3c3ba522e680ef826e61b8b028b1509f77d0522ae24cf61d2c2dea30fbb5744887d1de1c03778f71738cee2f1feeded2bda534576ede52aebaf9de6dd29cf0b9fe3b8f3a9c48fd72d579542752add54ea479348dcca379949a47d3c844aaac1b842d50a35aa3f7d7ef9ecbbaea5936ff5573819ec7e3f28050fcfb4387faf5ddecfa9fb9ce7afe5dbfeb3d3f389b3afcffdfcc62d96ea80bb2aea3aef278505df64ea81bea5774dde9c402ef1e49a2b25678e0ed012b6859456a9cb3996b27d4cb75d4d56c3b75937627b7f9735d978755b64392c17bb743ea30cbdeede4f1545a41d7abb7c3e5ba5d92267cb93a21e1ecd5e94955d26196290d5e3c9e9614be5c8daa927ee5ae0a9c81605793fae5f2ad91e0eca80da3404dbbb3e97fafe16b2e3e90a5751e0f0b08389d748ceb9f4d77c1e001047b58fef29797b3b44ceed505f5ff28dbf38a42b158df50f5b9f1effa0ff206eada766fddee0f3e7b5763fd2ed0e6ba812854feadc1e0e6f5406117e7edf0aeea4e0382afe95777f02c8f07acb1d60cde4c5d367f38081451b858a7913732083078d6755d67bafecdf6d44781419b2776bd606da791375cdf6ebec1b9f55f9f897b58af2a3fc81bdb9fc1dcb8d6e0b7ee4f6396c495f5fa0c3e838f5e8fdf75b3bcebe0cd3c5c07ef3af8d3c81be07f411b730dce2b4775de8e7af07af5fe206de495fbd378e5b55e6f87eb3d2b2a97eb456cc262b1582cd6751afc05cfb234d28676159bf21716759de9fd206f685e3df824ea5de0fd41de001ffbf5eafa7616ebfe206d8038530c5e97edda51ff41de00af65cf3be8ed60bde7c5ad5f79497498f51fe40d16f81f543c1e54055da0cbe502adcb759d06abec34ed5b8df1baf4f851dff107c1a0cd5462d75136839dcbd6476f0778d65d3608067f1ad7fb83b4a1e9f46655d76c77ced6ee3fc81b117757d988418fa7bb375f0d8e5ed7f2cfb64c27f0359e37fc9ff6abe5bfb309b44e9c3acc9048dd756387600dcbd3726987e0592c4b9906a7429c0ac0730b89e70fa752300000c08701d0c200f886f4a2434647a643c763b7704e4e8e4e6c1d9dcb357c3bbc89af9062fe73696ede3460e3e60fc8cc128cfbf070f3e6448e9bbf0c60e0fe70818bc4cddf8f1b809b5b3d97e5e6e79b43dc16b837a8a70a5c9b9b6f9ca60d056ede708c0b71f336811d09e09f9e8584f308d89b5b10b82ea207dc1a0eb805b8324adc171612c65a3242c60970730b1bf11937b78cb877f327809b376cc451d7c7cd2d2c23895b238f8b694bbe232c76d4e112a8b7bc6cfc3a2d0c5f463dad5c9a5330e6c3a3b7c38763d7695b6fee23ccbd887b54f40b75ca614da4c37bcc8297618150236c86c1b1392a894da49024229bc4d8dc424dd8dc3a36e7d80ca304003647997ab1d9dc420db0b989c0e01c95d0b03936c9524885c766d9c4e6165a85367b4a307d0dcb009be90f36870bb0b926617a266cae4c30bd026cee82303d0e9b3b234c9f009b3b265e10a6cf2c026ca645a09e721359023bc238acebc182dfecdd616bee8ddce951df6e964698cddf9e5f30f6b83db75ed8d2870363d8967fa460efa0109c7aadf59d4d02f57a379b53f076cc668ab188c1476fc31848c1a99b7fe01f291b91e630ac876d223f02a35e27c77195b318caf66cf7478d8eec281ea87bb68f36a3eda8c8d0147367067510f4f5095660616464480976b2ae1fce54e5e9c8f1957336c7bb1e475ca7fba85fdea5d566339a31f4db76f38f14cc1dbc6dd421fdc2c751ee085c8415454d1809a90e452b8a826c7aa70a7943126ec131e90d4438eb7db3e03b9b29ee8e799718bc19e732af9e053700e2580ff40ede1c73ef45441c7324bce3f80cea178ed32e0923ce81d10507ac590f5c8d6fdf678fcbd8ad3b0e0b347d340cde8d488714ac2e6057c3e6ad87773d74ed2161c47f24c6f9f476e0bc6e1a078418d2e7d4c7634088af182b0a4375d85d380ef58482425f8f2a92b6c1c1a40a41a94330ad45983ed2c75c8d60ca591e6b1872d4afdc54607a8a298604d328386355609af48621384b799ee73501ebd8706c9618e715e7c38e3c9e4f083bea20e8a7f80e86d441d0678975b064225e533a257b9ee71d33d221dd703ed0bbf99888dcc2cfdf8e773311c78e88b01812112762dbb979fb30cf5d817fe1f1801852bf304cb14729128ef0022bb077eca85fde5f3230fd0b195887015ee371da1ce0323dfc00d600f6b32d24bc4be3d543a2bb11af5b8763731ebd1d3ad7719db62e20787968183cd0c4e0fdaa87aa38061093a4188249ee719d896323febcc738e382f3888166e782737568d8fbcd36e73a8ec3662d66bb2e55876d2d3ae49e6341ee3836e218eb522f8f0d6ff7d1bc9b65f1ad96305d39b514e079c32d4ab4b410e0791bc0f387f3dcc22e33cf37369e6992780e7d3c5f00cf2dfc923ffc9237fcf2d82f3a9e5b3ccf1fd28ca1362c182f726ef33a8a02f1d835317080348ffd960d9a31f4f6720ddf8edfaf9c74aef302dcbce95c899b3f9d1371738b9e4544041127c0cd1b111fc0cd1f11c7b9b985739c0f817321702e809b5b38f771f3719ec4cd21ce6ddc4c83f3999b6f300b69da48ca9dc59de7e68fbb8e9b5bac251e1da73ce7e1e616cf736efe78fe42c7573abea3e3f83136e69c7e06c59ce61cc7cdad9c8337e7de457a775fefb78bf27a18f1d861006eee26983bcadb61c481268e1d2271733be951e4ebea2b4ef55e7bd888b3f7232c50e35adfbdc7eb0b8fa7470f4b71775635e22c6f871146dccd7381d231f4d565fb0edf2eeac90b1f1b5cc0e366287011af9dd7bde27cd8151dd2254c498734a9438a2571e2abf68756d121c59074488dfce0da75aff64787370c093beac2073e6347298fa706adb067a4438aa4437aefc833aa828e7fdd6bd0185f389eebbb6ba7100c9d760e0975f8ed33680ef5cb48634718122c49bf705c171d8dbbd7474c6160600ef39a0ab253a863e8351e7c3508f5d4217d9e3bf8c077b613429fc2fa0acb792e002e42095c84b7c33bd8e51abcbd62de8e0dd7ab61f1793dea31bb7d3b8e578be1b03f6a70f61d363711cc5d87cd3c36c726987b98c36349b5541de6f5983368da34d2d6488dc485af9320311921b2a4abc0dc732361faf65244f888b85936c11ccba9872b836f8d4b367cbd84b9b75287dca5cecd2d84b9af90620e003ec49521c49521e3915e463d8eb8317dd24b22f51b1505629efad36a01605171389a2b2b47d8d1466f5031af47ea375e55bc1ea96f388026deb6a9d3386cb5376c1daa411d42e968dba09e660c7dac4198bec319f5b465e109673b1aabdc2ad421bdb6856f0e695af8c0e71984e9b52c3ef0f4f3cbb9ade3dc2c89608e3b8c73bf81c1dd0606f7d7cd2d0ce3b5a85f4fd3e68b408ce1ce3d889bb79a9b3fee40dcc871f7e1e68fe6e68831dc1f1313136362cc6ba09e9ae088f3b798bbe4a3f1bc3515fd0a4faf333b1b716823b6ef907e8605d2322c1089f30a09d3c3d89c82337684e977b8363791db0c13c3e6a80486cdd145ff62b324d2a4c5e6166a59a12f29a39e7e7037aa3ada1baa8bd8c3f0f62285b542d236e18ca1df3aba218557604aa45f184869faea81ff5ebf1b45cace112c75fa1ed22fd56947349918191d1d212125492293b013f4f20a7ab9a49b4827f4f2090da245d04e4887f4ba788fb8bb1a8efae6d9cfa6d4e1a26e8cda76c369838a438ca10fc15682afae60dac49deda37f8a33f4a338f89e514f983e2568dab096584ed386851463e8975a2c274c290b09d316a6580a8c283a080064904e8ba20735f72d30b32c6b97925a3b3b5b405e6762b6476a8f769316f0897106b3347a3c3a8dcd2016a0f45977768bd7b2cc9e238e387a98052265b62362a0194493134aeded52e0d6152b5aa8a8c10d2fb8184ae1c208b77d812bd651cbe282085947ed8a8b2cb48e5a908b31e0b62db86e1db51f1750b88e5a150a70db144ecda04edbd4764cc06d5770f53a6aab16705b178c42c26d55b8aa3a6a3925303061c3b3ed872bd851abad810db82d0bd755476d2684db7a185b016e7b5c53a66d9b82eb8b8edaf904958edac6d3b665c175a5a36d415c632bb2a4729024a72f04999232a1c6242040d97d629c99ffc930cc47c318e6c2e33f19f64d46c19156793314585e6702897146de1c044b9f89b320397b7cee722843f3a57c35e1b411087bfcc124eda8f58971865e6a35dacce628f0697c36b31b25104d939f11c79bb10ec2f9092c81e610a66ed8ee663b1feea8eba263a3727adf6ecc89dc7303b5b62434148a0b62bb6f40dbccf55b1374e054811cafc0fd1c9bb0920a967013883ce1be126d4377ba0e393679ef2c6d8fc7f1767d64148cfa4f3d771f0d04c1a8a3ec4f0d8265145cad8f56a78d384827ed76cefaa0b8ff4cee679e7bf76981ccfb441184e5535eae3707c1d5d3b1751675cf76c73908ae3fa25ff5ba6c8fd8bb7d1d21b8719feb3eef1da65fddfd99b83b376f775d7ad477ef6ebd321d5a182f9c289bd2e1e7f4e5d64bfb717dbfe63b590603f1d9ce5d5e1f0d04c1db75d1b1e1d4351004ff04c141549bcd324bcc71366ff7e69cdd5962eee6edf5dda7f58102733e13732e3db6cde6fa0a0485ba3e1acef374dbaeda0e34f17673e66e0e82538fda0ebe6845d113ceadb602064cb0dce930cb60ce462c3d2e0564dbeef47c343cb7d3ed024dacf93c81e766b38b77a089519c75f12e0f0d75d4e5401438c699eddb6b7b3a3aee357b677d6414ecb2f576e7443d67eedb76316ae39edde69e5bdbede1bebd87fb4b87ddeab00777ff20dff6380f94e156bfb25b4c2dd0c4f3a6a44a0d55688a70a72f9401895efc911d11c7eb33e7e5332b34b4c38e14d1a9afd014df69218e6417ec4013d3472c6f91ec62d747c3f4f416e91ba30ff2f2aa84629cc13186f1318a0e32a934037d9254e01c3e0145a6d964686a646a60ea6723ceb0ceecf71b896f5460b0cca18eb42163ac3cb360b9c2b2e65091aa0ce223b600c4991f3295db3c177c12734a481b45c81b4b30118098c38038d36725b5aaab0f79a3096943de8880b4216ffc9036301067fa4c969654d046cc926520fcfdf2e637216f38216d4440d6081b77377d1ec0dfed914ea05636889c4286fd152b51f0c2fef42515dddde06dacebd5dfafeff69f9057c966a5b06cf640077076cde341f1f7bac9d829196754390a89affa629c511dbceafea9e21c9ff20ae7f89459708e4f3234379c94524606673208363ba57e325de81199831a61b0237cc426f927a49445c823b05b012fc048da130635c2e42e4e9a19331f2fd04fb2ae370ae970be0b026f17549f584db226dc3326aca2211d4eee76445d2794822f67509e5a5a5a5a5c9e35819f3737343461988f39cff3b821585eee9af1199fc1cd38d76df872c6246bead7e438da84c3f9b8674de067fe64ac6e069f31010faa606efe64dcbc618e3b68b3a6ce9a644d2078b3a68c656753bfb63bb76ddbb60da3306858712eababa3f1eae033285993215a903634af11f52bce6b54b4cd8c51e6a45f31c90d425620276ffa355f3097c29db64dc6e4dccd34a0bd01c17bb362a2fadc21c6e3762d095f97253d5beabe6749f39189ed883a9c47db8755541e3ba126c3694a6518e2a1fa444b4b946ca1041700610e4954a0022b30d58ed2388dbb32a116aaa00861b0e20b22c8a2083188430a8620835073e247c3510a52b0029e384a410a38c0399444322e58c309b4404115552862c40813059288664de8d06d9a8f253a945d0ab048c308863809d20269670a29421484e7463d157461c593235c1a05a21464d99462ce39e7a419a5946e749a60ce08250e454ace20032d9cc0829d79023cd12084a752129e93ce8d0d5d46916c521409e10d3ec4f0613e982cb1a4c41214c91456a8a6e4c49629c19b4e3079c2e9e7892cd34e402913ce805404362055b1031364410a4f80b251345c61dbb21eb07a892c71a6a52036ade1080ccc90852abc20831224010b18454283b76d9bd9d6a4061db6b465410a4e300a95d0d0856ccba2539665da0d8982ac00075548a10516bc01e9680e49010a4f4d6c010579822f48283621018dc216499a9c209b34a47081a254821abc4009505040826805d00954c8b22c0b4a1575c1054990828b201075a1c8143a70c210382a22165650b1032068810b1414cd1138610e4234e4a0c2d18a2c62f0061d74380316a4b0c151189aa69046821d9ed0c4e8095d2832051dec4c2994a88085acb3b894655916448239ad982998737e53524214ac704217f9b30f41cb29eaca85632b82aaedc60a8c4f9372a2a0873aec67193338e6f460871bf2c8e288f482630a8e1e8e4996b03097e40d9945c442cc915b904c1d4a2658d39b557dcde6d8425f66116f48287288e8a807734885b3249244cfb6a76c8e38d32f583299363c128abc81a30dda29a89b5544c499aec30e107c5bee206c83634c5fe38218d080fb181b300dee7c8375e24c3f7ded490d0b34db0886f4146ac2fd4e0a2318c24d1385172a866118d68d358649d98d4d0cc3300c938d3586cdc61ac3300cc330ac9b69beb1896118866158631886611826b33967b661d89c3f1a9b18866118866118a62d614c5bcae48a0db5e27c315ec6b8d1ae2565771f9b73f6079a6891196811c626d67a0ebefc618a6118f6c69a7037f6b6e2ebd984b13756e42bc2f3e61fb408cfcb0bd022dcb747dead434e074343b00cc2af2dbb95aabc927c726aa21907a4382ca1b4432c2c9a22c0dd4a9283121a9ac56d4af3502adf2ddf30c0f968d7e1b4d15effc59d6fb37167ce396713563084e77f44a01533c71d85ba37f294e31e391c3158cccd94a14c8713bb211cbea6f2d22ebea694d2fe3e21da7dad8b4fce192f5f50519726d248637c6cc9868f7e1ee7c37e0cdb380c85267126620c052d624ce470c47d2147dd47a81106e7a3537bf2e5788c7dbbf1d953e4fbfeebb0d5ea2f76d2f6b39440248efd2ca54ce990e2182f2fb75dde968c29f334e2141cbbf8221623a58db9410ae9272aba205b4a2713472924a18894b23b090e5248820e765c3c97549c2f4a3ae794923ebdfcad9456cacbd7dd9352264a279df374ce4dbefcad9456ca0b9d9432513ae98409c3bffc05a6857573ce39b13c9bf00f7abb944c5e2888a6d391e9f404cf47271f4d73b6a6a6a5ec8df9871684ca5515da916febb063161dc76d98d2739b76e9866518761bbb42bb14a394e6c419795a0407385c81fb9bec26dc30a26b8b2db6d8628b2db6d80285863ac54442e7801ee7c3a26cec1699f3da4fe848df29beb37510f1b2a71c418dc21596305584c1f9641038e26c3f6c351d0fddcc07f3cd4871e5183dd060696530a35a2a2bec5955b119d817c2d069e1bb428a522b3601e71c8c9da9c3e29b02c68e390163c7a6b51143ec99c5b880b1572c60ec282a7000c0d8e90b637f060263c7b063d8310ceb8718ed30f7e50c31c6756b3716c9fa7e9fd091199db420f480a31444c044c3f968866a2ca5636445d9cf6bb5389b3a6deb23c237b3cee3c9e4b76dfee8f09c1fb771475dbe3539ee45fab25d7a6c18e87077e9f422b630ef50dec3e2dbfa55a46f8c4fa769b624541d127716b3974fe808c528ce2e3a249677c31d163a22fb3b248ef7b020535035387cae1d12cb56c57c48314494285176b657ccee88982341c4acc415e7c3280abed616bef8be75c83224e27364e721e488eb22c7a46943339368beb9821a61328684b18d5a4d4bc3d731befaa86d1b49db448ce435323ad270cd6c86b52dbe3c931c75884599433306d3d0f0156926f866921d2ccf2a30760c37bd4bf7c4588cc2138630f65e6a2dda267e21098b51808213c65efa280963415120c296e09ddc1965ea17966530762c874edd06ec314b27180b01ce2fed21d1343518f6237c605f42de904b2426a5984317182b8a64c8b10b18cb5bf77934182bba79e6e69075f3598a30f6d68a646a23b944dee81b441bd8312ecc2c09afc0d8536ebe128c9d7573ababc0581b750ee4128ca54e3d9e1f1d8ff7cc4e9c65a79452dada19be4c9b68664d5474f03651875dd443baa887748869214d5db339d5758fe27611518758137551d8614f590f6b23337cdb358f87d3a243ecf2ed75a79662ad0c5fa6a8366232a2d72c4dcdebade910c3ee0d0dcdb4913b11637d690c698c21d534c90463b2c987ba92c38ef351edf686b9e0dc4618cb9a08465f3ba0508418469c5780f015893ba060831813b10bcec8f0658d61fa588ca1c728cd2d18ec856439a1461a9e6d4e6f47e318672855611e4fd742f8fa55d539f89a0685aa691a9e1ff389a76f8462683e19cd279a281393e23b4f00dc4e9c31f1be78debbbb6577cb6ef9d2305eeb53793c3fb4259e8e6f217cdf47e7f77d5fcba84ae5209aa6659a866974b626354d53496d26a8f21126ffc6b7752f2dfb2309910e63f751877f744de41a09d2b2c9307bce39bbffd3b8ef914ee9ee4ec1f22e52b6919ed48b714e249d0ea494942ef194cc3931ec0b4f52382a7da109866159a6040623253008e1161890b6141c95c0c004eec3add6e8206777df7477776f65e8eedeba46820c60688184eb6326637b3a50374bec09a10e2b85a24339d461a5f790a05706ddbe2785c4991a95989a7e4a2b318ab313d8e341bdb31aae52de223a94583cb249d5571dc5f1ab55eba227a5cc3c1ed557f6c8f63a4f6d4ff7f9dad92c3b9ccf7bedbaaeeb549718edbcabdea96e131dd66b4ff87af3746c579d7a3cb6ab5ea797c4f68e52cc7bc6300cf3300fc330ec52ead1186377736c4a592194577428e93b3b7134bee9c19e3ab5997ee60e77c7bc1eaa4f9d89e54d957af4b4adcbc1d7afd8cdd1a1ececc4b16d56efda59895756e808867d622e9de5f93aacf53d84af32d12f171e189ec7ea5b1cd3173186735873ea67111dfae8eebdbe2525048f7a9eca53799ee751aad23c1e4a63f5bc1e341dd294c7e3881edee7e7ed99f71e71cae331ef5d798507aab2f72a53f7fe31d1617d675d52574763d58d4087f54d60cf2ea16de1f3d161fda769e1ebee88c3d4e1ebeedd7c5c6bcd5da7eaae7a8fea6187f53eea1233a65e757dd8223aac9ff6880e6be7bdbedec7531e8fe7bdbb341dd6cb215f11fdc281eb2b6ff535e3c0d1af7eadaf8f53c909d7c8846b0d71fd7c0d4cbd3d126905073d5bfa59ca9ed8b339e7c4deaf8d6554cbb0eea697a69558a29f9dbc144787f3eadc1b8ce345b14eff200b330eb4eb17ea45d4f8c3f797f6f50b157218e63eb959c41159e64343591f4508291d817abfe6351b6388ba97b267cef96e971ed9fb4db1ae5f4d81d003f91c549e361052d0648b3f7c515003d3d66ff54ed3c8bb23e36910497db4083471bf7e26963ce6fd99d8dbf1453c77442c9f4233b1a81126a710e1ce201032917c18f7cdfee8275d037a3f6a30465f681bfd48c13d7e60ee180a7bc5dee11eced91f29580ac66e4f0ff7e1ee78f478765ca741200463dfb66b61f8360ebb3ddb6b967076d4666b6a7eccf64054b4097548b7a11c01f0f1e8f158ccf2e1979d211e3d9e2150a8631826c375aecb3cc65712cfd8b9d7a7a07ef14041a135e822f11caf02b83d5683fa857ac26c0de26c5087503cac06f5ab433dd520d4d3ad4118bfbcb9f85ece3d8a9d7336a3bef3e8f1ccb84ea3ec8f0ecf7873f1cd78463dd520a4a52549fae5ba19559f310c7b0f768eb5d421e672dd7b7559561216121224d45948fdf290247179484892a02e8b490ec92ca4a0ec08402282a105ce87c4c8bbde918b0a715752155e12242329f08818d998e1c165e6ba9c0797049cf5e49de2c08103070e1c38709cbbd9f33c4f014c7c011cc7711ba0dc1314940e29ebc93b9d91e141060819999bbdb39c3ccb7a62397997b94ec73873736be63c0071f3169ebb67593296f584f5d42fefb29e3a0c29cb09c57262b1905848584cfd1242e654886719199967d6528f8c109685d4a18c103232370b71d7ab1096c5d421bdcbb2962c6b4987d475216cc4946371926325e9b05f94b5a45f354ecfd2a25f0c383d8b68e5b472ead711479d868564a45f2b48d3e64bd22f5515fdf2926cdcdcc2e1cccd5f183e02b13aeac9761276e36135246c00acf6a443fa1c02b09a13ab357548e95fe859e8b1d598e887b0da0e2582082288e0e1e1e109800a122a3c549250e1546c546e54362495949494141a3468d060b971e3c68d96969696d56ab56ac0696ee333e7e1393ec437a4db6c48e736a427b1219dc7cde191d8901e800de9427ce7f8f6aecbfce52c9f71efa877afc7504faf1873344c6d94ae789dde5bd2af204ebf01fbc36d6c4a081ff79bdbbc4e8fc7e6de7c9c8d95f8c66a4e1dd24beda9438a3463e886591f66b196f296e3f9c32f6c9e6f02a7b2a8748b968b833deb14a2190100000800a314003030140e088462a1683452443d6c1f14000e94b85668501b47411243c618430800000000000000000032356900dd9a180130e48d893dd7e72553f3c4627049d60fb8a557d4e4b9fa6a3d1536af1e305629e5c0bfc27ef07ed02218dd1fd1023498fde0861f1c56e51c208d3e5051dffc99eeb7ca021c04a003835f9a06c9cd540297cad6726dbcdd4138e6fbafe7a871240f579f8c2bbc6beabe1106aca1bc2bfb6f2d7d644a76c894585eee87b10ebc3b44688138fe09651d1e3ba0d9c95312b44c0f381b35166bf55fe63dc9d53bbc26ac64e2b75845f48d5ad50885edefe01f1fea25a4b00b64e46a15acce98fe7bdc674381df7010f40fee3d23590d170e0d3c82d38bf247a4cb2547a75eaaa2348eb5f4bfef3a2d767ef960e9623639d1c6cdb8d1b6e246895e56ca13f3a70b7913486c52015c37ba79c0afad12b5f1c66bf86a7d45111c1c666cc16d63066ed586e9063dadfbee82d2c32f2291de8d46dcfc94f286610f1db5afb2da8647e2a497a0e7693447838e73f889f640ca44f9cc9ef0fee24a968f903b1f5f4c99473996bb2117120945b14e3500078245b11da858276d3dbebf1c96fbeb8061f86a89e6043d282ab2c05e356fb8fa1449d795e0ea76126d76fb60c79854067de74ee77cb0468ddfecc0f9023f513c317679831d6a8639836ce2937ba5292ed75a6ceba5fd726e8b8f07aa66a600fe526affb64ef53a0245644e285a21f21aed2e311890a66eac1311f8e19f80710e121bae96da7af5dc6d3857672871dbbfa8f094c7e346afc3a19c2185e9c7f8fde05ce56468648519af72f82730bed78cbaf8d1d873b24048061ac15b9cf59cab5a76fb6ba9140b80f86eafb1484401076fcca6e08c883af1d69c25af9ae70582b87a25144990a5ad25033163025c901478e9f57678512115f0df0be0ba4b74997e3106def5998a80d0710aa83a1796b29b13801f7474e740db5d8a9bb5d6b8de3212cf7b70b0844f09c28178887da773299081b34e74faeef4db69e53001e5763e92c583a3634bfe0545610f75eebad91aa7fb3fd1dbfc495dbd56a00de5cba81fb658b1828dc252900f9840885335a27d4f16bd93f78d47795534ac9d51dbbcd0b038af3a7a2d2261a196daacdba6237c94775be21f4565aaa9af24365085e5b835417c88cfaae6ee6b48837a2db524bcca7daf98edf381d1168c43c9b54dd4ef2950f3449e8fece7d17b69c82e30a0af15560df93f23340b00e603580aa95584af21fb1b2fd19b2ec0edba8b7cd3306accfec0c6236092ce1855bfbaa86e41560ffec5eb6324b479d4d56f46b2ddc22305831efcafe6f5396f2938494658b3380b4a0926461cbf8ff8568039390fcc265862a318bdf7704c0ea4af7bbe5a4824da6013f91064f021cddcef14226fa4e0cf2ccc020a82c90ebfdcb12c38029a5f9a390abf733fa2f1f17b0f46969ef2daacd787dbeaa0ba7241a9831a6828182e2402272ad0d8486c6f96a5f5406095a387647d10d43473dbe3398ef02af574a6ab7e2ff38a05f75e45e9948bb9a26c72c6306ed22a679e21c61cc36b144a9631c8baa14f18098d9737c33598f5d57643cab50f7d7bd9d97fca49cddf3f0954bd9ae3d98ef5e4b7ce4cdee06371b5acba7e62c9dc8d8193b1c723967607c095623e61f97c972923a8e6f99dab197772f6b2cd0e58483321a94b492b756e91bc867671629d10413b0aba244934735fc7c1ea3c27ed6024de4275b3b0efad983873bdd325efc0a2d1551a557830130174ec96fb2eaf335b247ba4f81199a8136a30d9397478f4656af3efede2ffead8078f6f15d188c8108716fe6cde50ebbfc32262c48cdc4db77e7ba1b9fa9d43c279ac72813e4b94c65d7b898fa9a18751bd617e5e6617ced25b64c0d8db343f2fc7b527ed947ec590a18afe89dffdb44b2fa6b96d4d024456021d27b6cfa5e646a579678c1915ebc34cead299859fcdbb50eb376bde507b0927b986c30ff45d4dceda3c3afaad735da3d8755bdf58d8e7074dca1c88dcf9779e1e69a85bb9a2e05c630b4aa7035d6feb5d3494d47a8417ab50156fe1449b7eeb49e3266359c9030fb42439d27ec0f963dbba9e24ad23c961be774327a981c3f6defbc334082989e7fef5a8de9d69d597202cbe641a32fbed62fd720894f0ea79c86679a32d48ea2ba7f528ca00e715481ead1fa6a42bc250d5c5dd7b8d008615ad6da4405d618c51141530721e7e1428da3d0d3de63d231acaa44ceafcef30fb9c146d4a995340e8a5f0e3f8130f63bd6cffd29e0df4ee61529e48f4ebd829a4b871d551a8a2d3581cbea5b5851f535be57e207ad56f003d4ea18010c1a252ddd6122dd851a865b65096285599aa529d5986aea44c964ac76077f986d6e0fc4c9633c6ab2ccff2d5dff66afd34289a5f60098231659b334eb048a0d729122bafbc35542db184832300043e0788f58c4f7f9aa2cbc5ffa93bff5f33731bd32f6acd0207a2a2665a813434e547f67ead3b9d6896f068bc5ec3e222418dda534ecc504ed37457997ef39474511555fc45ec95f38ce51097511db8d62db4e9784aaf9f56886b4dfd1fe2cd5234162b249e670cf8b36af183b076caa06d8fa6dceb219e3f5eb05b1f78da7499cba1cd522e06d5d71a693eb9d4b61a8ccdebbeb66afddce39f0de93402717bbd46efd306902c0a767a44c2460281448723abd3804b229f4c2db50e84564778b270c6e06725e2dd6bb8fe15169f1f165e0395e5b6f408ced5680b9f7cd9dc40cc4692e8daea5b28a590b518bbb64d5e1a6495a4ea1e026bf4f8d3ef57b19d0015861800e411b91c65c21eea647cd26c3dbb349f2d76f1385eeea9e6f2e139b2102e8d3eca113f0e4be163b8be23334e42d9051d7987cf00d6de30a6bad1db62390bb890b828605644962fd0cc5c928d6f6cc480c4d9e028b894fb02de84ae3f54893bef861bf7446bdc187a18e2536455b3e89a20ed6ad581121d624b6ad4c1faab838393d79b50a5d58f61148f99d997a449147a707feaf16958c509bc1c5ceac0505f2d20d5720dd9c2263f5e682d0d1770ea0a3ea16f6851012862e613209667a2cac55490221daf7b15902f917de961f15802e1068fe2f947110ff6e277f28002c0f92de21fa31a6e65475ada76f44d1870ecf95d556677cdba2a4869f445dfe2b01d16a060efd690541f8aa090fb5a23a98ab4f2035980f241408c3823a6beed30e177a094b1335b443b0d4e6b64726a6a42ee6f24cac0f40dbf2add314c3454ba58189b636e1bd49f730c4b3dc2e9233b105928b8741ee3367c62648e17a199bf6e9b11cec7b6cc33640fd1b597caf05366afc4a20c04d95dd2c2005d8837b59c0bd5ad5f2aa32117ae46d27cdfb309abbfc16f60c639e7fe465a6563a50a70a107f569baff3cdbfaa5c874e0d157cc03cd4cacc735765ad27c403575b153d95d3dad0faba3f4a7c58b85ebf39a73dda6d407e24c68b4c24f13ea9f384debdecee9cf9c284ea0523f2932eb0980ac85ddacdcd68069f6c54facfa753c8fe841caf4d90779ba999a55d23be53dc6aadb9965075d4662ac47ba3c7d2b227bb6d4c1d4e6bfc7989f4e761d28a14e59d2b27b333af3bc938ae6343834f0de4900f1f81c54193a2ba4d588ee80e085ba4f7f6e86246ce70bfd46787bb3e65b85d644cd1a80f4e4c67d5aad46ec3b5574be401d3303eec9ad9dea56152b35a39b7b930b7aa6f80ce0a28e51e9be2f43013d97dfac90c7603e6cc6e17d0b4f3367b0feec32091c32d19cea5f8fac06938cb10a7767fe3bf2c24ca15e729e58c429f908b89d2bbbaf4c96e86d57e64ba01a4d9530eec0495555f2b55d317034eca872547001eb9d2336a908a7d281cb0afd8eab0cb7e8a4427db4ee8d8e1eab9118d97b06473088d2aff746f7824dca056564862bac4438a7114befd85c8821dbca11b7bfceefa29e2588a60e35028d2a83dcc2886b2264b4c6791c46293e1faaaa91ac084bf311dbbe053a1db3a3519176f811d6fa1c7f3ce55e519e2b6916b3eb701da6b42dfb171a0a8b609ab0cdea3f2962e03b90c6c917cda76bab9c83967c22809d880f645720de3b09d241575590dc285cb133722faa13a669320d2687e255818e4b6c392d208328405a521c24221afe59e745d5903afa02f6e654e0f47a73e226eedee8c49d37baf7fac45055fb058d5f97c5343573531d079943f6b84f9bdbea38c45ee381116edfffe68d182d99aa044272bde79fc07c8048331ea71cb0a78beb512e043a38f0890e14644e62b1cfedb42034de4792431e7cec113db7f77408e7752945946db90778be9771004afeb79797ca5ae5cb8f3071545474e0119cf693886ed096f5088bd67b68133c3fdedd6b2b28ab33926d625b429cf1650b8db65a64cd05bbde0dc4978960d71be104b15b1ab462e210035dbfe2d7acd188d68d4d0d2a1c0fc9bce4875bba801e8cec378a5f72b2cc6b40f27a1174886817e1960136e9d9bca395955d20ec0ca52ab3544d1ba6c220f218579da4754c31270816a25db6aa181fd80adcabc171f26ae1f8862ab48905927d28c71aedba59aacf42de31927ed5346e14374ea3c3c3eb55c06a2f98bb798b1884d14499a0b2529ca9e1db26e05889e654b528e61eeaa21f9020d424a5e7eecdbe8e584bf74507c10c66b5d343e5f869f559b4934c57930bd46cd0376e8c2de847c621bfa8f8f284ec5094827a468e39852d5dbc6eb50b49bfc4fd64442d6c46c5dcf96a7676b85c3c9b76df63888146525e8b9faf34b357450c151661020e9b226652e341a5d8f87dd01620817933ecf4acdadc3ebf46a90343a51907259528554efa28e14427529c42049a2235244a8924517f1afdbb4b94f12f37662201f18d89bc19ae0777407cdcb367dfe0cf3d2f60d07ed2242de06d9a39403c5c2519fecbf251a688f37d98f1fd37ba3e4ad56020ab93810826421feaa5d1001d3a2773658fcaf43b9c9b39bf3f1ccee72fa2c98b31a5f20a6586a9c0ad8f5b39a9d6fc82b0de6b7d0709a3c8fde946075ed01af090cca0b052b7515a172e2a9d7046b816d6845c1f611449dfb046606dd65194fa6cd1e3d7df321839f3416191d9c445ce81e2a720d702c6718f29efc29e5487267941d7368556d50e4420aeb9a724ee5c531239650be1874e6e8f421540dcc1849cdb90ac375e623bb5bcd759bcd837e94d1e2532ea0412e96b86cf0c6a046312b33d36eb28f0b59c0b8dcf8a111adfa090ab4309f59abceab2c348f6d1e669c5537dc76c41fa546b82574e7a616f182e74f1080407d1a89e7f23d11cba80ed8d09e1a5b6a3751f7e852548a6d8844d1df952315a46c3c95ba4c63791e61469290c7d11717c1e9e2be1c68cf3dc4e92e11dc708946401cd08b8e9cac04cca74ee3156b642ab39f14b97a0cf292b3e1489e99430f979642e23a0330317f2f6ae74340a9e232cdf54ab9adcef4b5247efef874e01227020738b5e83c6d6aabd877e3e874650c5def4f4d3bad3d7a4b27778d79f4faad422b7f3083423a0673daaaeee54d9423b5f81b85560f3c67745f519d45267e6f1ee20dd778fcd88cd780a4d02b82a31bf5cab1f862b81c993a12701feda764620ba00a5528fdd2f1a6afbb7b7d0828dea7fa51808dd5f6f24223001ef84525267aead2bb1e6e227af3da2b7158c4ce23f20535d5df6bb160ce31f16db74ac075839da5af7775e26334a0b619e726e880aa96b1900d1d6c3319bd6aff084a4eff12a06c2f25660be813939b29e70566fa52900ec6b4475d5e29756b68eed74156478b448501b775de2c770d03901f4ee3105d5b11229f440dc796db284350041d9e6dd15daed838367b9eb76ddf0a8ea3a6f882044242674c8059fc2f081ab5f04153df905227c9aacd95bfa75ef135edc22bf24a04cd6903918fa530b3292a2fd1c5c2fb23f3c6b0bf712150ae63782091dfad046b37a5a7552fd6edfa37c6c6048f9c98e324f1079027731985c6bbaf5289220b56be90864d6b840cccc99033b0712b1525c184c8670804a1ef696b8a307a41213e9bc220247b3e8a0ce5f20be378427b2a13f675c128f5f7a8e005735a0347b28404f5f0c17c8d74b1d889f53de47e686079196feebc4621acf36d86be2b91c35743472f2eea2923077fabc376005c02820bd9c1f5b230c6b1436957817363ad1bad13c942365fce0052c4f28eb1393d6102ea50f30805e87053866c63b5cba876df5463a154092e93e371db717ace6bdd5c4246a5104efe3a1a6c588bac3ed8ac2211475021fb0116ea47dcec9f87a186f21d039ae913784f1d7e0b8446e661a1c4e11ce94297ab352f3a947ca270845e5da568b5b0fe7f07400a3f0766ed95361526a3cd80720dc2fc4c767180f1ba4e8645a629cc0656e0651b8c652304d9188334779b694788929c613877af3dcfd38d95100d1504eb9502f889e452da75a8ec67237b2d23fb8ad14d58f3a4bdd8a614c3806ca369635c726dde082b9d59c1df79b99736ab527d60325c819bf4ceacd9862f870dd644696e37fea0f9695bfebd273bf76a6bae013afe8df35527083db8557c2d834d6e10e745f1274ab540f9a4c53486fea70cff42f9fe4d4a667de43e4ccde64711cdac85016527dc1ea6bf88dfc9c7fa196b20194bc720c8a8b2bb611601a21116abbc41aa65bb28cd9411b24071290f0c4c13b0fb391bb8ea9bc58f6d9fde3860e6b7e145d64f06c1b3eaa016500151897552ec536701e9296fa9a15a3f4a8a3f5e82c3ae1b7ade0d539e5d338b9342636f61adfeb0d7619fa95a3ff5933a95be676385e6933343ecb64b4877561385a349ada0e1b74fe1f35791acd286d01f5d411dcb89c154fb21d4041b76803b5e22f717bfac8fc42bffc05b8cccbd6c6ef572e4e31312b1361a5ffcf36454f1665fbb569252bb5da9fa7af15a8c5d9763d5ac98a9fd0cdcced4836b4fbed5d39ac644d6f447060f8687b1c073a30dad30b0d9e078b01daa237b08079a9077483fb73a0903d28a42d038c31e00b2fba013bf2a0919ba8be3dfe968afc401cb2979f6c573700e13788a37f655bfa3caa898ea9529e060d3624e9f69249e1d78ff3487c66ee1a2b02bb57b5f8914c6b6a825dfbae8d2deefc4310377ba545ce5326b5e24a41cab77c330ad2dd691633326edd70961d138d330940e3a89f95b285f20a908f451528b1edbd8b41e498a0a4eac48b306ab404d715dc8aa4bb2673f7aa883b821c5c16ea6d668878e46773b9339c72aef00010b4074272286f230072c086d6dafbcd012daa17f96cf007a530e62e8e0b9d6b524f187f212744f482c59106f87800cdefe6d5a53aa327df083d3b68fbbf306bc334a67aab7cf7ab4d50cb5960345aacb8d9f5ee9677be2c8b5ad67144c392e8383a1e4c2160afc1b558f63453864feecc2aa6d7735692d5b13a8f2cdf922c1d5088aae752ebf58bbf2b1f133d7de24a9506dd06df6d966be4e7d26d736bbe3bff05976e9ed34c23f96702f63180ce3ebdbdf6baa7dd142188947a8f2169fd0f201a8d4aea0c303c39ad427bd13a66070980f12d6b8a281e439b91e496984141b1c4b00776eff3ceb26471d08c592810c817389ff1061734fc21fefb3180ef6c59fa00434f03f8c11bc21b8891c6c18c0faf7dc31fe7c9c2fc5973baee2ef26aebab8eb476cf9e9ed11cb3e6f15f25bb7f0dff5cb00d00b22bccc68080304cf92cdb8033dbc8101ea05f40592f188151145e2fe13bb75a275a4954d60975a8bf2e0acbd7ee5140ebca59873b550e69dc0baed27f5a88327fa5e2ba43b000a07bc995b97ce10da0c4326e1479ec3175e0781415594d6a8ccda273108e34dcdaef153755b46050b9eebe235f283cb9c0c019f94def7dcf72a361bcb94ca69dda51759eb32f85640e373869089c30c106556034131e82fbffa3c189b1ee2d769e9de05f8dbe5ec03bb2840e8cd631166d796a13c32aa2fa9dde0b70a9d754d61a9174eba4f9837b8f3cbf6231a178138c7b2b5dff8c70d906292ccd9a3f73a1badc0168d1ba353a153f62223e4f923ef623abd4092bb9ed9bff25f3bef1caca07d8acb9ed01c28a2279745452cb488be4e9b7dab7c442244c999a9887dcb2368c2708cc501260898702a4725d9e405cc9a6d08ae313a068a1a3581f6614192bfe7ee0828756fb6f3960e4ca26e360d37a0bd203e4fe66d9966c4f70c3792a67dfdc54116d4b725ca9334073e5f31fcba04536cf64e7793ba210c7bd4f4ae1994333b50c67ac0b17630605c3744a38ab9c121b235e98514e07dc2e786347e90ce9cf5746dc3ea36d6a6c9f36d06cb809b2a0c658563f70b527c7d730056396e86b796c47773a8207c11ec6e89192072e0eebc1c528cd0534c9770a4cb98df74bf8cbf39643c87a662ce8e6799d1ccf97a00ef8d3e2500edac8b71a99d487c785e591d611134d40ab177dd626f3a420c349359ac263011122f0ef130ac880dc29ef138eef40d809994e0e334b860d3349c9d7e5cfd405abb98b541c7be933a2ab904cb63da3e3fa4ec0ff48894b29846b84c8eeb9ffda9d39e8bb4d2fd9b60e32fe77ea73b0d040690ce4ca63bcb7f3827a6e037a02a0e85bb7d4fcd997f0d28daa03dc8af27987ac2a2ce26b8dc6fd18186276c888d3bad13fb8adc671a2d43c8e6a3ea26bb69437d030aff94a84361dc2e202fd7fe1012cef9f77ed26dd5ae1f28063abb75215ff97869c59f04baf145f1699498daa8607aedaf72b4b631883ada1975e58fc5a2401623e4222cf205ce737692fe4843ab0b71c922d380786944a4c022e7ec14ede0529f8d3f5f0e96354d419641d84570541147bc9d7560226fc2eea9bf73c5f33371b9b2fcd03accc6e313a4743847b9da444031ed1d4e74beaa04729186b0442f1b4e10144eae539423ca5602f37ebf0e771a64156d03ee5f125a7fbdb7e3ff157fb6e05806e711f7399787917dbde56b29f56656e97ea0c0e80072b71aef73f9ece439448eae866b67149f05dc9656767cd3f8496ef9a6b56ff261bdbf922e33d01b15ead94bed480b4e52993042c563d13d3050508bb09ed827b0123e5c7efdda67dd6fa97a50f60335e6da77892a2462e988705bb575e106acec18c092f085585bf34c4be485e3b9e3475c9b787e845323ea977e14225b40cfef31beed67812327f89a4f1c30c18229695bc20ebd200843c24475004a6525e9bea073c4a7cbf0ba1b21ac3804e3f6ba1953b076fab45a669bd3946831e44843284aee4a20b3fee41a34432a0d6840785b555837de88002eb6ad352840a333bc837b3c71f282b92c66fea8420a957dfb7503d7b0b1f00b124c8c80b036a7bac765f683753f5c75758fc03cccf027412c30f2e5d53d5417f7234bfac43bb5344d0d839f6842dec8e4288b24434374e8a9f7af04a61e5b3180e114faed1335d5c4884ad9cadef76d785f911549a1717f6fde955e463456ee2e4bd0618f04083b6b741b00f4801d3b03b63454b851c697c00c7456c8724acad044c759b4d8bc375cb83db775b36fa2cb78a4896c8de4f5d9280a117c433b6bed65321ef8995eadf670f139592d09fa2d481b731edd609579fa23328ef54f704be80a59927601ac6b231c354cf1e79fb5ec0148d064c77890d76ffbcad0375aefae8f9fe98cae9fa1593df9ab96067172561600bbfd39ac820c0fd1f222cf1104ad774795b0eab800c347bc1f0685eb11e04b343c2060f989eca2a44111baf533d9925f036c1664f049e5cc292aa0d85c2e33f07da00095547f7163c3e27b42ad78410c5dc31533a792e1363ff6365b738e48b4c12756784bd66f1ce71e91ef2a8f9fce7495e105a1bc8ed24531a8cad1a88425800f8b93cdb02d21adbddc31f7c0fadcad3767f3a2b6987b3ec6cd720776b0d0115e128eb8a076aafc1bae192a568e32daf03a58981a4c2a540b20ce2a51eb2a0a8f365830fe48b4cdf5656348fc409c40d9c3ac009147c37a719171486315f555698e1468bec28e78c6f405e9ff0986c639b1ce0cb0408bbf695c42efa0d03276d8273b6090a8d8128192e32563d12441703d93f21d4933f308ef80131903e10a15136903d40c0f60a3b765000f3798f9c7433543f19dd08a35aea759c5494f3f595ce33189a0d3dca6b43afd849196b733e014ab89343a1bdff64d513834d63aa4b8423a113c83b04eebcf007ba07d12cc1d1b3f807ce106a992c3f488c61650d68809fa30de13f408e8592bbcc0dfab1cc318ffc040fb43744349470282fcac7c022df17ce86f99691918935dc9426e78fe4913b409c72e8877324974a3c870131ea9074474743766ee26bb98d23df94c24db5b1448032535af50f1b54b79206744dcfc74944cc67222a9b5c25a33d298c4f511408faddc9366408699f70260ab03ac6484651e8d7fd0f419650732d149f03f4149fd41dfdaf548d81dc74d19a3a18e8e2c0b4d4af04cd4407c31f31352529fdfd816dae1394d43e97249db1f863c92d314f5f04a57ee2185db015eb17880075557577538961acaae21ab40471199040569f5e44777ecf72f864a24b996ee3cbf4646eec6e037e160a53d66bbd5d455912e5ba21d3487037c80d7c9018b626687e21a48ff029a7215a654a35332c897beec371e918ae5f864bc71c5d65989a61832d77694129438db41e3f008393c7d1066e1d2bfd40b10a4b4305050a3866e2f5e9480462bcedd9f56e55be30143c37b46f721c6a4e7d362d89902590cb66918b0744b99382c908e71f7109eb54acff7624baddeba365e117e4aa16d9d45dd352dfcd67ea1233295bc27babd0920ff9e49242e4e690282b5c8dc21a8c2af666898ed0d1e8c75899ec6431047165936f2da91f072f4afc7dc953d0d67c4f35aaa57b22a0be8ef8fd95c913aa8ce1414587799f2969c5703383eda178330559224511a761ea0a0de0b2c1fa7ef1006e07ee80a4c84caae0f06be0ebc5f77a1a6b49d0ff0f3c73664afa74c6f537fc4888b4ea442cf588146501a899001865a7098e0c5209c02dedde8bf0eb328c4a4689a07d83b7820003e120023f74265b615a3dee43afeb8df1692320f30654d849e08e5f37f53030ce9f5c9c77e571386d4f6d176edf0371dff869298b5ef7afea7ce0783cbfc401be0b1c035d1c253fb4142c814a96b0ade78777042896bdda84431ac2ae62cd399209ae1f6e15ab3418b3da91b7b259530c534ee6a4149f9dade5b81947539b82396010adfc6f434c00990829872e071bf8fe96a3c3518b80e4d1c14a35d75f8e9ecfc72b1d7e1191deaa78d4f176be187001aaa4d0d1678878bc3866641dee8a0e9acaf824c918ca889d5f962421700407c86b5361338baba77c1b46521448a9e986086927247fed91cdbebb16a93570b6229e85378988200ad83c14b099ac83eb7283244fb81852c1a4de913b5a21531d2ba379d2b203c7d6a4184a2067c7842fdc80662a600f97efc43a38f733d1996d4511552881536d4ecfb02b0067a89fb8800fae3ec75020f68f5db40790072155ea7b01fb222eb0602e2c26582c53ddabd27702c76dcfd40fca1334e6837aa3a2215f0125a518c7cf3e13366ea053757085db5f40d370a0cce983529459d334d93fce22a82db8c570f318d72488296909468f212e1e33edb6d8bae005eca46120664d47c0d9d558f3e921594b4d3da8ff5ac1620eaddbabf12dde28137845c5de65be9ab30267c694c0d72ef3d1369c5cfa26ad717fb67d2c8f93eef69842438ed725c9729d7d9b87e2538589dae9f921628a8b78cfa6bc7000a21242dea0529df4a92a26c7118e244ce91b7caf16a7b8a0e6a1b9e72bc1ee4588c69457ee1580e199fad9f3cb48817e42ed53434d3af65b440a32385bd063962ac12c637347a07c073d338015b3f20b1cc560a0cf2e6251ed7b876ca8dbe790ad8744008900da7bdc423b263ebe3e64c7ecedcbf655fdcbb2998a98ab8026956b593776822378d1675157cf0025afad36879875a678f44ee9432e7abdb33856bdc770c11dd5b02f353662a4a93d7600ffe64bbe68d06a590709eba0381d1afbbdc926f425ec67f83f8bdcf58cc8040f7f64eff7f1e10d0d95259444417df01a1b38f35a5a1236bb4513878c2833a65f47f7a6d5218e5b88ccfb551002631b9130bad26254a33ddc0aed1d08b1ebb99edbfb1b65aa7c7a7ee7432740609e10c0251f29dbd609542719bb50675b24c2752c343a36e4849e8c695fe0ec34bdd81a497867c755fc117299288646cb53d60195c238c381c1f22e0f462d66b2790b00ce05c8bf3f8224630a46418ad53b1f75e1346c5c0009c573e148d273c3bc0b00806c79d64fc5b956bf5017a68023af1ebc6d7195a84c55e89231f43fda858ec06fb12d7a169a62f8be4abb79ff0fac068eabeff37cc66b115d317994711fcf6d9c5c06912f1b752d09909cade9728d38d1556c678259f602cb402d699e917e4350073503843586ba5e760f8b967540009819dc953a99c392efd3bd82462bc1f19b2a5b7d0e44ddfc718cbe5f911cc8ef764ff38dc98ca6797d2ec6965d83bf24e37f6280e72f4923301fc0e0605f553b667ad58e3ee9787bd56083680bef594a2d01404a8bcf79083fad6c2812a06c67aa53994000f2e7382ae5a95bb170fce01c2076bd3c9a0bbb8a9ac5d3c1666493638c062afe29813ac51755e01ddfae47675cfbfebeeb814cc8cdbf00171ddb0943f42ca8b8ca71e82d6b9dfeee56166480904f7671396baa0dab7bfb4b8b3bb775871b9cab67cb6bb854980b12814be2abbeedc9c47578660f279b9ee714e5361b6c3cbe142bd224242a3b0a7743f31f9639e5433417be0aa529afd8095e3f84666893755bfadae2ad92f9b41853c844a9b875e20da5aeca125b27bda9afde2be72b15e438559c0b84143ab7c840c9245dc986ba8d577aeb8f7013608efadef19418d8ae4a45a0c88d45b16c2ea6dc9152300168b67335aab4cc55b5078da1770b995a39ea17c9dd039bfb8414a8b934c30b5417c833c767070b9128ce5e584968546dfd39e973a12b0e7b9fc71fb28bedfa5b436508c711e4335a0c1a8cf9925ab4ed6b091b14bb046fd1c0fd4e72494d490febd9ef43a7698e80a645774e5b84d4a6f2ef1ad71516d220bf994e9fdb98dfe73fef27100cfcbcb0642dafbe2cb7911dd88101ceb834de04e7947a2d392c735c392e6ed98462cd4cbfd79e11c9dfc54c8d28e22e302f44c6701be52102749aa3ee3768c151c794a8deb1f8ca3b2e2292305816a6fabc8c7c608b873f5581f22628e2e7bc6990d4953d03cea7e5e6ecfe40e5bf06907bd4e4dd3763600c375e5999125dbcaa824d7c908acd00b0988693f78563ba701dee9f51e9f5cb3345abd0b1015110d09b1663a415403cf5d9717f63884cf3c2f63ceddd5527d8b661b9057cdb083d4d99d8b8ed663f25d30402d49cc5561b4775e8e2bed1b380f5e1004872df4a7603e31f45c143b3ba2cd4d77ae67bee6ae80418989c07e657740f19e47f30f51235ec95a7cc2d988778ca5f9da251857e348b4f1dc757b6f07f62428e6416245e1e2222618b547ff7dd91c89c236bc6b883df210ee499e00b062c4b6fe51b00be663b57e0d27d08ef186c25fc5bdef44c4c2012d7432fc45017cc50ba6b9c7dced1083236bfeb7dde9ae8a7887615811f6fc6572c3c6569df4ae162421f5f5565cf2fa2c3c4ac21464a731bfae1713ebb140e013895da6067299282273cd7c827065522dade21ac94bd325be51047c5709db706da7284234dcf6e0c31d76544649cd5c590d36956adcab28c9d7bafb889c9990e94da1f899c44f9361163a052e307056bd04d07d2cf8d94bcb92f69ec23ad44f51d1348bbe3cab1206943ee97c61eb74ed44a12c17b76c6e65726f2767a3c130a38a93026030e69e337ae216ddc6de205b8f583eeb7647ec3778c7b1073b2b6ff511a8aea6de0116aa49277a5c461d1ccd2fbb6f0ec60445936bd0ccf7fb3f2165ba493b3a3de4749028840044350aefa7b0e8123233db269fd45e9b02c76388dbd081d7754778ebdc6d837d1703a724027a5e623e7d3f97cb7a4b5576ce7c6a767a624ecfadd054bcfeb6fc349d5548ba2c9519648d53e2310f4e90581203047ff8c5a5035be61b3564d78d139b5f780fc66db2393f8bd729c3abc0c0eb6a7b70faba734abec3e7e1cbb49fe2dc5011e823da3ee59c14afabb356612fe3e901e9642b787b9914f8a30e743158f91cbc717cc1c42a57da1be0191a5b3fd479cb66747d1f9c3783cf55e544380aeffebb979e4ed707ea6525927d8623283eabfab15b34b664c5a38653c91c51e6065db7ad753756a733663ba807f1e2947a6526c2b90856065d92a0c61230385121ff8a9cf5374f5fec6c00b759d6a5b4ab1374038952f9ccc8a0206f3c6d07d4eca8683627cf7d82bb8265ba9c4ad1750a6a894a4166b74bd051dc646f31cf542b949cc0462c3f90eec8b898bde55e41986c973c91f3216d011e72d2c6db5b98f8cd9e4ed7ab18432e6b9eef1013d0b18326e30c722e4430ab791e56091d11cf454f106e0f08bc1afaab443459dc110a0c630f9dbb6021032a59c1236d08e491e260f03e970ff90039159677ed105516368f49409492bcae829c754568e305a8e1a587bf050b7f78db685315b018fc4bfb20614791f53c6c83911b6c94b9381237630f78e75b4fdafc4767bd0eaef2d679603011a375349c0a9347666fa31a4b55ac30b28d5a62f6b60e20d2e57d3c0ba3f3ac703bed0ee6b6e96f775d09e66378e52cf617823368b06f71f1bb89dbdcebafd0043f9a5d0b08690952dd8c8ddb92c3af17f1070fb404cdf9d1529668b8d739473c1fd1c15214371170e934218b6e09a2c66fcf225a4c4b0235b03cc950fadd6b7b0f1b37841c5ef9fce57bff8a50185b9b9450ef9a5ec4f58e443218ba6a2265337cd8e13eff53c0c168d206ef8cd6ac8e23ae14d7d1caafa70b24f39fcc8d5fc919af0e2684e18d3208e64d136b37245ab065c54ab25913519202bc0225e200287d433284a9f4705473d495032380e275fa12f779bb378e52d01abd85637d00eb7b18bcd2f7bc8ce00e46391003c7087d86686bdad1f14a158401d2ea4478aee14620c0490096467f4666b2b3c02958db1b17091e5b904396ddf3524fab506aec9a1dad1bc8307da4d38e99af680bc607dee6a549b43ba9093972461e1ad25e15fff842e573f949c104c6984edbd45c7508dc5a50341cb92c229e1b881121e43a3713f1c753e1f7e413fe7e8d91738ceda5133f0f20765acbea4d36ee2bcc898c8b1b7b5e046616c91b56d9950c64334346a522cf2a37b9dc278750c65033291b505b407fdaca13710d57206c7f2ac18c43bee013ba10a38101fd8a6656eb499f8ed52c45555644fd65208871eb728fd48c60fdb8dbf11e275be8728bc9900ed77995a841919a3a512281114d455c5b81fa2ecfe40ac281df5c4ecbd5a828daf47b2cca04541c7b68d0419cce9931e478a293ea7450d3e4352e99e136ed9af5392c6e53c888ad7055d9308a169b171eb8636bf716550522b8e80ff7eacc4f924738a083983825cda8de193e8856eae61adf1ed1d30d3fa74802c86df5ab48a243c0434a01a3e0b3e24a34756bead8776800073f9558cebde028efe00bbfea11ac6d87656872461bb366f34d5f545432d1390fa9e3c29bb17607fcd6c7a73d11c69e99d37a23331f0d239228b75c78397403fdd0937b58c1d6e3a2d4399e8c1cfc174d01bbbd3cb683b8f79e7f3578c831080645124750d17a9672c564ec43041b1620bc907a22be289e85225d2fd9a3bf6109cc4d506c593dda9b95ec7156ff33c65a787494cb95251751f19c491a6b8d68cee57d3f6e67ab05ba21474ce6f485cbfad4058304e20de7420e607115957de8ebd4bd9461524506231d54a0c592d3acc5411f6d785e97fbe59d10bcdc37937a773da48ce7e216ad1d3d7aa6f6c29f61cc4bf3c18980a2237c6cba382c58a749ba5a64913f6734e5aefb6998f0585e37902f099dbd7fca5e8de9ee61135211d72f44fc4898333f17bd624d21954c1c0d72e82d5626954e83dfcf8a570f34048e035249646fa702bcb34634c36621b9e0d92ffc2dc77afbca65cb547a959406412dbf952ad13cdf89430fb368c52922488fe3be53a091b7ab001463a3e0317cc197ef59ab548865e8bc51bf4ac830b38f45c103926a2c5515e2f2bf537bbdc1230521d6e6e04e6204fe59ac45007e6e06e5635fd989b1d857eb90bd376312a339299eda41395a1290f375ed9524fe9e2c0b8590508c4cc3023a82f277b0146c1d2a3ca6fb128d54f0351d59c0f3663096b721989f8a083bb0df05738c49fe631b53745c5568b96d4f1deadea0de97303fb59628866bcd2c9e60655630b3f585ab9ac65bcae94a44915ab11d5cda8295a1445002c704ba25afb62405c979a6ae97d50723a2f411e8d9cc083dcb5eca03836940dc02225ccd6b15eeb45c780355efd0f9b7e3fda56ad9e8ed04a9c174c818d82f218a1f5fb482acee97a9846a2e8cdcea7b7e55e740e820a25b7a211b7b117358d9568953bb2367e84991bf19d1f04fd7c644f8de3455d88a8d6e9695a6a6e51ac6662ee91a057cae4b5d8b3a8912e5aca3303222c881d0df37b6e1b84ef4bccd39a4b8ca930b7dfaf4870234b795c6252826ac524cf7ab04b0cba07306aa4e5a2258748311e3d47cab1818144e9172d040f43972fef4aa570478762d69f0444677dc45c664525b0af05058d08e36b5ac661e3c045334f98ac024d5e188c00a1618c82522270c3ec3ad5e6a3b90289f18e909cfbdfc9f4487999ed2bab71674cee9aa3e6b1c67958d6a6c861592c45d48dc756d23bfd859496cfbff6a4439bb9b78a211a5d7016c930d27955a74cf7687bc9e1a645c47d65d0e5b25d5b370438277066de8d5c5cc0073f804e0b93208b41e92cb4be87ca31ded4737d7fe71bf082ab32ef92e63d02fee903b6dff893fd0abcf91a5bf704ecf10da0fa3d54dc65e45bb5a7163f5a9a9a4b96778e09cf73f9f61a521d27764bdd82d7b14b944711c01b5c980b6c02bc1c41906b44a3a058f303b0101813e1cec7ccbf559b6f6b353682a343b86041c9c497ac784f673d23e46120b77be9aeff58075bae8c192e39f4a3ad07e0b4ad6234b43e3cfa8c193bf924cc8dd08b881359178273106c078d2f7c07dfe1ac473ca6c232fe29b5460554123246a601111c62c6f4a99bf8b87f38a80f56a5ba91b52656b905b1e160835c63b8e7c1c6d4d3392e832d7a03746983d5e7d0f42aee4837a9f6f17093aeae92a9d5d20c119ba101501e9d9adc4a7ffaea07880e14518c21807ee1617ac0ef46fdf7f183a34d23863fac7ed4e72b1553397cb2570a3d0fb81fa37c3a9dab30167e965426ddd5e286935c771f070c06e85a4da70f7dcf5e00f1d821ffdbb4c35f4b13cc47d39f1a4f7d7d1532acf761dcc1ea2bc24f6b644a3a94ef04305a4e450811c1e79493d9439868f265dc3fde412372701f603917c93d491d9c247e1f4ee446af7e45ca573e31e5c77893802a324d2f6dc66cb11d49d88985234f581bc64365998fa8b180143b2ec7701d55061d4b81dea803faa4dc778df98c7d783ea4f68c3f5ba4f9f6e5f06f34585dfb6094fb302f6bb215d7d58c48b7d96485b1ec9dfd7ad0ca6a49b5137491abefea6a85e115d1d8294009e4841455cc961e147af6580e88fe51bed56f9fb7efd206d21e116da9e7ec5a28a735d4f241ace07bc8adef668f5572b2b51da9876e22d052a6428f4b147476803e3e6452121ec56edfb9495ea1d18ef0dbe49c8e40cded42e64cee9c86bd0909bc23ae1d0c1c66b3f465a5b51636ec07ac73e564c5345af0f1bad68116438357e74bf6f8604d25474595b05307ebc109c3a33857c1f4fbbbeac1be6a522fedc7b5be53e5ff0372cfc771b90cf4c032672c914c26015aa09c1db552a78160fa88a6bd10c66008529774c160df55fbcab0cde5600c61a1509c93b2c8fc89cd5419fd57a4adafc69f15b84fe050118dcb175d2416df39ffa77dc5bc1b2de0704bb396a5916852be4f941a6f4e80bf97f135ba2db332e343c04d611edb946f55bcbc2056016bcd98145520e28024bcfa830b99f9427b4a1c9f0dc6db9d6ef510f8ccb5fbaada49ab65e2d7140c3450038f23647137d9e4f9db471d0a8b7b36828a9ab96f6fb969ba061a492bdfbc61519c6778599f13f84fdd5bc65ac1858aaab7ca335c3a394a76e226dba0063cf9a316d0bfb7a01d7f37290d2b48756d641178d9fb0d8b5751bd76e29030498c27f382b751a382f0d2b9191b41acc475a6023f649fa439fce42404a4dbb9783461f446cfb3c6f3fd16f77a532851b5f0c5311c5fbe11828c26aa5af6d6f48cd526e50fc52f98d32b85c06f7d8c5e8a61be669e96d1b462ccd6548ed3d3fe4d044464c8875e5974672a801dcedbaf0309123be214328040600371b64d1d303b3887089ddd27361a0b87d0c33832edb4a900da3589c2c4f19226df9a8486cea671c35823256a4239885d3799519afac0b77cf7b10768971d7345cb443d78930fa29fa48408d51d4c9e88d05cc82411eba1549fcb4de220829180a3e02ff4cfa5b9c80630cec8548d4fd8e36d0100fbd51334a2c1310c0ee29ee11c103fe3ae462c0e68ab7c089da10fe1c645df0c124d4d84bfd99c33c2b5c89036936f78261262b7316cc852289dd0025d4d06310b79012120f4fb35431531d8d0781ff5ce980148789a4f051f84fc6f574fb9e70a26c3d80f5d893fe7b94b2a233af43cbb25680e7bcfe50a1c4169b3c3c97f1ed8da12d82b218f8494ab8dcdd56b4967d9b94c842c66f6225e5d58d711708039adbbd4ee84310ea3e9901e86c23fcae6ae3a62b9d18235c96e27ab4258ed4bb75c75407c5e05ed6c6730a4cfd7d65507a23d72ac3abf28d01b4e01327c1ba31041c7eb7a80d06cf34a07a33a00d4dec8bd2883fc4c8682c9dc46cdf7ce8f793a19c26995bd3fde15a7d50322e4933c03814e3c0a77ab7e207f5ce00ad8ec62803c4096a606c4f669827213f3168ea1402a4f497702bb06dee8cfe0f50c58119e32b6c9dbfa96e93016bf54b9b3c4114c66c37dc8feeadbebfbad93a15dd004d5a4791e1b57690899194d977fc28a03a1bdc2837f23ee30becdc75204818e441958ff38c08e57e791d81945006c6027d256556303eafd37d9496b1d6c91959cbb5408a649bb13d5ed2088bf0b93d60f9b17ff6eb03530b6e4fa11e98fb34b424b72d6b2db848a41b3319885a23e903e0cff32b199c6bde187c11c409ac9319f64591d961cdf2c5a1ac93347c101f4d1e5f52b81561e55cbfff65cbc194ef46e3991b4e18e6e5381617ee7332994723131f6cb7c0a9daa1253db6503629e30e8ec7bb853eb860efaa9ccb465b887fb601f9535b4fd9bab5a8d0a9f678884714b66de33d929f32974b7a3657fe15585f7692cc13075221e6b0ce1c476e4ad38803bb595fdc038b22c75d32bfa8245275583f7784529ad8d8d81fe52eb7c33ae4553fc350bec24b99bb0a48b2f9939cb9e4fa7490c25cd67a150c89869e8a91729cd04c5266930ade45c631342e1c5b054b897a3d874021b6bcdd896071b2136c198230af6076aaa63e6b3309a90f11a43826509f1ff879230d24f038cc96f50d68bb99dc839a13825ad6fd005cb91f14643d93dbaa822b81021a2c7e0e1b66ae18a3f1e17bfce66a9c4ec86e9f3b964ed1be96165573f1c051b2a4e169866c282304f91034d35157dca135d72b8346bae2c6a0666ded1fec187ed78580fb1b19acf9e067b5f47ffcf8901ff1cbdaed3ce90ab632bb85dc292d73ce7b4f2d9f9649b87d8dfab678cc114965df69406e0982e85f58baa94edc3498026c7b7e7bc3fbbf048ae30c12162079a1c2670a507f356e48a9b06f327865bc520d5a377074b14738425a2ec4b4956cb177b3adf48f8773ff626ec45cd476562110fc2852cb817bac56f1062458f999eca748bb778339e5c6adf5209f73e7fd78e8405f0af1c44b38305525dc03d53938e55a4416c84b16646db94b9549ece92954d9712fa5a0d6d539586f8a9ecda9a71b9c4692966b57dcb2c5912a12665510cf30019a7a3fc39a5d883fc0d562dbb9260221c24630839d2b9031b8f8f33b0b4092ebdf4fd9f4b7c262d828029010e809fce63d22b29a44e2866209dacc5ca8e05440403c1f909ddf8e60b51d84ae53061c2c1217dc54b477385f2f95dc8a7defd38460b477a28dfbe037a3d0bcba8fe1fc4b90685d805f9a0bdf7b6acfad858704e5af68fc8cd4c8047b694ba44499f4096b99e69db944b61db83aab13b4531a190c5ac03cc9e3c0b62d14f47a4415637665d101bca5f4debc73851645e50c211a0fd25cd826867925457b101805c8d3c7a98d88c65e1e8ead29f525959a8d31fa5b727200b5911cc66c64e659a77e084874b421d490f24e8dcc14a60dd2d2d0b598631ba79f0e6b5474754327086d6dfa62845e060ca8022aa41b713699492df3098b450f2027c6795c102c7738fd6f4d986b3e73c724f0e526f864bdd3919ac00ba3cb4f0e27f2d54ba8e451e905038018b9ebee7ebde4c32284ad4e7af53491ad98de8fc1640c50e35ba59ec72f6618293fcb8a4af075f880589201d89f2fa9719c393077a3ea5b8feeebdd593ea57a8a5cf8b226c5baab3a84405628f040059e080f13b8435e0e815a1c11fab216b852d1e2b7bf080ea0985fdcb03bdde003ab912c46dbe72bac6326c9d5fa6813dfd4b26402ee128e56c9ad64e9be99204a8334f4e1e1ca8debdee293dfe14cb6295a8c7524dfd57d447aa59f76755e2169e6078249417e8ef1c9e375b4a0c4001bcf25ffd333ee7ebc8517a5254327238289da40bbd3e5c8d4d5b66b0b422f7525b493636dcc7e04df5c806023468c132c4357f374ff8d9587d758698f7e94dacf7bbd0ff9baf5f17dffda684cb04e03f02d7179ba3fe5ed479b5a9d11ef15d26dd29951afd28503826f0c8341b170258568fdd1ae2023d4f6ebdddd071865de7cf9b425182046ab4df5ccd428f8151971ed093f8c751afd735baa4ee655873e38fb75aa6f6013ee056a2d5618a72f43de10af75a7612ffdfe54a14613f035f68b3b992e8f953d7adcab5347ca5838d8bc2adc8d685ee8c0a907f1c578689452df2ca3c5839fe04d5e5f1ca94c16810e29870443a5634c6a4c6953d72acded0a3d92c276eee84650c158bdbc7a4907c162afe6d84c4fe3fa00c0717634087ad6e00d9ed5437f90dda1511c6ae2b21db50f09b76c9b84eca056783e160d36d28663e0d9376dbd06b6592216346f79e64d0ad8bf3c554565aa93e597f0fe5dff547caa75036e8540ae5613ee249e40596b922ca323dcb6135a584b8c7ac5f0e5e05adc3bf3cd55495565472d7345f7650cfa5063d00a67c8b48446905659a7c351e9c5a777481995cb828859573e36d32b05d3e531d2238b5cebb21c459e50ee0bb57f4753d9e52d91229835c068227bbd230772495c6d59d2e033833c1d592ba650ca2846d120b73a3f8a0abe69a7e2f1ff55eab3c9ab9bac03c9675c5b9ba9bd5dbd10ab28d975261f1d9a2f6f2f36b45ac4bc9d6e238b9fb03dd446d70f8bab6c919a139cec5d7079647e9f59216e6e297ff82c6529a86fec006430649864fd72202494bdc56df6aa7cc9b60021dfe8df96ab48724ac6cbab384ea4de5f4f63ec955413685fba52e314fda2da367afbb8a65ed10caffdd9ebe8c4e483ae4a73677046b6039d69c88491b54d06b6625387b68da5ac88373fb89e248cc79d2121913cf1570ed8f60eb1725e1171b90d6e9ab6b0fd4756a7c36cc6bf4295682c5a7849570abd2a263ff341d97101aee0bbffd89675b98a9dfa695ba7f089b6d7f7de017fc27361e27f62f17bd6f916120ff43ca30dfdd5c658fc819af171c34a0cf0333e91f5e58d50710efc4b3cdbe42cb74e2874756f3fc5778eff1c81045e70a0f461e596e61cba8cadb159e243d9221dcee10b203aef0edf6c89e43ea151efe1e194db15de1f92935bb24885de101e723bfb5ee54f2349bcfd244b5c4af6e79929118e38a5e736d636c6f56a7ebb9c2bb09484676822b3cd8710e5778ab7b4a85078bbed8e358f83033f61045e8901d9e4520a32481746617d64d8b6a58f0cb708d9a3d1ea0472b7672c23a529c9e4d83b4e3a497744521cf09d5c81fe0b455588c616a559028622c0f8ca327cdde243dc49903b53804a92d9e276122b05bdaa07c442d958a7de83c708673084a3ea1cca2c36b6b25a6799cc83f97efe41897f0bb7decc658eb7711d8e08736dc2c963cbf0263da29b9e9eee3bf36220a6fc3239d1c2c7522ce594cc44272c65ac23ac0656044fabd578f712652092e06e75d1b7ddc4654f12841d0c298fc0513663b4681986be4ba28ddae61244bdb0bc930112b09616238081a066605d100737198c4f8cfe86b0311d3322c49c2f15b346dcbc6b734d02f34d3532a55861c3a5378c8281e620a0056518c319ca38057d87e77f0327da76a28f1ceca18cc03cb7b42df347c1b914883b65fe231e1242bb3033aac1b1910891d876a9ca33b04aec6d941265c58b120409536034e074a2868e57aea388d2546d24fabd177b5089c35cda981f7ab8850eda4767bd504b172fdfabfe05cba2ad2327fbd39dfce544bea1965220ebc530e346323586ae95a3b29f82be1dbafeabcf4d91ac1334ba56b92b3d68b525c808974421df54db3f6094901fd81ad7c9aa202f0e99b915964b01a4665f5c58cc5be34d7415ede64d08aae8c8aa05910ffa5b833ed8fa1bdd14f91b57151c7d0ade8d085c4e89a2a7aadfea33a99e915fb327e76c0dad19ad3eb1531da512f99060299df455ace45a8da1ac2cb1dbc688773f30a31be588b10bb043d5cec2d5981b2290eb6d4b10707c59c7ac8f2fa275535d2488bb4eaac3b6e72ef6b82dd7e0b2f89f04ba1ec06a180a5083a7f8490f19a1d8d36e13011b1f1aa14032fee0e2b1db905e97f0883b7c6745dc42b2f139267f86266007b2e87ec634374e4f228615def41b550c88348718a6106f744e279242fc1d2242b871949d31a43e973092e6db5a9401bc3b618aa3d5bf786bf580e1eb5ccc974e1794a7c1ba738dbaa241a141111f446a6b705f27deb03666d9a2f24137c7620632facdb10ad064c7f9845c7fc0f7b90e368eee5279249d860a53850b24eaa88f13ac5c37bd5835ed69e98cf0ac58117597e8172bac8ec73eb553e171a8a4c6b36abd68f3ec638daf22bb8326212294eb4042d9222526e26a266a3b6ab36658bc5aaff0fd9c7055ffdbfc4d1870e94b52ee193a9c6b767acb14fe1fd0e8f92bdc63241ae9a5f8434e43fa42229990fcfe5dea518c1c0b7c6b50fe21afa901e0d720d85151b9a990c2db5511025099e20c6dc6e14b041a64859fdce5ba0f5bb3d22321f80e6c13a72bc685584ef40392d33f407cfe736940d7700bba9d2cd7f48773734196c155d0b0ba0748166c944e8a548c9181b5917e4c1b445154adfd71c2709d3b5341506820bf118be6f58614d1bcdf738c531c218342fb4034934b41988e85d059f534ac4b2e2f47d2569f5fcc53606906a6327f227a6c6f942fecc8e4c164b37e2263eff0e31f4cc2b92ed172cb778d10d532826be4351eac6e29e3894c228aa9476e40442dcfce1ecd02c8ecfe92413991890b98456a8ffe303159c5af16f45ccf43ad4063c6f65478c05717342a83f79b232735231a2f992108b87f608a95585670c14ab1832d624dc9040b1d2300b721a786c7b68bb83fe8c90b7dc45ec4171385bfd54976543ecd6aa2a281a6d41acdd5a33592414125f7a046ad101eb25c075d0092c20b1d0971209bfd4307d0479fd959b053d5d264447028570be9288fc8705260f1e3470d36aa2d930a4b284fb8f794d0d54408cce280e7c7f796b08e8b779a36145b286b4600a959b3ff66ffc6075f722e1943b1da2f107785a0fdecc31636430b29929b98b34b8a10d95a843f8620c274182fa4f6c380ef76791ce6e1b677baf63e9f67ca657d257a1655f72b3a33a06d4adc61e2be86d1e3b35e977ef9953358f02ee6c64350b3ed9ed3bde7859f03f1e264ffe3a4c30c41c996c85e0950820b6c074c92e19abdb65790eaa870880d86e0cd9e1c0f8114e63ca854601208820e4347971cd1b9abfa16d1808336f745916fdd8e599c7e1178964e2ca2032692a0c8b2589268f3e942c127e16444d9947a319a1cb7ca9b79a2c61f301d10b26858463f9019f84901392b30525f4ecc7009e0588acf39b08e304a1108f2aef417781778ada455e5026fc6c216b3d12195ad2544102788433b353fe62e8d607b5ec9452dc2be78ef1732bd4c9d8074a21aa2e0f211607b896045baf2cb8c6441d0fee393b19ae138d54a5ea909a2e9785afe08f7167a9720b8fe806cc7813baab10e00f479649ea01834cefae7ab72127e2bc6c6fba6513db2e5610b5149c836d0623027a17036669dc0b9da9a069bc0a1ec0431ec0d1aea5b4a02fedd0e2d51ab91b2c8ee5014b811abad4a27e85409a0adb23f2ab2f4c121c38a3431c70cf6c8b2ad2bc70be8ccccb523a54a0a635b9e0090237a9a12d992e1890fa3fa7b1b08c02eb6336d93027310fce21c3ca6c0a617d7ade756634800adcf330741f5b312dab1c59c90702362e533afeda3c0ce6dda3cc06e06c39181c5cba8597b9369982221f7184f68de02e43ac9d66fce3788def78fab93d774d5ea7f41d794a3bc9559adc76b9408b64c09a45ae4187a3ca1144e1240ba1ef4ee0e52560d02c037b641b1601af0eaa19bd505913da233dd165eda35756e2ca30f347c6608501cbbb33683cbeb390fc69b82f8df4ceaf16e90d0c72b1b26419f56f4aa0d94dbb0198a90e3db52894ba26a8b0fcddcd8b027f48a15c4ed6d45f1c9af0bce1ceb18a1596c2ed3dcacdd152088bfff3f496b036582ea14bee5c8d376189c80aa727a118d1d3d29053bc33bcd67f0ad85fd32c4e14e185a8316a56b90c5685692beff740deccb210b0603f3980d36d07c5f4b043e4b3b221351deadb604b2a2bda377936684e335eb3e0eb9b7064a10d9ec5bf6c61c0663f5243eb095e1f8f5490a87abdb8e1afc7a8495550eef7c8b83c9820723f6c787fa87d5881347d5e579412b78f9a435612a1ca32b1057979914576e5bf5c409ef0990c049c00b7c1f2263b9d8e975e0e65e59c040aaefae1b0157e1c60f481314045527928d6443aae68147e29b84bbbeda0d61779aa128ba7a19db1b62b00b8fec2bd9044d748b68bcc2470b4010232b77238639210a0734a2ff2334cd7d30444d9a711d7b9a508254dd3480d3c6450297aed9f0ca04c330b3bba1ea73034e0483b117ce12c86ed2cb319881351c40ba562e473383f633f2c68ee4e5e6579fda669d247985b4a5343c6a9727a704ca6b44e161f696881f839860987eeb4f37209b8543758efbbc7bb6403157dd5a9aee10bac36f4d101f44b024f58ec099b482aceb0e416fbb0ef6cf8dd71fb5b5cd9c8dc7a5a583649ae1da76624901dd5f25cc6e5419b762cae29e8beb29be0e7d6e3c96a9e5623f7bc503b80cc2c2d05b2230b956975e111c8dc6008d9cb77a91181bcb744cfc6511e86b399190f31d7582b57573a70cc1c6e37bac520254b75c49baa567f93e8a326de9fb7e4b126413e75816319156ac68804b20d16ad1ed561135072b892e1c75b25c7742d8513413dcb937c2d76c727ebf5ace2799868bd93f14ad7a2e8f9cb35223bf663989dd4645a9b3e0febddc70b7b696203476b83fc47d241ba31d6a9e95eb914e503337d8aa514d545d817a2acf62cb1854a8cca5890ba2bfe9c0515ecf248505aaa0f2700b56aad3aeac248f5e3fa9702db6292831d9d6c584afb12323abab4c69d375d4cf74bc847df44fa87c2ff64129dad1e9aa2ad2d49a779479ad7d4978a6e5122f43af55bc90e3770306a22be9693a631c806e6ed3768d4b929794563340c33f5925e5ec11c1ff23476b6aab404117a93856cd59d5c7344e47ce1d6803adb3dea652be4c6be68f3993753752386debe2d2816b1f05d817f32cf5bf377595440d9aa3343e8e530e965d2ff0f2074749fabe3ab537193bc63a8e0a032eea415b8eaad238baf774757df2908655d403c11b2614c592f89beecb0a868a4ad56c2547d77f1023a0f3487c9a7e5419d883159ef97034cc967085fa02cccb7a80852e9dd103e0e3473ff0a76e3d814630839f6dabf22a880c87ccde9c84d4188da1a5ea70c92dcbf3ea7af3f0fbc7824b35680094547ecb3f39537021e14853625fb1a6c0c723a90d0614205a01511ceca54170cbbaded737d58c3f922cd3a43bec1e517709ac8ed0fe21b49c65c4b6795b73a6f53cfa779e2371a7fb886085b1cda7545dbbab4f4f36af4a17f385268c71a6b852df421ac6c80cbb40f6f018dabdba04db3dd370a67ca5f8d586b30033e5c5d5e15f78d9c34bef15af787857ae507a6ea85c85e42b3b68b86881abcc116047263c4aff05221039340b7f51ea7ed0c30ad0178ddf7abfbd3f7431416177bd0bcac3f0443aff104465def7655d621c69b76e57ed4ea32f6ee1140fe227a5ddce9e98384884685489c571b4408ea0a955c9dc6e39f5a79057275b243ecf9adeb86a9070b159be8e64a6a432d11166db28c954dae82de6f14d4a9e03b5c2b08f19d7a82e3286256f4a8d4b54f22478308ce926bcfa7ece41848b4143e923dc705cf103970e414b3965b41d66a8e418a3b6fa32a99f3f97d7a46e0701de1e49cb29bef33f50d188031d902ce931b733d590139d5e1ad89af6f9799b7e2ae63d31f8725120b080608ec1b0aa9cfadf458601d034664e6129482b000ddf70eb03b101afdaf4ee4ff4c0f18d57189ba476d81ba1f213bdf9dc8cd9c954d20e12db2ae2aad590721c8c160d673f634b37394185aa3fdb914d08a2239ae6366d7459d9d477e675c8dc6cb12b1794e0fff8d8cfec7c3180852ea08c179a98d7e69ff30abcd097f5cd537746d156cbb13ca385757c67b200892010b854800075de8fd886834ee78dda7a4df5d3353037a99569023199b05787a3f118d6683344ea0b84fbcd640c26b757ac208b8b2e8dd59fa8d982bfca4f7610dc04f47fcffcb7a9cf898336cef88e5102483b90bc146a53d490a9107d4d30bf534e501b8a0112cda8651dc06b47a0b015a67342556434fd54cc096ff74e51a2145f765a4e539cac3cc1ddebbc35434e1d6744dbfd4c8b0b71b38c2c42201af2a62e087254a73c60ac6dce04cd78df9ce8677d3df1f7ade24dc97f4bad24813f2db760c4f39253143d7c1ade6aa7fbf8b3843eacb3e1f9f76d31bc611bea4ac0aeed9b015b8262d42c1b192304ddd1283733481d51e0009b91d330f85df19445cdfbfc82c8ab83406751ad959d4aae43ed1acffcfb1190940a3baee0cbb1f96c63cb7ad6183965c0df590e12fe11fdccd732ff9c5996396fc07e761f1b2adf4e241668702b2d7d4dae5859262b970dd73dcad9f684b053872f7af781a1279c14f14e854014c2ef435ee5465b4ddc30b009c6825ea43efca4cdc698134c39d921e6b61166a75a91fde01776a9e1ea9ec2f60f2f24bc99b437ee715b95b7c49d40a91fd2de7a5cbf5dd5580c8269f4d28f80985adcae14ce66471b995d67e018f645b3e2324f15e9e9e243b48e8d96e01fc566bfe8b3bc10588c13f092d475b8944ec0211fc019e5b2c813f22a09f88aafb243d5b79acf73e920ec1dcb716e4c1e64b3fd4632c5825f414e15aa995ce8ec49cef02ebd230c2469121684f671e83ce5170a6628444ba4eeb356bebd209d9c286e2530f8adf2513d336f78ee318e926de3e01a03c6963b7f663580615dc5d7a938f12107bd798e390ee41af7ecf0341e0eb40f7fb99e259426f373ec8e1fef2966f2c2f8e4035e6219768a2009e3f5700df8a6efc7f807635825f083f8b3a2b911a08669dd5902f0dd883e56c6f2661cc3c418d76bb728c7cd451986b1af95e1e1cad3efed072b464d70d27bedb7e7252e83b90e27ab8eeca718c4974e469dca40a45169a170d8219ab303ec7b2d48c960e8c8382909d202cb2de036825e64758f4308aefe5e82f10f50a4f1d0f87899c67fe2a1a0b77e76c8cc195ba5b929a92e534de49064e7c452848de885f39085acc344a3061b5827abeb9969f65bee5a46eb73bac2df4c2614afb025e58120030f9bd39cb686dfffbad8e6f3590590f9bc5604e9cf43601c3c7290279c1f42231360c742ad599585a00dbe7afa920838f86e88b21f219631c2ab164b75759258eb3c74d1e5db7b648e86259064d68c8b51ad60700cadff8055912d7cd3d253f32d7005ff61ecbec5050bc8839962e27ac040597882328f2721041a12f629ef83687bc1cfe4c8266d9eeb1516c0d4a521b6ef853420e69db4855687880923abcaa03318b91e533c4d08d183e9922d020c0e1eb28e562205979815aada5c94c70d214f46ef2111c7793a1ca489a328e75114ee03f5089c8c112870852656b797df0d7020d69a41fad6dde21ac9228b001d8d0186930ba5c0c5e53cf8f99842e17c58b069bf4d0a7e706e18e87396675b9c8d64ca87c0ed4f5e86dc580121cd3ecc67c1480a971cf4156005e481ce5e29e0f78d19886c74548069c6479209a8618b244b8d82671407619e0acb97c39335bfe63061096d1ad2060c0ec52ab90d395e172e6b8b830f0829f71b96863776f55e6a168cf3071fb518a72b4c3ae1a2ba27231b00c6d9731b0f5ce3e24c1dccae52290debdd36c97cb4547c93548f63931fd8f0a567eaf825cf77b460a854a73f931926c3510f293f49dc13766ce80ae0de83b43fc4ac45afe5f7485c28f173b09356aaed54e6cc9f300007ec8cf9b112aa5de8cb2e664925a6ffeb2d7e074ff00a7e3ea90cc0754706d5f89bcce078bea3f232562dc0bc18ba6161e67c400ef632c96f1bd06e6108082bd47026a3c46cae9239d300b908f16039eb69b399d88c12f715a47b06c2ac2a22a014d88b3e0dce9e100ca5e71f440668d0cdb0db61fc81dfa5d4a6e914c600d2041023bdc2490549cc58af9ca09c2fd99ed4dada81c5c1145f0b06a25cf39d209dd1006e430ae26a1290b6ad14a4c94c3e6eae4bac0c92550a25b23133023ae1dc5eb3b96a4e202dabd9a18c4316fd15a2c47fb972d05e8743707a6d86dd349a58057aa9922c7e0aa6d9559bfa8f7c2bf5d4df1ef5216ed1764a57fb35641a7b685637c9f718cefd0879d4faec520f8286a3c2da5e113cbc63ab9d61835dbac49362b7c7d900a4b6b0cdc6b65967ca0fabd08598d9b2c245a8f38fb583efc81fee4aef491a1452fa154f972a98b8cfd84bc11c11f841d3cbd3019b247b07e6c80b20dcbc72b27c97759749157f69985b82cc32d98616f1e7d5dc962690bc59a812e8f6e6beca3bd83bb56d8e234e5e11638511055c58e0e2ca937e4ae5d009404ec1c26ba34c89b69e9741b792bf631cab9957b5cbce093a06b5112a794db577c54ec5325881e6316dfe19ce706db4923f430ff34720ad6c2fd8fb891206cb4a3a3df5688ebd250138fcfab2dfdeb15a518de2de7161e2752c91032b1c32fe1c86787d1d1e380bcdedbaf864d7e079a77fbf80ce36e41c4af7ac5aa804198f2687a9409eba262c2ef7e77ee4752acfc96b0b045545f82b97833cce4cc5c43eef4f9acb8cb9f83f217865efe4b3e26fa202595b3a1e4e6da904905539295aa09a11b50ffed4e1ac1e6a90a3605f589ad97ad62cbe3434d372edfc7feeb2ef84fb285ba5db5eb2f65d40eddb4e646824b157194777760f28a6e83f615d52b0693ff26564689bd2ad1480bc1e79a2b01cc3ef0125e646f8648ac86cfe3584653fd818fb017f8a5f72bfc1519220d62c7fac462d624210ac4ab617c31c243c1dce0f225268f1d16f11bd45d7effcbe83d8927ff6a396436c8df3dcbfd36e2776c866aea3ce877b1e3a738ba8c85435152e9f9edc5ed8186d548b26fc9c040e14bec2abdfdb12e507ab6b0dfd046f45ad0ef29295ff8f8563156606fa01f74df5bf034427dd6e039cc180c30b503bd170d46137b0e3a0cdfcc1d87ce1045e4f61e234531819d8309ddf01a3a6325cd7f620d9f53d9c0cde89476a32b8167cc1bca39bbea4e17d9f33f9a96baa978f0403ba764c8959fb264412464a5dbbbf405ccb8aef1b434fc0bc265fe377b90f7d991884a96cc3a11efed66ba3c27c58b70736e57869b7b384133c2e5ed6f9ee5b0f1c4de7e57eceb163041ac6f8ba8fffd416e9a7d140f3730c5a6bf2df6eac3ad680c6663caad909d1f6429cd84ce7e41f6e687d003ee7330641dc054a88c10330a1ed8b5a445bd80984f3e1fb0dd232eba6514c1f0b353c734b45f14d3411f5ddcd983954127e77a10282e5000b4208feb425234541c750d5799c42dd2c5ac5c2f9407d2e3594117c3af1976db0cd47d509f3274b2707bca022f9868110e97d82920ea51231f8e2d30caaad37a3950f7ea27e3e111bc00c9fa541804734a08b969eb0aa8e046f700613e0b11903b5c63e71dff129d5e6375a33178430638d349c732145c6077843b23b8eb7ecc900769f73d4a67f7444b6f4eb935e7330f9c064830a605d198a0bfa364a6683233125c6cb37ec06b7758adbe745a08f9542a0c2e9a87e7d393030cc165d3f7a08d8230a1d3b120d849597c8bf2fcfbbf9ee35929141f2c519cb5107b98047c40b7b2f9e81c922f4bd5c8d52b2761fbd06f99380c5a76dc679c2c098f6f990ddbcf0af2fd6dd0391155333a539cfbde4733a5f4cf30a6e924e094944035df0b1440691074187a27ba59d49c9bba952bfb9e22e61c2bd357b9181928412d9a8521a697d33ca9343e582d06733e80e45489036603227fb0d696ee7c7e74580be71cc1a19769fc0711560ed10aac7c95fb6e0d72a88fdf79364c67a9cc99105a71ca8ac0cc4333838d4e5d66bb63c21890a3a541f922e3397a762c396e266473c7851a1079a5fba18e8af58bc72119f552f599e9be3d4ddab0763e033fb59330099db1ec78878628c0f46c12030a120adc1e3646cc744e0321e97505e72d4d515a33b33d4d6250b56a1954fcba935e1d5913d61b02d17eb69de7d0d87e6ca4dcdc5fdf114c301cc3bc571f7eeed67abc7c43172c254481d5b150e3bf7493f7cfa782c29bee225ded1dddcb28455a83ba5aad0a07a7adabb198345b77da10052b03611a2ce118ee3f8a67cc8422b3d1ba99ff20ce51044bca134260d83c0e98813569b0eff991140b1cfcf79a49d9a1b90b20b544bbff835ab61e45300c403eaeca1fc9616041bd64641153a40171e64c0395ef2356972fa36adb2c2444cb5fc8dd721b82443b138237951df0519a17213eee13aae811498bd903808814f49a85cabc8215c4545ec84215f6f53fcb16eaf705644dcf1bc5e55f7363f30258f9e96c8ccfa0f87c0e372354b4f29acf603fada9c919c6cd3a41fa37a51b6f605aa58d2649058368097d6201095759198efe7ee29b6ce303b996e31f6949f111f561ff4840afce93607c8d1f16c31d0544546980d4632d1dd79c90004f86eb23fb47e51216e46bdfe82ab29b2029b8ed5d8920b92e92946bfbf52e3b927216a15d369367b2fc3e838a713704d428a7cac8fe4d371565b965f92772a71736023c14b2ad452863cb544fda44c90d493a15a9d4c062b588d4967d3746113e1719ae2a25301a870eb8c5a998b5bd557e9a291279d39da0c596f62b0fbb50d14a1a9e9658c064012ac47976b1ca8f6abb0c257147a27cb667ebbc0ae14650b696ad5972321cb80d4e4ca66344ec924517f8317cb801eaf539f8524a4131dc90d8b37d815d8a224ff9adbe44f2756d3103c8eba20b0aa2d04644bb2ed37228f422f401b71f5c174df6bb1ef93064bb5d40a43738010edc0554840390da81f01b48db2da67cf2db5347301e2e754850540e541bb4a9be49a7bb0135ab13800cc1fb0a0e74ab9bbc9f15d9fa7f8e5a30a4aabb57b14db75d341d08152161ebc4aecccc7237ada3f6b3b9380f7f5dc1de9058869a6ddc8a1e351420197d91d505f3ffb57804d0cc8030abb197c9fcd9532d191182aafbacf348ac9e28a9bf62ec409639f08ae8e757b8aa4ca0c1a15328d61739ceac151d1cbd03551cebbfaf34b2e9f1c6c8a1ccc7bf7e73745297a75a313754016c25cd1b55803b9c95562e7dd89ffa7eacf29452aa3c6b56aa19635be0a44ebac5a9ea6869b2d5310bcba77846f55cb5f918ba183f4791e435cfeb60f9e57075b6ce932e0a94a2f5fe76ffff8143a972e9b140507e57aac05acb1b83cca19ac11a8d6dc289e925c0670832464035945a680db8c23d1f7373d4bb53e06c4059716589d0e463e92cffe1987a0764251591791d3bf124d4ad8782b771a62ee661c0b7e8e13273d7ca26c961224d8e52e3bcc9ff478429ffa01bc87f916edc8a910ab8fbb3db964f421d1fdd4718b4fcd60d764c8876b3a23e9cc43e3f90a71405278fc0de8806a52a32a2a2faa0c902f011530ea17619022e870a473f15c626966f71321257fd85b4ecb27454a0aec3f51a7dad42c8a2aac9c17d0c39ae75c3dbcc67705e8a5d4e3941b144320fef2cd4163bd4baf2ca6fad813bae38fbc7f8033e5dcd6179cfc0fa7d150c422ea46023a0ac78be982e897be135e3fafddb08c2b7bee9010488467f1d29dec6e9fb6998a9d2edecc649c6ea0a71a610639b19c674476d31d356cba053ba5deaf419759700c0d969af42fdc9bd3da3d38edd895492e5d5aac09cba68f0f5354011d1342c90139aa015ab40a14fbb79f2167656c6f57ff4fd44420cfc5b60c3532baf19101e1849b746f28e9168f175f8259e2b6b10f89be19cf26cc63a1948fa2832c5d5e40740d3450186c89d59ce4673c3a2d5a3b1d97e6842c9fe994b780b81b4a35310c912ef38718c6064cdf1d51777ea0449ef053ae1dea9299878ea716eb260c0531389db1f17a1c10b6ad27eb5e33578c1ae55841beada70c7cada99b58620fcbc88e67405a8bae827cad2e734d86b302fc31288fd2339f000504ae2a7d8f604cbc483cfa9dd291aafc786a50654522dcb548162f5305f74e12624aad85ab2e21e24637f87bafef36a602da1de7a312cac4a4e370162da18e0d817e55fd82cfd9fa18f348c6ca1c7b21dee6971ca70ab3d4a175af6485e6cd1bddc2e25e23e5c745dcefee8763993c5a0d175151623ef953d8429323716316d24bdcd6c560f547130977de37f45dbd58dfc865ec8325bc54efa2c2974220f43a84ab9d114b728fcba281933d0b5b739a71b7dab6934dcfe936babf2e585204d0204939e48f0dd3caab6748827f31458363c49c4cc836e37a042d34ccf7a3167945d22b623274c84ddfcc4ae5876ff057adb900d8fb5c4d743923eee8026eab6a598af546c8115fb7e2cc61c3e41854ad37007d0e0f582e6d149748f46d12c3a89fec071bc0df37742def134f02af63e03ee56b46764241f642279711799a53cb62f7856c376a937258f4d5565277dfe73667e52696e6a567c7cc54e31971733f252fa5186ca9405c8331534a63d7ad74f7404684cd39cdef7241015ab6455f276aaa8fba80b39fd4e799f81bc4cf4048a66ad8123aa5bb5280fbfe403bde1ded0cd0c80d8be100239ba026c80bd44f36834ba43af6816bd44f76815dda293e81ebd4277f412cda2d3688e46a25bb41acda1557406707cf34c6fb3a07d12ba2a064b1b0146d7800c64ab681ead44f3e814ba011cd7f4a4b5174af07755ee8aef1316a87c03f5d462bc08edaebde2b70e741a073d9f00e9e855172fc5ac782deec4aa580339bef97479c3e03647281663977aa7cfe0ba81dbb024f035445c5f731f360a27411358e2097e936f9e11985516799779387700a9fd271941b2f9b72941f2f437965b0d434bee567181973079ff4b5cde2cc1c70f82723a6191035d95f0e1d0d840f8ccf376111ded8d65dad3e6528f616420ad70ea138256742dbdadbb941be9a98e7d19415b3ad349767a8068f6d015935019ace9aaddaf88217031ea7a47a43db6a0001d764385c2f30432778c81bc009a5aeb4116cc0a4a47a09f46027d244b4f9b5087cfab6dbd36c3c0228d09f45bc86701561b588ed456a5a9b64f246073e9dc495e7874e701c9acbd5ff3b133a9dbb7ba0621d71adb60e683bddb20908139e60fb7db815aeb7af0b6ec193097fe591b826ae58f5a0bfc6e5f71a2187f713703ea61265486885330145d73e21df7f2397cc45a830cb3bea5e8d9c5a83d7ea61a3f28013cebe608194cd9938e2866e5092c38b9446ed181f2123f70a212f8fa24e4290c335c7c28badf94bbe5d8229af740f9db35cf1bc38aaf50bd577d06a4b78c4d4a3efadeb0e89a61dae3b5aa1f04265c5f42c87418d80bda8d2d573a8c60e13bc7654cbde02f33594a05a186ef7e23f8e1373204819c0c050240011514af169130a993c5b472bdddb575fe17b75b3f56a9a0a843120d65c8339969acc7b624675d04ff80ba60889f8335daf33ed990194e33d70a7b7d6ab59fd67cfc20624e4b1e11b176cdd19956ceab44c40611134f5d18b86bfc158cdd6393fc12149941a705877977c6adc00c6f0008b5e702d4712305a55ae9f4eb9978ef8f906d099dea41584c7abb80423a3e44051123f27dbf300fad398db5cb3c30b0957be6f17afb57468e5aa1b1bc5126401545ad739d11a928d98fa2bf028a2582901a5e9997ce3d8ecdca9864a8f0416533d93b724c978531ea1b48a34bbb58dd0fe822f51457ba8df458824c4186c0b4ab0180aec670191fb107da121b6726f839748f15b47f05d69c87c3c1a04bbf2bf1420301e619fa08d22095078a13979b82e10512e16b62e3cc074f984e517d525f71565f77d75d77957f73d57f7e54de7295deda14befe569ef226bfe6ae1eed5c3aed567ee556bfe9507ceb56bcbb513cea59bdea953ecab5fedabdf4dba92bc0bc38a4f9d5d23c6d81c0838334588aac00c4bfa0fee3a88fec6f76e1f5d17275b451f273dd1e77bd9abc94c0e54c89ed5609b76324340c029e7e1200aa577626942085a2ae34940a0c72190947ea5a53633050893219c2a7911e5099f14a97a8be5b18431ca9e5e753cd263e242240e3ea5a2f4d187c99f0d7ecdc0c4de41b3691cd9ce6de0c0969672aa7cfa313382101d14ee8c79bc486cc21023a8879505f5012dea60345742e1f2eb1bb3bf8e0a653509b205fc1846d7090a167ac07cdbaa8b7087a633ae924326e47182e885f4721c834940188259602004418539c3063155b9b99274737b3a0452a34f7c223606f24b36dddd6f6de5b4a29a54c49ca7e05e204a10462122afb277b99f971c30a50a0880ce9a1c9583f562da594d215504e36b55fbfbe083e04f0b4e2285e9c1055ea92b0a79452aa67d450fd01d50f701bbb69142faf1dda328a9720ee8f9704ca569ed1d5feffffffe65cbfbe8d21cb61946fc070b842c081ab905a5930a494b4e0020a27fc0e2c4c51e2d67b2d0a76ad1ad75a6badd55a1ffe1384871ebb526bb3cedf64d054538508d2d581ed8c3b6a152d967aadb556b101a9eac076c61d950714848c2c1521c708f57a45a1d61a63d75ae92af44c34d7114ff060a8636badb5da3afaa8b3c38a18c4ceb6b422fea03a90a2861ff231e941854908ee922fff1ac98916f5295090628a2e2b2c1143ab0619ed75f018dc064cbc0eba999d71c7ceb502c50895b1994b91ec96b20dc272adb55c52c85ae02d5768247cb3b5a328668f40acc48083d1a977b3239d9d71c7cecd9b0a3498d0e449151713a91598a882c892514a29a53a356fde9873ad593a163760385c21e0a04eec8d5c8368d1b96ab5396736bb62ce395bfb0327d281ed8c3b766eceb5e65168cc993aa9b9d68dbb01c3e10a01874645b684bdb1e5a56d2e2138cde6cfdae4a60ae69cbd9b73ad55df6aabad59cdb26cebb5f95a6b73beb6de8cd423d79cb3b537b6c054d7076559b6d9e64c85cdb9663973f633286cb0396719a6d4599073ce39b3190a2a152c695d4baa9e675c1b5367de1977e019d7566c1d4b13402ef0e5c70b5dac485549e209912529913ec974db01080cd0008624529e18010315259985192a495030440e2c60214bcdfe24220258f901849522eeeea98b820d1c0910620e2e9228533cd100b06594298e4c214406193d48d084094998d8a024872106b041131f7678c26564062498800b54f8c06498c288150e36a8600901134a2c6199c0b2d20b09acb51665420ff4474acaea060a50f902e4c7a502f2d2b35f77af614a02a861d61471a4c72b75420d41182162c4088e4811c5061da4f41cb96148ed000c4c80448812c4e00718e0fcdbb0bfd65aab1217902488e84102c48f1a9efe8d196cd685b10a67e9ea0d180e5708382ab6f846102da8eb8a3f707f71adb58a60eb08fb58eb101b81ceb467e05b31ae76c3d3daaa63250827a3a825f58287900a96248090dc20d5254925c25a6b51995f31028b0b2cc6b2a57465ff7e5dc342dbb68ce2c40f5bb4651427acdc2a291b842051032127e8e004893d41ca7e5ab198fdbffb087181e825c609715d1d36694b2944008191c870c5952ca28fea0911ac64134768b8d60a6c6fc070b842c0612d6dc147151a70516107198c78c10c3324d1f3822a46500494180a3384100313a04081a58519a278198678132fc14e902944f0a58a164e107244c90c47940052c28224528861ded0590981177a438735ee7efdabe94f2214aac341e93a008c2503177040410d8ce0b8082a125ae49fca92a0ff2f22838afdbeff475b4af1018847eb4790218e8c5b461360982826de7651b77299a1d34c396023e4a8a3560dac8ebd5aa6b333eed8b9f71ea1aa4d69c8d6be0b0e80811455502f9800890f1c6a64d3140b9bd24b2d10eae4662e531dd8ceb863e75e2a80b8c73c25d87085104dacc072c30c5ee881e43ab09d71c78e451233451873c046c891ad0592e56c5950c3040f2057786090430a56e0258b0b3a97fe6836d3d91977ecdc23ff45f60fa1c1528a2ffeffff57c1cf0bfbffe9df2d4cbc2cc2980336428e4c834e0c0c50a4b29d51f3961846d731a536671af29d21c2ad5b4e90c957841cb01172d4cda763dddc23c60a6c6fc070b842c0415ba0f41b7b002275020f33e08043bf854d61386312a5943e01d352e0c00a55fcc012450d449460e1892956a6e41bd76e81a92e6b575881b5d75eab63ba392b4175603be38e1dd50dae18f1716408d51301e21ef3f068e20409503218020926403e0545904db3b59807ce75603be38e9d6b75ae942956a33c666b75fb410db521216bc8eda191ca1a1afe32b7e10f6ffa8536fcdd4d3fbce1aaeda7f9f0936bcce55050db8674a1310c8d20ccbd515adfa7bd5866dac6853c58b5323f5c6bd86bd5734e6de36bad6006a6b6d44d4fadde340ddc74a6b5cc35eddae767b56b3aaaf141e168fbfc7fd2556de335f0a3ad60f810d8f6c43abc59c29bc58aedfaee096a22aed285a2962676d95ad49235a69ea09434aad6c409d6d10a6739495923c310595d6a4bca231343753aa42a16f2b56cf9413f7e0c08c61be9b0ab9169a95773ce29a7cf39e9ea8a578b88ae3c07a9e869d1b22b15694a390b649c165a93d3e79c1fdd33acae24bf2f7eb219276b4d4e9f737a74f3be993fccdae1cc6a463593daaf49454a2d646232b1bf9bf47d32df37e5fb5c7ffa5e1fec7bfde87331e62fd3364dd33cbacdb98221fee9553ba461b988fde9358baf53a578bc92cc179399a150b6a6c36d7f20ca6dfeb9abb5ed627c47f7fb62dfe8035133367bfaf58ca789b4c6e58856305e305e1c97a38373ed1f514a29a59452fd413a3c18476c6fb4cdef3749b55fcb9c8eecd730abfdba7462016991f9e2a70765626e2a4226b66f28d336998cbb3d3aaab2e11f08f22ddd7492f6eb7a5d178872d37f5f605491345e7bdf1703fa6230aa8444a1907e0da38aac215be8d7f30bb5f860886e33d2e26284218e40172325b5f6e75c9ed80aeb69e767f7e8eb8921816e4fcb7e1ad1ca05156ea269edd71d6bbf86f94a9f7c1723cf7eed89a9fd7ad5d1a8b46ef3269d8bd14d388acc971994db58fd1a86f83731fa618815c83831a08bf14f57ba5026364e2181ba4dd52fca345bc07160c04f5ca29389c100f2d3eb1097e3694db429a0f3b468a4455cce28e531e8a8a7270c979b1e06909b3e2669c0c04174a18b71bf0e6188fb350dca6dc22fb67fa4c245ccc517b7097560fdfa8bc91a727feb4faf4317aefd2e5efb3f289489859b4cec6fb2fe18d59dc6c9e94fabe57068ead0d793b5d6a214b5a9de5a1e1c917d53d2a054e38be534491a98ca1a78ff864fd3963079d84cc388165faeb55fe70797c7be3e74f3de7b65cf7f11962dc2622a7910ce4da99e2116b25d870dd8fea573bd84126dea22443021794f500444179a4211cc26ec5ab4c60701d69402bf333065f54f8a6e9ba2d66072a6f4bf3deac4db9580ddb7471792dab5dc2fb5f3406a4d5db2556b9a4b829b948ecad7e2279fda7bba3de5cf1d6aaeed9afe95ce432f68fbefb9ed77b1b8a95ed8d329ddeb0d853cf68dedf061af3dff61137c5811dd7dddd7c694d4faca24c8eb9d964e2745198ee8b8aefddf0b4782ea4a3d70d3c426afd55f7fb8ed5927ccc66e9aeed2c9f86651cc58816c794114414d88301c8cef83b5f9cad82bc2dd7c6acdb26c73b5b55ee101a01b8a28d1436cf9f027188292a3cedf988264de5463caf70629d5d21cb011f257edb52cead5c1445e4efcf881092aaeb8410c38d4c78a0a4ee868a11783630ed808395a90e90d180e570838aabd925d7bad2542295d41b539009f5c80491660ea283d5244d575dc340ac08a0a56ec6ccb283d3e28ef8a17964029f1a307289c30810952168a13c921242587fd1aa6a44d336a887871235aceee3dd203bdd4de7bf1c53d7a20b90e6c67dcb1135302297846bed94d3151832c2770614a0f4794a0051e0f4b8c360cf143882c4e8a7810264898f4885e199710c4305941162d0893274ca8b04892c5ca9f262e3ca1431439f8893d0f351d6c19db750b528bd4a269915adc967f19aa18ac2f869218ad19166ba635e3c4b58c1c8305fa78332cbf3dba1f9a9f6da3f1d91ef3ffffff1feaa03450368d1337652390070cb25d97c0d4761a289e169a189a19d876d72dbe99d69ffcb5ddb55d7ba2cf88db7de667bb93c019d69f9ca635f3e00ccb4d4e6a919c907c3c062b46cb6daaf6d1072a7153a66da3111882ac910e41d6766deddc3199b6c5c464c9c5c80db24025a04fad3506e8b31d07e54fe278ef43f7313113ccc06b4f6ba34f7ada8331307aeea789c1da3ec39234c62e94a1628db40c95f63254db75cc178240b5757c244cd7588fbc2f7c708667fb4c6a3ba9e5fed2563ab5bfbfbfbfffffffbfbfd3af73d31300b565004aa03ce8b53629c0292beafc09e54fadf5baf60421346d0fde0a08e0213a89534456db3dc4b82b4dcdb72d35cb2aa5f4e5f97850bc1fa0aeda5aaf76fd0ab9acb512637cef9ddfcc39635a2de672aa9638dc6d2e99fa7e3e96582ddbb2ac3ef17c240dcf5e19960c36a50b4362e8e5362250c8153ac26d421d54e5daf3a1157ffd7a3c9fe7d138577b3e1e14bfb9e0ec3c1f4dcb3adb2c3529e5f7da86532925d614dbf0cb5920e35c30247a583098bd44d7765db32d934147b54675cdb6fd7ab2564047ef672f8c75e6723009337b8544cf27c827ebab7a6dcf87db52fb0e29cf67bb9e3ae46048f40989d94bcc32def8c3b6de8f06677e76db3af3ba2d746148dc1e12ddf4f337ddcf9f5c749e1d76e2ccaabd38675a88b4ba0020f2838354558282363705717969dd8895743388cb4b7b0505e1ad8391a6b05d871d6c0f9ab64a50505050a84b15b70a9a02172444178a5e415c5eda2be887cb9c73ce39bb4dc2e03937fcc264d21e680f5eb8e339e79c524e39ff73a8b5eeeaa4b6f176da39e79c737239566bb5de69ed94736a769bda5a2e675eedded037b7a6fd66a77477b342183bf745558d79bad4f65a5935bbaeb0f6a38940d7c7ebbe41b0974a74b5b46cfc898ef8c937fe7c2cb917f65af9cdfd115bdab5f256cabdd6321e29a5b4524a2ba5bddc7fd39b7412b45a4a29a595525a295fea2fb25d077153ae60f8b04f7d4cb5ba2c9aa22c2c335bd150146ef21b21d89f3c889b5c4b6dd7521a8fc4c9eefecfc726816e9e1b9852faddeb7b5fb4322252fd6f147facabdfef9910c6b57daa69b5faabb3dac6dbebcab81c911149c3f5fd442ad11191d8852296c8c76d429191ed2c25a296db38719b50871159a386d7a7e46d74ee7a6928ecc016fd581f80386e0d5cd7ce00d5584b4dd357db29ddd5365ed3c0bdd3832f941a08565f5dbfab31c6f8bab0952ebcaeade9194d4a1a1a186ad25dd706f5a43acbfa7e95e437d0e48bd0836dd79a57acf157ffcb346d3f7c577f724ae927adb5b5d66fde7bafe572ecd5f2c39febb75ac318576d5a7befbd2a49c3b586b29fe643e3b9aa6b2fbe2a59435efc9526d8a3e93935ab7539733957632e673d338cf5dc92359e92cb097591345cdfecbb47ee8a0811ca6dc25097ed23156e93b9cd17b709b1761dea226bc8abf2269d2633d65aa6352e2793126bf9e9b8ae588e0443104ccd0219e7c1abfa93db4f6f489cfcaab658e6da1aea3f89833fbbe7579f7456db6c2ba0b31ff42f57f53c4a65b5d7d085ef92a890eb6f5e7b3bfcd8760df3b150ef5084aad9a108150b692ae63a8b5dd706ae6b63795dae2d03404b983c66a984c9c3430778652ddd6d38bd03ef900ee99edd9c3adc74f87b4e50eb3e165afbea9e5c0e3759843eb959749ce67feb6b9f6f1166d18936cd769e66b16991d672c7a200e1ec64f74929ea3c8037074a690a29093bba5d80ea595bfdd94db99c4c4f0e848c757ef162d72bdf43d68aab2f8f1d9b5a2db7cdb2a67346406e8cbfbb6d60b3f63d08ceba7f99fcca0038baa2af9aaaa245599f70aae68ad592b1510675104a971d4725928c77599d28a4a90ef18de58021a6f801a003c0b03380340d40e20dda587dd00090016058b35f7fa3d32d000cbb520d302c690580a1fee055c3aae2df4c58970030ec1000b26680a1690020ea6f5c657d6a6480618de90486266d0243ad2ae90f0cb5060100f2fcd7d080618dc905189ab40760a83bb0230c8871d7954a5a977e6abe90f26c0d87a6605a68d734888c1e69d7548592764d81c80594629447d6f0b4b362321ae672393232119051785fbd318af2a401c21fbd51c96994648b0fe6e3400928f0ded0487f2310e6e1509ebf9938fffa93160ae9a9455aab2151687ff0371463493f587db0fa60a5f337f4f527d718775d89be46fa9223eb6f6a2ac54ab152ac142bc54ab1769db02a4e581527ac8a1356c5a9fa1bebaebfb128154a8571d7954a2e1fe7f91b7b6b6a4c26ad4ba5aeb3230fc65d572a696d32edf07f76cd36a29b5ab4c27bd2d77598b352dbbda6ec1ef7fc2ad6d1298afa4c94cff6eaf313357568c7eda22f848de8c24ef485c22e048261a6adb6e9c981906d1fd6da67758680ed3c9467d77babad92f2e02cb935254c1eeff7f403c556344d8a7cce395feeaf7f4a5f52babb4b97524a29a594537b2f68f20516d8cbf5a76c1bbf55b33377a5e8f1dd97e35022150a8b50a208b5bdf5695af465bafe477d67dff83f2d9f39527d231fa9edffca59e65e0c8f5996516ddbb612de3a0d6b8dcbc17ff5e307f20470dc8bff402fbef8f86edbe542a110c7f1c456319cb97f8cefbd57a4923446a82ca6f1b84d285265b1ec8b0f914ad6909c37e944a2f9ba7a7ed286f3c45612732efc9beb9048da0fbdebde23804437b9eeecbe5f0fd557bc3e5a775b5ecc4d5c122f765b14f46259ccc589b81c09f66495944eea29a5c8f6645a0b6df7d3b607f362a207ebc01083b0fbe57d5b7f23bff5d91ea546a83fb90e7deec5fee47a4342fc9b4de3c942413b019ee1adc1422fef8b9f5c87b81c6b455c0ebe5acafd747cd008e57d7193b7240dd7312a5df8a217dbaeffe536e16dbde83657bb5af8529a8542f8e7f2f8183ab5fd76e9aa9e9bab0bf1cf768d7f640d377110780d04b526ba4c9bbb5aea65d5a638841d118a83918d75d811d90ec32aa20b4b3facedbaf4837f240dfc03c3aa3a859368f2454800d476bc2795a1fa938f604aa498da92a1fa1bd007e34d65a86658d4570efafccd7d77eaef5abebb479f8b98bbf8e2343c7ff2148d3bd08cf6ffff259006f5a76d892ea459f27904b24025726eadd64b63be1e997146899b8260a4efe5f226dd1ed1b4fe46e641992924506badadd9bdf7cae9734e128ce41e43899f3cad69a3518cd6c8fb62b05a68d7f36b1183315ee59c695996c53c0af4c1937a92133f39a9351313a3e59cb39c13935e241749fcbef00495dca8040d1a0a6ac90cd5000014f31600001810080884625998a63918d9f414000f5f9e4264623c90c7c2611046512004310882300c630801c018621462caa93a0200f613da405181cd13924b935413acc054e8b2dbb63e92526ea7453c54dcd69d7149314e63404bfa2bd6698e9ccc299c91d37bbe84ae11591f7b428bb42092bda417db9fe11e05cd80e5cd0468497d94c95174af2f13f748a3eaee38283faead4ab71304c4e47e970fbce43239d336a3e2851614862fea05b6d3496f2672b0fc99bbc37c506b5b78669d503138d6c7425b0f3d20c33246b57f5c44d2e8bbb2b0467a5e9d82c2317a81bb3f6f454bdc4b0f5f83244b2fc9dc15fdf21a1c7201333a7c01f35b0d0691cb371dcb76116260ad0671a23db25c15d6d8734e998e93421f1bbead435c641e4a42411ee84714775c2236d4b3860107220e81ca0a6c92bd6ad0f0319dc7ed3dd897692ce385237cc8959403af16c87127b625ce89e4fee03bbfbeed4b495fcf9acf6f6bcb8cec0ec4963a97ef02f54a06150766a4e868ccb15a8364ce9da5b011d61722e926293e4f6f1cb7316898caeb8ec92c471c9590d8ee8c6db4336f6175b26a59c07534b6c5ceb40432cc6463366685c77db0a3aefcd888cd2f4aa25bf604c0968d20bc7b34dca3da4df411395874a668803a5b6aa267436f1762c7503a2237d9ab4d863cc07ab089a3b1a0dfc3bc0dd15b1f6eb5701788e8adf31dc6010df565d50be63a1e6c03a163556f9db79ab386af5619d15b53f7feac4662776a0f93c2cdf9a770bd8572d833b3011f54813c8cb8e68b165c79657498a744d822748ad14402008a2fa1ae6eba307887d38be8edc00428309ef421d64e81f345c0e129a17b53c37ab435fab8616876bd2bc05ae3df104da8d2eb2dfca4b100f279fb966074f8af098b7550043e56929de55fd4c9a555f4d6a5b072b1474b290d1c167c274528805b0d733f0f052c7a8b6f21b1dca03f32bc5a730711f3c183fcc9ccc1f15353a5dd67ee10d8baebf1300b8bde2c580714afed3c41db046ede2e8a7a1f8198c5081cc103b6de21c0740d48dea40df315500e036d427783532c7abb145bef8e20c2eb6ad6e91202ad06f4f00e1be0ae051c76a4562a8abd8d3c6bf4d292380337dcfb4ef82caf17a032cfee9edc54e799b212bf5f1f28a1b08558f4469e97d4ad22ee58c5eff65c0045f737bbda7d023ad66f70b8c332d56f229bcbd4ee0b081e7d0cdb2ff8e39c86373752200540b170aec218f19156f934b09cb635fdc6173ea87c272b642b7e08cfd58c45ed8b506b25bf98f6c998dfd6fe42bd45119edac7001ce0a90e9bf51477bf03174c46e8369c493227ee929e4ab2d29e33ff746a5426b346c8bf9288a36640dd97fcd05b45801106d5be03778d27349d4fd53d7a444d513256dad7737af4920715fb702c01aeab8571151ee1b05d4cdfdbb96130a2fdd2df54ec63fa22db341f01f0bc4d8eda1e6c71f476ae604f9968ecdead034053f3460f2ca23c5ae549c23225bb333dc2099b812453723e4b502f5d16fe53b3e7604f5433e5e3491ee893cb3ad963a42520df52856cc6cbb6b3f31dcc4c08b1f593bf199977666c4bca034b85e47b872b0f3dd9309edc1b3a650f080b5739120899aa53b7331c770ef90afedb7ad66dfeaab4d9a40de8fa1cefa80e8dccf0a99518a819bb4f20ee8a63930f4a442008dc4e2ffc985c740ff2e2b58e0c38a9185be87149d1c4fb99ff1d74200e16195078e7821eb0e37be8bec5b8ea52865a0573daa477a64ee4e35a0d0f725d4e0b3cf0648dd265840ad85ba4f6824b8d4ee40b52643d0e9d5b1626f59ce720b8915b1ad8947c36b9c7b4faaadf66ced17cded0671a609b36a4730d1a542ee683cef49e2adf4287636955d5aaf6323649f9c88e8f677bc2091430d57d37c95fafc0a5a8636b768b34ee3e674b1ec6fbd9a54ab92cdb954b7e369b0393678440286d0143195745917c0306b48e3e07bbe22ae59514d5ac38c23bf31969f41a530c863265ef1896d7a66c44c0a702550e886e330a04f7716a333d425286e09c94ab460f2210f701505aea123e403d5d7f55aabbaee031f91ebe429d61d0cf4ecb68ef64ebdcc5fd0786754fe16f6112769ba2b849b60c9d0bd1b3140c683e17c7ef9aa8acd533c48995597ab640d3a334c6eaa6734abe0eba5f850c9ecb7a259f467b3d736e3ee6ff8e17eeffef3861bc5443ceff6ef84ade6d2395d58c5c5dac1f6a505071959c0d6baf10cf8e8910c2224e7a38cbabe87567bd975c30ef29a7e0ff1bd5589a79daae61f1c1d45025a5b66bc556d43e097cf1d443968a2f65536a30309d164088bf0911806a8dfec0a763f22de72b99bf7ec9cbe005ad411be154063606dd0c52cb5e9bda7213c0259b6a39d6ff95bc246ace5ad13b088ae14a2438b8b433a572e454beed0eb154759db54dc95ad7a8973b0f5afcf660c72a5ebcd560f7994f38a527e08f0d10193d5f183011e19bceb7b9969160c54c51e464a8fa3587009536554934ec1339d92251c1ea22d0e91df10352041418d9e09dcc403ecb5a5659bceac3e45a1b8272d715ecf0646e1bddc5cd7073f1728bd2521e5363a474a4a2176135fc5e1d80c1e4b02d6033ea497ff5957c4ab7f49ec7d4bcdb46859012554e11626e6bea970f56521310fd11e862c760f1c9c5b26def038668b7747ed59316b0644eafa4bc518739f0ab5943819cce2c8074484d278bb5c317bb6aa317b4def9ed04d66ae1a7e4f79af1042a24b3d4f634ad114c37fa44557c97d7e9b86c3aeb453f87427de7cfa30cbdeb24513632b5200bec1e7006f41f02b704c82199286ec832b9951da6cc5bbf0281fbe6cbd096262f31b819a00b2b3726cbcf6b6f81627c031900d109cda80d8cfaa98a5b90db80aa8da5ab1fb7ca6db3dbb98da12158eba88f96e43348ace42cc8c71a21bd4940761d5c51ab9e4d1b4a59184512532deca5f549925f0b3a60339397bc3d7c187fb65d54456fb2c24612bf2c47dd06eceb089618497d94ca5ffe10da72a80cf30b6f06f347ffac9098fb438cc6f45e6bf38ea41846bc646b7230aa9c9d3f498eb4abd9351ae7299cab5565f2ce96c28e414aa9588f90e4c735d03998f0e5a91e2598b54b60867a5d627b1d35c5910516fce78e3cca045349a7b0db9880e7c35d834bcc5d606f81af88d331cfaac86285ee635b826176f61e81d051c21881966731782570577e994bdf7bb4549a5d0e12fc21955a16b15f2e871902055296366194dc3f828ca02c39dd8cf499332b899f2973cc9615688521ecfc86e46fc6bd680c52bc4888fce9b4291c835b32d58aec0bdf7b5582812399ca51279f1efdd687c431c61c3da0c341e88d8172cf9edc680fb20440ba9e50a301c95edae5c4ec4a60a6641091b368084215ec78b6c800fc77a4526439141f8ef00336ffbf85169ba8a32774c6bdaea24bbd387ef8b61a2c65550c4b4040c8c83fe587df06f1c583b330edb1f380272523344495f64abcb85084bf9b4422de4e107ce8f987fff3fe4d3f2e2b37421dd1d9cb8ef3328fc6a66148d628e61c6a9668c7ed05c45ad649dca2048fbd92a3fd1d76a35aaad15f7ee7dac23197ea85a5a2aa1ab81fdf1a4e0b7c1602584d466201f3a692870af71c181708c7c928178b85e5d630a3b898866e966c150aa490ab10124857ea5d1adeecea024d4dc01204ad4223d34600f7f38392f55e61f84f1840483c2ca0abf3dea9f6f0168e50013267f765560650c13173066459e289b6d87b5595d19f5f5d58699fb35c1fe803567a2e09ab229035badb847dc551734a0ba0b98a57fa98a23e3f5616af0da49441067551da8b40f2d6407a1ec2f1de2b209f285332186f772003bbf670cc40b186ec45735099d6fb54c89444c79763794dfcc6750b1c3117f858b7bc0c0354afee150c3b979ed8600b41137cfafe3fd4d03c1bb29b54b7c3a84a348da4586a27179cc7a3f2b1ececc114b514b5b7b645fc15c2bf7946d9359fa46f7f94bcc21b3544d642696afa4662aa690fc9a696ba5ae2f4095b7a0fca84324a362c5c485e61e6a29b0aec63b78a9a17c1843326d467c4a78eb99787bbe3a64bca57916a2e5702c3a0bf1579ca4d3539d4d480fbfc9a4b2bcb1724c0bcfbd702f8f93c4a4e3df3f1d5dd95244091b930caaa8f7f0439e18d9d5d93d42ce72b38007b7136a133533f20ea24e0f3fbeb8d8bc3fc01417603893471b115f000a8b689b1963fdd5074851af213033d0fea4d41abf7a5e52d055173ed12137d129e3e8e9805010599bc8606731039e0c5dcfa26571b213c4d30248f34d4979f4942fb9a57467c496fe38b26ab518145aaeff3306be768ea65503273fc704ec009299a59a87e07ebecafedaf04212f7988af897be3eee7140aa7f69b67f70b2666c8a0a0157aacca9d7082e54b676dc1890f58346231aae4202e5d7a1f596831e914335063acfbadbf7f8cef4e5b359f637723d6b548d9fef20fa7c504ec54e8b45750333c46664a761d129ed87a43effd8448bce3d03c49e48aad7a3df2d10f5cc996f6042c589f50453c73e1d872daf5a88b035cdf5a5660bd16f9648902cdca0889d8bb12eac79dfad08dbb8799709229a6174bb2576a2d385a250253840346dde0574066dcfb8b92b5ce53c8290c007d9d846ad066ff44f1dc9e6071ac896ece52a1dd336c5462799f4558d9c0c26208ab54e2dc46f6d4ae4c7ae47de0a747afe171e949a167b787a229d153118b124cb9164212e4b4383c0803b151b779f99190208c848f16e2aa625df08fd992448627da98d5aea8b4c1be87c5332edde09100ba540384afd4f1ace5d0e54a0bcc86752160c0a6223477b67c6d948012e621ec71d2e6debe762a27e9cb7b85773ebfd90006d5e3ac343adb1b44323562d93f97fce58bb94f1047beaec3688759a5bd0c8b23f14583556e90493a398b5f2c64926cad1e2cc3332c40ce55bf675cc195d7b2240bef1a468672f82bf6381d7c9455d055ca0fecb2935a6d81e09b34f0c531422a5a2a5cca8aecb2489f376dbfd4f6ac007e6322915aaf0bc57b00216894c02182049b9635af4de1102b204a615c031695227824a5034a1a4857b6eca0d2dbe998a327fde35496e6b42b009eaf3336603484cf0f18d68d5a2da7f7d1b418e10db60b957b38522d7f912600a6c397774da25784ff93246f74cf2db8e818cea365d3d38dd04699fe8597efde2d0b193f0a1c66b6d3a46ed8c4e557ac446acc8a2add9e7032f861241dc118f0c7b9b0be65bd928309f009b821a20644ecdd8c283da4d421f90786f8714646cb5d2594c7b37224151c221bf52cfac5df10612e9242394987b992888ae1051afdeae099d6a80210ab0fddf8ca51018033a9413e483824494a8b73730abf3ddfcb491077244e79c79814c1ec1040bb39681eff9758c4178b8e027cd9ed08bbfe613fd3fca690f31929e967a1028a586062a9e04e956a74c98e60a9ae1115855a5b68a970a9dc76a4a9a6258caa2eff6553222e669db9f9df0fb76cc78a8636ee16e025e66cee2af48968f6768620ffe404cb7d36199559ceb77ce990a27902a00273d0aa4796ecc0d0d9e4c3d9f12619f0770d7205e584941cfa833402dad1bca8ba0a4e7282c1e61f25561dc22721f2fb804348dac982088027b8f23070749176e4bc8287ebff4e36483ba1c47d86dc7572cf2e42debae0d2baacb79ec1ad13d04259535148784a859159a4cd36b8336e015f2bf100b858a9af65f0f65691add58c3de392faf032a5c67f79c4d9e4167d6557972942178d70befcf975258585c2e9674f3ee9078fbcc0bb9f179f6726f3bd160463eaadf85400d4976279325ac48da1f03c8af4c6917974e569c26740a4cfa63b10996df3a5b6926274f12912d4bd4c3609ce6fd48933da1e800ede7319879214717c3b2efbf4750979d3e6d6c5c88f20d6921d886c64cd52daf95edc8ab09f50fd6c15ca9a527a4bfaa4c9b8f151b683a286e4e0527dd2321114283589c252488b61d0701a312dd50c0faa78c284aac041dbd89bf7f885ed0d355d1c67b14b697ba93bf43676487cd2201b668360bfe6d1c930410cd3b2847294cef5de9672749256bba1f53163f2338c532f21ba05a01ba8cafe44b37cf62c3c5c5a4eb780ef470b50771b1b2b9753ed16566a99156b857d2d119f0bc78f76e472f21d523cbb0d737a08863c7aff89eae81759c6c9558173cb57cd23195bd9e9c8b39425b2469a362c1cc5061140b72129e4d455589054c585fb95bbe56d032ea9cd45bf8f9c42d653527c5bcf1f1ec467974100361ad94d0865cb53038e589f746e9461fec2e99e00f70e3ec20d558fbc579f09251d491792c0652948b27d11d7ccc87193ddc9281132af9c39d45cb76bbc344bcfef3db2de0ef825554ea749f455c708901a721b8ccec8a3b716460755e7dca0ac6df2a5fe496a2a89cc1b24841ca91b06bbbc4be030483b6840a02d59cf0d7a789fd0d90e2299a54150930bcb8d8c1de800455f1dd3243603db7185e030483b689cfe66e196f4ae41833ed7c6184343421a248c60e0692a9093c7f122817a6691e192691024335f2fb321fb8be075ee464035cd5d09200de2d4b25025ab1c60a942c72ce624fed04c106914b16f48649bc1b9cd77951a2bcf81d80a57facfbc5e90c6e27b3fc7e22239e008673ad2436e6f9af7681d5fafb7e9e359dcb02e14d4d77ee1656ec9f23a3d887dc218f179a9cbf0466f54c11cb851119ce6fa2d32f3280be00e229fa21a04c43b13461ddc75817a23c6168cf7ab6cb4302d7a081c2240ba4d1dcb46cd70a1d5c206cb19fa66306287b0311c017c5765a3573a80b00f57aa4fe16eac2d0ebe4fb5d3b6fd43e7e7b47652c5c8763c105c87a573b82f13b9702605100733b820edc236ce22216846e8253d6ed2a89bf0e73655a9a6cd9ca15307a6e67939382ba84ab5207414060680e291066f202326b2117e32d9d2e33f59b2376bd23f217c53c6016c07b41c2adc5a8fc69e3ae841618c9225f406e0976f01d1a253eacc69beb1d378f41781389ee8e4eb59023a7249fbfb088043fdacbcd46e5c811609f7dac30a2b190ee300846f39e10fa5fdf166891fe0dd5e23d5c9c52b4f583c79d353552e8298b7181a326cd9c94a99720592eb65ab8995b0b4b7dbf19f7300a6a8bb6072f3062e63099ac58b5e656ab0968aa65eb685d524cc2d8bec4963229d52ff7ae8c2bee1582e29d6e063aa63eef732b0ab4d023a6e6cc2336f30593d0f163d080e7080bdabb246ab15eb8ff181bb8f4b09947d97b2b2bd3b0db3460c81873aeacac02731cdb09722e98804258a4f799f289a02dab2d48bbee759665158a0d94f0c1da5413965befcb3fd66a060f097120ae71756ed46e9008907f12a0c5c49a9af84c71413a69bdc333c5aa3d256496cff36a24220223907bdc4447cb4c319a6ab18075610b59921fbddb6af1df430e472df7187300af2402ca3aec26f9f4571cbe461ae17c6f3a288214ec53bc86cd4f6dc5773455e428f0616e36139351dd443322cc9c3618ff667808359aa35d391c4a13994f25d4543d9d09da5acf9ca750b896ae588923e430d4345eed0b05b7fb1edb645ec58adacf3e57d073478eeb8fa3306899f321b1ca32dac822ccdecfdc0123c39c048e1b594385c70c22b73624f658bcfa56c1ac8739d904a2e3390364c7345edbe4a0ca5e57a9e86d5a7726d504e8343dd3e886e8d40a48424259ec4ab3ded024b29b82cfa20a49d727b29197eead35c68d4eeedd58da5fb44ebfcb3294df61629d5576048b51f0d4b90caa75c1a8501c534704582c1415ff6fc57c1065fa514b6410fb6a6de76e50e9eada08755191c2ad47c195d5a1a1bb55841ef1824ba6e7f0bddb2c12c5cc3a63577cce93f9fc7c7f679c66237e30196bfcbf05f4e0eac5619bca5e20a3aaa291b836ca43272093f43073070809722a2025dad218e2511b4c25fb911c5665f75891fa4fe61a412ba0f0c15d2c16c8a371f10b91d58cdc507d3df146b309c9d1ea06b406348872d4e4d0740a15f587f73116afa2264556fa12e0cb6c4450c95a0f4525121932a01e7b769eb31028722e3a2b6122a148940286e1287d953138ed8e1d19e694b6b598a7b787e91f67486dd8ef5bd172512bc4d0ebb51a968b1d12f5a811dfb579fbfcf6c04175dc561e577daff896666db68a80795a58abfcfe7c50e0b6d45e3ca6991799abacb342a49fc8841e487569c181aef16b77b77754bf48d4e38c75e49faf54bae944eca8939755a690d743706e9bdd19e5ae1e0e02fa2549b305656be61a84a32f099a8cdf54815522eab847919856240f7b1094571518cc9111cbf0abdf97cbc2c1362770116750abd631c4073885182e33b21c068150a16814d89d45566335a5d5b65db1005697c9b38dc15d4b130c8091193f0e7db149698a10d3c1944fe6849f2f48ffcd719ae57b99da36f5b621cf0ad03273d9a238ac35a0bcb43c9f71be8ad28cebe73612a0fc0c8eba0d906ddbd8edcf279eefd6fb497c685640ed5d07b2b19e72d023c8aa42aa08c1a1e20a660f6987a5b1625c0a91a77526e9cbe0f74ec705cbc7e69a1823110590b093530ca414f2f1f07889a7f21d891170b3a11b2a6372b58ca0f39a00a851868731731b801c51d49fe8225268d6cab63e3f6273a6ec00a4f7a8ecef617f28667d8a4226ec9b28571b13ff04b7bd43a9ba021e53537e444751f58faa08c124580454de456fa8a3e488088012f0f076712253d6685fe8f4c2a27cf2b55f670ff10003de44b6c678ec64ef147b3c7fbd5452fff48de4d169050a3a00eb301d49a381f7b6e3b29a4a01400be7d9e2ab56560df918bf33861adef555ab1665c601d5b4df4c5258f66a3b4379d883bd6610fec5e7ead16d04ecfb91bb18f88ea5170edada44906e3790339163148e9cb9c6a04d507ac9059b1b265330270eb41aeaf8650baa252671b21ded9ab0c1520914cbe908b677623314a0acabe2045ab9f63be280463fb7115a250671a4c9c906f4758d0ee770fc0ec8d83ce073b41ab755b5909d028fbb3df61b9fab7b9d0e88d5ea3f43eead7e7db2f4f8b3d90c079b54a05418d2b0983053e934b359bfec9463a24523279181cb5a98e60dafd2a6afcccb0d488878ec64bc65dfcc7e3b69a31f707260119102b5d5a7b0a0eefc37832d481cad791b48f143276472031c6651c9c23714aac6d74b353b551c49f0ff58d11145ea9246580a1902441f0a5634a7844652400aa6eeb1f93fa31ed5b2d2bd1dc07b4b612448004cbe46063d8813d5fa53778a98fc1b7068201d4aaf4137ad63619596290a595fa2078fcaa3f1833ed527657a2002136b0daf60ea8d2c63dd638c28d5b688150f6b7c253b4b6d195671ea900e3eb24c4002663838f844b5e54b7e77b91a6380b69c910e07bd06611ff59d467336737ca1af5bafad42c1059c057b94d06f1f3036819b521a85a5d8f7d3407c376a6e089de5cd9b04691f20840f01c612d1a86962ed80943ab270d78fcd8bfd14d3135e30a7b21b34edf69a0e70693990261fd1c6ed8fbbfae9df69c74adfc6c1f1bac0b45b1719e95a1eaa30b2de6adc22a69393c346c629f7d08b766929f4784629c288277dc7faa3e512e945acee03d98894332061db6c8b03887e45fb85b8819ee838ab52ee25dc255cb63e0507ee1ec1d6aa3e8374d622e87d755aadebd5181a13c79a2b0913715924e3015599e92b00c0e7eb00f835d3d68234222c3b3fd35114d84dab85d66171081e561718b1cb491a51dd88f436ca17c42f63e865223e47264275a9d52198492ca86b041989280d82f8a6120a58355fb92f679661f9910b43bce11a5caca6cc8159907fd72c97ff3d5ace90de2230e88584ebd80fa590dd3f3a2c0dd9a249a0dfd374cc9db51e744baf7fa8dfea4f3ebad62f8e16007b1c0988d2e567b0660b186c260f6c6e864185be369020b1bf53156dac2644cd8c3cdb096240b87c2f927e262ebe286b9e350b4d9d027fbf690d0ac659f13cfed6ff96888911bc846238304fa0753139cf20c1ff989c1930e87693554cc5e5c6f70e0ffd518508f1ee96e3822a5c1333b516dda333f51950e172082a8550ceaec4f3c43cf861c7a7ef4ab990ec5dcdb4578d7bd02f51497c96150708a111705930248205506d12d024475c6344f06d22a5d7da030ea76ef5101fe45faea189a6ef0e57b1ea39025323c0160bbf5dbd6374078cb2d7f9d57b2d20866012f245f72487cccfea84980576825f7e90da16dd10ed4b3ba88a1082aecadb3ece237026eab165956a0721906f5223919563c6f4fbf0f4c7b281710add0c2c900cb6e60938f05049a67a007e024ab4756989309ee47997f325ea0ee3cb9782a86de73a35e261211695aedda662fba24e6fb4cda858b253cda2dec1b044293d5a4a7db0887ca494c529c1540c4800fb0069ba6e7513af94b53b8d5a0c7cfb4d154364577651d4d22e4a6ab723a1a60d14f3ebdf7984aae15c5630c413f0da3bf1ecbebeb34e8fb985eff694cb41025bf341db439439f86546aaca28dbf78a98cadcbef8aae3655f95a7bee0d08c005fd504305d4121485104b8f6838bdf132ca258409cb4fed107433ccc30daf4a4a669e98aac9d1ba3589088459e5be8f45275c6905800c22e825107737419c2549fef83286b36ace95f65a0c6771bdb06341c1400a3e299d392f91ec519534921e8c56dec5e09aadc9f58a2fbcf01c4f327991401b09b32be1cf642aae569b4bceed7a0357c4b4e11c9fb436cbeb4bb52beda50d8ccc23fe75d4453f806aac61e1e5ab5507ea2e1e5db56fb968b6602fc5f0451335301d4cb6fb88616cf67eddd659098a971893c5231ba7ff043a5b63d8f21106ea30c09850e2acfbbadd326d075e38093bedb60e2713632cc045432fd9ddbbd0008f57499e9f7d4a88ce7819cb15cbf88234006911ee9aad19cf7a5bab10b2c55e84aa2f650f9c74d5e51187584da268b96f3757e3cf28532e7fb0b1a26a8ac7883436621e967a2d46c26cee4b3ce43247bd4d9d210c5a2659c2672951b1c81e66935b372350233043490be08adb329214efef8394bf6c0ca0b7905796c2192c6a11797f89e19f2943a4b4de23ba5f4956bb01887eecc56a95d391302ee492ce7a85cb54c33ba0d59ffb3139123c4d7b385782be8e50a22d6b9b821cbf010b6376279977ed2b258b50dcbb838f72e9bbe8a0af4f8c70adebf33bb2720a94191718121db2af5c0710d493f1a653cdf3fdc8b3593b2fac8f04581488e80f3b5898fe3f887c13b007492c047a4e7f273bf5b3cb278de1d26d42876ab95aa7bbcfa05ed30acb7d1112304910c104a9ba985195ebc16152e905d2713dce779dfdad4ea8ed868dd6c6d358983867592f59018bb8c10a854cb6ea84e285a92cb762bb7fc33828485c81f69d10eb97eef3047b36a8b05a8a52a09e93c857df8f43eeaf22f3cf22e75c98342d7d2324ece0da9418ba09ed2ee4c3c74bd9da24e8442ac924b6db0353630ef705b1d68bdcc54142556bddae262caadae05dfd579345e6a70eb4c5fe9ae6a80878c7641c139d69110a13f1c121e1c566cb364675740bfb5c029ce680398267443428714b1880278144d80c3a9eb8685f75c954f768ae44d83af76748f8a85c2e863e026e075f26bd1be554f820e1b35b43198ed03e0257dd11fe8281a2ce3ba19d1cc16c37b738a2ab29fa6783a8e86fd6a97cc133e15284fbeab8ca0479a4bd0977ce6490d246c82d9a20255341dcaa18003771b0639367a873a5a198086d9806c0a668265536c200b371747fd6efb2b925bf7763833a2133809ad4f9d1796daabf303dbe10849fb88e27182db8c8278c4cbdb4932112a68b85eb5f8e4b84b60e41de52bd9081f62a99d2b56ffde1b071115c2765c9b98fb907bf5a8531f9d4360d80dd78a1fa30012548bc6a8af34e484b9393214d064a8040e96aba3c08244343b03dd7df086b43c91a07f05b873da637d114e1c171a56128459bfb7f0b2bcae05d81eca030e8aae6977c0777e2cd924a9696c6d22b17601b4b5fb4ea85cdf88dd5344b57b4546e7b3b2fc6e5479c65b94cf514cec36b45b858a9a64c3072484eb9f9a54b11968a034c1525d92babc8927385b2791b6ecd7af301b51e1b4b40d99fd05c1df28e3abad12dd3102cffd701e90f5778d6357717d165227028127dd8542c51b8754f49f998c6f0a5e0cb1d1d222ab8467d3224a9bf5880aea81f47adf966834586214ba721bf051743a0c283769273ce7f31d19758b90b79cdd85cbea0fd4232164db92a938d27a2eebf1807d70fc44f8acd47eafff6e9d58dfcc7e63a52251cd7303fa0470752d70c4f59cf20666748f8ebc092115a489833acc1c2f3f8c350295125ebd3118a2a848ec0152e3537bd86fd4a8cc352780f255d4f9de39f238a3a054ce02b015c77cf34742bf251f071653210ea7b08f7cb77cad514b72a4894c7a760a461b737bbaa84163e50b98c5d7dc972709506715bb560630254cb2d00eaf11fea2977f3cf5960bd72d2823e79ac8403e2e557057b16aabfadba7fb9df2dac6f0c9d4e48956399238bc51dda70259ddf16a0182badd6cbebd3198b419895d72884f275ac44cd6bcb4061aae5730605f350194918642291820ec14c5d1628ed5495ab5707466d502cf64d98ecaf5993f723935074ab9df222ab58f1e50d9cda3db8c11f2e9fb4a0b84575ca04b890936eeeae9d9660e2b5d921e1e8ce01d28da65cc65dfaf182472c54833687124d3021ecc02400149ff1e1df8516dd4cc1bcc4a51ce0a821aeabdce4ce83f38546acd4989dadb8e54d87e52c15917fe6504e10e16c82b080d643c01d68dc4f457add625df3da0990fb42de7e5c440f334f629fc0d90b44ac9ab09e67ba8d1643ee692196c320c6a0cd669a7d6ee4c02e6673ecd4ecb7336eedbf01ef9c5570dead40e8ea7c04a38f65c196b0dfa46231c88ee5ff11a8b721d2d5dbc397141d9533b6837b57ca3439562fa97d0a146dc3b205a6b8d3ca0da01288666374283d7b93a2258e3635bc222f8969fa92cfa75179b0bdedabe70253d13be2217a901c056d847aa2f91913fc6f94a4b6638635d0d2942bdc03c36a5870a06438fe359fb715a546582b6c6bd2f8c53872f7017382a02525be8c106856f1f6d4c58b355dd6713f9b2ade14d7e85e4be11f19e1449efd6183f030dac6c91fd739023ac2359c7d5ed9094e70eff11e214f23f59ce8ca5427349346ad22ce2c1fd35a1a5e4ed188aca334ead30f279394f326d11d01a5be6fa771b81eb6970ae5e8a13946f561deb858439a822c9d04f530f2d9b005dc48d8a80cba9c819fa440d2bbdd8a21603c40f26cd43edc18967d6ae19cd55feb21eb68183284a909770fd38c5ebcfb3f619446a6e1b9157410231055ba1dbd53842e08e829165700f9eb8a2e117cf3c91a6a64dd821e76bca9c98a62321ff573489b109afbef1000c4cc7091e589b2e116bb5f4e4ee80d42416885bfc8f0948f12ab9e3dbbbcc37fbcedfa9895e1b77ad2525691bfb36afd18962e83e4422744f26b0c8dfb98f4cac1ba810c238c70e079a00282a643e55db9a1abe4efb7e590f14baa44c350aefaf46bcba68633e25e2be8ae12b996a1ceecbed0c273c4d141cb2f29c7a7d4ad0206fc078faaf7769d4863e4eddca7dbc0fe3a2bbddf12eb4a943c37c0f825d5db3fa78f8cfd8995df6afa406ab34cf36b1de7c9e99ecd5b2604df64fa58b159a7949d1b365cac0f7b1c96bf1b837bdbce9d7005aae4eab5e9a8a36f66a824e6af885386fc192ccc7fb841244d14303a482f63fe73f04ff160cfa72b2ed6e3ef123f9ab2e8c3ab864fc8a4e5080c5e7e48741183719317b438e62e4cfb4ad7e3fa7cbc3afb701aa4ea837c1ea06e601d55e46f870a64bce0cc72850e4308cb557efabded0aa7d2d30a40f9cb4b1633c41d3044d1beb8294baf4f38233c4d5c6c79e6cc926909116fef701e814aa8eebd48218beeed2d0fe5b9f5eb036e68c88ea1d4133955404d181e0f4ac749aa47a3bd26ca3929bb09c5cab8771042259fa0b998545b590df50a0cbee64d230fb5fedc0f413fd4b8a8fc9dfc76f3f6cb7db1443735be8ac0a617dbf403a24884225dbc9730372b3528fd6b81d40bc355b8d1d6496f5ae92f22796f407794b0aa645459c397d2a9c432c7323887fb82587daf93cf46b04592b3dc1ca8c4cff95a40d95f0fa61e5c6172c308445a527a664e8638988f1caee4bc413a9b9714976f8ca0c2097a62490982ad795308a04aee904781449e04f2d234a142ef1d88b85936c63440c3d51e8c04bbc52c22d057d064c4279a938e21c1fd0d3289c2d370f1e29e89af019a9421c3be3705fc490c58797689b7099484f716cd663705860e4f27c26b6eae184ba28820d67a2aba06fa31eb770ee27018113e079f084cf185b0e3d8f7937f270e78e04abe66e1bd61839da9f949fa565084eecd799d2c94807548a401192aa50638bb3e9304dd900c60a1ed3915837f021ff1c173127f26d3087f82f293a21ae5987d57eb2ac141da2432824960124ec03bbae2bd092102304cbcce3e909b84052b94d1f3392209914ffe1dea70d7a1d14d5230f5289a6d4a03fa4a9a5c1d9a376455baaef3fab45383907e8fe87a1660511a9e0ad08ad3f02036e5b84b82bbda2033c39b0976d11d1d062837396d0035e8052b48b5417252dbec05f368c16319e1c28c05d13c24dd089fdaabfab38f85dc0fcc493330b68e6e0ecc803a88a359f5df508c24e75d403ad60a1e53885ca2680c84dfae2f7eea2009bb9da8a1f000d2830217c3e44c759bd521d9406805659abca7b05cea34740316a5132ed491af6883fd4251f761344b3583bda08830306c6ec7118f4f38c035d360c91679b0ccdac16608ffbce4a8d801927a7d47cf8d868556e1ca77ca8c2506df0f06f9bba2d5033e25aecd0cbb2e16332656e6e5d5fc1e9676009ff93dc5e054333064c75e09eb21a6bc7ba0a4cde6dfe25b31e56bce323c64927537e8b69e5483a8cdd3968a6f0cbf4a579b0289106e6daaacd0b02848f1ea5ccc8f001715f3a247d6a28a417235c309b21e164163cac642c513d127976319e3d15921c49b985cfe9b9b19d125ecd9709569f17c01b3244de3804dbe32e14abca75f001a6cc3ec3c7bb6ca25f1a8c54e2e0f4c0d57f394f1370bdac20d523cbd5e83fcaf56649029d9bb282c7fc5d3f99c2ec10239d9603cfa4e6dfd8af19d099e37d8429ec5be146349b41fa9c7c953ed0ce0e07ecba1dc3ceb63f923265c4be77bd04febedfe8d51850a5bf095b738f4c8a017068f6d3b1b535720ccf1c8dcdc7c2d59b6835b69e2ec0ad51e7fae26a6dcb5e3c358f462c8fa24ff78e95883f29c972eea565919e2c6fcf338ec62e95e7e54894375b74cab3c896d44fa126a73ac344c93c259daed8b478a232910270c16fadee5fbc6a4eb0b2405563aa9629b200bc49e4a03c5dfdd0592713757fc20ca9b43bcb79862e5dd88d934d77683e590e4a08aee9da3501a0422382be15c1ad697af6cba7c2c908275534aa85b1e9deb188a32076d906d70c46f35317c69427317c86596d805df103c66560fc6ffc1b2df119bd82a01168d9c1d13fe204986010d248d509a314ba6713530f2763a3b00fe43236834c1701bd104c72e59dafc5acb4f6531d40426a7e5eb23308ce29961912a5a3a98b95853080740299fc46f5afd01e83eeed750a179ab727359b61e335399f17960403d1641522c8b5b0b9b3fcf0d75a25cca6cd2af85bcae6992404bfa4930b1b48327bdc3b48113c6d8eca7c93bfe558537ab2e7d1dd114c225e7e7c8be365608d1ea84847c05c621f295942ce6ac115410de10fdc305f48a7d35ffd25eccd88f54ab2a5ade4c163ff256cd383b5e9b7b910a235960fe12fa9c6a1658164808fa3e6e202b493b5b40555bf92098b393a28e640aa9b35c2ba2b2b1500c9c685ade3cc2e6cdf1ab90a3bcba4ecbcc48d48622260e67206f42cf33aa953db28609ea5e297f8d5f3cb76ca53a542c1d2a9bdab464aff55a20b03cfc512b409d5ed27d38f8eb6cced0b21613a8c085ddb55e9564a480351e9311a9e026f5c076c0b1325044e3126702c72fc9b28aef451ae5c77c84d4a841360d87bcaf3902e2ee531a23a7d120c61a638a512df6955f6870632910e68c5ba3a0edbefc106826370c102424bff973d884df6ca3595e9976996d92be3512561977f012b27412a4018519d03d9ad4b0d191c70985f85930ea857881b33b9ec426df0acac227658bd53b13c1e1125097cc6a21c6c3e951f6139d2960dcd31e0091ba5297c8a9646a7b1028a63c407797f27b23726452c7adc7835e47f8427c6f71439d286144724e633b00f4ad35a2f8fadf438b32652312886ac8f335319af9107f7f5ab4556e01cc2dc731e6b6cca779e50b01a9d550a2790f0478d35ca853fb1fc15426ce422cb6ca9f54d298c8214b34003517cbcc870d18583b2ee4c47f09adc0113ffc6f791ac3aaae4c4bcdfd6e9cadbcc46155885ec6bebcaeed7e6d2b11e64309dee252b2fbd5c225caa63656141db6d7c24e52e68d06384107da8ef79c920eabca36ce53c33109f30ca5f934d8c5c0a83037c0a6e041781b78658fef0774b16b0aacb5a6540b1402585abcb131ba3c6f99ba9d48acc6424f16fb4ca9f0e8ae05b7972e2312c95a55f1696ebf4097c63af37394a23449a7af5ac9448be39d8b673eba8dc00cf90b11a18a5e5a5fd4850238f7331eda3110ef3c854349e9ac26de162264feaba6a2828f5df9af9a0d270af0e51df76183a4f8140686a3e4693c7e565ce437c218202e3f1eb0abd8b7361d274acbb1c8f7674cc04c0e21ba40a90478028517e142fbb1a7c1af702978d18f086b8eb43447ad586c99c144a6bcf5876457d30fd1e14771c3e73d5159c14a46810ef4ef3f7bf8b017456d831b81a92b955ffb02a7e312ef1030e12ede334bb92b15693fcf2e267fa42d500445416ac313295ba69c20d978441b9732f90c83a74d3d2b18df559166100b14d4d4de215275a96e993a7cb19065d9a6864102c3c23f236ae25b4c1637ae63889f53a1066495c06ba3a4b669bff13472355f6b6b97f3421a9ec6c6ca948f37042e508a350235d965cb356223ebe233322b51052ea04fa547450374aef0c6e1d10fc05835c708219a6b856d20f2eb43145307282fee40d9d0b286854e6b00e930a62774ad32fb509c4516846b9fa02d652df5b64d7ebed59ef1764a0f2a7b5947103261482e6357cf1b9b8e2da20458eaca631751109521c29d47a048af9424909077c312e1173906ab034430040a4893a356305c15a903998c7d5bc9de76a7f5f7f4bdf27d4ab193d3596de13a9348bfaf8eade37e8c8af3cfbcf7188fdb1030d00eb0ecd78df3dc395cbbc5d83add74dd95fc178f54fa4546f94146e336b277932df79632a524031c0a790ae009cc174cf23d88759ac8e995933e94527e8e5e49b6611bd2cfef48958d704e915eb13f9326e71489e15f1d9d9c9d6e71926e899e9f95700ef8232be3be878061d9ea965779a38cfe5e05f82dd370056ee1b6acf303eab04e8e0de82e9e620a6016402f802008823a3ade1cd6504427c7866dd0c004ce09c2349cf70083965d673080a4e7a7a6f755e9fb5196754e363a8b6439dbf6a4ce3755f9a50a3eebb82b899f9ff81363aa31c673deb9ceb3ebadc598ae8db411ef23d759c7594eadc7dee44312899ff421e3ec20919c5292c973df997094b9211ca394fa53ce71face50d00fdb08a534fe78e83fed37c9aef9f15907ec9a969334cb5b6cf909e6295827fef0bbe8e516b6bca2cca34edc89ad51ee297dcea65a87bb58c77578747844d509ee415589aa44371ad99a1aefe7d7802f4735c6b08ebb382787757258278775ba5f7b9a986dbee659259c5022f4da4f095a25bedf5e76d509057cb67bd08baa1221fbbdf60ce8bef79eab19e86aaa1ff4dd7f35d5368580efbd67406753fda2ffef7b067c2fb2401cd0859d23b098ef435609279c50c0f69f05227f7b20319e05d98e73dca58327872767c6182347248db2573adcb5f2f8da9c55b33a39cb5fab35d3f277104ad341240d6b265918c1081e8547d1820e04410d3b469ea043a4c68b6023bb749ac5e4902eaec86843fadbf3b3a53ca0bf8c3c849ddb5f72999325977e561e2bf76be995dc64e861faf51ac1382bf42be573a47122bd7c1a5b272fdffb3e3601f87d354e9448d5f43ee845791877e518a1d4784daabc2795027d84048000f28771567ad1b3e41843f4f393197dc7da2773625fe089d4565e6bdfe6a6dab6529d6f52fb9eb43769f3e7974e4e9e7e322727956f4c5ba21ff8cdf025a2d99603684204f5b39e542236a718ed4d9fc35d6ce30b882e3e011769d609901057fda8ca4d88ac8e71c55174ebe4d2baa75d286fc84540d77bad1e51292083c938524a93d3833e99939740b7e43dd950964e62942ce81342fee8617c9ed4d29bd47951ea0f7a4f4c76944eaa89a9f4f19a1ef4c998ec0b2c3d3fe8bb51eab88b5c087ced46be3144201adc7ee2f68c2b2b57da5eed903e2cbad8ad1ef3b58ffe3ffcf24febc367b6eb369cf687df667641d76a297df8cc4669af5a3dc2ede9cfb8b83ffc825e03dad5409a7ccd0e11ef8c322090edf0884f66db31ff088dce68b4fbae3b407f448f86ddcecef4c718c3076771c32034575659e973dba6f59072fbe117c4b3866dd8c6866d2e077a7f496547af3f7fb7bdac2cdfbfb3b91bdbf0e5eef69adcac649bdb756800e7d66d1b88a35b649b1827a6bd00dbdc1d52bacba1ebd8afb6f9f0b9518e575229376dcea185b9e5ca4fc99658479f5f0b79b4843c5a2ebfdb60cb691af3c338dbb0855b3e211aa61b64c396ab7d483befab9a3f8cf368b9a067901940a9b55ced4197ab55f66a4a7b8196bbc32d0d225dca2d745deca69ad6ddd2fd67bb6cd9eeb29bf50303f6af1da10b3d01f2ac76563ab7e746354da330609bc69a8377b3b296b08cb6ac1fd61ca64f9f13064c4ad91d0cd8856184f51361c0260c18cdedadb59d1bf9d767397ae50330a4373a0f8fbbe4c7ef64e5986debe9e99136d20606bb21bda1371da339010c576ee24a02da6d8c4f9301dc66eeea98a63d207ff378376c0041f739e7c60590ef9c1f571a902b65092cf59fdafd1b0b2c3529c1d24ab33cebae812f06f0b469adb547dd89dcdcb8df4cfe647e7b9721371ee1aeed7bd88da1ced14470fb43f71ab7692a8055f4cca1dfef35d4865388edc1379cb0db3560c79ffcfe6cf47522b4099057de01df836c9014033806f41c03b2365eccf73632a606f422a031de6f9563f853808cf9ac0840208a017dc77418c4ab1c7de09e3dd07c508dd107cec698b30330ce9c59d3ab6973fbba9d3022207f386147740c7f44d05c0d9cae8f93bc33310b9f364e1f0ec253d37cfce64a25f25d4a69fd6f2e53b9c9f024ff0877cd97b679f8cd9515a456803276378f79ccb4d28682c163d1e7861ebbb9b9d15aea502fd2bda4aca107bb35e72c4dd2046769a2ccd33cdda99a9469bc9daf4b7ff3428959fe075269644f269d563906c577aeac5898060ccb1082b4321add69c3f9220c8037949f01d2cb88c8008640a4c01142d4800962646543cc5bfa682233e2920de7db902f69ca90103e6b94311d48077581176bcf17785d699b6674039736eeeed2a6073f3fee3f3d7077f7fe1902ccdb3685a37f7ebbfb0f3b0d8a4aa39f0f8ab165424305d278eece29eb0ebad10ffbc4715fb232e2aa9f545bbcea1f5501c4207678d5af78df21dbbd6657f382a1d0afc09528247ffa2a00e1cb6d29366dd35cda1f80fcf36743b231fb00dc4000f269a31c33fbb3b34459fb0064d5f7bd7477e9ec038f99dd073eb091523274d1bbdb03c230aeb9cc63c5dddddb02c1a9dfb8acc5e7b5f38aa0dfbc78e399f5f8fc382c2727272727270789d78b27c7e7d55ac73aa78d1c91e9ece0e0e0e0e0e0e0e4e4e4e4e4e4e420e1d3b11c9f3d383838383838383ccbc9c9c9c9c9c9e9c1e11c23f408283be9fcce8aa76586838383838383c3b3d90c8767113cb90de7dcb8b383838383838383f3d3382d3eab9e9f9d78a28edb50103c9dfe57bd43dde536bff248433d2ce19e23edd0dc547457cb6f3e1de371563ef4590fffa1f7b07cf7faaf1fb6b8f8505efba27ab621fded3b554ddd8e3d554d91eda92acaaaeae9aa2acaeda6a7aa2757a8a62ba86ae976d4abb5f5b602f12ad5f53dd41aafaa2637467502011c139d0500ea2e1fd8916db65239a6469536feb35af9d4b476fbf52f3f63c6f7eb9399615fe06bc6ebe57b4d095b896ecac71799e26af0242cbebcbedfe3105f667cbfbf21d278f97e5fd22d1adfef346a8c2f4e86cb3fa39ae1f2bffc0db1f57a3919a4f747ffe9951a6374a82c2a55a57a95904af59e55a944e4ab64ab4a1c20b6d93603a9aa9250a41199e33ff246c24aa5d310ab968a421d7159f15057df8d562bd13744bc2bebd21dd98ef4b815ee037aaa3a0a00090c80aa822ccdea93188eb31ae62c4a22799efc915dfec164f483aa8a74764435cd6a1f1f4aa4151fbee75462550db554928eb356352d0d449be0dcc8361e9dd28d3599a884e9fcc83099b0c858f9bcea14f254f50301504531aa28e6acde61a93d5491778e8dfb6c3cf145e5fbb797b06ea9be5fd6748bc5c3eafb3b956a235e957e950e460d3d01f2f02acffa55e5e1bb934f86655f200f1f3f191ef8aa2a5f151e2cabc278558da45f55514d8b603a271515ab7290aa7af72b9195aa025b5455edaec87f3c2661a75088aa2ae7a92abd2e5475bb2ebeaad492f755e55555bbb2d638b1839d0902bb3b489557bd8bef502a2f6a8c315c54be5685a262f25475de95bae9503799b36cad11d9341036c46273ba021882aa7f55cf89f795488befc3ee88a85689e3a28a60bdea4d165f542816c0105411c1e4ed503c557559dd560973d6d7ea2de9567bbb4b7eab60df49118c3f14d9dc56f12d5df6fca75b2d4e9eaa36ca53554ef15435deaf445abc8bea2ad59750010c650aea94e2e8a602a568aa729f527b30aaae4279e4f69fd4707543118c062ffa28dfdf511aca9bf229f1e7a3ea8e889a15957a53ca86f17ff0453dca9b4e8faa2720fd14c526d1ab3eb121fd4000c260306daab2577c439a3bbb8f5f11d112a196e47da965a3da4306b48c45df1612df93d54b6d0fb2cfd5d4f63186f2006956ff569318a25f3b5d9e57ef9482348da6fd159dfccb3fabf46e200216161617ca2d02e0b0877af985cae54fb98c721975d9e44393cb2422b8148d2fa4676a8358b3bd083e069497472855ca26197d8aede13171d7f4ff5d930df94519b81aa937703524483e3471d56f5259047c82b844e3f81862c2623464649b4dda2743fa075dd38f42ee9a6c49730e3770b5efb4c81d22591a6e80bba207ab8c40885e7e324088ec6b2e2e2ef44b41175758090d40bae32ecef68d0b4784cbe5974941e7ceb8512685d9edd86b9c95aa74a7e7a21fc1c6e91bf097689c5e0de91612fe3da457b1e39d900de9674f37e2981b085a4a068f73da10025e8da18ecbd3c618237cc0e51e32fe4234cba5df95874b4a88beaca45991c2b425dac54afaa3776fbab5d91ed24b6c9677381780277a0ae9649b9a5ec5181b768a1da3a02e74fe9d280a3122f647cb3c973f23d8b28d92e6c1b273230d33bba0eb6680acc3c2fca261d765e7c9ca77ab485c60fb1ddaf7cf6f5a22dddf39413f2b0f3520b9a81ba5b8c1cde56fb329219aa5b55eb3fc5352da8d0a9016a1694384d0c83bee4f7d1a365fc022e38bf691935206d12b772983169757cb113c84f4f691b210d9be3f1c3e35dbb355975b23f051295308f5e1464af9b0d45d661a44b08c7e3e00c9c72dcd00f452ec4ce2969e85c088311e00dab05780dcd233905b92806886811f4ad4d850400868858990794dbe0379dd7f84fd113ff8f1926a8cab91fd16d5b00357fb90d6d3d3d363128469a6774e741d6feca6c6decbf8e2da87a61bb59fd145234b8bb5dfbb32c973a32236e4cb72b5ef4f08f9a0f7beda73c3b8009c2d11f4d76cbf85913b00ffb6fcffd5a456846bc113dc0a9e78a2e35600f2476631bcbb94736add84c401a3cd4fec67094a29a899caa08b2fbf8b55a6de30eaf8d4c892cfdaf181e7ca19577ebde17f1f63c88f355ecf0aa0643580fdb10ac15703c3bff29d52661f01b702ae05dc126e03f27b0ac04863fb50f648dd105df9a22b6d0a07110eccf7212f1198b5f162a6a5ce8a1ffd8bee5d02ed092df016cd26056f20430d7c9a68c293f086e94238cf31d3b1a3009b166890e20924f096803d6246014e7bc20a2447660e2a640727b8c2074f500114e220051b9a04524af927f92f7fc5862bbd2be5e946299ca0062784c1638104342a4cd75a344de36e88201b0218a0a0060fe0a00db21ee94fd8727094a606593832831f0881094c8c40e50a53a400c9b6021dc46083209c000a43b862094702921410e1866e9c220545b61794d803b71fec0fdcfe6f10dcfe96aeb9fd301d82db9fa35f47b75a04b75f02fd47b4cf1b64e9d42bff18d700768c1f82a5d3ac92a3a51c099e795c8288ef31fe105a6ca120088232c697c74b8041742ba4b1863c4217574250d5ad66d5043d5068c655f7b77bfe8fbb4332c6e862d701affa2703722b6d6cd93a207f7fdc5860986ef5850962a55d2767cd8f2c3554a91b1f1569d0488a343c53885bdbc78f06c832e66f37be8c344a2c637ed46e7cb0eae8d5fcd37c2ab221d5ac023813804c83616cb9c6bbd38665cc9f9e2d310d1682821863ced40d5f61cfe71a2794d8ce679b595371351f54091057f3b9f9db7c46c1fc5923155b4ada86710a77fe7c1754b870a1a2051595165968d142c5a352a5b0904aa55c212505650514eaa4e47442a9020aca09154e4e4c5330994a3ba59289144c4c485120914650188dc02420287a824814724228f44df17d9e8ee7754de83a101340206e092f9fafbe33099a76e7bc534a02c417f701c4976e01c417ae115fe6c6dba6813ebe69ec3c4ad73f0289d18649dc9794fe2f57e826881a93e78aa8e4ce97de9f4c7b0c3e81855ffee4ed35b50fe553b9c9dfe426e5896a1bdd986dcb8b27cefafb6d28bf6d25e2353b44af72f4ca9d885e396b5acd3104f3104f04f39d2c010a74eb08f00af0ca774a617a052fb821487d3630706b2d85e43ca059aea30b60d8c2e394043e6c48f1c72a7b25bff9dd25b3ab800d530a2b5081bb380a828e2b97306feff6ee6e7777b72bfe1c0ae07fe905103c9d72b4b4b4b4c4d98c419fba15bacfed50c256f8db6940fe66fbfede690a20ff759d23502859125bf2e3536a73d3a8f4e6a6d18da3206feee8c65110d779d4e33a90d77d5e482445226f16d1eef3429f28d413679ef7893e1b7c4111894707498f153a48641dbb3172d3c3a3e4070b1e253b3159ccddbdc7a6877a273ac2ed2ee59c9a9c9ab66d94721be53810a8eb3c50e779df170a89be90480482a311091c91482626a592e9449e9c78f389e9e484823aa5a0e4c967832f0aca0945513424dd4d5c96e489ce8c472709929e2bacd0498244c6e3d3c35385929f2558f054a16447ba8927bd54f25c9a248a8927bde44937993c9727f28492289437a350d24d9ef41397281295225352bc3925c5e4493ff1a4a3a0782e4f1225534e3ce9289ef4d3c97389922932a5922a9537ab54289e7499225352d5e284d249812285a78adb9f52923ae25138145ebfc31cc76f3ce64cf8108779cd921f9d194fcf1556e8244122eb9bcee9581b6928ba48dff4122da46d787c7a7e9660c15385921d8e1d61232e4312858c31c1431827f638c37e28c042b846f65c410119753e1b7ca3cce567832f11bd92356c7161e955af628c4ea121ff0f1f7c3fc5f448d80484e0b3e2d2f27c8a3c99a5e750806cc7ad0eb639649fc3ab0e05e8c8b1f33a98ad8e1c3b39a40edf81893b6074c144569fa28cb52dccefbabb7a0f782b48238b05e4ca9f49e24a09fae93d277771bce5cc6723604841b47fc61890cf9d0fea610218827aeed4ec6c0fec16dfe9027d54e1ebce2f756b2279966977848c18e1082b354450430d7ee00409a070848f20e8ee965e0312ee76a3ce1a7e56c0e50841f340e7831bb4bce9a24003cd0d9a34414f27451b6012055a6b379aa66930cec6051e982118258104488e5cbffea71e1d1c20e99cd04112e1ca9605ec20dcb78b3fcc4d4679b232c0f85a95a147b90f41a0077d83e46ad27ed7b428dd42a1862864724872a3144ce8b0dc2893c3096e278a2ba1e7025d3e58c612b068c2c72589336efc81f280310996c11f0e80061096c12d9106c3584674e578a1624b7bff16b1b5bd3be8ba5fff9348836b4851146970142c83698c2defdd3fb6f4ead57259089757afc0e06d1a259974524a29a594524a29a594524a29a594524a29a504dd3a8d0318fea5fd0e7e78ba4eafe51dcb3a9104debea7dbcc427c300dff0ffb26c134380a2030a6c1392cc3ad172ec32c186a580a71c51faa7ff9b92b5cfed116388a90b570aba083f8c25188319869701296c13fad70f99d652ecce0c2854a1954545a90a1450b558f4a951a432a9522869414541850a89315a7130a1850504ebe707262f282c9549a954a265d3031217181441a6d613402ab004111152251480ba1d09785eff3783cafc342d781ae00027156e038aa84d2ad0adba65141d3e614e6bcfc514a29c417778f427ce96628b4107cbd6fe000861c5dc024bdb23945fac1f73e0441af724eaf401bfef51e0441ef7d8799db6323b22898651c5a8006577e2c82e4852be91b609cc5f66bf71d27aff75ef7871aaf0fb3d96cd622a3450bd5b36cbeb5aceaa072a1526bbc3ad4be2d355e19b5ef168bc562005849d5fffa30bdc15860bec17a83f1f0224507fb3a3c4cf350e37d51fb02a0c6bb52fb6ab3d96c160306ea45ab5760f7c5c3b426731728e6acf92c1b52ca624310b4b23bbf5bf5008a81622050ecce3f7d42f01040f92108860382758b879f0faa69d70e3f7f4e1c1e1ea65735de1e6adf18355e18b56fc783c752fb7ba81a8cca3fee8abe3a3df8e2fd59b583b1aa4c6487e7e17bb0bc1a5ffc9bbbbd3966cdd0ea79a83bd4d8ac1775a5eaf0ac5ae77f8dae52e3ce6f919a2cd4fc53ecc1e2ce2fd53aaaf3c1f9df7c2fe7ceefe68ce2cea775fea633bf63f1fc08e8dfa09d1b75a03905611a77c1367098efdc3bf7bedd74aba9bbbbbbbb7cde9e3766b6218f9622dc6bb04f388d4c231e7b9a6ebc9c10c0701a994f18611adb5c72fbe570fbb92080fea00fe7ce6dea4670efaf75ed5f7ffc8016e1f654c26d930e8324ed950dbe2e27144000e787db84b96b83f170a04fe98d69d0c885d01360fcd9646c1b6fa0e7368e08f8d588b2ad23e2e1dc2e015114b9db779124777bad3b1b54386a1f22def7ebd5ddddddcd410176cf255cae74b93f72b5e89a469ca53df72bb1057a8e230dfa1cf75c0fc0307575b8215f6efb8a68db9aa9d1c30778790d3e2c43fb69c45dcc86255c0d0471b8da532597da905e90368dfc00fcedc3eed1be877d7a34b7a2595ac76fb33eeb95a68d54bd027d388d5ced3beda7916e41318fc417fada10aef61d68fbc6b159d9abcfd25eb1d636db8d094fa73d7f738d5e695a7c1df125d6e895f6afe69e00437a354d7bedd90656d3adf95a6cf56befa35bfedae368117123d2706119da6b3f447cd9c2d8039e9cef69e69285cbffd3e273358d3f6c5d4d07d59c250c7cd6ad767f5915726efb2c328792a6b96fba4e44a5c8e535038cef3340d09ba50c3114ba46c2cd000decb6c7dbd7356d93359434157fc736bf9fe686303146eac6006eff00a6f6d3dddde577c72caed78fbfa3e30fe0f6c76e1b9b5be3798516b0a0028abbba710a1e14dc38ea7a9ae011bdf6fc9d6669669088bd8a36a4f17a2559ba15d96399a6d19e617c47ff34c2da1f7cddeee0ef6fcbe220e8f83bae1de5a8c7d1e91f2d9d736adef727e3bd40ca71a0f91d37bfe3388ee36cc8f7b341e7d3ead11a41208e4ea69fcc0ef93ef86a3e7815fad0d75c951ba770c28adbb117bb157acf91ee9861cee5077d07eae691cb3f752eff9c738a3e99edc14f667b81b3a3f4bbed6dcc07cda7944e3ae7f38328f540fcd472df7cd5f571baa0f7216ff7ddaca2ef2aed9547a9c773bdf7bee79abcc953944fa6fbd327d3bd405abd522c3dd87d36e89be030a9f34b9554c127d5f92624128944a253349f54576ec7795d057fd6f8b4cef909319f5aaf57f1c68b3b678c6943fecdfb145fef4191d7e387a4942917319fe370ce2011ce22a60d692e3f7fc7f187638a40cfabf1f2e77dc89b01764f4b238f92be1ba3cf8817977f06d87dbcf1a2fbef4f9fccf7fee158798114441fa6bd0f077dee3bee3b5eb9fedde09e72943ecd8dd7bf1bf3273fad2b97f9a70d160ed51d2c2c36e42e827cc84b3ffc3ad0144de8dc971ba7c869e2f2008afb374ec18325aef653fbd9833e67439a1b829eeb40dc144e2849e100bdf7de83bc4fe6fb6ef3beff3e99ef0582bea3f13bcef33e1c5ee57eabdcc7951bbf1bdd773675a36ff73f2a4073410fb2017aee41dc77200f54e377957bafaedc0ee4791d28b2d0f99cb7d5f9dacbaf3f388e18450419fdfbf3e2cb74c952befcc1d79fa69961d005e9df7a46a44510f71d4703f2e5ef6abc21cd57398bebd530880760d793f14271ced4f7318b1b4659eab342783f7f876753370670e70fe07a3f3dcf86dafbe0ce8612c4711c63b05f9a8efd8a269ce1c8ede1c6269c41c8750eddeef86e687687fccf0869c307dfee96e60150d2f93377dee8ef966ec176420fc090e54a90943ab099a2899fcb35608b001875a84072fb4baf438592fb1748b742be407ac5cf518e567a457fc6e4cb0cfbf8875c83227cfe56bf1bda936ce85de76c03c038850e702ef7daf36784f6dc7be5c2799db396a512e1718c2354b4611c77c518c936e49c2bd90833e17d3703147dfc6444347af8a057fbb0f46cf3dde8df2cdf7c3894b8a5ef1a72db70a507f7dbd3ea8359fb8ca877b31d858ff6ce4da47b1c777596759c259f52a91363c8e77600a26caf69ac3dca7c4639314e8752f95439a7572feec99ee8c497de7c7c24a3934cbe734ff339c02eb7f1e5bc076b0892d8c7c59d21a7358e945defbb2060c836a4ee2e951ea6bb962ca98abeeb2237b70740d246ea401ec78db8c8921fa5209273b5ef4e0018a72822e4ce27d5783bd6ea4db779216f2b79b79742620cbee995e47800866c83c334986dba65f2127c19aff7c998847e7ff0dd6cea86cb6fd61ddbfbe090f4e06b750789d4fdf1bbd1337cb71f1304a728543927c02e7245406e075c0e4097cf2f9f93c4590fcf8c8795703a6819d704b885ec732592d689710678e3c5e521447240efc3ee21dd92df38f165befc7e417cd15e6e3f23ba4f7fabd388fe22436ebfd6ff83ef96c3c4955c031c2bb72d91ef61daf5d9d82c1c2935c6e19b6ef1651b21a2db99783186a31b51fd3c431e952c6ac3289fd21843ca25b76dc8232eb9bdbd6642a6ad3d928d08c8ed98d951e3dacd6a36eadcde992a2374fc7409395c4ffd2d6f2fc127f2155e45b3b8cbcbb6f0371bc0ef6f7179f19cd2b69ceea808b3a2acdd45d0c515b07d3e4caf8608a2576c87b041f48a6f10d963b7818b8bcbebf5ea9ddb2a55ed9e531f511ea64d4c64549e63a2e36e002601a45b26dfcf30aee938213c5c4a27db3e60086e1f82a8ef2f9d50a838ad8eee46d2ac6e717a98ee62013a1b0e41734dad83f261cbdd425645c5d1ddb6ed697cd17ee3e172c31da99f6ffaed4397bbd9b065bd7ad9e0371ba61e9544bb28e523caa7589a77638b47896ac83621dfa09878bc2e08f4ea1a30dd7ac1c3872d56ab1a9d5543ff31ba92f826ea43cf82dec57720175c0d4010886fa98634b7f42ba1dfc1a66b6f876800304ac104ce8d5cb8518a1b3471f9a32f00f9b71f80a102ee8ef83c586ee943968b7ad4cb8a423d88525dd4bfb0e1a97451bf827a1decf46ac8726378f22d4adf8d16bf6d2fdf56ed63257d676acfd6d1c7cf84fa544dc50f5d6eea4535b421fad4a3de5453d10a21fad4a7fe532a2a567f544df95387fa58493664b9f1511f4f0ffed6a5c45a4fb786ec82dbdf42e5516ac883e5762faa210f973bfa94aa466a3eeae7abd4d4fc18a3b26d1f634cf9adf2f052f1630c9066752abea5c2a402e955bf577f4c4ebc135112944a84fe88d24f3dea5129d47d14901a4da82d7aa18769d16f36a4777b162034005f309d84bba86d99a77ea5bab174938861cb4cafd3b2f94892740b09f0434ec25d60ca86b4850dc1d4c9fed44e223329811ed52dd0770c18df8614c586608c367c94672234fe04dfc50880718a1e2c69407f688a1e5c7143bf7d42b0ec521b7a97cacb39e3e01e5471fb3def658d97fb6e70ef31f75ee55497b321bd1cfa42d1f30ed1838ca36f88fab7ce3b46f619922f72b91eaaae7b37fc17fa4c5cfa21bf9e4eb7e4fbed68118ea4579df55c87d2fb634674b90781ea8c679145e83b3b55f438163021384c1889424789bca25b3fb3a65bcdd775908425d70141d0b098d007a14c6dd83896b8d1547c76869180361459d791a70b9a0118ba7be5900d7ff0fd8ca046f46f33accdc89a0cd5683f5ff3de9c9bdbac1ca3d59a86c574a1f7dc775b0dddbbe8add14eeb7c0e97fbe9eed9d02fdd2ac7f5072ead9e4516b73f1b0dbbf47a36740fb98d702913e0523b438028bb1cc7b24b27b531aeb355d63cc665ddd299374dd36ed2840e250334b71fa43f03fa10880d59ee8ed0af9e7ed7953e4924128948dd83ecf72a3eb52b9c11c0f8dcafee0c5ffbc3ef111f11343764636409db0b3de8434ffbbd87f1fe3c27d5d227448c112a71497f027249bf7dcaa73e857a933ff994ef52a4573de092c289632565c31c975453288b63e5a23cca9b688c5c920d79c49dbb6306f4243f151163f8a39c982a4b28fa1f7e8f207da9ce903ea499f75b6467404fbb86a1177d7f3ef8f6f793ec4c12351ff000ecce841b88831cb2b8a4cf00cd25d90c8c2c0f5af3010f5cd0fe40ddeebff73ee4d999ce122181fc10cc073db531faa0c359ce31d2e670d666638c1185bb74b86bce9f9ab42438c58440be6649406342108210800e0444831a00e1052d40c213623141224f8e1c42a0c40a2bccc189d3fc10449780bba6059d15dfede97412c469dabb215d27add3d75ed35a7bee9371e97df79cf6dda41454fdbb4ab96ddbb6cddaa0bf55ffadae5ceedddd9fde78711dc6b968c37e166ddf793febcad56a38f9d3ec0b9c3f7f5480e6f6d3703c917471257499920f595ea3aff2b8ed93b78b1d84fb9c9be947dfe97b6eeba7d49ff3e69e6e281f72efd16fa30f5571e97f3ba8e2521df827e49fd069b485cde37daa92b7f26cb8b2e1dbeeedcae8b9907f4e21ff84fc13f20f0ccb8a2a2cb9dcb0793697571bf1926681363cd9aee142a11fa7f7463c2b9990fefbbeef1bd9af88d167fa3ed3f7e0e9f4e0bbf86e7c36649553c8f33ccff33ccff33ccff33cefbd4fc6d361eb566811c050f41b2fb15fb75a7954ebb4f7da1e5735aabd96243211f2cf0fc738c631bfda7715d46ac1bf795886f6fdf187bcf46744f7d5ad577737a9723c4de3f6cf88a5ef6e1dbe22b8afbb7f78188ccd73b26ddbb66ddbb66ddbb66d9bca67c4e8bb95f73941dfab5d45f3f4ca8aabbd6bdaddb66da382eb01d8946ebd6d3c1c8786e175fd65802f359d2c0fca5666a281d09eba8871e037904adf38eedd49d783e7468a804c745a58c36faef67e8248234619a2d7906896167a0afa6a1fba101cafe19b25272cc02baed656cc30ed96d307b557f96e50fb832f67c3ef8fe1cd003b340ac5f0b67a7a2ef45efd7294524a29a594524a29a594524a29a59472ff15c151a7d4bdc577c39f7e27c3f3ea3776eb141a51ba3afd77fad3477df03a343ac5f8fdd178a97ffc7da6f6545a7b007c375e5c1fbdea64652600e0d15afa1a274826a614edeeeeee6e9ee69fe69fee6efee9eeeee6babf94ef463f7d7f508d31ed7d1fddb66d6b6dffd27ed5f2abd387ed6a9e6669bf6d7cb76da32dbe22e8c66d1bfff0843edc9e6b9e94900d278a08a0e84d3f7af045a1ff6644d77b0f7ddfb76af9d5e9fb9eb68b63ffaad12d52cbe4bf0fa25ba5ff3ede8feff785bee52b22f4a17cdfca103c6ee24bc7978e2f1d5f3abe747ce9f8d2f1a58dc49756f2135f86c497befe279f8c7b35c61826e7d8f79affe87bc8d277c3ed0fbe9f0da70fdebbabb512494ad93c27cb634dbaaf442a3d4ccf66cdf035bd1673c161b9595149528cdb8f3edc1efc90975cedffbb616242deefbee995b15e69cf3d01cef78f69fc86e8e2c8fa892ffddaa350e188dbbe3d9bfa216fff8ce8b68d3146f7d4d41b7f374ebe457ff2f1b371f2fda290e845275d8da152c7dea846949d88d85c18374a91032aae7f364c9f2874f2fd7d6277982c8cf5c177f43186a88640d4b82d9b626483e895e6a21377e22cf66cf3c3514d5b48e7cf6e23d9203dfd6c9c7cf7f4b3d115e53b94e7cf466a86efe97fc8d0839f9ae1ebfdf733a2fb59eebfcf88d187ec8f7ed37b9f11f43ffb83af6743df61b248f44a7b1f7cbd518dbd0a891eac617cc3d544d647afb40f5d5e359ad5afb5d63095cdca0d4b8bc74b2aa8ca66c99a07b5d849d38200eee8e7be87bca0ef465bda4597cd7186a4cb4211b8425c1297745c02dab9b3c31a37f2d00f5ba817837f9c35dbe5d436ca813aef0b89c011c9a4643a4139a15252aa162a2e6680375edc1ef2de8ac80edf43953da457f36354168b53048a3b714031504c7a306a0fdfad7c323dd817a8f5a07dfc8678e1c5a82c2c1fe3fb3b160b0b4b84e95595eeee2f3fe3ddddfdfbeeddddfdf5ae7777f7d18bdedd5d88e9ddbda75b3d5028efee48bad5a305c4bbbb7b8f7ef71e2e01787777efd122f5eeeeeeee2728bad5e387f71ef5dddddddd7bb47c8f95777777f7956ef580b17a77d6fbf3f0c9b80068f8006a702f33f8646b690090dd6d0002a84183f3af735317ef4b8d77c66cc6ec9bcd5eddbbba5207ea6433649f4c36f217b989e855e375b9466e62f22613922824728d602894d1a82fca84d20202a42814455dd62f442f6adf8e1788582ce61280107d419d366d91fa502754df160178e1a552522f6ae7a2f6ad35c65ec46231900b1517b01730186c85d3a1f65da971367b182baabdd05c6b19ab878d15ef6a7e8c1a7bc552e7773b7830aaf63d6cbfaa7e65ac5d2d038d9c8e5cd6cb21ddead17ad7b3de97b4ab69cd9542664b5c560fd17f3ced72186c06eb61f57079209ef50e45bb3c1645cc91c4925c560f931f3debfda65d2ec391798cf52ea45b3d50de7445bb7c36c36289d7f4b07cea59df3a4d7740d63792003c4bc662456250c4a2b8acef18eb1bd62e2993b58dac6f644b7cf81f9ef55c45bbe46c66c5ec8a19163c2ebec5b32695b19e9768d7a44340262eeb190a19dff2ace71b1dbefec986f548b46bca9c35ff64055805eb8968d79cf15879003ceb8778f13c7c1865e0abe5a4024b97c5fa55bb34d80a8c8ff12c560fbf7ad6afa40c0473d6fc9757cf7a067317379bc166b0192ce62e4e268bc962b2c971ce39e73e7317c739e79c4b98bb289554522a93c56431594ce62e1a8bc962b298cc5d14069333989cc919cc5ddb6c069bc166b098bb36992c268bc96232776db1982c268bcd99bb36186cce6013a6c17c3ea520389bafc5dca5c99c753a8160ec4e0ab6ccc5df620d04a3f16267bc2c08d6b12c08f6897690c9bad5216917a87b98fefaba6abcad596b269acd80f8dee57bf179dfc334276b7132112763c946ac3761ad88427d81a8f1bad4be5c2c16e36226d3a3541d4620cc858399b038588ac59a90603a55e365a97d4d355e94596ac69ab1cc0280aaa692499692b1642c32ef473909405f1aa3b11f7c70813aa11ea6298cc2288cc25ab85049a5a4e275513ba6efa8d4ccf794392b15a21901008000008315000028100a07444291582c0cc4549b1e14000d84ae526a549bc79228c8618c62c62043003000600000000004a50d00a231520520eb98887537c9b4036274f27c49711e99af198e8ca9b05e813ff9b00280625312232bee4ccb664c0f2341861c21063e4c2de92f4a84e7059f16e3aa700898e0a372018a8013851565758c9d3a637cc7dfb56b63319b9f69821c9941eeea3160e2b4e0982bd078a20706b41a35056841fb4c39dd6f721c07ecdfb75757b0246a164694e5c0bba1961a9677d80fbcdb909da73620a26d09d75bfade748b19cd7576a13c11374541c18f931b6a54eb2c07ae01cf864c4e20a65fa9ae2f1d1157f8f25c23ca33e5e1eca272577530754d0b0b2d9ad2239aa4cdb6aa715ee1ccb379e38fe4cdea61f73af7d209b4f9a9a12881fdc8eae1a86e6f4d6ff3f54b4aaaeacd293566cf43ea9210e850812a3ceafa4bef2719e9c91672933ae3ed2a864db9f44f340ee1e86fd2f79b0a0f30284c39e822620b5d80d09b80896a7d18126256cfbf4837554281308d7716c2a4c2c85a1cb91c2c0cf9c0cfc3d7b84a63255384a9ad75e9d2ba70067de5b94c062e0bdefeeb5c5ac37e2bb4cdab1cb477dec6157abe72370f6e91520d8ea6fe4fc46c203cba1aad8da12891e3e7cad99c20a8fb058e0245f5b9fc8515614bdce70fa63b3f7bdfa8c59f8d6911bcfee2b33b83fb881830904d98c836625f7a841ea5ffa3491d976cbcec4ee58ebdb08cae21c5c97a0d1c1bf01fc6f98bb6699a6a9814571ccde219115308fce57454461c1980ca7cfef43c3a35b7680fc8ee27f3f09aca844bdd8d00566b9fe85e68ad1f1e9e755a0a3f258454842438b7f6d5fe80f6dab68f8b3ff7c5b99cd2c1db4fa52b07a38abd5ec1dd2487a8d0771db2d696f622bde84f28a182d93b3143ef505d214a2ddc6334022fc0dd342eb356b168c3f9dac7a43a573434c579693f0211ed9234a3d452ca764b0ef660193b6929bb4305a962f6d7db9ea460c6a0d13d930f548ca0c47a5abf6846fc4b08620aa4233cacb901c183b5e36f34fe8ab8323b17fabd9825c59cf30591076eb4f1472466f2dd454708e45047916ce86af8b2ca82cdbe745cba2aa6b1dd1a0f49e0d98bd30e8e8851f7eda0f05034d52f2c26f4a11e21eda5befc36c4d14aef7851af71666a70b46889726d8f5209099210fe9e481952aa3c0a13699a9438e8efbd442b8f073e7e98a9d53717af31112b724f090bf4fac898746700163914134184c9b376ef067a74a8fb4f1e584848af590127748957356b359ee929a8f1bae4d11cc75a8a4b9c84ab4a0c0e54d4f04cba0862c31cc7db767e55292417cef8c5d321cc67eb1db98b1d2ee97e141f01a3f8f3efc66244d7e44f880e222a52e754563effb4c0d71e224e9921d2a95c218dbbfa1259aa43ac7431e460fbfb016761fe5e150f6a1b324eeee308297ed3555fee3566e68be9013600506120fc3a1d686a2f8559ee7056c11d8dd8ef89157f1e95871c2b21dfd96919a87f44d948868bde259ee6448d97b7204a9d6b10a5e1b00078ac88604158f45f1a9c12f3081bca8a8ac0ed0401c49d137dbcd3c9534e6cb4ea52c888d52432598450ee489dddc3d97a4d77a807bc4dc740c836d91751ccc9c15c7c92839e93250a1843cce4d95dc52848df8619b4dd6f7d4030b9d207abd5023f2cd02bc418b125130073f05dae4de134056a603e7dcfa900841e5fe5f32cf20d332fc8ab955d41dd13b028173416a60ec90c4cbb6f01a1d0c3dd87528d0b4b142b5390305e6c8cc2d568e38dc79b8abf0d500f644a8dbb1815d153541ffc9ea9131b6a90e179ec5f6beb963c907cc5b710a4eff1ca18c63ebc53063412483d55098559a2a2fc78eea11f5defb778283218538223c44bb75a974a783698e9ec2f91ce0fab8aea2ce215101795afea022b208695722bb5d0daebdde0dc09d6bd4b57f5b19a8a6ac312311e54cf6fa96e3320b2d654abba410f7c461a110828d59173d463419feb9a446e8b00d4168749d178bd704b34d04c1e3a65dc881a557cb0d769a614919dd1d6ac3c57c1811de1a255907afc3026ea71777447c7ec5b49dc23b017c433988f9096f04e4bdc1a59383b1ee747daf2234cf04a2d2988b5482d22bcd5d08537c4cf28536fca795c2ed3701c7e3ecd4497036b84dfa230fc4430fbb6fb1080f9a2d012fb366b7b5157a922a1695e5095740707787fa4cc9d53d8ed96a552f16ce60014cd417e12da639664d369d1d9907c82a28bd33819a93d8a7d497a148d977786ad2b0d7aeb547d3d9c1bea968fb6e9f65ff315e440d5715e05a4859dcdc6bd6aa422f5161472e0a21a76d4d649bf4c9238f1691bfabd6d50ddb5cb47133e2490c31551af2290869b860f663c0f3cb098449f9e0cb1d8ac51c8530c72539af048c45565b716c22da04cb0de596939ccfc817f81388910fb535c88c82bfe127ef0d914b623b59c40e1dbb7420cddf5aaa1f65fbb3f00b64a056b26fe49da369b96520bfff5b27673366db36333a9bba85bcc4a313dee0f41e54bc792fbe9cb59a7c9bdb90d564315078901e1428300ba4dbb7021a2ff5e056ddae30a53f3597fd103e198218731cfdb5fa89afd249253a22346f114142e7755afd9f0067b6e39eb67d133d16500f5eda30047dbd0d6fc09e0beaea0bcbe924d0b58e1edb7c2ccae1653f8b75cb7f47d28194bda380fb3cd4e45091e03362d5587d26d966f9ef14a826cfc1712da7be9db45d73d44663e7c64dce9a503ea8afd9b1bf82368a52d137a232cd643b825e0d64b142b014bb6f35e57943674eef6c4c825d9b053e2eb3389aa4f6510126281154c7b956321bc86c28484a1354a53dc61583d8760426768d0a89838b84555c1087cf1a72d0cd226464b0c80305661d171c56f949c32b6c5061587a0dfea248e9b71d3b026d91c94ff9713816c6c444d705d3b261e3d120dac619e3034e91a66905b21dada5e5060141c67bb49a35cc8bf9414fbbea6c2d83dc45d85f423c8ef0bf121afd93467540e2558782c4829481315fbe3cf2bcb6589ba0b2574e7f1afcc6ec3845ea3a4eabbb1f4b59ad626c244a920e6833730c1042343944608d4e3b341007f80bb19bcc11e5fb6b4d65a93381e50619439ddc91e6ac8f9faa550f01af17bdc80fe3571e65fa118a4143b3d9ea2e9ecca1c2d7c56d3ce53414a22665a8346cff569684be4dc0572b0337837fc43020a428d30ad41cf5c7012f1e3849cca5467e87690c32ea3fa74fa288065b04c2405d00893f41ffe2aa4dc2ce644068cd582697899dcb4a8e00443d80121f1613a72666f3dbd3dff671a52a651bcbbbc4c4d014a51429cb98b0cfa31c7f152d095a21ba009a938977257d75338afda82b15e9017e8f795e8e62e656755bac8f21b2b65e5675119eec63f3f5cd7062fe2917677b09f74f9a037a405c01d1acbbfe8af5385b7a0a84a31a921178ff380fd6854ffb79daf187f1aac844c04347433721204bf8fb2ff20810a3a8860493cfea879ab036a86d96dd7dd766dfcefb1ca929acaed67d5ffbc48f4e9cbaf6294542648cbbff0bae16c0cbf49763976dc91a8bcc9c3a71ff4ca6d7adc37c2a7bba0647ea8ab10ba813122969d71b9017feabf07afbc89ed814628b630ee6242e92a5b52e05929f9385d65660ae4ab807dfc5b371448571b851847fc7305a879eccf5391f4fd0e355e49e57e47af519ddb4602544babbe3dec443059d0aaf5af1dc1dae8986bdfe811183bc402a47f9d624b163836fa1c1ae3c30618b4e476ec313cbef505565368bb632384b45216ece97efdd4dcadf311965fe7afd6fcde62181b7f1b10c10d248db25fb5c630abc370bf9deeff6f87afc25b5c05c4218035a60093b403d25d0049531410e3511488ef1888cdfcfda9f2f41e4523737dbf37dd5687a46c8b61d37830366fba7f1debcda535cd9248f1b3e9209d5d6cf8b9a06d07158d796efdd2620d2a0518115b38721af2402d9242b28d7331fd6a0bd45b4004d11cfe08540a0b4c67c3de11b4a51c81d78b1239ad1e65c116026f25b7dfa6d47426c2adcc064853735adc1cbf99f8b9f7a77ad33d88ea42ecc9d4a15eaac6edeb5ca6e6df080463212147262b8e56b172535633eaa8e26cde1bccf5b810117564c9159dd6253f4b7533249e7054206c548b24397136af6c509a67e9a2ee91485d9663a6bf26a8f88e90fef770b519860b40e7215efe77919c60c2edfac345024303c5bd54fe16e719ab0abc545ae9887ca87c941e1c5a43e66486c531beb873468322d2d730e5b64f6718b583b59a3e3655e7095dd2e8629b77f9986dac3c79ea427b07a41a1018645af5b37264905d626dac41c899de15b612b7c7defbd110e18dae12b11779f1690f76ad846973ad57d77d70e8757a755c4fb4f815b75efe2da7eb737b22499eeb56951838299742d7aeee509a79db2541ed394b691a83888b481b4b9ea857cdf43225b31399105443352ced27bc516866c4ea55f9cf2dae08881c9d749aa358d17b6f8022fd386471a8ffcb2481d7a26a2b73ffa15e13f94066cd10f2760e7b31cb3c95ac13e3071ab60166cb1ca8c542f4fc6f201d1357794d8114328c5688f09db1815e0bb3dd145892621d2628e5c53f17d74ce9ff65cb65fcde01d3e61932a52168e8be57e2f6b10f365ab304bac3a150646caba4af1162a87285d4c4e8444ac10a2510ffc586664f77afa9d47fac2d631d10927ec6b6635792b37c5f02a0f093bfff8e29d295aca5c04ff4c3ca904d77196d422493f73be89e590111fa84fd26ea36be1497af42f9495bb3184a1584771fb4ac79dde0f655737e67f4d14d0ecc844fbfc5928b6d794f5f1a8a5419522cf2b0d5209e2d8189c91666369114735c30bdd2b0368e8a83d7f3dcfcff2f633cb711320f3e197bb2801d9ece8a7ad028deb1808e19b34e539853937fec121f34e4d2a7363ab0a82206c0032eda13bd3b90918d8870f8d1985a6252ccf44982b525825de133d7a186067e5165e58e010a6b8d22de0e42a863a47102908ddd1323bb0c7355637e45a81ad07a1e5cedd0e92115bf14ff8fcf30739c2eff275b8add89ea4feb5c1a463e87d9093e5a0c877777a071605ecbfdebb170a52502369d87cb00a1dabe6ff313cc3c5c420ca6bee1bde1114031827cede2e6d1852c8d12b1401093fc5090e3c2a8d81cf54ab092e2d860f70fc93628024a21d429160912b4fbb65871e4301c8281975128e763404b5bf7396bfae798351a2adcf85592c49609f5ae9f640e748a012a5952efba1203f67752caa07bfa1a774d116581780b4224a50f4954490f12a9e4038955e2c1c42a7d50a24a7990a84a1f4ab4120f2552c987121f4a2e3aa01b12418ac0d8c0a6c028e103477dc8f851286563cd9a69742953e2ffe46b28cc086c735f533577357720c4cc26089eaba8b6502aa2d6c1f05486475fa05f885c8f0c1bbb17b448043f6668f5828e56c8bbdbaf7e88a3aaa7ffd8a572a166c7cdd4bdfa4b15e600efc5fe85649c07194ae512c665d1522a9ddf6adee49d9e4b8a7047b06d67bb1d63565493b40a6ab3c6efe65ea179e388ede8cf706db7d8b16e4a529fd4cdc996d136f1326a8d1f10acb9b28bdc2656f66a798dfc23986e8c74c224cf72133df775774e13a5a9be0682ba93ca7cbda7cdeb252f288079fc1cb92a4cf31ab700d91985703411303148e4a5eb024cb396cd6b8820b6bf05a5ecd4e665aa0d76a6bc463e226b386b20a26ef118e6e6c9c630ebc0baf44b7f9a95d525af39580827da98294edb4bfc313bb8ceaebae8beabd63cc4d8a1bceef379b6e8b8eb28da08673e63f1d64c50b0790dfb6d4ac562ebb2f7c91beb6d05d88272dbc6ebd6da616c33eca58ed2d985fd0cf648954d108fca7e2736abd6cd27385f0428f06cd1a16696b49d184843e94cc3dea78e60f4171ce6c318b1d61dfd9c21d6cd7deac9b5267cad4cf5e1e82cdacc4d7878ebb8153d733f112ab12bc08aad351b82c1910143fed63f8d30decb6fdf0af988a1eff2ac6432fa1443ed52edbbe2330f13d8cbced75a0d5d689880e4c5a5ec9f52da8ed2f988b98d20270fb4fc10946e65fe61367d3182d90faf97b8a1eec8eed60b9e5d713863ad419e921de8e8ccc31219998504c8278e457e18eb32c87b53277a9a7bb52ea5651ea661ecd9b5561d1716cf40beb4299bb968769c745b391f717a5caf5586ae697fad0e95be2b0e3cac76b0b7c612d8e5c0b1ce673d04cb3f9bd0327a2ebba46700d969de9a703de4651ca19522959a489b054caa21a774563f0521a358827eb476a509d5e14b87da801fbb665ff25daa542ef1ac91a79d2706898c7d702f73210a5c6356865612bab01c7a590f95e2bd66270c8d3b82e4e3808bdc266be684d2ea30b2dfb730ca924c1b24055c4ae7479d44a26cb96eeeab6135a6214550b0873b4b9670bf4987bca28e7979213a1dbea91b1260072b8a489840ef32ad75f0a1690514262a8a41fbe2cb1cf4053960f983a2ccc3fdc84515daef4cef402bae053497e8808d62a2eae14fb4e25250882509c52f3a719056d5d8cbb8abcdea3cccdd3f852e11c9910cf809b14db0363c39d8582fab248918c452a7efaea3dc5a6b722370f4308a20d87dd2492c165db4958cf4c21db6652dc9b22cb5aa23b22c54205a905ba86b5a2bcd487178d646a1e6ac143a20960d337b964e7875fe65a3a11c0cb6f6187a7f39193ddfced7ab264cb072c1357b88727094182d981a710faf51169f1429050f2bf4f6756fe3ea9577be13604ee9f547732a2f69e6a461e75d47852d78ffb81975d97ed3632594b3ece261768a1ea5d0c5e1aba1be3d252f1227db34cc0adae451f8ea208cc3e7b82949982a3edf201fd78c9caaa47a114562091e25c65070f3ba86e70dd581351aaaa89e75449459071683c9c329609b2639c544cddc003a82cb2c215449adb440eb062e1be503ec04308a217aa0728dcf78e0fb75ccf311fbf9639d3c3f9b998d172e1c86c4855e4b712233a2e7a4840dbd99a1c7bbcb951c76eb3a86c776ec7cb0b9e51d307ec9a028176f63edbdf98f5608cadcbc98350987cf990cec24478b1eff10836e6e39e4408087ee50b1a4889bd6aaee96172c35f31982fe24376bac3fff2088be42f610eb679077379829bbd543db52bf06c756fed747dedb5c6d18e5015883850608f689e8e0e38e7b6f73eb0d0ed8957d9f1a9a951990acab77e376303ed933ef137ec9792838072eec2b348f9587167a7127278801979fa6b7c41ef0c2b652f60ced497c64f398c87d21e214a41795323892187ae9fb94117cac9552dbab8e1b320d1e375352f552fa42e6838fda1abfaac4e2a9cb977633999a4efacacb04f24d59bdb720286baf0cfbc924db316faf057ec5c02fb103724d4df2c2dccff9b29a47eafe796a8893ee3ee93189c6f1c163b6c6bd486db0308a257d5b1ceeb825681b2d5bb1260dcd261e3dcddfce50be7981560e324858084c8eb184533efe98e7c55ba62802cc75572e03684ba9e27c11bd59fc1a189474f192401bc6f4a00d8423d838a8b9b4c8108b44488b2f3f27769c4fd81ad49d5db10a82ccfb97318a88b5096321247d2c968cac4d6467667fb6416179349600c0836a5ec975f40b5292b3677d20403e95f6492b7011cccefbb57ed7dc52b3f52b43a94a986696e18b377bed8f06e7229e4b2dc3aa22038d1b9fc3c5c5392671c38772757a2f81142d75adb5288e9dad0184efdd99bf77ae5649843ab1ae708800d7d88b8bfc7af09e1593dc7915913bcca5705d791572b0f36d7d9f4bba32242c63a030323ec127e878be5f503ee4bccf65082bf93c6570e566c89785908a284879efd4861223596f4384204716a5e9e9a2a5afcac2beefdffa1f92604cb79760ccb047f33b1dcc6cdab0425d34722bc56613b3f9bc612903b1b96ca1f80fd797dc36a62d603920ed0faca156cc235452c4065d3e43ce7fc813755c7823cfb8738ade92ad3986bb8b6687793990f7d486fb90a09a7dea552565c8db4061d8c2ec284e9a4345ca65b0ab7a86010a65a698011bb51806880a909ce8c38b9955de824e8e5be50dfcbff3ed67e981bbb6ca915b26e62c089d7d0ab01908656fa72902675ff07ecec297e4dbd9a4b5b91c65532940a13edc1f3e08007f7ec98251dc2d86f1aa2e33c03b9f83d5a00927183e307583fa5d61fad8285524d0586623a35554d8b2cd9504647376ab7cbd1f99444e33819dbc45f85deabb2af4e208187952615fe8d69025b573f616ef2119c2ebb0be7f9eb10b6e75115394f37ef1a6ec97adc57213442caec24f83a4279ed31c9ea35f093e9fd7cfd3d9c774ffce2e54f517b757805663805eebce22ee52da660bc06b91d35593b027421e66c8617631b50e75ed192952c5d923200d7523e4aeb61cfdea4faacba33b0b47aee9ce00b49b19dd3d13d3b179d00ed4e731af12f0d14d05198b3fc5802d80aa14e44cf84b0b7b07d0410cfaba8b6d9cbd6924a978aaffa3bdb6755df0b2f54c64decbdc042edd864801dfe76f892adf580a7082bbd81fcb025b7247a3a719d161c2dbe43b80720e8fcd4059804c24b941cb0fd7379dac819238fb60cb48c76ba637a1dc843ca29b969112d9c1ef705c8a3e0fbc557069d14cc54897cfc969ccdcd9bf47dc02cd83a0ee869c880632650d80100013285b82b0a803288687751cc3df7d078f36e17db1c9f6d56a8e48d7bf1cc9f1079889277d0d87fe61a00198527a343a0433df887e0df25b6f00c8d8f33a8e0fdedbad2f4fa48a512b365d558727fb021378caa391c9c0756130c4063b24463d7d34d867b106fa623816d95e8cdf7dabe2a2362eaf46c4f48e8fdb20e98dd54c1b1391d4dd910ecb2237e7ddcbaee2379b371e30b4fde9a6704c22c6f490c7903c77481fa0404a7d1752b6907ff986cf2592164d8510d7ca8c01e40e00ae328f41d23fedc9b77cbf3fa1ebc1d833ab34e622541ae9baa1cd5dad7226367aa270464cd3b7c4ec5090da248c2191106d2c989e93fa96339dc83377370e797019bbe59c3e236ff552aa2bf11e2b5442beeb3faec38768444a9da1e2ff78f8e08dd15b383ab24f8d25f2d808cd05a298f2e0315159e75db8bce71603d5d7bbc7f65ad69ee7baaace40e94b372e001cb81fa8010749340366f4741cacfc10c6091bbb50552988469c6f15bacdf038e27d3de158751b0a0f84f814e2b6c846ec4fabc00c4c6554d57cc94495c5a1cb13142b230617a124f2aa233bd9034d4c3c545af368a2bc1e2cc883c89fdf9b3f2f7e793000c5913d729afd22ca09a58bad1c27e672a206a0f4be1a097be22b3d88b4a18238c0ac39f0a6f4636e794ae25681f1e9c0711f63618c0e57d66860b9d74139f508b55829d6155acd6a9ea87d9cc8c8caa61c8f8145f1b62a443eb2d3625a325bc089318b64a819bb346c6a120ad6dcefbce48094836bf400269d5f3a4025fd86242404fcf939d4469fb7983607d86dd94e22904682c591a6e47e386bcae2b0dbeae79aec6b4f63d291f6f6977173335d785260347fe756a1601c8ac1867284e53976ba44fddc3b2b5b60ab251957444947ce8a116c711b5d16916080c798d97a19d96da36e64854c3772879a667aa253a2e5617a11d51d92a339df33880c311fe239aa51c0aa2e368ed23ccb9fb6da2af6802993c177094545ff50020bfb807ace14c4fb4795ae195a49246ec6dbdf4ccea0a70aaac535caa465beb0b0cf1228bf1510f904a3ed4a6f640aa67ffed850741cc731e16890ae3164171f58de8f9e66ecd3617f12c5d49e7132c0976661598c13384dc0c15f76ad6bc64f91218a1a5d39b1c32f18600ee9cd6c8d2acd0ebd5c29ef56d01d269ea1cd1039587447d9b823ae75c216eafa015902a346362a2076cc9aafaf93a12f710800949ef7027da464e7230a94063396494fca7529ab445de5dfc20ed0e5f805b3ea5eed05c231eeaa1566671b946f230579f9c1538404dc44d829920c5bd90e09ed04a7a0b2aa6b2c56429ef4678930b07f2b58e381a450bafd799ff87c513d7f4023a41f5b41bcac5bca7976891e29349e32051e0d02db67a55a219b0394fc7af96e0696c629b84ab4b4523be8523240919f6c6f2aa0f9075720026d2b7385d41ebf3da446d57cd34da4a1e827677f94699b303a8cd868191d51e24c454ef8b8dcc1347aa401e0912a4ff1acd91f0cbd535c4e95d39d98415ac98fbc36d1bbe943a9796e50b1c1ad6926e636a6779d6f3c474a1277aa852cfccc9e8dc47e02cf4134b790a22092221a44dcb3b4ba4522ac77ead6c177aa6aabdf1a69df5c15cdd4782954215dfe8c4e1726e273a5f7ec7931a53893e62bffc307d65b5e137ec08cf27400db22005132374234756d9ab3af72adb36d23ae5d822f4805e3b2444fec5b5582413c0bca586ead8d31d025c5b0fc096ada5f06e90cba484d3430d7f74ec538b435233b6166aca4a92ab8940b55fa67ed07cfbb9c7b45cd021622c1e329b1887e658a7ab91160b39b92ecb2b3f0ca2dce6c185bbce957e9ece79cebd5a68f7afc3ef83c660e0ad1765ab3852b3ca5ce923ee9b4ae72a69fc7fff1752cf35afa5b3e615d967b42aa6e8b4f281f96b4cf2a0d2208a9d8f6201261bd4aec0c64e6984324148ab4b350285f1e84b167895b405f9a38c28c0996757d0a7c8928d6ffd7d12c833ee91c411eb2a387b332a3f81410e7c185dc1b4d2a982700873f639ee6b4be28afb8121b86ab817eefc6074daa1de067e51ff16121b02aff2ac266290e0200860ea2a19ced94cf62860cd8cb5e29a15fac253d773957beb87db56593e73e919996e7b3801448e6e8d2c2ea40b9b13f5cfc942fa9926a1b306236f48cb8f6ec31186108e297f3fae19e3a8d6a726e52f6e93d0836abbf682731e1ef3fa05e730c3a3cdac77e3b835e2b2e2dc0ae72736c20ef4a9fd9f6355bb01434ca962aaef0f85287718d3fddc9d69f879f98dc131fd334ac78d0e084dc3e93fe3a9f6e8314479576e61324f524e3669c0b2ead44b5de37bb6fee347ff24797600a8899b86d37a486535af13d7d9a86a0e38f1879af21996b9cce623a5e4918476057cb836819b2fd0050cafb94f0e064804722edcc6b139e2b86412756c26fb7ca32fa8d1e675816c031ef0703978600abff2c14ba83230993f9d14762f33c480c461d1e7d92770deade9e4e30036517ba618d03dc88cad8fadca88e9a2a32c0da567b470db69656d5053a88f2683a4a05c5a149bf6b57028a3efbc3ec24b1f7369dec24f55d3ff184bd899bb93dd0c45df8f9f1de465021b14d0de68e37d1c18130fba939418cecdcb3ba617315380ca0f7c32abaf8311ce217500ca63871890c872126ef6a00106d5be059371b9f5394d932b8792e9ffd3720fc201ffcde241bb3fdd717b012b360ceb01e4fd3e727d2504fc1a8cc65144d7471e57362972811cc41e906dfb69a3488774bdf2179fd42be869674f3fc36a5ccd7fecff1d62c607443b7c49deb60be60433b07ab2e5c65b43ea43e1e93dacd020a718e1a5c4e2f2d913bfa0e58fefabf074660fd225e3a008ec56d3a6644246cb9e6c28dc7a184f56692988559e6f2e9af8d734d4a176d73b276130997634681b103bca0628bf8b9e21e2c199deb0bcd87eb7f2cadce7d74c9f2b2b1924a374796aba23488051ceaf2310010488de824434f7e32dcb06f7c93d7d79c373fcac66e22c979b4ea64dbd70dfbf920214d856000d49c6fc0ae87b3b640087d08b941b99e8d84ffa96316b6651e33a9c56c76d4873633908f318f4a3279adb8096e7a80e683984923ebb57345963e48131c36851a7d759bbef9b3424d8eae5536c6653a4478541da0093e37d0a7afe618d2a5aed826da0401980268a02ffe017ef06ba03a2d9e606ca055eb45714782547646330c050972c1b867c73cb25a8e7d0ec5311de32d5674a20797ded90ba3092f6c886ac108062e53cf9c853e849007e29142c4632be7a26daaf62019ce6be862ff84947578bb6499c587ed57389131f977208ee36e58015f7d19fad2966b11b98055dd179abbfe33b2740118b558704615d6ca230bb502a8352bc24186e6fbd3a4c97305a8b0420a8f7c400085c9df6eb3120d883a912d2d58800a7492a9280ca7281f61e4a7eae58021108f3307df080860b284bcfc476a69c9e315cdf481fee89bf4bdc562b51ea37922c94f79bbe14836f9288d6d2a2167de2bc6152600e3af84729c508ca1b1b98d61428ebe320872c3e51318df7702bab100b337c7cb15d2c059ad352de351b84cf2dd013f0f6cc108ee4fd86e20f024f443d2f93496dfd193823c9aacdeaad9e50874c9c9b1dfc4e42900beff48ee22c554da0e6192a38c4388bf5df771eec4100681ad04caecabd974140fa83e1393c945fc4830efa52f2dd0dd48a839ec26ae5a8b7d5d9a5daf4790ba3322176fccce45ef63186caaa2a4357bd2b6faff13141ef2d1ee97fae549e2ffa057c5600988f1d9305c6d54b860514103fd2be81a34302f3d206621f85069662702889b116ea83a57fc17a292b9643208e82a40e927c45ab18438b4fc9c8ea6bafc2efdc620678d55068225ed0cce5b9ea22ddfa62982f4017f2f6e1679e76e8ca51ede3c1130063f40828fb3551e63a7e8ea16201e0a36c7ae9b2074f71abb8bf7d641d00057578d3cdc1324b98420c3f752912a54a35ae6a6d22531c748bb9fcb0272104c1a7ac5a245390a19c3820f131d374ce157829b435b7b18a531e0643d9ee5c5dce37f2d90b016d30ee39efdef0703ac2ced28061689d7b22896048a5b69aaee2dce7e04e13f73f8b259c4546744ef6f0386319741260b3732b9f0b1f90b28cc1a14aa0db12afa01c90817e8e6ccc442dd5db2b4e4f5a4948655ba55012ae861286bcace620aefe147ce2c195216fef5f8fe9349630dd045cea20ebae71deff7ad9bbaa6209a547ab4604656c3b08f5dcaea719be0fa0309bd555cbebf886f3f8fd79eb31417157d1a2bdde49fe97ed386bb7de64162f1b7982502761b0099b2dbe1e03a5e27390c96cdfbee6e21143e8b53593eaf5ebc98caf0140e5f36d3855a0b1b9a620d7a427c326c98e7fd003a7c90b89c489acf39d17153fa727700addab475ee4e620231b1233bc955b732335c39a3762849bc53d1af490586290207e148ebe7f535c6fdb9b4aaa3fb889c47b4b9e7bb936de606af39f70b3697735bfcca5f20bd8a2bcaeb973da06b55cfccb67da97c6805c0af29c511f83cbe0b195f4c4f28587f6dfd5659255286545e34b95ba1ee915323156aa6c097a30341d72a45393d45c0bf4e7caf633357c0361c13a2fc2660625c6d7125bf2a8606fdba567389ce9f2e30fb62894198176d502d40e58e2f2bb2acae154edf9767bed166147a50ecf62f55027ad063b1187fb6d3886437f35d07ed2107376a789155490072879076438a15e773a255e0c8ceea332ab362eced93868092e9fa862e8121991f598b5eaeb5a32791d8843ff95120388241d31164f775c9052b8b083b524cb80fabfe013d368a05068de275f03c26e11e7dcb6ad88b6d628d87d182a3166d3671c19bb66b72e2f8980344991a8cf1d5a535e3750e4ca79419ca5e16023bd175fb3e7cf5956c381176f4ed0f0b45665359251c30a85e8d24f3038d7acdb52d84408080cb76c684318d0c4196d5be34858a953b09ad926b05a5d0ad26bed445cd7d98562b8ef7487b0cd473139f521338bb1b216c0aa6e2b796080799d8414b05632db3f891157e659a61996af92ee140a48d17beadf19a854ed62055b959694b409d192ec2fb2a32187cf39b9eb4fc2d48e1b1ac615b29260069e4f3100e4b50029c22b104ba97fadcd2a0ec0a1272299373c49fdad352655db1c689c2d3ccbaa1bf5aa879dddf5385488166f23881f76a6b9ff18357f084a95f8f877fa94e02ebd8598865a93d4b8722546c0542b72c31033b726ace01cd1989092a41d7f935952488591bb63b159149e257279d1977184bf2f21074d95f8290b4b333999da61c5dcde445c350616f65f0d0ac24c36776d5710fb464d8ddab8117b835aad5d3152200f324948e28561e09d14f0836cd45072bdd39f0fe8fa675afaf6a72f6891984772ddda289f0dadedc552a5b2fa80d7cd0668576ebe480bebff72ba54a86d35d7001b77025591a3f3d0759bf78e22e78a4fdf8aba5e8f72402a2b69503b91ba3088a2466d4e9ee61e333ee04c1dcfd0d09116fe55187ca9779b9aee4cf1186ef7d06954d3001ea9902f31dcd4e9ffa0974ef5498a84d8679c129a789adee4c45655bde6944ca4c916e228a4394d6b44a8c97783dc9ca732e90399bcbdd8408ba8882a3cbaf378289190e5ffe4ef75e792aca47490782853ff1c4628426f4c69efe610e37d220ce4769bfee5e118d1c6372c0bc7317a1dcd9d28625e102242617021352f81d69143e06dd04327c0efe18e2f1931dbbf3cab739a02ee83d724ec17a33c5f881537f2a51309b09e2c48cd5bbcd03e9eb8cfa5d2485ecf50e9489dd85ee3d6a391e2e2a2c33d76b1aba3e8072ebc55c11aaac0effa9e56bcfae687fa2f6f25ee6394b6b45b0b4dcba8fd3d1c75c0cd4c97c3603a2e2b3096625d9c74e3161cae9804f67e0f610a1d61a1f619348d9ab8793ed9fbf1cfebdc0efbf04fb7c98fc09ba2abd2c78462ba9d10bcd969eb14cee37c13b0fb4426472bfb46f3a6e3ef762611d3e676f4c3678e5b75ed6d02d375499ca653dfacaff2fde81d4b5cba7a808d3fae5a49809136f5e5ecfd8e7caad2554cf56835c14099dac61e2c2e66308c56f4bec69095179f942aca6c462bf9276d3fbc124345725053113389575da80a6543e276a72df0c900c85b4817086a7cfd2070eb0894c96cb109fac35ce887b32786697958f2e8dc0b9535332a599673192545f98065bcf12899473ed591aa219e5de70bd18a76bb59ab784312f43060739e09182b3851461bed00003d92897977a335aaf645c85e9dd42c3e2688de3969501d014258867dc5acce4649c6d3ca8693c9b3305af49b7cb20a0ba7de8a344015f6ac62f1ae744e73b530dd73986ba40b784db8352692cf1e78331e2efbff01479ea51c0a1e156425627d3f2e8bef85c07cace534ff5c9f692523d44391ab5974e4a4178ef94c7124906cda09c44bc8858865809a3946ed78697475c28c3194b4e3922a3d128f6f84bf6eca09f120a2181de5f76ac51cc98c05403a2b6b138150220eba9dab70349aab6c0c35f977da071440fbf3d439a889ddd98a32e1a5b4a0864734650f04c0866c07b3a74c93afaf749b8e43de72e06f5a1a35e2404338c26a0e1f3f05bc616cdf92bf0b30bd517b54431b0626570da89eacf2d3385951a075f0dde85bd538501f77044842d2430da380a98f9c90097d84136dc550841b851e7086598440882c2e3852142d0bae5d4c760b5d23348e76464198485da23ba989f0fa61ad07b145d69cf9324da41887fe91e84a11dce6618e43bda3f2b65520e08d316ab92aa115411e40c0acf80f4fa6b01b4f95707e121756467d8ad4965866690d9bc48ce87805613db5773fb374ff3ed0897e91bda20b711593f07a1b3ec91bc784a08b1d3dd074c66b904258ec0bead743aadc0155cdb03339a885d9a2b4f5c7bb01c80f6c83e0822ebfe4130bb8fe42a540112574d2b53108a8286ba61d5bbc58080731331c8a85f310e45de6f71fd5e0ea8f986028602ed11900d33e2d17bc2f23c41b680af223b48e5257662df015ab25844e1c72f40cb32a52adddad40858306b82309f5debe0ae80326b4a700e81a4220b13f911638bae5251bf329576d570a3905c48b722ab98b33bce8dcabc2d18bb378bd60efccd984f20b8570173755c848903a96ec167a067666934786633b392249cb2c25b44e8730397bf9abd8bd2ccbcfca5e058386dd72336783144f3a54dc998409812c45700cd6fa018cf15661d6482ae208dfca0e71ac99ec4f7d5ea8b373e02311f2b765a3a5fbb5b01fbd349915084747c5b89337344a4994b73507ed2b684e30862d449c6a23d87846eb3a6141621a0f36f0c739dfc80375168b097191be990e868c9e6db6d7b8a05e0dcd32696f65b07538a015c15ac7f00f9feff303a9a9b0f135c7e94607029d18efb6ef1c017547b900a5a1281e318e332a2f7d90c8ccaf55fde9116c26e4972d52cb277caf174c4e7b0adbb5fc1cedf1b1664962409f0a3189c768857487d598a4211c78e60535f56d3d557d3372acfc0189b1968c0045e8fa30d99e49b745b22a6204c6a9a9faf16850e0a24162a414bae8ef52a9c13e022b680ab60a70f56ea9b51b297e29fe83a19d6874fe026ae90022a2f2bc71c4215526d427e414ad7b6b4687cf0aa143880ca02056246065f86ce4b816948768eb52e13082466ec2aea495c88cd76635260adab4881c751aec6af1c8e7e66a36e857b2716c4304bbc49491fa43bb3caafb7e14fcf7ab0cb90c440baddb98065ceab99909563c52aa86c0bd82d6014deaf319a8b65bbb42bb521453443e8a35156d8da30d3b0ba9ac174cada1ea3bb9c683fde051405e5109a873a42ecaae3ba6f5cd96b70213bbef5cf815420b16c63ec8757f402dec17785e88be81bf6349719ea3afe20be8cf1ba39641186e77baf788fbef3c6d06b10229f885535dc18ece01c0c54dc2e59c3447307c2e3ee29ff82a7e631c697ca8932de60e90d6a29bca504f920703c43d6c51c2cbc760bfa3a9fd80fd0e1c7c8d47f7c2c08da4ee3b1f72d5431d03a6c0898e02e7bb22a9dbd3af05aa1643d201096daa74b15eac36b3cba77f6a25274e15869e068189b2f2b62f9c3d6f4e70323b71c2e5514947791c5faa194be521f884ccba828107d2074abd0a40f1cb74e285668044587959f2308f28134683ee0bce103eb6cea00f21d78d08df07ca08723f3abd207925c63905233a83537ae63db33a47ca0083b1f186e0d7483fe4367781981632582801c02a3e63a67c39aba8c5ec0c79462433a2f5a03b1aa0402030db19e1308f0f4e10d41d515e4b83a81008c0281919c7fd48231ac572a0df4911408300de91576e91694ea78c6e6df0dc0016d05e4a8e4b739de1bc77b99ea583db75e5f2e99a5d20ce553928e11f9848b1ca219fa619eca41c0251fc828defd2ca77a7cb42e8a5996d5d434d30789b2ada89b3531f69a0a6887472d2de74a3a160d38f5a6960592fb535b74f64c3ab7853d58c7f506b3c03049095b41d9da4690be495c16018e10f5c9d528675961c4989b4f86de5a9625c7fa3e5b815ef4bdd5ba5753d9035afa501e63d5cc29bbb9cfde7428a6beecad2eac5e56298fc5649e29d8d32a1358b79d4451c41cae451146d70eab0a8c9e96a7a9fc04e959600fb5edd7ed8a5098b7830b164db471aba043585b67c84a96ac97cf2d369634ca8ad7f0b82186a5874cd580575e8263689aceb28988275b44fcf37291a601cac1fff19334bc322cd26b031f35c9c7115251a7b087f8d5f20e0c83924f324d0a219e81b5262af1c796a6278001be7ef8a097b2efe5e888fb57ef7dad2e10dac0ecccefb152adbff1beb03f39456b2e1e892ac0b7977954462813b3a43ea36ac54e0ae958033ce9022e10289b60c91e4a39a4ab7068327a3a3eddefc51044152ec740daa342a8e7b6dc3ca713dcb12134b939bdd66a99e4bb2479a536eaf58cbd664058e8a1320a75485d6c97358ebdcdedc13c1ff95cf0e8c5cf06f462e02515eee0151b9b9767ff3c6f1a940c61ce111de7f70979f46dfb2554a68a99c85104654c9178bda30aea19256efd486a5634d3eeff8a885036b427ed1fc2fa2f421e426f69b58e48853953aa9dd93cdf9b9d805afb1d4a5ab60571ad9c292972a8d5bd25d095899f83a5610b9988ad87f49308efb1938ea071dea21b7b052f8d71f84d1703af10dda81cb1ca5779fa295181c95e339bb4a72cd0f4b3d5585cf90c4e2e97fc941359b5541b10a8410836e32960e13ad2ac3d6086719e730ba1f4c02a798a50159f063b028630652e505731fb02fdd1bc90cee2a8bd5c2d708ff0405d5b4da3cd4733e0849203810bf0d38a264774a5148d27dedb5c351c67fcaf4167d0d17ebe8d965dc4063d42ce6fab50cfe05ec9aeaf5f0c9d622efda8153abc74d9376e6f62c5f0b7858ccc776b45ca138e07d78b4f44a96a61329e8c275ab1b502ebd66e1c437f0dbe206294b3bc71ad1c2466334ca078b945837bb0c151a611de0b48044a37ef299f3bab2592ea48c20cbeed9a801598ad4ffa027aefca80ad25d1cc73d001bafda2822611e4870296c2e6033425505fee12b68e233b321de69eb6906d8e136871ae20f0027287806853be4bcc08e3f60f3445c5e845431cacffe4ccbb6ae3244211704e27a91752b140ecce71fe62607ba507a6b2d77c084153d4750911bbb985ed1e7558b3f2e910233cdef3e60372106f0450db50b0ff7071fa66e09ef0e13c8ca617707878b5fdef067b5ca6c3c5b3eee1b0d0a72bb004a56864fd8111405f12a2df2417089e90dfbc9a1ae7ed7363fa96203cd1c51d7b2eefc4ffeb4899c0a1ec06b401826b6a636608880af556a242cf37fde70ac9400b9446cd6f089d702d6ca7679ee6a73405918c4abb5c872f99d9851593200cc453036030f7fc89509d9dd815a86e0dadb81062a41822ab88e8dca135faad61d5ca8e8e7ba0a2d71c29a7600cf84297f009f3907a1f4aa302d3251c1a9fb9b22c006eba842649d1aa3f65590f48c1429fa82b99939e5c4b9fe10d82a0c37e30126960e450ea2266d0d041b01351d01b0c27c92028ed71bfec491e2720ad15a4606c3741d0d4f59da301b2b848ad3a979b07ed6092c60850a8f4803d1f59247530ef7d148b1ac21216a5837229404bdebbb03fd36d07b6b0ad4a555afaf02c7932e6e8c0bcc4291ee5f7e9d9c2f334b0f0f15c01521431ea1153abb4b139aa60691ed4eb1f7af82701bcb0af902c0535a3881a854c49f9a5dabda8f49162f8fbd34427d4e6f8e81e5e9cbd80d0fe0972442ea93ed366e21421066d8bf164af6df9f166a8483a2d019903f740595cf583ebad50e651db861c024af0b07f5a61b54030fbc3b2f8cde7fd83786790794f6df3340a919af57f8821d9cfc15d2bb2b712e52019d5ea27b31d7157d20a176927a2581a58749046068fb49e60d6802cbe25a3873b2f768f9724159341ecc886b25ad48a702fbe70f4fd43658e412287c9a73f492c02c5c929a20a6f05a4869a310f46855125193dea04e2b8e8f9d0698a3c65c3d99696202a894adfd36048d329b215e773e816732babea5358aaf947a2f588175c52e1f4a32aa5a29243a9058b26465af9032271fcc9f2ee94a6f1e8dd9f3209d3dfd677829ccd572fe7ca599c5eb1bf1be5307c7dbb572472f6ab7d8e94a7f1abc5df3295c3d3f677a64e0f50ed70c8e11c870ac6440c74a9acce363fa485773aef6343429bdf10c406f91dcd0ffd8439c52ff1f4376efc9cc3fb605ecb8db6c13223a510ab8365dbd1e91a641d5e6795bab78832da973ca5148e6be48077209a37d7d495d9d1ebf469a394773b5301b0a2207276a88177724c70f6406f04571ca75fa97aa4172e09843be4016378482116e892f8bd990ef69684c5de3858e86ddc8a2b49ba4166f3808139810cd0916a757b9252b426e7a0325269010fb582166cea2bf7dec3e94ab7f1f9802ab69e9f22526fe0e28b498a400d98ba749a908ca21374bbd8d37956fc7f2534027a02944dbb7e2651f3bc0eaf7e6eff37766e0a045d41f8d2f7284438dcef6a5417fe5195c825d0fdd4380f6fd7719884b8471fb535aa6ba27437e65125d490fac0b6c38f8a5bf771647388c9926242222bd67bb47e464bce515e5d0d179dc275d3f2e496922941812a2d18325ccd3f43342af95c1505c88fdd51dc393136b3c34bd53c10b43f4a5497f1e18c1c97e5f6a43ea43848488bd8c2438aef3ed27a61bbecaa00709119c7bafa430454e20b2dface88cc03cef8d34e50ec0c0235499944bfe7e266dfa91e4725847f3fa6d93132f7667d84e598a7e99192838f2bc4e081be11d97961726ec40db7cab79ccb4913dcf1d1dfb61a96c99e5b352fb9040929b6dcb1b9af2f1dfcc2abc771dae81a9b7e93d6df04de4157b38e539f03ef4b95fb48fac707d0af0a4184eb74c6d559d6c2a83de8fdec279bae3d4020faa3fc4570f65eb32c42b094f20a844c7e8dbcea6f37f2ca4505022fee9f296e89fa713b4b00b743c494eedb07e8bbe4deb0c9f5d505264e37853bc77505322772bb182401e51ac4c6c853ce337de9d54ba329bcd3981ae49e69a8a32ec5a65f8c77c7c2eff4a55f44628df730521a54be239a2e894209af4e36ee28d4c764335491cdc34ecad1b9d6b72a3bdd0f24d19f49dce58565975d12f85e00cd755f5b588fce16657d93dd3a0e2f6bc6b577f015f5823fc65290530678f1ace085b4871db37fd8414f6e2f644ca6bb2bad6475f0859b6524fdd5804d4eea9513bd593c94d32fb5bea52e24e7a131746b25e8cffcfdd2627938dcfc99ab001ad44369ba5b2af2b508f9fa945a915d4a6f3e0822ba842c551991f00d0f56fb3e612363a8bdc66d328ab3c26722f961d39622299849d8f101dfda7abe7e804be3d641ae1ba0e4ce0ae0dbf9f1823fc790085e9437ae385ff16d570734833b96391aa94b4bd6d216ec7491ccc4db094577eb801e2d5ce11074443f91c7dcd7da5309daab197854ca24b28c01f51c890966589224d95c6412c93af8417bf030829297281a950f8b77836f12d2c88953c833ebf87d2e186f51a193ed55bb04bc0586c4229ee42af44d9a01b14c331884dc59f442c2b016d35cea05b8beb0333002283bec58260a65b1e247bc13d4c947f2b50b86368335238f43308c1565d319038afc266a2fabd459995b6922cdb9d728e36b670aed4c3dea9199659421d4494cdea673d727cf5bb8ccfaf065a88b8dcde0f53f42d1ff81c940a7e10ad822e1083a6a9a4ffb6b200dac229910ef9d525fe505eee68f673d645a6dfc298d90cad8f7a14121165ca0497963ca5da03bc230bcfc513b7316a09e961a6527542e934b69eb3c79d43b4b3ef5564e9d3f5c3508a1af16c947af696fb4f1f6201f9a771cf4ada38cf1aeb382f4af2dd336b5b012c41ed7a72b990d0d309fab243345fffbfd4735b3dc08996d9d7cc0fe58a7ed8fcb8d94db6bd167dc89fef035b39c68916d9d7cc0fe58a75b93cb8d94db6bd167dc89fea036b39c68916d9d7cc0fe382dfb973d51101b46ca658e4a71b0d98f42760d67115c09c0aba9b385372210d0d7949325c0ed2275769462964342a7020d111f82c76f75527da407580afc872e13365dc43d242793f0b2567a1739c678816c7635a26b9249578bc931994fd7648f653b608470910697ae7b8075445c1bf5fefd96778698c4621a36ddf67c40d144f8ed2be9d9fb68d2130b74f41f60721287f5ad032663e7cc960ff5b14ff41ad2a35223ddf7115ce0cecfaa17c46dfbb7aa6ff36bf3842dff594bc4db95435e8b5b814105035c1d065e9c082daa89a7df39b4961a1b3f93b2623f3827bb3bde3a19609f086ca50122d3ece533a09006492c3b721377a6655c770ceadc003d1a71057aed5c23f1f84e14c32bc304896ac390093cd2eb1e41f3d28d37a1b575a8fb8b122b7ca4a579caf0cb03afcc8ec0332c24d1642e382271840c2218025ab49a3db5ebd49fab59bfe1a0524f02b738b7f3298ac5e75f1434720223207ac2d95bba7376ea310fa9fc199b3d4b327e7c799152f25f7c3ecf3cc438a970a875d828497d962eee3b87d08a9137b419d6cbc9091318ad9b7373e565138a8df8ce655bb6c91dc85e81815c13a1abf739cbefe72115f51761afcd7f72aaf4f72edfb24dfea0fc0808a4350bddbc73b9cf8b7e15f42172a424ae75a8c93cfd44302676865e24aa9d109a215f1845bd8be5790294008f48379a7b120b0ac3f05d12d433a53b6fd6f8944e499fc21011164a733b1819e6c94701cb16485b0908979c3b769f67e63b048bba7b512c6f110b5b06680495060773495ce665874ed2af33705180558b8f2f432121faa9300adc443082b8ba93ba71e58c41629f7eeab4bbe67936c9e9f12ac98994673000ba2624d2d84694628175963311a5c2e4cb478a2131e32d91f23ef8aa78e678483d77d6c68c8d45fe574d0e897d23af5741aa1c67f3873b8a34733cb9ab981c4edfe8f09726629ef877e28beff34dd9efbcbc53d86e4c9138ac4e5e9ee71b73eaa866339ef8f58bc0052966f939aa98f415221db0705c6f0b4c98c6b2f0865c4c56ee3690d665b6860431bf2a6d2cb7d015a0fad8a7eab28f7698d42b7f8353784b10e88502886d51110af52bf65e43a9264d77d813358f083eaa27e4d011867d4c84598489e607f7654f4bce8bb820e6fe9d7bb0c91d00fb26114046a223dfb8dae797f580a772e728eb35eb0fc166a91e178229801253e1d6da04c0bc7e12965c6d0b1e24ac078a5480ae840600c8d4f6ff73081d8209f444b189dddfd4270585ff67b0f5e5503ec1ca50fcff8db013b737f476e36bc22fda5c13677109d488c2d7857e582c6c870c890739e117f7e56ccc80b004f996569fe9c30d44a9e490427137c3a10abfd06ee51b5abb3996711fcf4b90c447dbcaeba6cba50b16bd2b077039d21b257e4ac7cf2d9c3cdb1849e75619e945982b62df3a80bc632a2c10354cd641c793f4517113a40dee983a366e2bd43aeeb3b3634e54f7ec2e6f39d9d927c07d1777c60c2b5f74261cb2c360b145cb52328cbe93ffab0d9d81c94930fed9228ecd75110138812ef8ba8989695a46aa97bfb8e4a473fc899030429e2c8c60f0b3096cde53939a06055c19140883a61dda873be28900e1ffc03891142ffecac17da45e0663f2b8ea28e34fcb0f2ec99542c4035abde34a7caa75e28bbe7c4523c81df6b643993730dec31a1daca644eafd1f74c58e1d60de8550d157fc0a431ae778a0eeb13360c0b51885425e8dceb4f09ec30d23c8570fd00d3c503dfd3d50ea908b81abfc80a46f04b1342165323ff28c3592def32fdf363bf121834abcbcb099a052d534051c44fd824c06a6ab233ed28edd3cea95829a2c818f4d910bd90c6f7a30a96a2aa8c751afd8269c05d7ed8b4b39118549374883ff8df2103a1f776deb978664aac86f4766e89e91e79930140b72bab4c78415a7a1b980197e6d582028d0c1055fecf9e63a36efcc1df9cbea9ee6f9fde4fc412e21b46fa03fb57a390d7e7f4ee7f63e8b0fffc4bfc33f8530c44b6bd6278eea37802701d46370ce46c86dd633168c82a4df0db23a94ffe247631557439d44662c1122609002d67f3ad3814f7eaec42bff3aa3b113c7daf06511436e84a7385e9551f469cb045c1ba56e0a0a3f383a9e6fa0689fa1f4bf4df201c729dd99dadb70bdd5f11051027717ae97b04ed4d4317556757a94da82c66258636987286d520716728471f81b8f1889a8e8a32b0e7edd607a5502a26690792e13aeb5a8c91f2db7521dbad55ffde2df6631b26e26730b531ebe059c70b1f8b8be76e798e3aec4867bb992c04333f3cccc3c1333cfd44c339bc94c6632b399ce6ca6999879e6669ea99967329399cd7c66337b6227ba09c77569cd3514f5b8d77ec722fae385634845b6ebfa4478c2aee142399c62505e3d8c1544f19437dcb0a07ec1a7e859ecd51b5911152163b1d7f2a50e54b2bdd1266521079175a38df8ded1c963f8d494646a2fd204ffbac201ee6e190c2f9a5fd88a2b422c005c673d24d6eb381f41b2b552c7976a95eaa11d545deac7a14854216e7380c13d92520945044738a916332fcc7c0d4939d5fc2ae9909781f100e811ed11a8307e878b824664443f61d152c09d0900582c02806b09e47fda5ea160d748eb18e0ff852ef24fec8991abb935534d399be9a95b3fa5a6a96e373e6de9ae5c35cd69cdaf2ebd91b6b63a9df1eaad3bb2d26cb7353eb5ea575a5ae5ece6ab36dd945bb35ccdf8f5aa5b52d5b6b3999eba75bf40940b154969c79e9074f15afbf8c61f1ce3d30007f556f5e6ceb8d4f7c0362d9866281ad2973d4c205a98550e79a20aaa0bd31cba980e6d86adb447e832de0f75b37b2cae781ee1959a81864f64c5c8584eafb90ea211d32380e67a981ca8004dfd20325bfe4d88a5add45f774b07a1145bb0d5857ff00b9c48f0c60cec0da3a7d7c4d051d050516e2fd335dd9df3ad665cf26ffe54f18f7b6ef9d9225293b174808728bf9cc8e3ac959a54db712446b3eb0caaa3bc303a36ff60adc7f1070c231dabc9160a74f1270f67ad7943cc1f4b06a4f5a02e11437f30332bb9d5f524cb7483b5b6bbae2a8221e5428639d15256e04fdb1d4b7b1539913a4245b0e22d7c9b4bd24f2a0a42a3e1837277c41752530948f434b8d2964f6cb4a597aeee475d4f7b20724004c168880054ad8bfe22b6e9cad9c0425c3ee0ac51a0e67e244fab135266515872844b34c5056d14a582f0689dc853e916c4049a2e218e19f7b0660cf3041de0ce65ef63badfc6e834e0a3c60f61634395878691e37470e0c0acd4e90a17f380932a33f8067c714ed28758a188c48e50711affd8233e74c53d84cb028945979c09a235d69e4cf56d744ab7082a53000b81747134522d9f0210431556ef227f531fb63810e0f94e65da12a1046e9cf406d577bf1954ca2ea68d882ed51d72caa162cd8b86c8c8942fb63c9b55e9950e7b5b0767ac38fe38a3a3723159793d49d9ee5141a5eb5b8ae2b68612417316920d73a1b820fa267852b8e2bc25dbb2ded9ebae1e92dc248ce81afc7a1c4a6455052975be946cd43a2c62ee8cd2f07058455b11daaabc629e8fe2815a87196d449a9c9af7388e747dedb4e47dd8e1a698df30003af91b3ffea21c587b47bb9b3019c77ae7cad583d3b61c26390cdd2d298596e640ed279b79a73fad8084a97111da155c9e9eebfbce03f4609223ae8435cae81a9a58789288e4ca7e109c1bb78490e8c7ba5bd3066d8fc5a5862c92941b276744bf55b853caf8a50ce8005ba852c624c49440008f326f3b9ecf30dd458138c8efb6b30f7048588d1bddb4324943cdb1ddbc035f06036178adc2e38490d23844b918dffe535a75e9c7bb4186ac903b96f10923e0074d729ae13a496f9ca9a88343441b12e991c8cb15459404a8d178cc0911d653fa89be3ba4d550a4916cd06c6d18e8f1cbcd6b654689532365626efef875053b39923e2af135a903ba9d5360bcb0910be78addba80e4b0d88a0d16d4f6f03777a0848e4d37d0f8b67d161dab8f35202c052a2cffda030a4c6d98e5d40bdcd1affd1128747ad2a3b7530cce53966f2f89a83d1905d6c9a910c3e71148ec5dc1a334d6b5d2bc449f894cdcccea227211e0254a9ac7c1a946c9767c543b4c38970cedc24b292f2f4bdbbc0bd7dbe86004fec6d14d74e6b6439a27a3ad39d696380a46e46479147b3ac3b50076862513642b0c551c3b489a3ecf504a1319769fa604e35d1e40882b99ac89883d66ca8e5e97a6e745e82506ab77678ed89c6d49910f793458b58203f6cece31507b2f4974eeb15ac08f06b146c5e8c0f41ea4da1391d4d17b01e9a1909533e2f0d6c5d64ea0fe7a4188204c8ebfcd499890d7587915ebd2b0894901efc6189e2fe725c18a604bcd1f7eedde0f6e30b1366ca94b773c3fb22be7d725f694f9650ec212b8e71c53dbc3c2e8adad0cb689a98b6ff3faaf98310d31dbe2d2a1d9a1ed75ae1a5fd32f59bfe9005513ed0ba580a2db978ad641a2689523727b79ed16fafe9d07dccbb54cfc29e89003f3b6249a7b40e9ceed8a21197a92eb8f5d7a4f55ba48afb40cfe2c04bdafad422002d681326842d473acc7ab5e9dafce3a1b5e5875d3ce59e65792d168f9b3c8c2fea5e060fbda3907ecebcb631618aefe2c3d474467f9d32bf0cf9dbdc7ea3860e0d5e341d9cff909ae5745e94474acf81490b9399aaf395c0feebf8e251fbcb16ff99034519bd55b42220fb975dbc2065a07298490b67c5a806947855700a9f3dd8118628b34822b92986091e6e6c3a7f4b8670e4890af7b2459d6c64ed876ae9b3c195b32876bc61aa17872476c08276486abdbaa3d20d7646b6101eefa1303981f2729211a4f6eeb1628be42f13bd7b860d4f67fda088324cbc8d3a3529de110b7970889eb90c15f494b0374505491ae0937030ffee703ea27a23b432aa87a514318cdfc6ff4cdffc1d3d11ef4fd5dc8fba4b435dc121f9bf9f7e7a1460d2b719355e75f040105aa3a5ed4c601ce0e1d68058db0f647f9a28768d366296f94eecbfe7b47dc1a2e52f7674b7d9894b31b962b25278c5531ffda5e58b82a0fd857163d87e60176837833a43bfa8f68654c5695ba0a8f305122b308c6c1b2c33f2016ae103212e1c115442434cf1534d11d70b01d16abf2a655813cf3a9dba6b4cb0c9173a32f35d118f2c492180f79cda23a778b27efd99bc5ef6cca09a920881151467d2c13294515f235f42962a748d8dfb523a274dad14dc72b0b204c1237931c1cb139cb2c440db7c63fad00da14843e51fe6e05448438e5e56c62e629d36ad70795de0fd59aa6d31e98fe421baa699bed990e8d7658586aeae52fd109cbb3ee1328ddcd28627732b1175a2e643ee080acffffc41aa9302f606c386041b1b627d1ad259db75879dc002100a81a263eb4a2288eda892404c54af9df7608d9693dbd739256fdd4a04c3e5a9a8147589af58cd98f2ebcd30e1fb1cab9bdd8fef84458dbf805ae25e0076ccb794e55eb588ac34b0b4c25667a111218e25f53112a356b4627ebb43b6859b2c2ea31fa4340bc1ee0c87eab8f739c2b9f704365df712efadb5de6ebbe166796d79e15994e2c20df1d4776a9fe0176d1e4adf07c06463ba8bc9052e828171bfc9a0f91512b2c21df8f8e3f2be9426c3596685c8205623856757a639156b6a24a20d381878e0545bb533c062a192ff521d0011de51dea6ce1c6b9bda7ae531a161e2b7d8c116b1703bbe669f7cb7b56f822c9f637c923196007aa019a8249724cfb8ab21a205434ea3e8779f4d8a9d527b4a07c4deb13a70815900a3acdfe64d257a81ba16c1efb243669f3e36d2cf5e377f99f63e3b2167b12dbf974fd333b0411f24a402741132368195c580c719a350a28f115158a6c1052b40fb7fc33a70afbbb743149453b3dc99cb68d24d39a3702f2aa7de0a2439d60ae8415071e2fde718602a7af0bc47dfafe26380a57dc718acb6165ef2db8f7d44dfd98bc1a82546f4b10baace004c609cedc7405f34fa1b10850f196c6a9744e712d84c52f8edacefd2ae3eaac90877d1ca78de12b8239cc94a0cecb559b48e5e390da920fccaa2018c8e92355593eb0d8852047cc3245ccc3f29936ba229c93432db46ecffa5f73c4da1b8d1bc826e91cba23d2e640aec327c602ae0f9719a937a9a2a9bb4593dc4cef1c34ee0eda2926098d62dd2753077f415d7e34a49c7bca98b0b8bac8f3193d9ca14f753f55c88ad95f2a9bf979b34617b4a8a9f3c364eeb40ed32d452610e3d3f884fb3eeaf9386aca9754c98370e0156542e8c33e8846dc1ddd91d7fa39f2826924f3c4d855838b391dbf6dc61a1fa0573876b686db0b7c22141939b20671e01caef8aa2d5797ad14c57b44d959f3944624c83e8a94258c04681b04fc42e4ec102bf73cc15f2ca0bec9cc130532c541002f20207c72f22cc2805703029485fc2a29681701c20bde77785e339cb4313e977c52f2d48ba65a8cb6dab45fb16ad5828b9beb40e4b82dc2857b2b5c9a4b403683f041bff0dad77c2302b57fa89b1f3128ca75aa8ba7adf663f582a2382246cce9adcec3d0e09ea1067ee89770ec61ad90733392a334aafebd4d85d01c0152a7f40900e73deb1cd5ddf404249c31d0390673795ebb9618b745caa6c8198566f367172d7e490d666f24475ea9315a1faba1406a8db86d2ef2025f33dcbbcbb2ead4efdab7fbe9bfddc1f36df283631e1efe26b2ffacf8bf80188624445469d88e47fdde0d52d37643e90108d67ca5340465caed69aa729d3745348b95197ec45e148dbe5ad7083b9dc1ad2ea9549bfd459a619add68a7d86e74ecdeeaa28c31a3b7fe8c74b3d77d5ac2e85236ebf94e648b9025e5728e6e4b75861159c64b189ac58cbe4435fe8b6cbb2fa32f3040f3dad9b1b0db3fea702ac470327f0cbeef83914b73df1884e29ca7c7be052a5401bf1b9ee4f57a3e78abe90c431362f4249eb296f14924e4b0a1e84c6127c1e8eb387327e1bde849ae220b549a9b2ca619ef87f98fb284996fcc4bdf4b4cd07bad70354f3627b3b1b6f84f0701c73e45cd2d16cda23385e89829100c726867085e8bc477968cabdffb87d8abf4819b6a26d1ce41dc9301d08bd7caf4f1869e4c450a14948811f01c71be9571e6f2e7f51e0a270e61e270e6fc40615d1ccae1cce36f2dff0c309e801c3a951c9a057def3f65132f7e47863951058e8d23b48b74849bc050fc015b28626a8e6dc6b1caac37bf13a36d2066364f8481408daba52b37829973b2c9252da07d8665aa0e9a3488ed5805c3d3d1d3a2fdac175172abf351985c1d70091b9084a1bb327d1f29feaedcab08784621ab0255611b8a5e312a719709a9dde5bc7c0e23c4a153e842f318920feb3511f421bc33faab35f8aad140744df4ee80f475ccc1fcf64303491ad8065891fc5c5430730f7850d04fcad9316cfe751ec099dace67a4290843c96f422303228c3ddbf9475f9ae439706a7fc8873c0346f08cf31383a0d1e22cbea762e2b83d91c96205d31837d7c4da6e19a5b5c93bcf42789a7b83267be34e47eb946183052f0cb3d293aa4cfb27c95eb6ff16e39f0a24c9b6780d23d7468848f634ac88d15428ae4fb0555a816a4d9fd7f08e0e311b0f3336b18c19ac0784a16cb26cc5480ef4d94dee797b38d95c0c56aee0d09205b5624323f50994c1b028ed67fd21cd9a147e6a8c3c9ee8a859506611e0b71b8860c6d8f8f8e817829728fb3f9ad5530b3d5cefc355e92559beb378a6df8b9782b376242a9d4c9ebdd4eab3464842bde9fdce525cad112b76bcd0f3ca7e6b5994f78366ec51e4ba56e96ef4633f10847990c33956af40d6da68b51f6ca573011909be360b1667003425f8d2ef0cf3adde492a8c75925a122f34722ccfe58978e72e3b14b0b03d142e5293d7f15940c156608b918a134c89079acc418a25216b75e744d33f54a3e6b008be5c9dbdeebb9da678aacb59319c7a561e4c1f163f18ac6d9441409251aafad9dad9eda87419976680bbbf6a2503701258bd9a686fd49987d8d2a33034c426be2a3057a3cc956004e2b88aa707ea585d3b5d911c062eded7cb2e4ef19b201f906e27b8457b422630ee3aae0d6fe50bbed6c39f4a74d1b91e96fb71fb2bed739411cec0ebf3b3a2011501b23f0ab2b586a7d0740b240268b86b630a82c5ae74331100ad57808d20dc91bb013308964c8bdbfe1a5089111d06dcee0162d077a8013277937029c1742d8fb36316b97a78c13f09d4c80bde8cc7acf553a74dabc6c895142a3448b0440923bf79cc90fd0242fcd5f44a8a6415661661c9e6822c3238171d1ad549fbf4bb32a7d89e518268ddebc298a51ef8a32eaf00b0f5d241857a806914f50671072de0f1602e98b868e8de7211080af32f621f3fdde0caaa76ba9ef19cd49c06758294b83c807bec52bb6abc60940992b77f3d0b900f1bd44f01e0ed1f94bf6dae25f5028919b70bf8251343892e904fb26c2772640bdc01c9115d953413f38f5a9b83c193c302a509d968bd5d0e518db25c7cbb7c0dcf65e63fa1862c33085799c23c375d460150338e510a368b0c01c8f4c16775165265a625e703779218a3ee982c3a91d356443f54023367d844a0433e1913dbdb7bd10ab3cd2c2504003b1c50cc192b5fa200764a6af0b073227511794f217007fc6bbac49040379a19b3eb1db9b010b1c0148513c98873889718bbae5654ebba406ce8258f235a2cec3ac2c9424897cc95953a59555b2ce6992b9c0a88c6642170c322f032c18bc2b1dd87d189a5c0565722cc88ab3db1bc0d378c164b2f428796fc8737bfa1e074e2801d4a0fc3a150d829d753bed0a2fcee427a88b609deef210614026fce891803f638334379b89b937350b09ab66dc95a28992d6c27f7e278da2d24984fa9ec51c91fba5060b00aa4846e2fa4cdf62765b7098585b2fd8f429cc7504d4f5a0cb4250b661f3c99140943268f7c89f7c2690180f8d421223527a74f94fd97a5c767790ee22c60874c348798ca2a17a7bd435e807e5e48aa222543ee7cbe261179ba7a7a0e2632527edfbc5fdac8e9f7b4c1064c7a28783b8389b2d83913db4717a6d3af1866bb85089a79fb6e9e7773855c2e292ad3137af8a4fd6a607c8ea1c97e95b1c742ecb05f9d37d13cb2eb5778a2d0a1fdf9b27ea5397ebf824912d7ea573eeea6cc85fad53380f19bd565bb556df5f87b7a4d1038c0668c2e3d30f42bc88852d5f3ab81ee63b00faf7875a2817cbb6f9b790f2d1294f1e757525df91680c4fc32285eeee736bf1aa4b8a92513ce782c54c430d14ab793a0d84ad398177c7a009d29627e956a2ccf225b791863a4fcea5592f71831af92d19f68d64a48f95573ec1b228c62aa846211b7921a3e3886072985084eb12eb45d3f6bba92ae81e816cc5b64f1c581ca65c91700b19bc630d743d2ebbe4410cddcd2f8b354644dc76d46d7fb07c1914e8d7ac90fa3e050af2d15d574d884dbfb967d151bc5134c8a383a9432d2902431c6faf34f839e3f5732f7374fd3f1a689953b5468ae463168d71c353f002df776038a11b9a33aad1c4b1c61a8e814db72d9fa71a9d7345f8803f690cb7c6db769e3bb38894c66310c6fd775b36f2873b588250c0d9e3c7b5bfed732c4452e769da19b0dda815334ece60b87a000a749d04311cea9f73af65d4f57598d245dfca676fdf2d0793fb81c212e6f11e4af58add4d44d2da24724fa370707bfbf3fd6d82e02553fadbad2aef543f94ea725a9adc503a7b6df45bd124ebd5bfb6a8ef097ad6dbfbb726d76e50166dbd3a55cc937d043edd2b4bf2959eba699dbb04af16d413ce1ca429d6b30241f38605d6eef33097b2a634f383d33e1645f5d676636c2bf9ffd794767f8280afa78ce94c3285a8b3963798c63cab9642730eded6b733aa063a5419dbc150bdadf45ddd2579b76c5dc3e97d6b6afab749d7a40eadb68b8bf79596aa595bb4eb0c6c421f5c6d6af9146c660d9ca984bcc42d79aaef674f5a5c29de3875763c84d023f3d18b777c8a6254a646cbaa7e230ac871cead2342c031a9ae9a87e0ad65c7aca1934116e8955558b6716fb8a16be25ae0fd38e45fb2557dbd7ad9e758748ae752f3359d7a42d61a3ef89db54bd715999ce95c01006b3d1de0d4ba22bc78c70502082082268e71d1b88558a035006392705c4c1ee1e0992c3c49761637b7cd1f30c2982830c5981091e3bd386ac9759c1832c9add92447e46f5b1e06dd8cab4ebd2552fe55dcfae7eac4b0284cc40b68aec385548761d2cfd95a22200f370645d77593fcb276e62bd3a61358e39c3df8e8610d9fdc709e85d62ef1277d93f03645c831d1b6cd83f7bd063963980bb29c22231dc38b0e955969ad67ebf90ace25f5256371892223ebfd9574954cd6bd04873da80929e82485bd6b1e1d3e696e54285834ad6db791c1711badfe0d01434aff6193633dd3e05e5ce894b3d07bbca75127a74287808b640ac5ea33108fb58e15ba683605d5f39ea48f57ef49999931e9866617dd56e0491d192f3883c312376e1e8c6aa195df0386a8f9294ce3c4705a49cf54179623c652d1ff34301575c8c461da96057cc6c284b9201cf36de58d44dcfbf3a9ff8f5c75e044324869a426edacd5ca47ab7c051d0b4d01c0525ec4ce473e356a2726816dc57c10a8b30b81c7264125bd45b44d2fc671732c77dbe855a1bea5190951939d10ae1044a07e664dbdaf602b50c1878e7d74268b3a6fbaee5dd22e729c62dda95ea80b154dc203d84b629ce6ccbccb8f9b90fc50c2e26a547d8973f925da6b0ba46e1a225b22493fe95983390656aea124546b431c38a849841687b60f8cdca64d28e7c69b1fde1e5be820b5352ade370bc64414e4bacc960be638af144683be15654da488d53b26bde882dcbbb96b43027c6df9995718140960444688110d59fda14ffece3d70ee049a58a54a5429dc36ed7a4a14cfc6427b041cba368bcd9c45a4a1e240b72ed047758d703fcdcda7ec47cf0d3412a179009b1c43af82fa3405b17cc7534ef182422f929fd1188a972bb55616f996ec4af21940d09625622ebb25b6ba1ef643d1115c8ee2956cd7e3fc84dd9842c54e5b043718a08b2bc5dce4f097c4ad2293c09cfa0a333621567d76e65b8f1bd843ef5c6c953142b456197bac48462e5fc2f357084a007b32bdd64e30d5ee8c48d04e7c6a693b4d68e558da268ecb49fce47764a0d1e63257e60948a0c3ef44d114b6e0c4bfa66d8c731103b5d5875be0b5bacdcbfca5e392221e096655e396509e4a12303de78dacdc8e8187b91ee92b91e500e49f1d10587bf989e86b3269974e0e7306f4ceb7464f1c41f72cc1391c90ddb9077dfc4574a27a2a75b20f69ef8a259c49b64aecf403d381ffd13ef1fff9d448723a341599aa1f6307b9010c6c1845486481f2424018fc80900090906a09fb88f9bba350dfc9414c379cd62c5fbdd70fc5dc255ba7811f225820c1bc0b2ceb633b41501e02cc491470b4d82eb4a42668a090cd3095de6e1ce4944a6d9670812e3427f187b81e991bc7249b12f50b05b594e2b5da816b4fd91fda2159373cdca8a7f17eb13ff51eb737fe5118b047185f0f1ce70c869774f91f5c1c4c4ffde431a2fe1eb2da837e78e2c1c3fc6459406c9d252893d6451b83fffa3c56c79797144b8d2429aa26d6ff0f393d558bcc42dfb397d5c99324aa132915c05fe1b174c1da5ddb41ac6b39931842b6775d89fbbb2d4f9af20d2047a8afd08dc8f0f4b42a76344982738691ffb3cd7def6802016a93585b225265bd8a7da629ef530a271bc1b94d5f5a2fc9b2a9bdf4044eb6c2f7a24b609db3a19c1ecb1d6ab3c359d21314c61380dc19526c7285c85c6e150809fe61c845c8168765e90c53781f566d565896dddd6ae8c5d85b5fe7d7b6c486113d75ea4314e3cb9c8f19ce36fc0ff020bb9450290410af0240bd192e6940f7e431b352d2c70493d19af346d0708a4e9aa3ac4a40bd41c39f58a99033797ce55d7c408a6135d30987dc5cfff209b5f606ca0f2c3f321aee91e4e9b80ca1e088677e195dff97eba25941d9aa2781c3bc5aad7d71e48c39dd4a738e2fbe4ce540847969d3e842be5a66f2c5d26d28767dfe1272cdbc433563586a707b49824e4de21f6a939892af7c303db1fe2d6fc8ca83a05445a9fade3bb898176a03cf23f9296f97f71ff403efae39814b7627cce987f2310a5621ae4f7d4657395ebe2604f77141bb31c17e2eef1e7a93588f2404d5c24c0d8c78dda72c55c0fe0e26162d8620554a4057e7304cc0d55301e59a5039dae5093a13181efc8344f0077722a2b9ea1c76a247a06db8fe7c8f7f195af3f68e9a277ddab4321b5c0ed4e409c92fbb3aa70a2dd00964dcf619aad960a37c001364402d224217b6f42e4de52a62465500dab0d0a0eb5f3d8d93e019481398cfa427b277851df770b7908b4c27985b7acf01c6c0989e77417f6d259ebe3ce59feb81617e6a74d719a7ecfa28484f47753c16d3dcfcebaf4afec69b1f3af6a0b36c11d3b93d7b6ed3d367a2ee821112a7afe0b6b389b5007f5944a9983301dc7a058a7d35b7ed831a0cd268195e093c0fe42a0225006432023d02b7bd8658f141233ef8e3196b2cce72c2111027a89e97cd62f6daca7a0d28fa8f392f99042d3b4c761efbdc4300cf68931ac4e29a58450669867ade790c9b390873c50067c127ae6b1becf0064f2b0c727d0a21354b6625a5634a29e87f1af095238fa2a085561c86bbdc9a4e8a491b809fc68a1854c50521ee3a3d81c7e148f565296aff0abc257964616cfd1322cf66e94fa8afa9e8b5a16a53e1d739d7a405916677b965f9c2d75ea01556173fa59298ea57ce590c371d31e9f656f529cb5b262efca5e18443ea4f606c5599e72e676b0522c96bafce678c86f9862f2b1c56395382a88a3fa862a96a6c103b040b11142b8a2ceb40bfae3a84569a5ecf5113d5a288254aa57feb8544cf1ac5378689f6535660e9944ce26d27456a3a7d415bf3a91b389a9da622ffc16efba7ab95a3964c231d257de2c44424e87f6546685dff95004100893b7c7761aaeef35222b9c3b000b37d939c3c2b23caea85adc28745a67c66ac1c17248a1673562fe44c0e4a7a76a6a05ae20750d5ed575986538f788148ff5d19b9437a54d57d45ecca1bd382c4fd5abf350e7597507fce929f5aafe628ea3fae9b0f53528e692b3c151bdc4b81bd035c7381d2a0ba85e635a257415d0573190570edb5e152254b0dc156ff1b6b7e5d1ce589a1b0ba8326fcf3ce5b0c6e9ddce027d055d856b1ab63d6e07a59eaa17e753b695397496c756e629de28973e8abd38dfca2ccb5e9cff4e5d14e722751833255afc05741ec5b3abfa984ad9168c29a7f5a238e6921b622507fc154fd9cdb50c7205809f72ea8f2b006c8aa35af194bd59716a6f58bc71542b36b2ec983a58ec53b139fd2a3c7adbdb6263cbe6f4af3c3ae48858b90ae851476f1d8147718cd311ffa63cf39bd3bfb277030f753411298b626ff41c686f4e7fcc805008214017d0557e8aa7ea859ff2e66c583af3152b537d77a77856f93b1d9d65edab156be52cd9ca5756f6e2a8daca9bde31532a56ac4cc52a752fa0a3ca32aafa95ab50a6530dc7ca5efe95ab78aadeee88cfb21615ad9656a5aa6ff994b35c3e95a3a5c25758fcb5d854cbde1697cf3c478a65effc149baa2a5fa5f8c955b26cd5edd421b7633a75ea349c23cb549f758acde1c7914f1d45510af03ee55d2fceb7a7eae90759461de5bdcc1ce528f5fe787ac45fcc338ba37aea1747f5ed18a5695aa743218eb8388f591d5548cab4a7aa31a2848ed54fe7a77ae830317236a0f04bf06155bd068bd8b840794e7b6973364570815ed6ca73436ec7a42d83d40fa833639784923fa516ee9895d0b69ad792bf8ad33d593751e49a5fe8260b898afa0595b49008e8f3129119e86c870e331b0366fb29ea19dae19eb5b61cc1bbfd9db1c12e28d0db4d0b39db6a5f11aaf1b12254c3f9e617fe3cd7407bad972ceb3d97062148d4422d33f35c4d44f433489a1cfd854455f8c27349c1e4bb7f4c9062c833410a25ff865e60f42fff9860869d6fa116c2938111f2d101135cf0032a38a9e12cbb99a6d9d30fe8bc4c284352c9e450e75f7fc94211401999d3f4ac9867b5e3180cd3427f67888894b45037d14e2c71824697913b48d44d70d7af24424fa01712cdccd8804a8ae48f893719509f1defe9c141112154e532e4d98118c1bcbba5c78ae3a2e21ee8c334d8271a9288f7451fd803e111521212ede2cea24beb037db8eb38833e114a9859e8d373bbbf05b4f53e72c70cdb5bd19fb3c39d1ed80377a29d5008996ce02c19be86a5d77a632d6ecdddf0ecc688bd866d527237e4dc32ee86f4d74adbe46e48d356e26e48d3a67138a4974e2e7568ec98a4bd1e282dc2819098864c9ca8e6ce23c524a6c1ae95862ef05ed893782fec3dde0bfb0d94782fec18782fecedf061126c9bf35e923806c288149d243ddb6a7b03be051e7e16027a23d2935d533a0165189da1d1774db4b2684241ef44fa2550f8cc1dac051a1023b11d46cba39d9bc51d33570a6157fe66c538e165bd997749d2651e833b0cc260107677cbc7e0cee57b0666e3bb35d930de0fe2d8f8f658311666db691847052f6569edb2b66b35a89ce9d153b8748c2e1f3309a18f29580f6b8e945ae418df8b941267867ac75708ee8e31c66e8ef1b6c0c71823c7c48631c218218430468e31c6986559967996135f4208618c52c618a594314686ef05767777776cfeee6ed8dddd303a4dc025287be3c418638c31c618638c31c61863e4a0cf1863841fa03310c218139b7b8a292084104a08218436c67e43ffe4d92355b96c7f13a3f4764e027ecce168db9e30ee076575df9c8756c51db39d356aa0493a3881d9df83f0c187e3f210c6c8dde4ae7760cf9d0d890822b18e8e9a3c3b6ce284d9cb60e3430914fa2bea226843dfb58508c4f0230042f21a54c1777d54788d4170f45d8178ad79681091f05d75784df234f9ae2f5ec34ef05d5bbc96f1e0bbaebc3687be2b8c7f4d088114dfb5c66ba669329d5e134400f45d9d049a0a3dbdbcd004d663f45e5d50f2ecf209c68305d111048869bc7f2e17fb79760293a013f804c7859bb013a322df0131327a977f2fa3261e2281fab797904061404fff9a00029e6f3e42f2829387f1efe505277a9ec5bf9711d23fd1c4b7fc7b3df1f33e8df594924093c8a12fdfd0862783fd4e09312ccb329e737689c351e270402f411b4d2689bdbc289f2081623b32e9f9953000e2c04308f99919f67b5d6f92bb8123c2f8503e940f5dcb6094153a6982f57036d9402fd3ac0534f38c87b2c397ff1eb68c4cc27ab09e9e258fc3c11dbfe7d812ba5fa540f73cb4370d9b934921a0978f346703748d664b0e91b8b313a95f5fe0f9cb479cc431978d9809c7c42fec3c3b37e127aff98b5d9ff4ecc1a79dee8f7f07c8663cc2aace97814e673eb240ce139ac41722412425cf0e9d5820073e89ddd01f8410e2748f0b8ddcc9242423246ec21d233dbbc0d9b0df737969f9e80b497ce4e4999bb40fe895491c73b11eac876384c8273b3b35ec422de88efdb452a0417f2e4de800d1bf267820e867fc6b02078a3cb425fa80d0a4e7a845300df6c8067ae7eca13eac1f07ea826084669e6f70e48be0989de7e71b3021c3359c84bf4fc9b30e297e38a6095ff0f91cfe0bc47fd1f79ac63def75482164e8df6b0c1f9f74483184635aedf0dbea9062c87708b40e92826f8f3d02faba9b85f0dd4c7c1bd12388a24fa03d17596f12d91be0108729bee43d26900e7020fb92d5e43639a6e5b2255764de9ae25768284e83e2d25195865d2567bd2196af78e6ce525d45aa85ab70aea9a60a2f79a52cf6b2bc3e7649e92bf5b14bc55e568b19ce96a4bd13e5ecec92768ad7b8cd7b609c5582e555bce45abdd2b71e985fe086f396df702e37cc6f49d34ab607e625dfaef4924b8df3cdf6505161aed2a04a7552bdf7425754beb2b2a25a51b158ae52b156ae6a61f9ca9740b9c99750b9095555384dd3b0aa66be52b95e57512ffdcc89cffc54ef83c2672ddf76febd9715f6b6acf46d55b945c5c90734f3cd6fdc321d99975cd67ee9994b2f95a28af7e0fcfab04ab03c8b5fe99aa76a8f94b75c939ab43d3815ae71beb926592c9110acf8122ce7b4957a432473ea93510edf4a65a9742bd6dba5e2a526e87515f796612d91e2ac951567a9527c09fa5c2abeb2f22554dca462d94dde0ed33229dedeb58c4ac6e4edde322bdf3c552fc0ddb09b955cef06381e285e729aa6beaaaf534c957501ea28b5544ff5263a279db357e774846a0ea7f85bb2337473b657b3371231399b5a3a3efe0c82bee5df900c845ee3ad02d9e7f4e390f3a56ded28b9944ac09f16277b25fa31f9e08fd6e91f30db5435d05ecbb443d75e8dd3db97c0e4b4ed4b64f65a00b34bbce7ba19d8413d465fa26da4ed82be443be64b44a741e3faf8fb9cdff3e10120daf700f06ae20ec8ed98cf3ea2b74b6884bdadf6f83d186518344deb0dcb3c62d31f6358d6d127c5e68c1886f9943362d894259715cba4635136cca24b6f6f1e984bd9588679f4e89867cfb1eaf2cded70f96c866211734c7ad6998ced5877631ebd4aebf25d6fb22168cf459b32300f2393e0a13d762ddad04112201ef830d18192ee5ae3bdc8a711113b8bf3feb89163faa58d973ce06937153d7bf3606801ec5993b700f69983273f9d3dc27689da30ce66ced0768dce805ef299f7c3d391c3430e473bd61e1d422c7ac7184f1c8e764e6d5c4b1e2b7bd72422bbbca6b2956ac9391b346ee3c41161f29ec19df49ec11de639edd3378e88f6926326ccdef60b43447476148e88b64173db6dd8e03822628a23a29d2d0d77325b71364149fffefd8a33d9c7355ac8b271e6fd00bd2baa2fa5945eb2b7c6cbd2cbedc540974e5f0cbbc4e4cb9c87a6b2bdf743d458dbe3981ed1d9db2a01bf39d6530f326e089d6787f606f3e9b1622e391d5c8faa042422fa4dbba443da73d1a2dfecaa6e4bf42b37ac3758e173edd7613e5b267b2e0cf316be12518f611e99b971b08cf1117b31d0310c238279bb3180f8807a7468d473629bcb8bc19cbd8b8155cc5f627207fbc25b003b4a50904771daf3edda8b5049e6277a431dc523b783755014fbe60404b605b0d3a8da7a2837223aca9fa336a7d687ca6eee03c5ead4685b6dbd585bef3ddb928e729d1a1fd146dfdc88e89b4bdfac0f23d21ab139aae49b6d1fa67ebd9aadbe9aac04543a8ef72948de0b7bca11e79991919191915166449b44bf1dca2f8ba218a138a1257b59f4090ab3d7813cdb0e2548b4284266c6d9643ccf1e04050877f409ca0e4de20edb79d3634ba0d36bd079e4ab4a11eea00a13cf39ffb64d56951feed877bc1f94a03a1e10ef07d84940f27a2feca52ad0cca5733645a85dd2a6bcde4b6ae7557a5a6635275d0505a9f404a9f41c05613273f2fc7698fabda759cc4dd6a635ce066be826cc1fe6d28499acf452acd1a49bdeb47ddcb1a7a225f49e7ee851cbace6a494b5daa1473bdf52c006368ffe6af869b16ea003d139f7c1d9960236e79cb31be07cf357e3233a67890cf06aa23d0db58b8db466dec6cc3f22222222221591ea673eaaa9543faa9f672fa97efc7566d4dc2994e5291915525e3dd444bd04aa5ca7863d569d9a0c297bc2f37e80cf37abe9cce8f46ad713e8b4f78424f4ec9db4c9e927337a2f23a0af24dcb109c9097da79d676f3d879d445621688e68997e3d17fbd173b1bf7ed1a39fd3ce69e7b4b3a369f4a85dec6d9b1eb19b90625127e9a17ed123c6a66042ead7ca089bc29351e9c188de0fed330bf4092c8ad34f0cc2925e2a3d4da14a0fdc493a40d744a7e14934d4aecc8846f15cec67781e6ac3b33f0e3410bd33cbb239d42ea647fc84de95113dba262423ad664241efcae8d9bf6dac5db30aaa591971cc5dad562b264c7c98b3049421e54d908290a7f1af095158f29abb7621132e424dab8fb3c12c4cd30da5695a0ea3ea4de63f50340d853afa9b637bf4a7348759caa6d8cbf0cea745edd252f412562a610e916eeaedc750127368b11efd9751500430467b211394e69746686f509e79b435ca18adcc628c5004288fd0b6341aedd511a1435b728ec391f2686fa267bea54aa7884157a5f8851c0ecc6f786c8f6da6142c7aaaa4c52ab50a1f8542a1504ec3284c728e22a37d6f6beb278a4d68ba381bc4e08dbd398d5d9cad74636f4962aed95bc2348bb2986d652ebd04218cc55c6eafa1fcd4afa182687e83b2174a18142a6e52c3dc54f237eb9358c53eabf0638c4ec331c3a4ebfd803a50ae9220e19432cbbcb127dba17733790d6ebc04c807fcb95cf87a945347f195ea4c833da5b29806abfca027778e81d3b6e434576ffcd3bb3aafb23a9d38a7e1d3a9e1e9f1802238d5c8d934144167e06173ae039970d70ee1d3515578aa50a5a2bc2b55a1fcb24ece6a71b66d594292b8413de5cde1a0385229d77a1c0a793fa4e0fd70a2170609f963f9854784a0100c0a6a244049fe216142e8ed3f24404a9ec5f2500af4429e53855f72a263b7812948c17b613f3180e529fe386815e0038e21a866c5539c8627774cdb0583ac0feab9d8513e4982b0582c1ca752a94e276ea592d3bfe29ca6557573ae6a9e52e14fbb5229a7e13e40ca69da51ac24e25fd66741a010080484ffd3f9f8183d3713269ceef169e1eeb96473e2805f7a428b6796e52ed027e8d9d961127cf50fa8831257d400bd8fd016174a946544a55982388f881621c331d828106506ea67083dcf5b12d8c3319de4b985b7b06e6ff80d94a3bcf3ce7ba03be0eb90e227685297bf14a55215ab8bc1322c06148d502497c780ac406f87250de911c203eb8c2226424f909c1c3561ce9670cc0ae7177b75fea57b4859a60787d0ba0be661788c1e2c170403c33558b16ec98587fec20a305078a8040f008b069d3968d83637bab1b0da0f7febe939edcd7c07bfac66f83a9eba6d7c2fb054af4e975df9b656e01d7de7d0764735465c76236a19ea127920bad1c261a01c460b7f618970607e85479818ceb60230459e63c40eca58616198e018219c5becd5f91676a283dbf80e238ed98109c7c4386a328493a4f984638a60e1ec252025f652108ef9c1f9a75dec33fc71cc9d3fa314d42eaeb1524164ef7c6bfdb1bd33ff02e65f7446bc48c08bd38b162f5cd077313f88c81fdff92efed885f52e3a9c5f5e905239d0d07a7870d1774dcde59914a6e770582f3bd1e121b90fc99764f8ad01e3170000f0ebeac16fb51100013c9920bce4d183a8f0b9a00ba0bee70a407dcf65a302a04287a9322ae6a5fa9054e021b18970be8f186689c890f1836526412da311c06bd83b7ff095bd5485bd2ca296d19090d85732f652df885a24c05e9611f63a02eced0e602fcc8abd337f4b412db311b56b433221b50cd763b297a5622f5505a9a88d3111bd66ef64b1971ac05e167b11959570379d45e5a21eeda799450ef6521a3d5c100f2e400b24f621eaa90754c2ca434ca4027a8c18768676313a4ec2dde42664f7f6257797b55dca9865dd0eab44fcae3bcf2a0771b7a3bef7ee76f0e670ecb083652125d335a2e904b077cee93590e67415f6d2e92c0de92113cf35bdc84f9799bed939bd4e4f99eec3929fbec237a229840ef9e92b1bd1b36f482d1381e79a423cd79cd35bf6d20d69cee92c3dcfaec3e5b9a6f37416f6b25239d0b097c5a1ec0dd7013a0ed7a1def05aafdfce87ad67c685015dcc89677fa9176b9205797617f566456ee6c4b3db7a6790e722cf3ea35e662247bd7c84a35e1c76f24238743284636c6e4c57d9d8193a6d66cb14c2429da0cfbc1d3bc2311b77d07968e6bd60663a18879914288c9c4dd679acd823924238a6b31578449f7967990c8732acb42c1e8e995936e79c928721100422ee3c9fe67408e1ac383030b5cb1cd66c6633cb5ebcc0fcc59c9d653db2892a39acd3b3da33f316f29de4bba7b339fb045006f4527d2feccdc0bf70585b48a95fd0748fec5fbcf0c7d9bc701ac65e60a822605e69e2c07c460198bfa1aef2ac5200e6a7bd4949394a65798a6befd1501aaa7a615ed5bdca5fa55196c154aef28d6368b8bbca55ce9c4d8b6cd27001e1e34b4ea35e9da7e132fc3e2318bf2c00f8f51efc7636fcc204c0ef8c00fcbe57107edf108ddf47f47e5fd1673e00cf9cb20c65d7f4cc66dec2075027bba6d7d4af8fa72b88fad82580fad81580999f6ea34e1700ea74c9a84494bc9d868ecf5f9c77f434bc85371075c667f50188999296d5dbdacd2c0d6b2ecfe1fabec78f9f2e97b507e4a7751586fba0e37536d63b6d4accf1901e4b1573e674f49778489767362bd99be93ef83061547b75dae590d3c1efc30c879c4d0dd76a50acc88bc7fa329d87e9d60797e956d3b20d723b8238665ab63e63f0e0b3e4c277f092bd3a48db9e797b4947e7d3368fe82d6975bcf6ae5ecc5d4e00175e0bd0259f01c361b80f1ed3b6b09267b585b9f40cb33a30efbcb33e308f6917377318d667f8e378b8f0b6372e3cda1b17efcce6f0bbb0d1466e870f3a5cec8b6173fa79f0ccdbde1d6cd4c1e6f45bcf9c3922acf3602f7c6bbb4b13f3529c761251722cda5bc28082b0a0e9b11434b1a07923fa4b938779e9faf8cedb856b2e2a0fcf058c7aa72c598761277730bc6be7b2ba60d6ba5cd8f7e2f185877a79f018efea0e1f302f79d7d9fbc2dff90be683c7e8a5ce85cb7a6706be617430ec8d0fc3adb5d261bcb8e0c17fc0bc73953cfae0b1e4b1e4e2f1c69263a50eebaa0e18fec283cb388c7a7f7cb42ee7c1e6f0471777bdd4f7988b0f9e5596cf9bf32effa1de0cbccb63eaf5f12ec7d8b1229ccd0c3b436bb8891b42e76b580ec79c96084fad99f161c669d46d888b99596b51b75a371feed869182989c9d1921dd0e8351c86bbdd7aaaf5cedef99dbb96b9b8e6e2e2326b6b87f4e9f37dd2bf2bfc6342143f6fdfd18d92c7f06c071597329c86a5971c46143d254b44867decea3c76b585bb5497c7a89b901dec36c44e6fe15049ad90083a51b1225890bf87e1d9ac4af04f8731731847f41e302c0664d201854e4022ee8e70cccc2c0ce2ae7247382301c5822c06e4010c48f6b88661180654b71eeeb8bdb3c9ecd5f1f9ac450bd73821383197e58238a1238af911eed88649406f0edfc2a5bb7008e42cceb1780b8be7f0f15bc89eb68fbb163e511ce71dfd74cdb4b92a8a63d36e43b8cb01cdfc42a09e579216159e29a1d12f47f4aefa5eab417578f139a70e9e559c8d87181f6466b8f047c3762e2e3b383b57c431309c9d5bc231d6e5ec1c93d68ecc4b5eb2372bcffc3d96d51656c4a5c21d605857f7e22ec9100e2816840171c71fa02cee4e2348a6c223332a1482af0a9338c143854ab87361a3a0ee1702cd8de382b8235b0fc7b8b36f4238a685b36f3e1c53fdbaa5ad56974aa552d71b572c9530efc64ad1153d6beb986b7a0ebf7439b6ad98644fbb5c444877c91ed3ca364ba5d28491a167d35fd40bff8597b81da687d3278743077fe1cfbb674eefe994b399189006e3c5739896be8e8f1f3f3dda2cde0dfc749ace6e0ecb7ad3f98f9ff5f6672e9f9eb9b4edf33727baec8df4ce750208448c893177f0692f7fd742feb6fc55fddc7eda28bd9359d7adce312f71415c8bbd3a7c760f04627adb92d3b490db42bee43ad40b5f072f7138daa7bd99eef2c9f1283917d4321c110d7b593ed84b7df01936e8b967f050330e47fb4de4c1318e0751e631f6b26870449fcdb03ed8e62195444a2965e7b213cac03c462df90e9507a7691d6ae7188ccea75f9787e18fe3d169bce96031a096e9c1d93518fed283c53a6bb22bf6b5ebc537a73c5ba64f9f1ce3f2e99bd55cfe267399fee2d6c3798b77ed1340199d6dc570cc4b8e01e500c35eaa4dc7705cbef30b03e370747ed3f6c525c763fbce21503bf73a07e7613a0cef1340203a7b2fa0f3d35f4a5e2a790a6753d26695ef3f46859f6559e6343c6bfc18dd0e150271c7ae4385452a0c72167fd1de8961ccd9e0bca3afce9c4df5597194dcadfb103a1f1fcb02aa361de1980a64443f9ddd1464129affb8396546a422ea8cc8332215c7f35cecaa5792eac5f184a1a86547760f49b4d70395ef258bbe88c9b3cb254f241323d2b1231f60e23df9f33ddc753fef8ab34921b2481a310df62601bdb2481ad1221944c3ac5cc22ee697fcb9d2c7c484969ab0a613cfe4130c03f2ec17060bc2c43fee5959a4050a9f2c923e3fe42513cf45cfb2c7bed78541ea449e2280ef659e135e463079f63704c7bca12c3479fefb88de9386341c73bd97f0ecefbdd7f70c8ccf0959395e5f8342aca10d7c43ee2e39de8b8ee76267cd8076ce5d9401f6a3bd1e284f57a48967df620ffc80d7fca01e279c4eb0127eb1201414fa9df0f90b834f4f9c81f67aa030aceec8b3c798f15eadd80e631cba0e0c49af23edf5407776767662d08dec9f431b34903bee18420821c4d99038e6b2f8e8212922849d3cd7e2ec0d7e2efac8bc2a04b1138e792f360461a206d23db787700d8938e63293cb424a3826fe147f790911cd42cff24f16a8c9371f823b17c27f7808bffef901020a0a1212ba8f4848065ae639e1e5859e9d1a76a8043661d989e1e1224e44d2f693dad2fce84f7c44d4327cf45ceca567f948e8e49c7329498cebd65a28e7a6e5c4ed4fdd0d59a865f888c51d1bc1dd92a3264e5ed26520b388cb8afcc3317c7d3c74befcd352148338a6637891e1c8bf171b863c0fff5e6400f22eb78d5e3bd586b6bb59481c8104fc41917847348086833c0fec1deea000e1768301f05e5e4cc9d97578015dd8f0e115230716cf2d80c8016534606e37a0481cc19d0de86b0267d1bf79c42b6a21fafadf63362010ed3d340404a2ed199e3b493be1bdb0a7c10908bc8e5df36737bd303c7be995e1d9c91b83115038e1fdf080f70206252ddef0ec1370f2ecdb110d68d2a2050b37b060b1a20d2b56b424b5b4b4d8d06aa958830a152c6a6061613961b156d2b0b2a282061595d519562b15924a9522454a4aca0ca9144a19505068134a516440a14e63389db828386e3bda364d0c9a660a83c9540243a93499cc99419165d817304c3e21bffd0886313e3b04de0fdd0f783ff0110e783f40673fa201d04e3addc01a2a7aafa8bed7f58eb6d085da6863161b68cc16caf86e4028d9be97e7eda4833aa8834e9c66248362103dc4503e236a460cc21f8ee9ee1f8ec130ccfa1c52821162a8e6fad4188661ed2714230dcdbc6084baa0c8cc1c0412e60cc4faa13e1886613d7f509c29faf4e16efea050267b27904d9c3f1cd32578464b664c9f5217a84f9f9f1fee3a96f054a7cffc5151f119327fa09c16a7835e85b592c38c92d3f06b0c4e5ec57bc9109f6fe19823210d443fa4c9f7f06f6808d0fb5c4d3e2439207a765984637a169147e6f6381c339ee51be5db63e97dc75477d76ad0140da7d8fb966cae22a7c5ac4f73fe5ae6e41891cc3e76f163360737559feee2ccc86cabfdd5e4505bedb6f4023b7d5a4504c5555c53a9177395954f7b63fc74ac838e6857cff4a13f4019e024eef6611ff6313a72d1f4870504c42c04f412424ada11629e22a2a2a222a323980483be85be935e433eed9a94d5420f4948e82d794c72f0fb8e5eb48b3b57c27a4ed0dec16ffcbe2a97df966f17971d6afd23d89b678a981f3f7e49cdc3e3337da8049a3e2e1c0ab54c0301090109010d0d150d150d153df7d151d251d25152e4116a990854d43271888787674e20768da76562917467515ac43327dd615151cae2a69289e3d1c25d6acb6509779c31d1e1e29c9f6a0b869f9c232a1a6a191662a1a196d1b45844a9c6d32ef6392965edcc49291f3173fbf49c94b258ee5d377d7c524029a01477f6c8d3322cd6a52c16479ec8f3a2ca22dccd54670175ad5e5d85bb388cbaa37be177fa741d0c9f477e388645a85f2d0304eb7101189e7d0e39c13240660b48f0ec5309cb683b93098e79432e48f21d8c1739700e39d4cda5e5d44ff5c6022dcec25778890514e512289302b52515045d94abf0c9d9b478c987627e359e26dcb1fb00d9985e50a0a71bfd9c7ddca9dc5459eea2de99bf1288816a95570249a477c40374c4d32288456ded58b1c25eea2db67583e1bf6fd5d60eea6da9bfc75aed2687cf525b6d6ff06fcedd50f9ca1de5d3576ac935583b182ed0e8b7fb181cd3b6021df4edd055ae74956d616ee26c604ca9a5215c2ad2b3836a8c444b81182f2d4e8c47c92490146a99e923815a460b62b516d4c2faa1d4b64e9cdf3904551a424fd55da68f042a15a9a59f12135d86e92381e690e913a78f041a52a7cff4993e12084e9f397d2410187c5a07e507d491261c67e01d23a31c1c61d2c4e572cfb34d4e37ca61951e1da5b6a63f2925ad2dcc512a9192734cdbf668592d495baca3dce0e7509cbe74677117abc74661335014473945b160b7a67336704891de88f0784dc9bb0cd459cf0577e0647546595dcb40a3e7628fcc629294b5a908eb45152ab67c01655204c3401c08f2af091c18d2febab6b08b59ce1d94c131a00c8e792fec9773e40d745669d505710312f18c38222606cc8c0bf390ba16375651ce2ce58e312c09cf4e789ec233abc599b34c62d246ee9848438ba2777b76e11446341fd32a7c3a2291cc6958072a9d862914a2d5a01042ebf4b90e84423841d4c43f37fc432285d76b2876239eb3f5d19ad4a393590412434665a04265b5ab086f177423b0e6c14704994fa0dd80dfa22fd39ae88bde08eef848c3862e2cc41d0735ca9268d4f0c809127692243d730dd04e17e198560211407a076abcd514158ef9d0665fa028c7dc85f30a8bb338bfb239291b358bd51a4744af88dc0d16f506da9674e86d5bd23e1b692f742550fc559457b5776a2cf86a9992e5ccbee7d2ec7b2e93dd6eb05871719ab6f57d4a7571969ac47b158af39165a3ca84ba8bda3ab1d48bc4b33cba497f0857ba1f12342cdb84727bb6d562db367b7324b437b2803acfa2ee808fe22cd573e4a3388a6bf2b59ebdc1ff5a3e3b4cc2f34f58e625a187094a2802977cea2f1c6aa130fc8547cffd33c4043fa0ee1c0829c2882e8286a267f9372486d76b6f064df18cb349f54e0361f94a65798be669e1c29f3347843bec965b6f7bab3fdbc2a16d1eee1889bf99fe7c3a746d56e9b0b694bea285afac6c0e9d85776b73167f5322f1adcdb2b0170924a0dfe9aa5e71b8b54f7b7bf82ba1e27d4e4a7b93be52eff4d8f2ade5d29e7a90b222575acf57aca7487bd3f2cddeac70e939f2e5b339f25b2b3ca2b85ce1c2fdb9b4b585bf16dea28594739b2e5b3c39377bdf63c8c3da1ecf4eef3490156735799b7765398b7a917816ed7e67c397749616d076d7303dc3c265e567d9640b7faffa9bcfe26e69cbb2b0b0b0b6159a66f1581bebd9152ce49cadab424ada72151b8aafac78b7bcc567bdef45f3525a172ed5b3caa2d3bf050b96675db8b356b85cd83bf3d25a53ed5ebe1694aeb097a5c25b2cbef296cd5bf5bd8a6d05c55756a49472c52512df3eeb56573667b1b88a6f2b347fa3b3d81cf92b7e73e45f9d6da5a238d4f9a141e223104ed91cf9b04710532801578fa2135fed1e3e1ee5ea748f7e140b875e49b240b13414410b51b0517dbfc1960ef9d0e543abe21d8e793b4890d0f0978df8c5e2160b0400c8eb614bc7f30a5460bace331628e49e772562725895800f4db56584af20410d84fcecd498ec0f939b5c7b3b0200e4c504c7b425f2c3648db41ba9a66aa41d56f95b6de9f80000793d733ba2cf8be3bd05bc020100f2faf8d0b6dcc54d9c0e8c043f30514cf16d89ecec686ef21f0100f2aad9d1bc6584f5016b5a0ac8bc645bf3d598146072cdb614006b3487359af561e400afa603be130020af1a936deda831026dabe32e46c746a52bd0164ccd0c4c10687238a1b77facb466e8b102ed218ec16c11cd4c2213f4c2575b36e217279192f9f5d33f7dc44c1e12461cf3220f71c7463dd4493a491399b8048dcc46cfc5ce6cc4afee86af7844ef23dae1a024e2bf9270c7ce44a859a49461834bd77c5bbe6504f4a1738429a698620ae83a355adcb69d7fae71434d724640efd9aeeec88a6500f239ccded221bd5fe7e3403dfa6c19f87aaee8f1455f4441d09e8bb649e7a4ebd4b414c0f9c94fce39d62d2cf3b8a338de77ef85df0be4eae62e5acbe6b2d9dac25dcb63262ff93479e6970651939778986e6c169b7560ec2a340ed2b33f2790c9cbf15eb8f6ab8786761040470fbdfcf6eb0d7512bffdea2127cf7fd07a71ecd1338243fdfadbafabf39da45d39fa55c35a0d6ada4c25c8bd3d7b06c5130f08e640a6a2d2af94a12e995a26b26ee6445bb9a8f4ac587ba2f3283b01bd2727b05bd3def39511cab55757472ba3d5b31caa1a51596943ddaca7f97395da52d1562ad5b3c3a8a9e179c2eb5e0d4f921a9e269e9b60fcaac2f81c2df3de51d2569f3d25355155df4e2a5551cc074d54106d2f1f24111d1182954e4f929c18b109625650bc8efd4e212b31bcecb51cccd3442c67c2315666657472edd553ed25dcaf76e9d43413dea2f861aae15cebba3aca56ef3dd7ec5df973ae1ad15c5bd5d51177ec2a75c56465c41da3fc5d19bda7e1d511c7a0a0fcca88635e4b0d4301e8b9dec327f350f879aef7cfdf73a2a5f9e36c9e9da12d3f04cbc02324254ff5de50cb3f7b7ac2dde984040a3faf535373bb37ed794bd3faf5867a80d44f5886f5d33c479e7ba847097ffb68fb19ea4117feb69326d2fa4dd39641913d61b31e7a514f78f02909c618637cf37475fe84c41d7bbb7826909dcfb2a10cc9e8fdf09e4dab3794835b7127a0d3cfe9e7c9b39f98782551722a923df164b06750449520294f9951f6c403a2913c1950bc1f3a09ef25e525d4aed34933c9d2ce493ea747f4481e51249a840204a567458f320ce33773bc1f5eab55440bfae63a35ef0fa053135da726da16b44918117db33e388f7e8057b3b90e575999137a0a027d35d1b614b0edb414006b3887359c47dfac910ab476c0cf1c6967e75f4d3b416f13b9fa95e2294779f8a81f20281e1d88cab7d673ea3a3501afb237d353a6bd3a29aedeec583d8ec35864291454e554def26e9e5aaa95a7a438c4306f718e73592fcd4bc9a285a354d65c714a69be8285bfe72d4ad3df7bcf515a5016a8155dd3e73cc57aceb596639ab3a81cdbb1f294148e8310c214d54522c555aeb90a57a56caed91cf9290e693aa5ae3667a997e63767d58bc46f0e7738265a080493dc103aaf627370b4f70842c7ea5730e352aa15b75aad6cacbc853b8e31638646883a44578ae2a5b44afe5a99bfc7da3595567dab2c1606e4c31bcd4f4ec33146550ae74ac857d919cac14fe152a914dc79af43c20d9ce8d814a2d08a3af9d6c23127df5acdd96c3047bee692c3a1798f206cab2ddc81a60ed0dba5febd94ec6022290317fec29dfb90a8aa9bd941ea90c62084fad153763b3d3f453d42989841fdb9dcaca774068ae33de7da7bb3552f262f0a819c8e7eef25710c7c1281563b11481412777ce24f2cf21a663ccfcd04d9d34fe24e27452358b32828ec9e4e823c4432f1d407e69009f48d6362298679fe7136dc0905a9a3be8570c7fd845ddc49ddd39dbc7b4edbe69df4eae61d13ae414f9bd370cc28f774cf0e93bfb1c7b9cd9bb3cf99b3c13c9311723c366fd77af36ddb7cb31b372ffdda497167664e9e93e293ef177492bba8c6e093f5fc73518a29368822490a415128fa27c53f245038fa97d409092d6982d51223c9449a2c1724f141c27a9801167b9703c2991e9e2550a3c10f772e7831700baf8346425b2832d2bcf4845e2824c435266d076980b237868b75b2773ee134ac491afeb232d0322ccfc55eb96687c5326a819525a459d6a32c2316ab74053a1d7246643ead0f589359a13924c412621945d1ac23a5e684f6ecebdeb32c4a568cd0c63f6727d4a9378471b62bda39a9444244df0f1d83d5d2f3b960b4f4bdc066fa7ee8178425ff86fe2189c251c73333f4ecf04817c3066cc2e8e1e670a02d2299bf1accd923c03290a7a71b6999fc31f992b36d69afc9665b9abf9aad8772f03a06e2ae2dcc418dd7b177a5275d47147486223c2de37aecec3cccd3bd9736d02e8656bbae83a6523727ab1d06bd38a883205114423f5a2746d3901d04c5d945618676eeb8f399cfc1ec773ac7c8ccace4410176d6e1cc0cca897f1ae4c89023438e0c3932e4c89023438e0c3932e4c89023438e0c3932e4c89023438e0c3932e4c89023438e0c3932e4c89023438e0c3932e4882121facc8b3e137d2688177d46002ffa4c00666cbc1f1e842625da73e9d81dd1001f1d4b5ea91cbab74c6623450545695242b008d0954af0b9504a8f62840f02acbc9e351fda1b58c40a11049e0420055e4e067430c2c7f604db5cfc0814ebaf088a319c41760f6709cecfb20a748f59171f74ec9e534cd60e84ccadc548e6f0fb751f6f67106bdb303076b65a83954e4b37ee9cb019620d9112ac69b5cbb8659acb98d59bccb78c07a49a9bd93712dd54615aa604297b06616ab2d9067a61987cf40c2b830f4a49f4c2d0b44c11366332349147492fe35207b4f762228dddcfea348456d09ecb7b1c777289f2d33ce1c03c0a0a676f11cfa15038307fa200cc73f606e51aaa6a28e7eadd9e73ee08231e754d8eaa17e6a9a72aaa6aa720caf9fb8742d90ac4d483790e8582284b0473887191ab283512d1828639ad372e9e5011e55a0dfab41311cc51553bf98b1bca74aad7e551aebdc83146abe22e9aa8404fceb9f4878408411ea25076c6c2fc85f948b4b3b3c3444d74188e4179dc8971891fa36b188ae55128f8500ef31ae408f0de4daee1c07cca5e40e77b687e4f6e7294da23e5547393739c9f681ac51f6783825239bf80ce73f602d4e228c1f29ca3ec7bdd3dd91e9c251202cc97c8b22ccb7c09cc623e332cf32530dfbce44b6c96d5b664e79cf4d9b8cf28f28fa8c3f284bd9e55dc18247b5a6602473e3f7386bb18b276524a7f3da4cc5c4a99492ccb324cc690b69bc249eb88410c8b27e8d811eef8d15fe1ed921613c282b0a0968135fc22928aaf416d327be367d88f8b8452c6930f77d810eeb023251ed0f8172be292c7e76358589010c748e92d840561471e3b5231218e89ff5810c7744ac5579ee291c391861784e189c7b81bd2b91bd8134c308627d2f0823018ad38acf5258703f3410a9cf085971eb91b04c09e60823118bdf4a7e9083c6dd9a0271e05637156551183de0b17e865201657512f7cd6e6acb1785ec94a9e862cf5e4ac1a796e1fdd1eba0dd43cfe2831e8e4d1e8fd00a392fb8e260ffc71f984785e7f61d1c3240f79200f8f6418c5333cc3336cc3730ce2fc794f80b3efe8e82804d397d0a6f6942084a7092896f0b2011ba88e1170c0822ca48108133e4d5834571001109e3ce10c32e042cd74de7c89d236bda40581841f00610b3818728215d44c5b72cd4dd6c843e224e94b3604ac9912e40b4a307201923024a971898116a6c063248809aa5063243ab74c0c7a2f2240feba64f6ce3ba9128667a0f0df901690f03aa4f0e1987b63900e297c30941f52076b9613180fe40b5606fa80d77090731085daebe0c9b3c7002ad244851e6b43db71d7cd79d7b886968939d7dcdf111a4c8d9121b6f76e94e89fc0f3d7e3f9d5f9cddf7b76b337fe783ddcda0ec11d052aa2067a3bd4062150f73b1d742eda610e88772e033974426f07691603f26f3687be690e39df8cfe142b8ff67abd4ff622f15c8e946e5bd08948db82b68bc12ef6521ae8652053a97b2e083b08349d815a665a0bd492812010777c83e762671e4c212061a027f442a01d86401c73b9c85151bfa24ef7a90c1a74a803a10e1a0328ff6bc28b0a3a289241a533d00bf48ae8073fccecf2b56c9e202ca4d223248809200ee226f87533e1f9fd7010ee611e469a2f7d7c98c7c777767640d040459e6f1fe926903ae39d87d506f31a54ba36b963ad1bdba66f189c4ec3ccf188bf711076b1651e19b7c8e31aabe6b10f4fbb30bf697f0efbd57884b63f1b29237732b0dcd32e20d03b9967c89150d00f1d96da12edf54069666674f0f3ec36608b88f45713e7cb3a6766cca064e68891328739d809bd6f08f31c431411fdc5aa85229ccd249279d7213f42073c3986585283ce8d4ee6178263eebc2c1b73c3ba1e708a2172908146ee5e7498198e02aa7a29bc2a4946a1bd1ee8cc8c9126cf6e2309e63bb01ec11d124c838b1aab3336b89be986f608e8dc2de0b9d89f98697e228622b893c140036204a572acc28671930f7bb24fa9396376cbd7bd61d8dbde7b2c45c2d6e650e8e1d1d3b0866dbdc99ae2d8666f067ec3369aee916d29cc5195a61c424b6137cd89ce922ccaeaee534a4af69d22847a292809049992020429df73081bc24f91cf532ac47cc69fa5470403e3c4b3cfa02a171bff4cdc8d59618aa7f88542b7e19da9266e87e9bbc4e150f1cd1f14e218ce06d296a1d156ae692929a57c9eaa3728fff15852a6524dfc6df963b1a4fca960b1f6f22a25fbb1c8d4855672d05fbfbb01596f52fc3dacb7bf53af5d3af720ca23c723c5dbb92b6d0efb4d716853d2da4039d91be92887f6a66c0e5f7e94d043e91c0b44390d438d1feab56cead956aa88968159d1d10e79c0231008e8cfa64015cea5b84ae56ea0a37ce378744a8b0adbd29ebdd0f45e8ba3548ecfa9483992524a994259e8f00894c1394b4571564d719a56519151adec9d2a0bd37645765b795a797bc35ed99b77573e39da290e6dcade3cce29852b8b72ce539c364ccb50e85ca75cc52fcca7dc1cbef1531ce370b4dfa4ec8591a6b693a5edab144f4971cad9a468b0ca4755f8a80affbdf71e85e2dce5fcf4206d1995d552521c87f4149be23a0feb8d2915c553aef339fc28160201cae09cd61b3fc673de347cc25c030204e23db641a17f1c1297a5e958a9b65ad05215bba03f5b04778c61b08b9899819901f366241fc11dcc6b8899e21083d0e642410e168d11269e5d88e7c407bc068bf446498dd0db09116b8f4704f3182c836d5d8c993541dba1a5696e9983254b96398440e285c811dfeb29061f222c0e1a9cde25cdb49d38972e46eacef877675eb58282d10891e32d79b101d78da091db897a96652855f5ba149fa9f4752928f6e2a8eaf6ba944ed5a5ac1c7237b65f59c8dd983fc3312acb9e6267b84bb90d1fd0da883628309cb82d7216e74bfb66666cb0ec5ca0cbb3bf98f7ba76e8f2efc5bc212362f84b556006066aa4e74555ecde98c61cdc4920d05214f4bd2e0c498dc44b96302fc9883a23da5a769ee3251b608297700e2b0e2fe125df2d196270abed3f5443a5edbd3b4ba552498bcc936dd068c2a20989261c9aaf2934838278439b4fd5d06b53bde20e5512d510c74c56bdb8530d4dbfaad7b4aa21559248c3aa17774352baeaa54aa21a7abc242332b9d69e15718cb43c34598929a85d1b0e2f79e95c462406221c9992536de9e0e8a620df6273384c1396a206b7292439c9df0c04bd13654a4c411ce79ce61cc7d919ca4bde14d4322b40d8c5be12c42494c494195d164e46f42814ca6998cb885ef6046dc7e94a818ce8a1bd3165440f71f4cf209ef0e19521dc11a99270f7aa17f7faf6ad76bbd0b7bdf0aa86307f5c8948e6a67a4ba756b7ebd042118e873b0ec21dd7c3a37aa994b05ab820a620d3112d50ae87636e2b4945c43197e3e1789e3c3b1744f552255129e18434d79e55d31176994c4226a1ecc532a65767421cb3599350575350290ca620d311cef46a19d52b4a296483a1943ca38a2617e4bd94da4b42b820dcd5a05c109b1e8d06b4399fe77e7c3894100ad54453ce068736f19cc4097107b91777846edc03da8ed2d6e76b508e891407342313cffe8a3cf7f335282784b3c149e17c9ebb9b13c20d79ee01bd9c6a66988caa66954aa582a887dab66dc3b64d6e5b6cdee0b66d2a278ee7bdb03f4ef5f24226f4afc28cd04b5f5b7d4fe7d5c097fc75d3a56b9889551ca3f1cbb401b17ba8040d15c6494d95a21108000000a313000030140e084442b1684426d815d53c14000c96ba547a529a674150216408010600000000000000200082007474912bd88a808bdc586fb436f98d3391bfe214007cff8682163329ef728d817c2ad6dcb09b99221f0f791fde165b63b6b37ebfc82f6a95ae5a689d9a6764a1a1c22f5c624b89670c709bec27168f9ff0f356dc50cd24745899e24ea6243ffa3894cab5abfcf2b80b16215f9d852f8c14fbdfbfc8361665f128d1f2425f9565512db15e5d243b5fcd80bab4ee64d28c1eaad7d039a2b6b5bacbad27b54044889a1fb0b5256cb96d656626bf2af8e7159c6a0435ced9c4a8b95eb32f4b130a881884b244289f2c637c0ae5ffbc0c9b9dd880f2132ee010551d03fbe089c3a0b0322dbc4e81f22be44aec7d0d4b507e42c700a07527a9c79c9b0559762e9c921d027bd0cd1371bc6ccb1639ab6735f742f9491de369ce9f83a0d4613d94684bb99bfd6b2906e59fcef242e5f4a43facba3afdd7a50e4568651b395d99d33b590b547c7236844635f9da34b218c5696aec623a5cebba5483174a39c7900a38f9b83d613d854115aedd50f0dab02fea43614ff3f3f5a136dd09d6901c36ec28802926a214892264050982ee0ad0bb6e253deb0b977aef1c361d39bbee8492047973e23c94d8d05d95dfd74cb4d39f8df8c34c0e4505f861783c81a8ec3e443b1db280741d6c2e15a36bb3c7e884c6acff073ed617ea8d015b6cc58b96a92c0bb5676619c2e6f5bdc43c2937ee86ec1eacec1f7b69dfa994c7a282d1cc92785f028ae580546dc99a220cc520d1947246aaf0fb5ab4fb1a25c495314abfa08fb67e445783a98804b7edf92ea6f6a79d3229b452a4c4786acce58d1e3189be9e550ff96d0e69c70bc9682e7c28f04e30da83ab17d59561c680ea1b8c402042dd7792554397164a4467c6f7cc4243611a644e409f59fb126ec9ff9dd2cad8d028e55222bd70336a0b194dd91daa4718f8bc4c5650a38979b9367227980b57991923a5a3c01c906fd1dedb4eedc76f6fee95b4fce4cd52ec040437a4ce4b1d3734205c4ddb8e608588653bc44b4cab386dccbc3114570869120c91abb3a6282b649cec7b5a77f733c550c7c9ccd8c8a6ad18b7b8de1df5a5742029ed5ea222d0cc800c208a13036ca661e06f11841aac7dff10395e79d37fdc3fec5bb4682cf5a1dd4eaa448884758db03a1524ef45c4e8b234027ca38f7c4bdc87d5820851d2a504975570855fcc5bbcca00e25233b2622360969e19385a363822792766047d012947e50ffcc89eae138ad5556023f3ad658fae3970b315a0e95e8226af58d0bfa9d1afde6799db1533fcb301da0c8cf64fde42754c153f6c4637407b8339637b109e5777a7c36c215f0387d22f5065f88dd975deca48720bd296c6a400abb8cd72185c2ea290bb8d62cf757f89b0802a07e50877552eff6d9c4d55f322a906d8431c684b6d2c412ed7e5bb3bdef24ad0ab77abd805ce8de6cfb552368e354221431d12038daf6cf692e07f8196e97ab60dba89baed99e89bf45e115668868127311386f72b4f04e245e0e6916cb18a8fa61ddb52cb290f43db83d29a25d46867ef728ba727be3fa7ada5478eedb3448afa1dedb33ad41e7cf7c01e718e75f64452c8836c1335efa19e371a629f7c8ac75d2e292b196c5ffed99d411c407fd338dd687bc94af13a440e0fa74097c0db3da6d01babd02c030456347cbacb80b1898817e2f7d17459b0f32ec926f1a6293823502908bd1165bfcfe063a5627ad4a3e400b59fd2f1c463d6a6814783bea7cd814d9d9208cc5b0a54960fa0488888ca6fbb4843bc134c76c42fab2e1a2bd9ad3c2eee04ec1873d9853141a075bedc02a27d4ae1806616d2c2828d0135c0c2a022038930fc390255e14a8e2104c891db6754550212139d48e3a9cffab7286f7abaadfa6a855262c36b872f1f725aab41c35da6984b212a6662e5aaef809076f61619ac29fb6e7bbc6a66ed4016ae47a7d31fde4c5c7c8e11d95b15587108c9331e0c25f04f7db434f1799da5a8f6f632776a00d0ca35f49b91fdf5f60e101c9004836bf5f807415faaad9a2d013a989802e5bf284fa818ddd7e70b3ec912ddb6cd62009bd98cb4aeb14754c44c7f426826ee0a386820f95c113e4bc67b32f2008f790c86c10447a06ddd31fd312ea942f1e2ce1c11f05a14d9c67e9d48dc31b7dbfe32a88be0d6aa6dd5dacf22997c83e56e753fdf0c4cbe4aa3b4aef2bba9d1db81d651331d49953099e499fc3a7506795e2f33c5e9ad7d9903810404bef0308bddfc6f4d3b40a8f3a1e1360e83c961e2e80be77b7527d7a22740d94bb1a1d360ab05e5f67136bf1124f1dfb04c8fa8403541d0a5637c9b76586fd37b0a46a43fda805a5479a8e15e0c1873133776c003a3c865a14c5ec2b6ae8471a9e12ed9888dcaf7ad273f79f53fb07a3bc63ecbab92aa0d20e1d16dd30dc3c8bfb37dd29c8f0270496aa8113a1b62188634bfec8e6b8ae115e201cca0b2311742b40405e6b44b7506c085082fc9107475f72903bd63f70acb43fca51cd1ac754dfbd1f486a310572d7fa376aa2c17318c7ce6cd2793c15678757a0be5d7dd72e49e7e11ed09a1a1be39ca42d9d969c0913aa136793cd545aa08e154e546b9e47aaadfcac2d551db3e291cad502a48e4a0c2c898dfb676c943ebf97fcfa01b67cd62a5851ea06d02c1eb65685382df70256347adf83a7564005767cd40a4f80944564272bfc4f052508a36dddc5d64f8a0992d7d6dc99da2a83174f5d796a7e82fb619c367e2054338d86776b95317052755bcaaf026b279c6050b73b6feef7a8a6fd0b0c0e46a14d38d51302ad7a42e43b16967fa80ee7ba295eef33e3d1d98218ae3b8cfc051cd65b07cd7cc8394c32edd7d946666e0ab4e0ae8ceed34b22593f7b50e03d550ae3a87f01ea77e91173147ef7b591255336a2dbd6bf1dd0c0c6f6cd372f4d992efc4dd4d4dc76354cb6b69714d686362d5d2cf669eb1b1fa58d5456364c9bc7f7c3aba1981215e5a256d6501579244a493006143f2b52504bbdfaa091189b51dacd402b9af819a1786bb5c0ad24a952e526cc644f3d0c5522d0083e34cadaffa154c39b05350c37f288ca87e07457699cf054ac8736bbf42efc0225d67f6780357141eab6438bd46dbb490abcb08a12048131155cc193799d500222e64d9a060eb212320078d42c699035b9a44994cecd0d361e8b2734083106062d1122ef28c1d2b023851c29c5076a34106508ac60a4f12934a7302ed3ac863882161b4a76dafb8cea88589c0422975dd52a5456e925bfd161d64e0b4aea6b8efb4d8d45a5dbc9c27d0c14241ae1d823621201542acb1a4bbf526056a035715f292fd7ad81f9e689bc10439f0cd9bcc583c4db53ff135ecb66e5d0d941cf0448c27b2866473c91fe518b5fad63bef3315522e8eab3b4880d1cbcc0bcefdaa14a280f08116b5030371196fe1ed36b55fb7ec1d0300fb3542128395be11a2b26fa505032840c1c309a7c3f9ca562429f33e059bfdda8c86419dc1a4897ff4400bc405125cf7291f8c5aa2e47e7763fdd3f1e84cfa2f5fd8088eb733fd1438edab15a74f3e5953634759ed0d7521380fe1d702a17b652058ebc19d85fa1f867970ff410e3bb88d2f93c054db4cedca5d1173a5b2b117302bed5d366710de1738369a2eb85b6496d7272f6f79ec2c2cb78c019bc4544a791a42b447331a69ce4b227015799ceb0c31f72597f15eceaffe1479b022b36f3b666a1490d07ccdc47303d5869c5be466c3bef3bb9c50a4fb186f65a459db2acb1336662a7cde3d5baf82422806272e80300dc8c40b0043d5a8ddc8c18a177a2b5ec3f0ca759d3854177a84af5558a1d8e4b386f2bc23e15cac2253448cfe54b1dd8f15cb831b1a918c67c4504c921b1e4cdd707f8318ece8c9de0642a53bf7387b85636ea73487b17c1f5ab800fb44176b654e5b1e4888fe430ee9c34dd4eb2a934a54330d232331f36e4e762e4f030be2408a748d7c24a69ac2698a9ee3f12890bc24ee5c4112c296f2d36fb958925408d5f9ca2738b08343e4e010fa62204427859bda8ac68fc31b4f4dc312fbaf1ae3224ae2c328f3eff15adfab9cbc46e984ad0a8c8e823736fffc7cc582ed821e8f5f705d4a2fa5a748353f6029f9c48ba3ac869510405b728e703eb1e4421d5c03a261707b1081ae733f3148c21401089741b51313d0864061deb60dd244ffb3103e20f701f3ab67f72e2ec3f1e3698a5c812c38691088ef69fecb9043c38b9294ef0b9ef67b67000df0383b3265aadd1e19abbe2c640056976d1e69731fe14a76f8413be22df63a898d69c67bc83b9e3847e1678d944fd05f129a4d66ab3bf61c29b650bf1d988ff8e3bdbc50dd544803864f83c8ca7d9f994954948aec4fee2799065becc4f86d7c866f0a6df3e2aee902a46194ec1e5be68a87223720e5a28661e24567e41a6f394ea401b4a63b3bc00e1c7ca0e8076457e63d6b369c3b9c7d227f773be9ccbcb04648c32975203c6906fbb3a25d0f55014e6c598f3836959568333c5d2b1f6a741bab5f6e567407e9e5397129df6cb8ca594dac33483d2be4b9170c6ebbb16c59e3448b3604b2baf606dddb12f59550e6d0eae871675f87f0e44bcf711d483820eba7ccd70a0b802d09c4ec04d44c8f30cb06b82d979fa4706c0edc401fbe04859639ab6a172bb68a73ed5ae52a0cf76727b6e8e6f6c83e858c7ae4d0ad9c50c5d66ee61a24b375a53491655b3b83c394a0cf5f70a7093c890b90c23405d54391c9b8dc9d70f50aa5d9704995eba7cc5d7f36e6b0241aa9cfcec4b04c4f4545d6e6b2043d9a1adb7d79ab0a310bbde0453b24ca75c0f80126e91b11254236330d030b68f0f563d8ad76baf6072e9b35b1ebd44ead06a69dbd58ad0b9b9aad0c5312bf06d0c17fb1109e9048c7a103f944a11104d6526013f9587bb1f1ca9aede19169922daad3d7e455acad662ef3c836f8dcc6ba610cd315c6c9a4de1cef4c88c1a45842ff6691322f222221681db57bbebd1f316237262007457bd7587e0659ef5cf35cd3abd5e172b2d40788f56669e8f9d26a1d0ecaa992a6949aa59e07852e755048a71dcbf5844f3af412841ce6b8ced8f2b96fdebc7be6495201379aee90c96a86654f5264b1fedf4e41b6d4a4c70ab0344eadb7a7b8982fe398a0d63bd1e3c6fe71f6d9b0120fef3acf7532c64f083800360edf64f43a07d1b3c65754f7ab49055fa12d2e4fe2e2ec6d6cd5bc5522e434fa1ab19ab33fed3a0215efa974dde540cd24595935804f42e58a1719006b221d90f79c60689b19e14e663c36ced36c4ca6c1b9663643ebf441702e2d114688da935bb155bf6abc46a19a5f6f7c02b7fbbacb7349cc48473d8e3664dc57a15d712e1d22928e944906d962ac472c56a5d645d70c9795fc5408abf8704d6d563e6527e9e5555d9771fe254bdd21e2693066cee737273555e335d2f75d4c97d860c64c43b10a73f971f0928df8c757516b224b77a7080b8707ec4df8c4f245e3c53a4a0a1b83a6e03270952e2c8bbbf8ecc99cad000055b426bf9803fdaed4b1af2c4295ff840ced7797c4732ffcbf664c4d9c296dc8f7258faea64b7030dcac414f3501e6238303fee256a961aa8217f92f08ff318a40485f32c89b7a8daf8f24b025edc4161f4e3dd1f8cca421469bd3d8ccb41f9c009e3fd493cb5c77bb22acbfc55555af884a71fad60f3e2733f0183fb26f82044fb8efeac5e9bbbd04c053adb728694efc1c05ec060a2fef313d64c10a56f00187721c2788f146b7ee4ce6f047e6a148ab779bf7734f91c52762b371dc636f669534d9d2c7bd2ee15dd96539f9b82a6216d41346d9397f730384ccdec1d744b75990a9093e5f42bf8b082d68300d3dd424c03254bb04091aea103da4a7760ea426d3cf3bf68fafb53e6d7d1505a26122bdb62aa01098a98fde496667c090b497b5e52da7828db8997a9655be07408bacd3cbe5f9840551a52a7640ea9a3f62e64f018434610a66842b802c7cbb6fab1ab9a4273ec48102c5e2737dd505aab6b62baa85cd52ff18a464bb7f85c8667914653bb4b448760a5af124747eb575677e402f547534da6fc0875e9d889514ce21424913f7f59f9b097a0834916697bce481810a08b7dad0926cd918c4db7ae0781131f01baf6367126db9787ca66b7c513b09eee9e80728248c4bdb17d5b207651c0b7a9a00eff088362aa23e9cfc412f126da5b91b6ff06530e5fb12fdde831b0af3c948a46d9e7358f73b9de5f8d2341ac5a097e2c2f2a1551094ae331d623473860f6215e64f0171560ab992a3c28c6ad8f33d5675687ca671dc17864864bd42ae94c70471af927f60b0cae40197908e45d72b7f1482cc49ec8a550f838e1204ed48ff0ddb831c1fd823d668316a1738fef8d576876aebb4ae121357806d6098beca6a0dff8e9d840fce924bf1a040c562c1ab4af189c65eefd2ef566c5ab51849e9a0510801c53e63cc600fcbca0b9048a5071743bc2bd82cf451c318c9ae1ab9b11689898abd1285b5097ca493efb7b9f0c1a9362ac70a1e6cd11e45b1952438b0f7835fe7c79aba62cfd910f1fe4406a7167cb1dfa73bf0d495de78bb78c56a484a86036ae22e2602fb75e49ab5522e2a619783786863a54c023e87bbbcb84078558240e1ec440ff9a618329c6cbc78bc7b3065460fe43edf903c58bf38f7b050faa0214c659872b23086575403880f2b1ad21c5415a528637058d5a22aff7b3d85b4115e602abffd73fce5c5650427b1d768c8ca2a2f7eeb71fb5ff070e4bf55b24ae85d3dde829e79f37d6d64b290e7606af59a8c051b7a24b8d4f631f2a7ceb1d5b3ebec701f779a54a8028d5bb46f178d2c0a81caefaaa97e8b628946ae730aa38d6e524ed52ac9b4318bcb289ac5e9a1dfffd8ab0bb39d15786d5ed23a939961b7a96db8d66c3fd7d873e61f8012256aa573d0330bdd45ba3cf1b80338e162e7c76d8ea973488d08372ee05690c9ab18901af05046ffe90128df6cdf0374db783545a2d8e64d9ea2614f0d1926f4b60351232acad0211988cd0db50bbf4b0e1665c8292f6c285b823f05b0ee261abedadec161423e8fc6cb75a7a6e1c53ebaa039b2635c44ffdc485b604309ccf80077ea3e1e59766f849f34bc2637df4f547a0ad0bb882e83771e8a2669866c638b27207e53c17dbd38e38b33018922d6dc27d0bf67103f2683da661f9f22e6d490d287b1ae02fbadb9fd4b10e81a989c5eaa0bb9d418a740b78f908a6277d3c391aa018bda76eb63a373563af8afb98d41da5e12b61747ed216bc03024f22e606169d4f6924e6a3c1471525943683f19bb18b9088133e8a4750ad72a2d0098bafd4bb0e3d5b7d89a6b3db256490460bc09ea9e0a49eea22d2b5754e7183bdb0c059d8829cb446284e184f8977099fa8e3579e223de1b46ab5d792d4cb28d017927b63c591c283304906ef3e7dfcbceba219d4a145809297b7f03a71eedd4076cd4a932a1f5aae733fb2b94233dd338161cc0999103ef1c0ac43b35688387490bd1fb324001dd47aa3154ffc32e95a9b2d9610b71425891909e59a590cdd04f83b148863917879b8cf7b3aba69e5f4a2047385989e9a23059a3dfffc0ac4297fb1a759930dc32376ea32a28e1a86295fcbd9373caa54f5ceb105d53b8fc3340178aa6386f217c687ecdf8508f5b0c534220351b02bf835b3be8a6e18e544702f1dbc6112500edfcda9ad7cd1b9ff155c3a989e95d34f89bec8390b823b8800f41cc0ea48451c185ec3798c5b24193673947df2fb17c36c4b1e237b14d0545b92fd5f8e97ba3ce66788c7103df686b87d02a001e9c200971123c83d38206ae8a4e9a7a8a4d0256aeed37873819d27b27052d30c1db303698cb6d90a5045c69900f6b94a66250edb6cf02f40a779e7543b15a6ebaff5e3eda053620670924d8bd8be103045f0464b144f3aece7ef2ffaf24278c9350f0455f366ca995b0e5ff0c7ed09b403a9d30c38f8803278f5e6eabd98988bb02ee670772f179161b712ff9700f6373f610a2cb264c436c42532f97c25651fb521868369dc5ae46c7a42fbe7ca4808bbd88390616c48bd44bc5f73339df512b738d35f2b7099b860243cc6bf84162108bcb66df493b6a6efbc258d0084967bff906e0bae01de6b7e4a640360b1726f3acd413780c01df2bc4330e611da80c7fcd86ca00240ca1a3e9e21943b7fd6ae5a4572ce04879c3366ee73c896114a32ffe84a312098d55ee3cc5ac24eb8afe615100b03bd87b90840ad83ddb406dd3c136122ede71b56b2c6afe7090f169486e15bee7c59788b844ba64f5c25da8180ea7d393f76e324010e3bed1ae95c80bf2f6a7b3dc2c725af65920c6c05afa19642e3e9dd222e4d7efcce9a63974ebf67ed7ae24056794794a2226e750a622593e2850d9415e4426248a60338a288d99c3de83d1b0305648d8ed9175fd40e59aabd6956c786deb6793adbc86f07b09aa33bbfaf92e7da7e5a1245d3d7e44040cf5023821dbab3328dbef9938776193c22073fffdb8389b2444294b66916841f18738ca79992818364d6d7cc495be128774089b7a3135aac6fbdb0e55f618960d787066918f8fe929095aa5801df3c862b25d6cd8512d7a1c9f8b3959b55000fc29c15a68bd9e151a4e31827df3e310a2ffb373c81fa8fec61072d17d3435717cec70b33e689e905e016b2b5f6871b22497d2a85065f1484b6e8980fba93529becaaeca59ba06665ffa435da349c748d823309326da7fdfe19caaf584c4b48c2afb924b2b82a6a3041d110d421922771cd20f0334a6f758cbe8e6254a5a5ed9c2bfa5c427a127ea0b2bcce9fb13e18fb0c4d3b824b3ea3f9667a44574458b112b8286830b62915a5e1625dff585ecc77493e372b11af8f8c9033ab5e710f5986fda1a0b5c0aa7f68c3e42406687c70cd946280dec2cbb6082fddf98a09866ff128a3c7171d938106133ba79080f35c6786e0c275edf6835d725c8665de6b93f6ef385c613c5582776804470adb1a6f2ea92a7ea78ad838823fa7d3a32528d96e2109b9aa8cf971d12448870f2303d42081f37fef458f2672109577e585a4eaac168a850f5348b25ce851cfce454f07bf26add65a45b9612ec9b9e9356e6dfcd910280da0716038a0ee76a997d377f689605e685ef8c247918240e1ae936959b9fa277d71dcb6f96e756a19f6c7ec97354b77900c1aca9875943442c4f45c8cb74a1d277dd10e9341345ca39409480cc2ef300ee56b51fdf3cc2a24c5a5b18a47a5b693827ca9c0dd271159ef2390c72d7adab8904ab14373a8801b608669810f53de8378518c281ca8d01b7d1fda0b65650f97d4a63bda4961357dcaca105509240dcf5dc569a8c8391e19cf18ca24e79ca815e1e25dcbbb7e5dec6951fec325bcee079c97c7c92b92022d99e8d1dd5a65e74da35e9759e9427805ee1b154fb4e8b63bb2c31738007e3145e550b330bd482d983d8a6246496ca507508c383c1a70abbc976c02f68c4f954dde587bcb49af857c7bf352c2b5560c9ca69fd773766f923004584176a792e2db69ba067b8ecd270c19726e12768f0834043fef250827812fd673d59c670a119607865f7d02a2ac74656605f9cc600fa2fe1a54ef4731e9761f6cfff95748cf08099c214e0dfca507a263b223b3d85097294b07208ae51d509dddee4ccfe096d2384207b93b2de14e3287a759c20047ad46ea9d9ba2f7025261e5c4ea3ebe57614264445c8058cc93cb0fd26efbb47232cb1df7b692efd89f638e5b221cefff86d1017aa327cd6540647f3d0c0a58dcc18bdc18a660cab53656e3edee238013f78283542c9d15b0168e5eafb2415a4a4cc71fa0af32603074b475247cfae937aac8eb768bab7848d01660d84c1d606739074d59f0f131c2e57bfc92308b4172168a069f92ffe63d13dc5f8d1bc8ad595cfa73f42a4ddbb1528d990b3fd167ea502e19ec2d5dcb99b2f560c2af962745282f03a0b225ffcde29ee6d0e41d0958ea0012ee593733a8423a653e4e68401f3eb88c501be0728cf0bc239492a660a1b88e4b447fa062c4ef4adca63072cbc4a71f70b69d6baeb8f300ad02cb06c51bed0f2473aae55d302ace90829466d6050d5bc73e50d4473e9a3b3f47b2c7735c22e1162a6ddc727dc570dd4537de556f3a1bbcb1ffa13b941716ae08ccb5f2d9a338eade8b17c571fb8ed4b965d0758874154de3920c23ba934448c93c4dd1bcd4dcfc4d605dda9464c60153ca73d7ec13c6ada938d04b1917f415ff18cf5750600d6c50b18ea2a25f7ad46de9e9c8bd1a4449e787f0ec734618f9fd0cef12011f91eb17dce010f9dae95b1dc70371d66f1bab5f26f1241b7885de11d3e0a3848c8e1ae8737334a688d4aa3d9267419957b5158abf7a32c5d0929ab269859ff8291d6f4d5cfab587de37c48e6fc4e5a4ed44638996292f01695707b9e07722f98fae04f1015ce9a1c6e7f4d33f03c2e1e0e35c44d9a3775957b9a7c6eb91bd630f55c6de1467583aad88cdd9492cccf47700a8f9c35c4dfe5c13cd3e2dda10c2fe36d71d21ef280171cb1c21bcc0b0e669fe10d41a71fac61e696a01c80c8bad6b85ef5201872ccf16aae8c6cecd67217156d7a52b21529451184123b500e20a78a0e12663247246daba22f9161ea222762285760ca0f5745639edc841d3f8a1e1cd82ebc116a28be539e6b22601527370cdb8ae17988edc801aef1c65282370821d678dd06faa9f3419a82353bb18fde13cba0a9e0d98a1c29fe0bbf40286bf594ea378015a21c4301fcf2ceca4b06f4eefebcc21afe64c8799cb30f46105f3a55f33f73ad3c6d7f137a1642c547a68ef51893b046451e0b236730a8596e2c4209830f4aa5e2b11fce062e1ca8b0ef9da39725710469bb10a598202fb6d1857569ef46ac3aafd060cd0977bffea0bf9cd316f092650b0d7acb3510ade15f8048a061450e08752fcad30ffdc700a4a14e6181d232d771395921d849e36c02be6ba417315e24451bf82c3d21782166aec8fc848178d8a1dcfe75ea53273ddc5e37a5a74ed2e332122f7653af5ace2f1e1c2d5a915a22b2e8928c9973139dca9883b265410fb70848d6f26e9f70bdac3e04ff230428471df7604324d0bc2c2c8088c36aac3117eef53d6b5c5fd19b0755daa407ab23d940694dae45cd9660929b936a39fc5283cb1f32e5d23305f130195f63d79ccf6ec08f0a1d9507bbfa872dfebd36e8579c8ad618c475e3c1b2e0946e79b3ffe378c80f38d97a281d78b2a174aba7a5fc7267f31e5e7b7df14dd3a5574b84cd74e59d879d00ffa8924b3e8beea88f182b3bc3b92c09cb372184965ff909cae7ac4de56cead89d6e58b7c0009795b5ecd98e0d9a9cc6303cd8fd0ad1bffedcbd27e15f35c736bb6a8ae8555ba2351cfe86b48a8639e2461022ff4814b50bea08ab5127882701b7c4d924c63addda1c4c64b92bd1b5eb1b2c825575e971d6d5c2d1da8683ce46a2f3e142216d0285451d135fcf4a576978ea0de407a8027f96eff3977bbb67329fe82f4548d282c76ee6971d3b17328cde7925a0c59801a94040dbcbb3f711df463b6f581f8c64c7ff7f9e1e0f20af58b134f8668a46a1ce9aa5ce62004a80dbad04692fc7ddbbacb5bbb5448bc81227cc317289e7ad126d900c0503c7ea4307fba86717f29a03f104c0f98c5a514e3e96749f15aaac2f0e9b43302381ff710b44ed92029c1e5edd03f0a06417a24948b6e49ecc79a444eea640e4e6adae80f0a49d4fcddd46bda8f0fc23e38ba5e2023fab925e4fb703f5d14eb7aa00708a34b6193f3061147eaca7018a297f5722ffab45682c449304901d63b8240b36957e82edaec201c363132a064382b511ecd6e926df0b3b924bd6a4a86483c2c79145999790102bc612d4b4fe9df8ce08ea2b65ea2fe31166341b6875045f76720d4519c506e13113fb705be6d529ea4898ef49f1246e09e06cac763e8fbac8632ec36f15b4199b9047426c36077076ecdb04608a4a1e3b7ac89cc392aa612a2c07ac4cde913f32e399723c8e303347ffa699014c88d830680bf601661dfb997cff857c4a3c0b61a436b26e1e37d2a6804dd528d3f714d1140109038e4d1c9a8d56663e467c04a0868b6d18f73ea00db866d09b74b80265838902dac2a89f02e4beaaf0e71b117aaac6d41b0c71704b7f5434b76c3be32c8141c868722d03befeb883913ab0bcca906b812710bec663868dc466b064b209c77056d38c42cf041266e6c7e8a7d88aa23a7dde1745c6481a68e9d5083e98bd9cbd78a900b3d16d3f3d7bbc88df6a25567a13d16d17193509090e351cd390393ae715b3314d856da92ebad738a6a833ffd1922fc4dcd5ac149e11b051b4dceed59908b358e23ad770177237996ede63857a915214a5e569149e9d69a45a65c4948763eca9b4d2bb46d95e123e4bceaf1713d215af45f931d519d5311a7a03bc9fb1ff3b0c4c104f4b587a428c3b8717829ec6d2485ea8c561244aa40dbf6600f7408ab1da8d168136b86693dbd6a15960110fd267981477fbb884a2ac619b820e5c6943f8a554387c29dac4130f81800051009abf81ed86de106683062ccd44645e14b66d70b2685a0e469f26fc05d1335c07125c18441cff6add5a12b27d8461cd9490713b4584eda56ef1cc8a0c4c4b329ded54a6c270b38d7bcd812c0c479cf143169936d44d3f8aaa093b7a7ddecd3a3bf441b1d1a761b51dfd35d375f162250a87969e02b6a04a59fe176c89b03b485f84095d8f6b4b81c64a91a72f0c7f41712e4d6dad578a1bd30e03b1fcea81456a6b49d1d38eacc5446018f79279090414a830e3106817706de0b9a909a56d3084d9900903cfef1e07354279d723ba5fb788691497f0cf9100c41bfc90af50542c27414fb5efc71ff69b799002c9b133fbd035e3a5ff8e5d2ca30f1aee0eec07a7a6e4e9731c03ed0b0e8b5cde87ab9fa6428823e2b14f1a361515732f9b11212cfdb288f509cffc53af7918d27081a25580293a877b8f728f579ee5ff7951801ed2564fa9c08980ae3204092ae63706066a148db80b19ba65160696d30fa6df03456b03c4767955af3cc4ee36e10857e024ae91c1ec3d6a7fc634b708755610afaf903a0ad3cc8db81525b9ca3ffd065f6b70f0fedec6cf045c1ee630d723abd0945941bd665a13fba62d2883400bb27ac2955a8355ada8b35b440c70b34dcf9c693cf4119cf1d71133ee95c842be3fa9dd0da2413c06ccfd81755e04c707fa67673e8e16ad9c094336f1a1b9699367d02360b99fb4e1f68fb2ee5247deaf8433e26ed84030725a475a94388ba11da5611c76dba59c5a83e9c93b98f3ff508978821433180ef72fc87d59246bee6ceea678c4867b8b3622aa8d7b66f7ad00811210d5b6f11a058cb482e390521dce69484d7ab61782d6831d4176b05d7fc933c7c1ca631dffe290eee40a30064a4464c298841c8294bacb9ccea1933eec7cdd6985a090bcf45dc3a39f004e84129aae1d06a6d9cea39b8611a9c85b85667b0294893e96660c7c7e6a2214146395294323d52074b30d53f14214e615e86e0515dac07108fd5c212f10ebcfb89f539a0ab4159d0ddfa1830291ae60e16b0e7eb9136fffa0bc6b9eb2193d7b72334ed29d7ade5eef3186d2126349cca54fc6acf050a52671e9bdadbdb4b56a3cf2034c947cfa5019b90a23daf9bb500d3969436da216d6cefab34e95874918d0d6c699f8a630044208037b5a23b46ccd0dac528ec5e5518dc7a10d8d39cf9f890c1e0e7a4b728db2365410a1ef966ebd73e51dcb701cd4fc81018fbf0b805fc5e561c0e3b60c1e1a05cffbee797bff0674538414c2b06937940962f2414ced0786bb1c521cb0e83813c2e22fea389ba89beb70cdef0223e381e12bc0debb95bc994d4f0408c44a7d145f2e408ebbe5487be66ae0c6edd9cd51597095caecbac6c14ce4752514d9e9b203f8b721712e6e73ef38b2849bbb1c967b3669788b7c612bd637f97034e37e6a484fdac99a2573bdf73a953740366c888589bec57d1e23ddeede3d156797bc03a8f7147dc6265b9e508204df154af28d7501a1d2487b4f34608d8966f913ac7330821069d2f7bf160691fc2b7afa62938684392e67f528fb21c3af6101942e9ce6d71749967c39ed0964365e05d6b42f366dddd979a125b4799de6bb86d7601d0f747faa2f21ffd334c93c40b46e8eb8555c0df34f293ea0263132f774d3a228bef8a2765ade3e9115d74ae831d6046eab755288ecfc59487437abf8937224d5adf2bfe940fd1afd51e5de72f1e1009a2d7b82dba0ab16451ca9226f1684d1f79e840835d47f961018e91ec81d6d5d02b37a68efe24c94f49a53f8b40af1994db46df6addedf518d0ada4a798d5ffbb3234591113ca050d168cbeb7c597b78250c78dd2e7cb47428de3a30227fb376b39506e421d05beac09c69686f7de1b95f4b6155b33cb86bb35555b3c77d022dc82db26fea2a7625e0bb90d8db21bc072c5c891091f81ba1ad2d1c77c36d024cd5dc7286ed95f53d4082224ca4b74a2850aa01b87bfdd51879d10f489953ae12fa6d1092e6f61130b6a684fb2f256bcd60d2b45a23fc58a6424ce63989f6122cfbc1722578207a907a5a871334730dc700a34a14efedd70a19fb8e1b49203011508185daab8234e60858ba72c67c6dc92201b50f4f64394c4e157186f1a86da03631f8b42f69998e8df88f4d7d1ecde8e750001620a0a6938b3c390ef5aa2041ad3a9661f0c30b5807ec14769b5d831cbc900f972058dea8e8fa47f10616099a0acf29f10f2d5c119e854b0caf01108bf9b62f25e747f61cb738ab532d352c83834d50ee5d880c13e40f63a0db03ba31605a81cf8523f7776d214c7c1ac5867a8feea1d66878df7b2014f8295cf39b6d8b7042220dbd1ec528dcf2b3c2f369ad507e4f92d554ce378db3229f8fb91affa1edf1b207ce6f957a79f23477ad580c4dc23da900a8184b7912ca7a938bda729e217bd8b2eff095db3158b889bcc7b3890a00c2164f1b1ce6912f0dee99e62f3e12840c74c0aa340ce51f669716fd0b4a0609fa6c31b48fefc98a4e78559ad840385657ef3f167ffa34bd59bbef0986be69fd671713d5fea78943bf5d1609208d46227e3949759948fdba849f151ab30b29a757bce820e3da58f1b95b8f1872a305178d6f7789813c32c0ee7b86b714519f0d6cee5371743139b8a1ca3c55af928b1e93ebc6433f52426979997ad4b32f651e8fac3b8513439f8457952e5bb73bf5c8927030c89783324e492c19948e0300cf32bd3958015086f94fd41cdb87bfb53956a82283b300e5414422ec10306cc46ed843ed96db1420a44b860677a7dcf8b55f72f63c0cfda3f3e7e054642107c623f361dc1a4a4d0a345c8a869453fc80061d975b60f7866c6d6270190ab60082cd73b9afc77bc480be28bb9489924f3675c24433262c2d65a63e02d295bf181e529bbf713e3ac4a7a28855dbeb7e49d729180baa24643247eb9389783f803079a1d5b095bb4fed0b3bf9dcc3a986aabf4e614c8fa3dc9817661bb68724008c0d3fe802b57de1567d290c93b9aeb2f6626c0c042824eb7ce8bfbce37232f48f68efab1f4f6eb40d1338e9624ccf92ecef917d9ff56ec1cbd6ba0c5541a8951c2e201a71e5f85b8e7cb3681b34858c396e921c2cb35accd182b15d87248a4f30084f7479c7e03e35ae1baac6346b38a45d33a269db607ea71eafb693b1fe42eb7e0282f7862b38b106019377b7c08ff5fcb3d669feac17ddf40631b6f238b66b7337f3b74a088cd31f4a1403fa74b9b7d96e8f9928f673d8a8a3608ed33e87296385afd03d055bb7a1113bae3f293a6ede6d49aa62831c43bda36f4d90b53421b6dd3983c69176f80d534c79245a0562ca12c2e2114a6560951f2d444af796dc21d4a344e6e2ea93da0faa55955eb1e8c5519b8edf1f013ab63e189b9903438b8d3486e3c9d0569061ab0e2ac1d19df126ac60381e4bdff0f349380d7bf14f8254ad19e128164323cc936738d056404634da3ae98e413cd383b60cdbf4cce222a6d581d68ce4d38bbedf507c3038ab9353d8289bc24678f99e4cf239cbf06ffaaae406c25558f4e75f6cb580705d1470e2f739160f3d6f0b963b639b695cd29d3ce8f7f577ef7c00d42cf78607000296bae908c565bcd155968f18e651e782d32c27a0ebff00710ec8702fc26a58b67c2855b63b17878ab6710f9c15ed7fe3af54fac92a762ff2da6cea5def17421a9cb6af3c319ced3bd3a9572959dc03a3a1b31d46d97bbb1460d6d18bf14b39f6cdb1a469c8a6c218020846cd4425d430e7b4e64d423fba490c5bf55bdc91feeee40a2fa1907b179dbcc46af443ab2204aa9d0fbe126e6ed894e8832033d1957a4285f8c0e954137aa83bfa869de61b41b8329a1b795fd902d4eed0da27fac86b10df6fa4db26a0c334c48b52d63e299628e1f67352f8c6dd59c74866e79e9cff53d1d4b9a23e0b316ca3e9046d3e1855e4802f73008e786fbced5b02b31ebb1ae0d1c0a1700fcd78bb66e477014c00d94f7a7a016e82276fe77cb8ddb328cd6005f5162a9eadbc20e491cf002b630d736ac6b64fd1a9590a87ecad80450d12e10b4fdfb2e9bb777c6918d0f238d531444cc488c68858061eaf1a97ae62b1d48b255e10583640a77c78063f7f4319c38c073bee6f87285596046999384fc923300bd7b97570c23423512bc274dda422266268b94f752411f1a5f132aad864fd1cd8232a1cf40a720d435a33b74999d34f4024655e35f446756c469295d8497f26e21a43b98d267abca4db390a1058b91fadafe12bb75683add7248d84c2bebd9d18aacc33dc5ecd34269ca6c86cc7d3826d67cb331dd39eee6e53d370cfd8bffce0dfb0245985b4947e37c1cf37aa4cf072d3615339a9538d8401056fc6a1a1f801d850826e8004cc35aa48bcecb06053edbc15e51b9d5e249ab79ac37b1d6d529250e0a65ba2d0e2c6a8be71f52658639345025a7c6513ca9d79cd18f9e402da7135aaa33b163cfdaa72987da9b52e86392d97de09be2e4f429d805bbbfe84d73cb8a619896bb74514e0ffec70ce5f02c48ded55294efa5dc70721762a17c6e34b2589e892e9f3cc1e1709f927e5e4ba889c4b18776c63e778104b157c6217791b25d7ee6ee589860b692b6eb9147109dab2a0b4d1ae688ebd782c63d3c63ac54210da989adc4ed53ef716e6809f9131e4685a74fe4caf32e1786851a058468fa72a64698f1e8eefa2cccc5bfd7ce3d10a45855258b5302ab426049cff4d55e1c0e7df57bdb96c5839e1e6c144d1cac957c0e76152b64c1f14b89728062201c8379d615354b23c7c9cccf848fc8bca7545ffd75a1e88c77ae28a89a9f1f17cac673c21292709a1e332306287c4c771c8ab70f4a1fb52bb7e80decbad891a1e43b788739dee9a1d6981866f167c4296a1f40cbf5dd8865016ecbc0b743e37b9b45b6ab1e711ec3149f9310df29b912a9c66bc83b748f25850add815edc54160dd65119875a1016a8f0961e0107e6d628c3ba0eb65dabf7b1d73b477946bb3b7632c4d08d7b5171b49903d73ca5d03b79c6d3ae37e29eb95432281d61e7839c8498673f69c99e6f2bc358598d6baa8f3c4aaaf2c185bc8af239cce078f2fa1530eddbaeb8e3cc3810e5d5cdd4874f6f9791922df19fca8d7039ee984ec67d4b63553cc3661e6155d5f8775b7975244dbaf6d46e9e6d50a89a05dc8e163ece2d4aab1fa13eba5a7551f19b67068649ef047f35da33f2845dd6ac929aac7fb2ca916ad5bfb990a7d07dfeceb062e302ff65aac922c4ca516732b67b2f02f7022dd1ff0875f576efdf421ef94aab4bcd8891c3b173b588d3a90ee4c841033155238a8a958f97b6e03783609d1d001890ceede8b3ae06edd30be254980ccaf70781df3c21b8d0487b560b6dacdc90ab56bf7c27f7d85ef670881dfb8b105ac58237b3695bdbb20f08e22514bdce00c8d75c0257cd0ed98261f7a8a940145aee35354b9134956a869640a2886a664b1c24fb7b590858b987d5e2a4d348269cb5c7e648cbdc5c32703da0ecb4df21ca319ab5265eec652cbfaff702f18d735b909648c8a21d6acec48732e2c1086869166dbe39b4455f376f153a34121e3c7859e711b33a9f2bfff644beb128a9e75e13754425f06f897ae055b1c6c7554e5e40b5957f948d0f56fa69ef9df5d552b65ea464e63235347da2e91da4604dadcce30716e4d8be5a219c8f3c1422f09353e6c4a85cbd643e5f5d389ce23991d82b1d80d642de5029502430ad5f766c816483716aa2a66f23441504affc4525dff27714a1e0ba333e47bc626eb6e1464c689d5aeb4b62642c9bd71105e932a57ba88ebe21cdf1840e1a2734a38d2311fa373c578aa2798aac8aaa3142559787cb3aab03de1b0f039dc10a5994d96637ede8efe5bff2ab02a954305a5d692ff7fb1f751e3dc906082fc6bfe15acb4b49f3fe2cd2e1fade5b04d37623238a1796a3c577616603944b25fe9d3f577cc3ec74684a3f8793f0e31b791d8b90fc74aba616ab423943b1bbf20155015045400956b02a61da9ea18a04063f1f207cf92ebe877f72688f5721198bf7080cc9a7f281ce85fcd957a280bb0ea64b0c7d9acc9cb5e3068be904960cd907a09ceb35e4bcd9ea61eea8dbc6cd96ec5abcdaed1c6a0033662a3c7912cff72a478e223efdb19dba0eee9881e8c1e92e4ef67782d35ca5fbecbcc9b5d6954c22b3877c7422b6b26b620fcb532fcb09043f035c79b0428c7c3ccbac373fddad33bbfffe51ca1fba770823c3f1f87de9ae8e0af2f80b2a0755b7e520136453da5d137a3acf8f0a09962fa642a70432a455ad95f3002567d2f0bf5aa34e829f24ea46cb9c8f684904c30e652a3f2edeccc4a9509ff3367d2ae6ac2b6e5e5eca7888bf04a732b0bcd14569c98dc0bd15544aa55e690ffdb7ed9fa60ae74e0bb80e7c1f64058e0397a1ed4fee5550c18291e1c52788e009b9ef0e3c8ca8619be5b637ed3868b2d5aebcde428cfd3c34be8f2ebd8b904da063a00e5b1b569c5986165a4559ccd9cf946224b14f2e3ccf9a69d676e4cb7336775b05f9496a332dd41555a6b2fc366ce449fb6bfcb379d50fedea228a56fe5b3d835e633537f3dfa61ec8b3b8bf98fe8f7313231a85bf53d77182fe60b7c54abba0fc1e9014a4be0d10c2c35bb9184b881aa7374f5fa38c88f8ace362e859e7037a894037373fd17a12adc1b60eb4c3d6f5ccf4cd9673e547885c437805c2f4c903d49cc9ef1f4d2460d9f9e17c069e8a8396135e0b71724ff95a134b6bec222e70016ee053b62e39fe7496c0cb46801ea30dc75bfd5575092876ba6e7386020207a9faf8289877c64762a70fa56cc0b4aa068b836f211d202794a9c49d894b1e970580f0fcfb552aab86d627738b2f7d0c7243fbb70bbca9ef3bb06acc453d2d07ad7d3db649bf85653c9aa83e6ecfe50e649ed13d45d49591724f99ca249ac5e8e050437b3b8b03a04c45a6a2336c70a0e2bcf693b5273b60e13c1f018003b83da60f0804cf8307fc4256a4dc806bb30ee7fbee522bec62e919215cc3e91189a8f04257cb2b40775ee3ddc01119fba45d79f976776c394e821e74a5c5d83d9b329314d478e5941d5e8a86149146c4d62f526e2fd5b5522ca3df78fca0a27dd2384e6fe38a3428d3211963e619ef6a9fe757d68f66cbc3da3777c96f18738c0b679361275457aaf1e0338f69a640802ab565dacf8aa0d225e74c4df879d6a3cac894137480e468d8162ae7835919605651750fa69a5e3eee01f31b0eb2a3756aadb775051001ee2815c8363cf075286acbdb7ded76c7cffcbc155fee995adee76cbd5fccf86d24c15f684ff48cc36d337c34b56f7e2d809bb8815599b2d8d997b8a9f91acaf385fe3e4dc80a9fab39b853976691060831d90e704028f22f1c3458ddfa330eea580f5c4533a08743c55522a8e6bd8894a37618291fb00f189b2947e9558b6fc92795d29bd61ed2d236e22eaf21442a1c9505a54da8ed48398139d178012ddec5936adb2a3111f693864a2383618543af07efc11ef41bfee03f76098607949b2623ec7705a67ce913e8a5e6bb6aaa10966c1c3277b65497bb6e689154ab4ecbdcf534b1f15cbdf7ca0a308211b2a6e2fec4970e17efb72282d92f9bd96b2bdf0e33dca4362cd08edcadd094b89627c33c1d7e3da6231140186021a70fb0de44690a57b06901174af5242933807fa3865db77f4ad76c0c6e994e5bcfc533852cc88e68dedd142ca92e791451acd741e1d3be1ec5d9def83193525feca76112b5a4ee2ffb1e67f377ad475c81dc500a05c8f57143d92d9c07cda0efa02372d0100146fb3e0f86bf24b241255b93368a078d3b50c72a9224edd1e7b103ceac45e8247c53bdac77de3c79ad36fb0631cc4deb3c554d4247989c48efc2e042cbca12c1051212ecaffbad891cc4435a15559f4685fecc8de57ed3a76c46cdfb254361181a3b127a6fbf1a969f3345765f86075934a417e512f045927400eeaae52083dad2125ece4ab6452deb123f64fb8a711a1a8f3da2af75892fface33a0a57cc87105947c6342f6cd5d10852b9a31ed4ad800b1a4ae5be1f30e84624863a4453e3da7668e0e53a00ccf8eb378d38476a65c316a76e5999598d6824466c3ca894f940158973b69b3455974b058ccc740c324ddaea9c275723bc1dca3ea2a8736f52a7d373166dffc614b104786a33d90c98ff2a2c40e1c76ffbe17dc5028c86cf76bd016023ffae17aeb42e0887c4b013eed8735ab35b42cd18d5b542af1a2fbc2e47808da40b43c0278ce1924082fb293c6961c615abb2c0564300f84a473bc7c68f5322b3d420f4cfc8ce659f3f5a2c9a1dcfec9e8210c097a5a44e263b4a6cb6d5928963acfd1563b4c1ab5861972deac6340bbf0ac1fe8fa05b2955d9a17426e6bd23af6619c2d76d6a07b81619df73d5a247818b116ed879a38d0a6eec01cf7f3e2d4c42f96b5cf2ca080f8a2c6f501d3d54277fa63b64b30d3d49ec065deb5cee3ad1b335caf3863dd4ba0a8b6824d0e087d1c72c0b43603b4797a5f59a4061b5176e91a48c5874eebea8d8d0ab248645ca0033b3d88b4053d4b0a8269737454488304cf35f16b13b55bbba19cd0ffe5e0208fc0241feed62990466a78da72d8bee1229890d1922d194848a2295dde17e98cd0d56790aab13d7dac69ad46e45acd93d8403ae0e8350238b2eb5165f803358b2c89cf4028e2e84b7c5f6e7f9048f0aa4f5c2287b526b6d9d2ba78a1d821cab371d9e153811db6d7d451ee2895636f8a46fdbaaf000eb0f8343f6a9b1b96f848062e3458a946b16da07f3d8ea16d00b97dfb715007e88182bb7a32c82e33b1630145dbf76bde29ae7a7d6fb4ea1998d8c221c4598a16235762ca00fe625e5e5bed657b07520c5658bd9becb7c2f679414ccbd1b67a55fb8c91c49b25099f5b38231410b1e5d5f6b1e4898463a9d9c294cf8d0ff14589402739e6da95c651c488a909dee1fc9264f98b41bae79e82100757ffd97eeca8f2d5dda17275e264e695c20ca778c1904ef9c8b2bb7d56358fb3806d197437f11c4976ab0efb15f8aff497e595ec85b7c6ef6a270f0d69e57690e7433a726cd6500e8622845a5efd98cfc2f0af6c98c7a8e880875a4b0168e939021473c6167fc06e6ab816437ee3a9058864bf118d5a2e49d0da49905d8e92200831308ef1e5d35dec0a3db1832db55e281909b487462c1860d91cd12895933da0de743538b2f7a95ae44e26e462f21899d5c72a7a22412eda6773ff75f3d0aaafb53a13bbe2b2ef0a3ffcdd2dd7e1ef73944e22e32cd50ccd2ea5d3f2476dc19db150aae3c679c4832f5427e472c5a33db0a5c7f2e8562b40aec1496bed6a55ae6141a970053fb07c5f355a5b16a10199136845d52ecdd6b6308fb924caff763e86388f658af3917c171f253ef65b2eaa605a83a58905c4cfd7836f003d10b8ae588d56cc3464bee3c176eec62c228982c12e309de567f03f2ded757d195f5922de872398dafa77712f2892e5841fb8faeeb2121ddde2825350861c4df3d733285198fbc67fa189994a6eae5673bcdda3445b0159dc651c11b83451408472303f47b462164c6ec855c16c7dd65a217dc1883a39cb3211230d514246d9805bdb4d4c8ec6dd9ce46a71724f6377cee543901d29a61577653735fbab621d35ff7959a1f6a11d53379f6d7a3e3b40f508143ad6376012233bc6b17288147d30ef987c15393c1964cfbe81a55ace0102cd5a51064ee06405238a2429d0f59194e1872b18bb226525d90280c06e9d3077f30500207d90d393c35e227860d7b3e232825b9953caabe15d7f4e2c26d7e924792f090c255a33e76da00cd599fa2ea8566c56215cdd6b73774727afb8126ab629548730ffecb7ebcc28f41a7634922ae658a9d6b1bb6cc063d8e32225d79b64883a17f26af381a3e8dbc8d22bec9787837d6c41e97b96c69ebc901eaf98932afccbed4e6f0918cb896ed4e09818e75faae8179de01003c4c753a5bf80137632e2e84d67238740926e4dc508bd988551c3817bf61b91b2c4b08c6cd407c5a2c56814e04ce32f6787f6956734c31aae990111890edf56adc97a4f7be7d581b4e1d668407ae614f81cae6db97887644f9a25036a70d14f60c020ed29aba15883c4fa7978c0c80c4de950ab010f126973679a779cf9d66c8f7ca63de8737a737b6a17fd7ec2bfb7e601706f80b68a1ff0be955549e11526c8a5b6d12ef37ccbc241737ccbf967f6cef9aa1b47fe669176cbe7fcd10739f1ff252366a406b9b8bb9d200da1a20fe99d9151dfbcc307742d15ff42d91fb6a7b7bbb91a12b48ebc278d695ab66a6d6416d73f49fc3aa8376990500d07f729fb3ca4852c75ca57c21b94b8d176281ebc4b300f6dfc0c5b067dd95f6800e39da9f3490f52a16fd90e66e4062015c573f5a74af9d09a2e5a19f7325f651729127cb9a10ac87b8a0ca10a158aef0e3b5ee1d025ce124e934695440b122a9144c330843acf8332059955bfa1109559c724188a22c318e68ffc0f0401e958b829150d73314a3a12a7d4c81a2b3f9a4af515cc97de45f20bae18e401769a5f9c924c7f34ae7c35b9e10c4adf4a1b80174852f09821e343429f410ed5c38ce42a308a6a355d01db41522e99bf4943b98c8982e9ce3a77d037927905fa35a7dde4fb2026e9cdb26a5f8bfceb225720db02db0da192800959e844383210febb9d0c04bb9f5a6843cf6e50649201d275b5c0cc288d0b74aedc24d5cb1e297e7679fb454f2204f1105c3b6423f02686cd0edb3c65aa7d14ca27fd64c53286676c404cc52f1d017805d58978a860119a98e7e57b73de00fdee6ad96640250f39299f920c99faa1eef9bef8ccde71c5d2804bbf51958a050bf4585bc7f9b26af10312bbe3dd0f76c2f3e14a501f219cfcae902bfb519f6e13899527e71d38609dd5ca53a6db3a37e8952f5c1f31de7b19fe5c6a2824f2530f6afd1ecf52d82f086c9a494353f30298a1bf9032a3b65e69c209e5a4b9a8e12f5fae40e87b85cea781f7947672f145c87e39acbf86eefe2d74bfaee3201365e7a95de966044c2ee81f3f8b34b6d09475dc71fcdb403d0f9088ca3aff3fcb21e5db78429b4c29874f23f67eb46288392cc656c866da33fad92c0f15ac21ef87dbc769c58703d1e3fb34d0edb07d787984c5d4650121bd9c20dc63f6b60a0e294443d75df4782f432225462f818bcd68f21f113a505ed0bea46d18d042d60494049b6628edb246e253afe29f088d3f810b2c8ec9c0d072557beee2e71dfebc529f3353db6afa51af6199c7be38ccc268609a147d31ab60e2fde79382b9b9d3a307ad977f2ef27465342153ecc94a60da8662ba420364fea5ab3009b7b6aaf8dd5518fa8384051c4cfa81360c49f69cc460cdb2aaaa116a9b7c63abd636aa22b5f88c264fb1ee267ab82f4378565e56a513b16ccc412b7f0fe4e56d815151a4974e3fd69b5ca573eff899f584552fa8c08d8d80e947f2c8fd3fca866ad07d79b6b49992dc5671d607b9359f387265a5d734fe0cd635dcea6615bb467d5fee96bdf311902aef6a8a18d0f6f37beda1ff933eef4676a17226177dc0d6a0cdc19b4a7c73e8cab3da5d8143484c50269a9e6dbc38acfa480ce9dcd5cd9527dc42cdb150d80169d45023b99aac240b498305dbe8c5d954e505109ead84fa7456b9b6361e5c38e9c02d05b62bc7a10ff2f465da5d0f1e0f855f4f88c5de7a7f4befc49f389bc18909b69cb55404cfd049e114e261d5a716e41179590b86a2037affd9c03b0b7c7bd318abdc9dc4eef4ee86fb7eb5ca61874b5980737d009b52fa49e609d33c40707f795dfd1259c9f7a0dfb7bbb434d085ace092a600d4ce699fb806f672d2e8df418aba5979419fedd7ff29f3c2cf56716342f8ea5a73d761479120c78625ccddb523e99d63de66f26602087874110a67472d65f051fea4f87c387ce4a80984ae958a90178bac312f25dd017984a26605acd1f38d0deb91a612c07b6cab5fa9a011e1477550e07a5fb58fa3ea0ebed461b0850a7db47178c1515f390b0e9db56741d7555f272fa80a5f911a92a3e265da655fb3e80ca021a75da69ccd0767a9f2f3697287eb7aea3c000eb8f6b897ac685ddb312407e7c5439f4b7f2ba3f71b6a1ecc137f96ed7216838e6bab8936e9900ec53f959aa1e34d63e92a3c877a9b4b0b881055f88081fd4166b47e6527d94269b710d02dae340dec98d659a3693d2ad03029e15d3364cf1e7bb984973b9ef97ce97cde94859abc9ca58c95e5f1c62c9dd6eba6fb847944484ecf1216ed9d87b113b8775c930009d8bde336fc266ed5367686204e3cea292a24b31137d242d45cc3f858327c7938fba942c1b9767447a9b159fb6c32a54366169f78401dcec05f070b6b9cd5e5dd87815e8a1e373241984e98f9491576050ab346e620ea5dd4596e1dd1f03ba4c2ec3d7ff0c538dc48e766979802366634c460606af464e0f2e90730437b2b000ced01f66950924f0ec5cf90046ec53426660db96a4c607df71d5abfdcc24ee6e92c055981d7ab726e410df51b88c04769184b0c48bfed1559965ddc4c9dab6f7acbaa64fe67d10e72a6e71af93c5dc692cb1eda83f170e0c041532b16007b3dc4ce57db8200754f3d2c73986af719639c200326d032c51a4a5dafd8cd192b655a80df4eca140b17d6c8e554c9a7fd36a9db8a7b2386b3cbc981192a9c15a058ffe59d9f73df5be400301b1166a8078e9b603c89c1023274335b495474dd83ca78405882d75c58941ec1235340b948500a70ad7d34ab4f01870246a0f319b1b652ce279c1daba1348a8d12735721442b59fa422c4357796b34836025567f990931b41863a338fe2ec8a44b966afdd50b3726db7e3704923e3d7c7cc7517dcb428ea7b80306fa5e48633a1b15f91b80414c3f1a7af38f3b3d1f6d6a81d1e59475bf80bbebc5231669f4e828c9d0838314f8f3f6f028d03a014cea0e89690df8a7ac6030d10443eeb5d9e1902aba663d97892a9b14e3b34b23c08f882294418343208c0cbfee11c0416e54bf11f14d82632de7ce6b01ca010423dfb5a767300627106e2f8675afbbd4fd04637f2fe03a62b14836f95a3cd46bb10321853ee6bf81a08829bc0c15b44d30c40ea0f207af3d5bf017907ae8fe153fbd625e39bb5f6b46d5d34893aad0f13e662aa0567afacbc5c0d5156901b4ccb2fc7205783e82bcc7bb313b27fda483b9000f2b3a359f86c0c3d627b987c715b8fda4b9b8e66543c591478224c7b549e3de7674a875b6c49faa0f47623f8fdbf80c79d4460b588855f812380c8bd2f042abf701603964032a87a604aa6fc39b1c87c77371f6f0811c699a7275116309e02b00c8bb031a8ca44a4beb745a047d8ce7d31b21d526c268c8978806e4cde08e185d87c329c62b76d0a56f37d74f4163ca22a4662902b6a706c8c461dd5b67fe27be9b6d873d638ca8fcc8ff221a97ec097bdbdbec94706d90e217b9c3bd2fd8d78bf7ea4bb3ece937914a0a8790dbfd329bd96e847b3d960e3bc69cedf962f9804d60327b8fb1376b5df29e6a871bb13a846cb58b8df751465a54fa7592a98a7b1c0c21849c2238d192fb905867cab046bdd7ca6c37d08265052154ad172f35d07c8a2d125bb3e68972171a98c95b5e136ca590d7791bf45a3f1bb199a5cc3ecf3ea94c8dfb4e287a6ea2b4b06afd376868d5ade6237e915c529b693ace844881125931d64db9efed230f7d5e27df0330f1d3d3baa8586a0fa8b59d298f40c427d060835feb13d75505493e1678b057b8696214f9112d96a6b344da282679c10fc4e7c9ee9329a56b9c01bc8685e0ac8f4ae34d1a4c26087b96aa5918e4137c74ae34bb0bb95e14dd67398eaa60fa4370d431b6899d314365c78e41c9292961b0fd1dc2a48442a6bd8af1641f3c6b63f35ed1efd058e296077c1b66493afc675c118d4aa8c7bbf60ca6e8c8926a4025e5f3d5ebc437911f1d183562abdc210c4e7c64b444858c09465524c75df42e1ec2933400a9b6a760bc5497b472f9396d8577ad99430752a3de6e093ac439d7340327a8013602437292eb9c23d5c3864c9fc654fc71b4062a7fc63b7f950df0e6599b511757b7598d403b397d497b6634e43ddc03689c3c448731198b12eb35bbbdcb9dc6e6ed3a8009b889e7b0f00b9a8160168e5ae5202245f379d260e2fffad4caf1605b2dcfc4879f05a87283cfc39eb6e15b14cf6fd6f9c587b6262a76d9bf3bc64bb056b1c51b7863e3180a9ab78007e42aadb8c04acbcd4a183084092c2377df51cf0664950cc69f377a60530c671dfc103f40e8a7bea5d80d8d56d8683202d6b9486482695c934341c8fde310dc04e85c417698f6e8ec526833fe255ffa92142944f8b10090a0007ca0fbc102807d098a9511899f7ca688c37baa6228a128b0fe58a0303c9d931b03ec5fd04683f25e3e0c212acd4206059ed28195f80dea118a944b93fffc68f1f0ec1071a341230b1ea5050e0dcee175e2e9b5d2cf072a7ab1091564bffd321be851af65964ba8177cb6b89125ff9127d0ae3035168a7d884ca7375ea50e953c04af55b11e9e347232b2a59bcbdb7a38178703e02e635761df892a88151fbc7e89f2be5890b2ee1996ba4b03b51a60cbd0e8a80e2ba7ddb7a2fc25da441b58fc2289769b803e3d2afb72b113b61f8e2e7eafd8f71b43c099cbdd65bab5262934a8c50d94a454b702a14d94d4cd89b0a31a53d68ce3551986579ac276ab548f219da7b9dc6d77dcf1ed3dabfd10df6b5dff3ee4d5fea7dab44e399daf00c5a2b8266323ee4e85e10d57ccbebef41bab232e9c121c152e18ccaa383939658573a035ffb2b153b0c60dbc4fbe33dc956a3a1b8f03b462d1893875df3db10639d549239d02a3cbc917a579d6f3c32a32a1dcdbfaf104cd3985f0718a396d7fa52c22341c4eb61e5441d1ae4150fdf86a5c288a6c85969402a736befda25ee51f0eb639bccf72b32046fd74a9aea570a285ce52a834b15af7d9e46361a8bf11a04278cd6c0f720ff17468f40d5ce759a3dcf27dc9d5443149a930366e78b6378febb48e373c466e25f92bcaef4c6de50fa850d88d817e317187aee734871870cd7a6109846cff1c2928a22b4a4f09523a6d2cd74db245325ba34815ffcaf71d58bcae13e79ffd395ac60ae4ee295544dc2683f5309e92671861695129c6c54fc0af45d932d4c015e7e2d0f39835c2a7015ada87570c8c8a3e6e542bd753c6d02f59e00a102fd7391bf2ea6398d122fe090a06d731b09b23545bde22410eb44ad3215eaa927ea4d463d74f747d1383a16d1150d952f43284548bd09d6c2f4594791ebe89524fda12ac1ef89e02f6c3e6fd316a3a88778d6ef68f9f3052e8180f0a5dcba8c6f6d209de466a4c052595696bbd1fb999ef074429e26e56144704d1ed3240f7303d599ec555e987429ccb21e69bd8f6859160354b2ee344f76c72b9da36c133e4f79c5a23fa7433f020bf562a434fa6fd781a80385a6a8933be59bea781db4ce673a8dd5786735e61eaa8f8a333cb7dfbbc657232130f6df9eb384384e7ef206927054dfc0187dfeef9959eb4783fd5444b0ba9ca1c0c7cef43f436d73e55a5b54c3bc829eb68fb3f78b3af45caa1a62799b90a6206380fdb44a9a1ae1f3195aa68f63918576728399973d97b311f7a6752c992deb1515ec4a9054f0f0fdd9ea154e0d5e6b00759917a0bbd0347426d36650ad0054c07a7c76c35a29cea317382daf74f1cf5723a5e48b4123ef3ab953a9b8e21433ea017c8cb1be933fb8737a7695cfba17e5be79947e0b3337aed113b393d8e5fc598d0072fc5c3e1f5e3efd0b2fb4fcb2368638e68e8bf8bb28219f96931940490a26a97e87d2ebe953a8c08ce0316f36399345da28d1de71fb30d3ed884b3f2eeb3d61eb7779b38f17c1be5587679e4ee5334c985297a582f2b79e3c4d1129263c46935e712c1d75203689011245d3ab4c98413818cf53e8a7e9019661fc317c3ca353f666db57a7e281bbfc7888ce507ce17f46ab2dead7aad820641fee380a0bb4501340d1ce51502e04bda1f56f03ebd06d42a965590a766e64c517a2c9587f62e8140bcbf7abbb8da7c0f317d54c812cd61a8cb1f96879827965c1729424ec3459ff667fabc4454ed24978fa235193913442bbcd11bb07f58a1bac53c10484a5cc36004ef53c30bbc9ad7d04b36dc3a5eefb36ed7680ed12ba9db079c46484a2ec909425e2362a3365934b4cab66c99b531868883f02e567f5d60886d4f16ebeea28c82edd0e086cfe471d1932422a90b5b09e0e95577666d07cb8c23d197d2b6ca478079fa1747c994ccc6f4d2c25c6f7b447e36001da401ae20456d9e8c706ebd3c198e955a34a29ef3f5a59e8cf5754f871a48b2ca6a28704425dc9a265385d51f78053d9d69f37fa5282b6bde076e4d34693a2144c5d7ba93bcc57c0e6ce3c395b1a51e4c7d31308b439552430adb7d57f0a5c2966bc02d0726a7571e508bce2c08eb64ef8d3dc05e9b7a3ed7db61ac8a110063ffd60c508cd741513cb638b0553b3213084e65050009bd7e128aaf1252f7de78f96e6616b99ec132aad16f59ecc6df9452aebd50d6a459db04f45564d660667f4b09797a6bad4f165db88d16f23b6ce60616b1b80dd620dbfd0c0d601890c8c0d37db8fd0cb2ec49c1d853894eddb39e2932c0e319258a7db8f2ad4406caef92ba2c33eaf05728f98f455740ea31a44871143fd11e93a7254c4f7f1931e09f35b109b68ade1a051511b11fa4429b5e4e397d1b62cc21f288e1a19f1d34bb290b6abfafb1df62a1e160be5617db4896277a64e62b222fe1a49ce06fe30a9b8a1cebfc5fdafad44b0dc4ab901f586cd71e53e9954e012a0c9fa969a8cc71ba26268e7414b1ba4ad446915963a2f3bf216bb2df3d4babcca5e7b68ae873c22c6cf5276394ddf352fde35c4bcd7a92d564cac77299b866ebe90d3552069125e1e4b3d2f2cedc92e673387adff4b9a15848a8715e1130030dbcdb18a6655e4de75004fa4ede58666c59d1037f89ab5e5c222c956e0f25c97c690a72d96408b72716e747c21f1af29da9b844c5e30a7a93f786fd32cccab887f0d38e83eb29c70070b05bef9ffe79fe840a6a8e1bdb05ca72dec81b054785351659cfd86e5d0ae9fa6b25cec84b47100399b8f923de4a70234f44ec0017d1a57142d0c543771623333c29cdeeed8e8f8ceb0a003ca09a78beb2dc1226855dd5958108012b1f84018a3a6914640a76c2c94e807d4ef4dc1088005a2f01e5dea8d8bd55be161c647b1c7301647aee6f18326316c5d98416e350686a3e820247f27808e47a2bfe7987bafbfb1d929470f87c20d131743896d6f200eb556060b9e9410adcd9462037178822a93ab5b25aa79200e8f4a65e6a71288c3814a6380383ca7ee650b3b4cbd9e663bad141087c9c6529c401c8e093b24f5392b09c4219c9ac461567ce270a08bde612f4871c25949cb320459ddd238855aa35507959c525e5374a4de4f0be40bcf5c2a170e73182131d7afcede1bce4d8f60e6ca72aa429c6e1bccc5dee51037dd695b1c12687f18b51e9aaa401352d96de54090d743833e196373156d5158f20c3a4d47a15090fb7ae1488fa415bf2fc480f493ee76c5054a88288e5b441a5d8559d51f307cc24c7a3303745218ab49c4701657290a23c7589b9651bbde5aa4327a5f9712f56e0ca5f1fdd6e16ed607db4f44b976ead73ab73e60438f746d6626effe4b275bab9d4c2420bbe8691fd3419300a22aa93ad704aa6e5e40c11332f2ad33117fd3c33042c0d776c808c8a3af4273a7f78ad5fbe90f99a701adfd7bc86bb5b2001148908895ed3f941ce4084ae1a2e8162134c1a01e09cb5b18bf3da6928bfaf559aef5e41da2032cbc48f88fdbab3d8eb400983ad28c0c56ef7e650068d22b4846160cda6a2ae9355ee32569c8de6b1379a35c06303df40866846786c1e234e6f53bd436cdbb8c536b0b741d28e8c519ac98035a954ba472eaab45fba8fad68aa8725258804efc7892af7509c732460ad649b1788e068bd7be702e8c4ce99af754088c40152c6cd33e20ccc5aea5cab9a7de67274d2a9bad44e225a4950ef30340d29f16944a871d543168a3aa639b82a862dbce2129fce70f96ead24caccdb0aec82458e332485ba58875f556a3fda3eb5a6f66601f9de89088cbcf49ec90b0636fc986366716ecd138d29874e77afcca8ae605660ce9ecdf5cac1ea699df10f8210284d2f769a286b190260b122025d44249c050ea72c683323cc10fc9ec8390cea26903576cefcc1caba332568529ffaf2da8da5bf733edede08b04b2a3979c31f2fa2e031a3d087aeda0a89b4a04e5400ceae2d1bf86e8d64b0236813c08e5a61f35857b9177c0c37c37486f930cc34c2dbe27c2ef026408eb9c9d45f3ec14048fd0f08657e49aacdc061519b163633f0e3cf1876184f7fe06e532e8e846c7646e669fd09af6c60a1d21b56d16f0f1e05a07d0ca25a27dee76800b3e536947570f808d0102b110ae5167f617c7571e12f086e0feaa864363b336b05cfaf2234d7737d1cfea9477aed3df33b01c8bb5a77d9c0328fbf1861622020bff82a34bf0ea7d69899f28e1feb399146c98b37aa888061a166f12f62c6a2f857ccb6084aa34ddcfff1c511d581bb2db0e0b4261291cc050bc8f4341853bf01f2ab9a9a4c461275ae482322ec3b60336f86479b7fd9c2ffd244ea698e7a158ea078199038c38201184fc3d030629ce3f33e1247f6d365c120a98169d74dc9887ea8028720b79b121df23771f509f752f23d5557d83219de6d91655b07b655d4f36c88465116986be26f242d16d799fbf23e88eef3726c219ddecaa55114dcb49c3f9e0b079d8758a1f701c9a1746ee9f5fffcf662f4ab19615f14ffd5f7039fea8c3a6b8afbbdfbbea7c749ad4e71c21fc78948f0536364fa76fe272a786c20b4431fb90f1c8fdbc732b024d8d8ba57e8ed2949ed7c8398c039b1c16fadfe42dcaa4e3acfc7849e337394ff244095e000cca300a79b0ecbaf93b1488a393f59ecef2f0ac9de40bf15734a9cc862949ca6f9031469878096ace20c3359cb9fc734a4f237c2de587c30ef0d6942bbbbc9139cdf8c9b852682a96f8ef688d7e259d2c3b5903fccdbe17ed19be69f01f602b090937196288f5a18d7224491e1314a6dd7bebdce3b36d71c1110b9dabf25bc5b6e7b8c3acfc9dcd3e2dd086af538fdf99dcc294dcebd4c461c0728773399cbca397a6b29822b34b778a469d0383ddaf7b343565f8882ee05b6db7fb9d2dc8dcbab917ebd01aa28ba10f2e5403f2f51f0b0e338de3ae7de6b9a8cb9ab824b0f31365544c3b6eb813d3ab9726ba497aa5cb054fb42eeb67ea879b57896ef44620a1ba6bb21e0f4243c08bd1d60a4dd3e2a6169cab1514c0e13460f48bbb2a0439d33885aac24dd1463c0a04aa29d4b218af4213d6d84d5934344d680e53f856b8ff7c4d26564db3be48b58e94488f6ea56d4330dfc98c65586e83af7162dfc64de42ab8dfc3a94c009fdc575042afef35a9c8bc29eb8fb01889cb2f2ee3a37cc9066101dc71e4b1806e03c6262f808a5e1701b9277f8d9c19b83fda4ce64483447f092922748788a9fefb9a158d5e26ba7ffa9c8a70c50d6989d4ce2d858fda45c71da5e38484f6929ede5202132d422ef68282ea46004c260fb0c436b87086fa1c6ca5a7ea69ed23b96e3ab11e7c3a3c1639d703f016707ddbc980a1597e48655569129b6019edc24bb044efebb197ed22e886d92e51351c1f8b8deef54081405ec8bc60c07656228b9980bf0e04f7efee885e53c8032bca90b97e01fe8bff17e014e6e9bbb75691b556fbec5b6e75b01bf63b987b213756e3eb60af0484f7715a407f1b26c89643ed3a815e0e1e676c7f72601b72dba80a5dde780c0d29de05713cb7a09335cb7e64c9299466863bba52dc360e608b2e7d28abed6da6c0c3ca07429158fe6f7f2d62025cadbab21b49f90efb7b2c06b8b56da171adbc35d660c0eb66343001a2822f1f0101a72878af1f8d5ceb56856987074fcad39bf43ef86814bf5a4b2ae7e14c496984200ab6e07d9ae1fb1851d853f9be2e7afa49fcfbc5159bb7da9efb9a0afcbbcf64a153e727fc6417af474f611110f6c15c24c410383a31437c2bbc27f73fb0a3a960aa6a06275f0dd6fca2b31df1c700e789b726c4ada9a4eb8b4e6c8abe2320145fd71546925be78deeef7ed4341b3078303b712e6b24d9be2bbc55dacb7744372c4546491aaf941e873e02561ae09e06af4b02d3776de2d633f9415c16e28add82a54641739dbdabde5d422f07e26421280a3800e2a45a5c139e1ff53dc5c26480d4a05fb704de9410d4e0c150ec7aa23bce6f4e7a8368426d3fa0acc6e544b29e2af924d384e82e0c78965c9013cb67c7b260545e3de14497fe8ccb0950e486e9f4f1881940d38431daaeaf36e6c0221d6cb99216364f3f58a325fb6e3dedfc1ac5cbccdbf5b2e7f84e582eba88ab98b4b4c829bafe0a83b0e0bb7f2529c4ca50ad1855922b74090c841801c1aaff494191b9b13702350c71878de8f53825fe8b2a2eb6fa827a2ad037455f71718fb91e58cee5119bd275c14b66853889897cfc96a934cac451dd7c2887ae51bdf197a03639a0ffcf577df9df0974e038c732399a4d38c28cafb9f0b4fe0668d74bc62212a6e3fc4c6fea1d336c83619d7509deee072ff5204089ac468dc0637745168e92f897b0ec5f7a858e983a66118739607e6005f3d9d4453ddff88e9737201a9346c9fa8e48a90e85d1ffce6aa11b3fdf6811c0bd719d3cc5f2cc7b2bfde3c9396a7bd5db4a2295a43ea7ef4683dc42cec8a2d088c8050f5ceb52bae0eeb06ac8e44f5ffed1e0636c202c9ca4920e8c263c7b9ea0f989df186741916c8c0f8f3e96517457e94a8a5629e99956c6c8910dcdb3cce8c843e7a0163ab80afc377360914eebaa68c11288f80218e38504fb1cd07e478a06f266497d838b9f49e9eaf713d6294f4a5894a7e4c2fec8fa7a0becaff208d35f6291e848544eec00fea26ebbcd8af2a14f31cc405d059bbc3e7dce69fce2710d2737e72bff04977ac50504eddbd171debc08714573f93408dbc714544099b8941bb56f418c7eb73963ddc4cbb9eaf40e3f03b115ddd8efad991e6e6ba7cc59deb643d69012da720b19947f29ace2e5e6e1567ca7d2211ebfccf612bd80afb13535ed829cd317fe8c23ca2d1716b13849bba7b5baab76b83122f27ddaf1685320148d2a03603712c1d0a77515c578a744ba6bd30db198e91f435a68eefa55aca658dafdea382e71ea73bda7538473d77b7a1f4118712762fc716c69f8e503d11de2316b5d546fc577176f5363b9e89d6e657aaf0a66bf5aaf34b52f862025a1c2bf021b4334480dd91c22b972550956cccd7f176789a8a245cf57dcad1be0f789ee561c6076d599bf7a2a2648a0e6c57ca65fcdfc828cde9a0c62ca4ff9ef0938aa415a3e508e6885cd66b6f384eeef0c8c259631fb4b0cfb84d63269a466822e1f018b31bed9ade8760fd2fe64f3999ad217dabe1458979ff1cd916a3762227c1f6a423401b3b536cbb23c95a560af78afaa77100ce62042cc814a78afdd2801e67428167d570eb8f03910c8623a549afc0179d3c7f9f3bf188beb31a8cfce62fc547012b247b3cfae89e1b5ea57dc1356f8375c05112437b4d08ee55c1dc1e539a5dc4ae0da4a704c8a39ba36050124c60cb9a0377192601a6168f17a8f66815ad0dd3a824b1446e22dda7aa645a166502bf8603874770af8620201e908d8aa2180b1a3f00b28328353851c7bfe8388467e61eb4c858a3b7ca895194b6f0c0d19c08439d346316df6298eabdf6bad5fb9b0d87d3ca1a979ced944cc27e98004974efd37afc6e8d686a5cc63962fc917e9f5ced0aafeb8672987ccf596a7a1f78d43f69592209ae5f0e82d317d5f6e8b5f5f966663d70a7ca50596d38495f324b9993f8dc8954e3212ac278b87d264dd908a3a8ee08d63564747340e5afb01bbb76f605a005046bb86f4c47eeeb1cdf3947bbf9fafab39fecd31efd7577746d80d785a5de6a578cc6a828520cc848d8c52f3be758a85884407cfa0169234e8861a9ace74548880631b1b20a7b922e2e1a84170a172e23f1f775c0f7f22c1202e0140e0231004e507f5404001ce84bfae8098504d6e4be5e5058179088a3fbcb70108b9fe5bf577259997e5496168b5a4af0c3eb160fdd097f1877a2d9d57df561011b7e637045debc999c0a923d11f7b3170ce80fc621dcc8ab88b2a0cb7a5249497fec37563a34da58b290bb64e8f6bdccb0d0ab94c850214be8bcd83e16f6a7568193bdf1bc4bf640965a84583c7c5338019a2481e868335be45e1a8948584a15e270070b0e1361ea1014b1e9ed1466228a261e2efacda552f88f420443bf78a8da62560d61b26427dc3c048d7b9ce3c1c8babe29a52b16c0a8125ec80ef9dc43b41c3a2414ae08b05e399bbcb431fcd9bb04da8784e17f086ede76d3edce9b95be15dc4c5880f8442fd205abc774457680adee7f9b1313b66f071cfb07ca2afaf6820fca551fdc8928ea51436bba41011fc359be7dd7bbc0a05e682afec0a7caead87704f578c0f82ca57dd2916f5ce5b13eb5d09029da1f0b16e8ff10365e35c9872c3ebedda5b76bc4866214b4c46b7abad916f1c9125845b2e9b41043d93eb78089b2fe394471d3d194ebc550dc18dc439b94bc3da0b1c5c78fcfcbd495b73d5a7b807927174064c8cc48aff405c8135f3569f7d287e6e341baca03d9801530fe133227616e6af33e9f1a29a50b386c0836aa9d05d1cfd32222ba0f7e5d0685e1910d07e56553fbed9e58be47c18b04ee387a16fb966cd5f0f8e0ecb7a7f5ff26cda92ccc4579cc0c0733faae062b07aae13f324daf8c4add2d160caabc585d9f5945410a07d07d1cfc7c12a41af219d1185350b9617b16161e12f161e5d4bf24d807495e72d8aca95ea7e7d9123207c5f0a7f8f811e8c9208b7bc92b4590e6f065666482c727c6509f05392de6d4b697b9cb5271952ad430a757f5f996cdcd6e7b0be1e0a3dbbf1d6469fa945dc280079e81ef9f54117b38576f351dfb6ccc998c25669d82ec97ddd9c2cb0d04da312580a80ddbc1798305fa0f9ebfbca5964f5f4c9464f39cfd67e8df8d9a7f61ee9b61ddf01b7b9e9295eedc402c04e0ff23ce0f0ac34f60edf3b36313dd592d05f52ce0e918ecc7ed9320baf14c236d7ebdeb39d02b6318737d637050663ffefd846951c5944bb4e9729789dd7691df82ccd31e7df4547d08a546d931fcddfd2d7f75c14bbb333e7bfe7227d1623a3bd872b07d3171eb9411c16cdeb80fae24333e76f8bcc145237b3ffe23ec3e8e0675715a795247b2ab7aa44012bd2b50a4a0dae9c37a8cf0931702d8132ab1271b69ced03557211a6602c0061e7aba3833405abaa652ed2f8b2f8e84f90e8041d8ad9a26d7acc2c0aa5f50205956426a0be9f2901724a659e43a01723b478d2bd015f24c8e1b8499ed23bf7cd1d53fb4f23c597a08c2ece2a06c75e03d5dc37491592c94f0ffb298af8960765bcd51750fc495aa8efa34fa472d213b090db29ef177db6bc65d351b2574caea32b8064480be424847bd1a8efb1fbfe25b5a2a14dae808c147ceca74d6e46a0453bd80d54ebae9c9b9cddb10709af319ad8d12d6687852a9cb05276214ecf5385a952659e9ca6caf294bb253094ba2777010ba24b9754d9e7c4e27dab6c6b7cbf77a6ad0cc53082856299380a0c7d213f66c460425d847b0d7866b503787492b717fc30f3079b5175b57364c4c415f60c78d3d32d492e82aaf3653e077032c80219275e17c773547323fef3e72757396f7497b946f64a375a94e03aa1e36cf348e51c15c896120e8f8feed76ac7d3bc85870f11b89a7de188a6b9e0597377956d8040f82ca1fda1d1f83a90ca820d46370591fd0d07de07be63a68ffea50e372f4d79b4e3caa65eef5df3dd428eb88f5b0a96ec99f3bdfd08900d3e1a2070ce27971c2c400b68eaf9d986ac9a06ce433570d77340cf0edf02d3362f35e11572e3c4ffef25662b523e998393d6f36dafb76ac7588012df9dfca74e23522d75423ba2b2cd577558e41e7246081d7822e6c04137f5eb1ab86a4be2e2db5f4d0c8f385d88b368b4e7f231a8115921d1ba1a5e8be9ae0883b78cc1f61487c1fbe02fa0e0a3c601d5a45e4c98e97bdc55a28adb6a5afac2dd609b14f93f9f34795fec6c055310d0f063fa519b29f22dab9fe766e49b9fdea977b662883b434ec620e5eb818656ece653d9283144fede6b5a3887b6df05f68dd2695564dff6a7f5e7c247eb20bd4581e2a4d88fafc2c07da5d63ac5decba482b352efc53c556036dc05f4a1e4b414f421e3d961f08e9a604f1b9063dc563de95553f6a86403c79ce050f64ed5de3708645d0f3c97e05430aae3c483826529f19f450e878382e2e126f9ff09969503622e8b881922d54524aaed799dc14b3b5f914570ae02f71c4d0753ce945fde8871dcbc1bf24907474c5569c25d438e13c54cdeab9012a962adbfc1c97141b811e8f22d8213698cd0ad1cf8b70273bbadb33a0062d115ee17f2ae38e9b04bed1fbf234c8b6c1d2271dd3bb9970b69cb2607d22f070bc6522d36dd27122a59f9127d5400e5de14079adfe43b2c5fcbf680342ced94bfb5aa813b371d16d75c747cf669107cd4bf2a6b5e278c81aadb7f1e4537a25bdb07005ea56a2963fc1ed8084856d75937ec6a071df615f4ad2ca60b07d0109245def14b5917361e4a381257cccb88e8d1d1e67d68efed458cf9273a3df2bc854bd5e8ac1f58c647f950fcc237d2117d099e5c0a0b08ed1c41c6d28635d2ebbad75964e629f578ded03b09b945fb1a82aabb554032c32512ec1cdfd1088054e20154e604ff76e4205e0b0ed0fcb0a91a3adcaab208aed6b0752129cf82b9608b0ed39f68f758d5e306344ce84f7bcb6862e703e1c0068f963ed3d22fc0a564ddc027229d81e95b68675efdc2be486fbd757a0ac544619cd2897c53209395f1eca328531c5d0d511273fcc0819c3aebbaa9d43cdc3148aba79ff20ed4365411c5e356f0c8d1c5bbd2ed3c71fa41b22c4c226d5d83b63bccc7a490e391bae473e0aed6396bf209cc9d70ff18a83dcf967ad935a8c8d7084cb38a62ee3f6ab48335cbb5b1d555b4f9691392c5425f41b3afa0e34bc9bd40a82dc224fb76e5cf1ff41a6192e4b4e282e53b8d1e81639c48fa5402976b3ef9551517b9a2b28ac94f831242d53d0510ef2dda939031aa09c880c18dab8e5f143deb8bf0631a67a942d963a11af951259990e2894339c909ebbd58f0fe4b61458db522b58a7a990bd8a8f7e6eb5d6a8087d752a40020df1318e1d4caa07750578404fa3dc8f06cc1971ec0026dd46d60e43744fd5cb0a3b4b0e9403fbec54812e550d3e143d870e3799c9479f3fb9fa8225bc5b1743d97437742bd35312c214e456a4cacc51b9114e6494e4748dd158ed175f0e15d02ee548f9191f8f353c203b89aff5b95e7dd1af7cb0dc8ecf51156f8c0db4870b95dfd54108b5939ccf7dd036af7352a451e08adaac4dbb7c1458e288427bb0c10eb1363a413e73f240849187e0b018d5afdc36a4a4e2fd41bf8e85277797415a3ae23e78aada5482ac4c5d0f5f6c14e1f3e64a87bf2d75590bfd73d2a12da66aef1c4cf6a91f2fe918138a7632ce00de4951230a103fc405829f7206d04c7ec0c899e60dcd5fdfd7ad92213fd66564afb85fbff5d6523cef2ee53c599084d44f86bb5a9c85c19e6f1c9fbd1a95d6253593e1131d5e743a8d2b4723dcccc40e5ea7af71026ad5fa972479002a51560ad65fbc3c7bfd56a8eaccaad9b5d1d171a73ac9d905188c2d2801b5dd7af9d7d56e11f73c109aa555e8c7483a03cb86900650500e284c87a41288e837edd190ab07a6c2650304f86cedd5e584feae0db8043f7c6d11d94869d1756aee83b169545f5a4a11eafdedab23540fe9d1140f0dbc506833eef4d06eaeba2c1323c25b864469ebf75ca6810c55846baf42151e307ddc5d0b83cde170074f30383314c8ac12833c6e8f60799812c2181fbd83550253b5ee8767a57a6ad2ccbf3f5fab2f6929f1c28a7818bdf5ea120535bc6ebe3d6c835df355e31e4fa974db8113b2b77af912a2d1b9182aa49e0f6bbfb1584f8ad806f046e1acba218513a14a07666a4b30edc6f8d344e3062194a8d54fa4c66d047a24e6ad004631d859b93c33352e96da6ba1ae732d23b86f351cda0eb47b6c068c3f4b0b3d8a0b97143594354f5882bb6a0ced2c79605ec2c20ff6f57006d6b44bcbddb13253211aaf3b7ec837b7c0af49b2ebeeae78a35bfbec16800f203854da49f16b51f26cc55a31c9922c980bb77358f4418d66e191ea03a89e7f67946fb852fb6cea2ac7f28123bfa8ef40f42dd4da83e0434e58da6c8cee148ff25417b829c320bd0d9356dc5b279059bcd30e97ad64d61f7f4d1816d6a5fee2787552d2ab34ca4e5e62f6085423f885406312b87a0041d22717ed18b08b6630de96db8ddc5ad3f58f7f0df44727a37bdced075d08f87aa7e3b32ec1cd3bb050af5cd2a0053cb7b0ed03fe1bf820ea78be95d51682ce029c96d034e575216e6f541db2a0f60e5a581abc2dde42d16752dc3db7a7dc1284bc6593fc301fde56e64e4c964d6e6b3722232cbc0c63642803686ae8eb6c02a6730ed88165d0da57813428faf08fcbda7a304c9786d7b9ffc25c41033e6aa7e385f1f27f12486814031e1f9f331a37a82bf074e03dc24b314983d80fb2d3573e2ef106560d367152fa9b80570e8a09a63818137e70e9ba85c6e191ab7498d841a95957a7825818c86147b9009a75e267a9dd67bc28cd1e7d2dda60ce27342de4e750a6fa22bd0eaedfd8684d4751fdf17d34bde3630b318222c6228a75f07b0fdb10649f75ca7931f10111ae5a6bb04e38c40bcab28a006db2a47e92dbd0b3248b3503ae98ca7c481ca0382f20c25f9d5429d19dc32d6d11c2f840b9eb43932929c4780f83efae234677645fecd933d51eb8bb22d6ced155992539ad4c2a4c3aa382ca46a92f0a82a1a7148f5b413bb00b0b3f0d499ee128800cda7a7f455c98180c1f32f74266fc20d6af3d7754e8aa5f3eb3f572767e5c7b2716b5a57f164fe2ff004db537b697431da99fb528578b2531daa9ac1ac0e5421d31fc5e14452247982e390ecfe9614a192d0c2939b24d49e052dbcc71523e65c9720c4cd076ea2e984fc05a505ea3220748809a19a26b7d908dee3650a20e2161385dbaa00499b070c2c43451a304dad40ca9c224de33bd5e87d603be77f5ab2f6a6d5255c84124ca89e6e98f06ba5bc687ba5e49b705a93bd41bebb7e1e3e84f7ef93342949f858c6a20b6e089d6abeb09b2a7431e69510d1b19ea3d252956693b3b2a55e04e0490bf24a00f1f15d25d26d9f5b8513a5f26dfcaca1cb4da863213ee8686fa28f08dcd77e3e7ae725ddb73a6af130b8dfcf4e1dc5c025c8beb9a091e06dc700184cb9115b9ff3a6707b1b7e2fc4c71766d2c566082f15af0826ef40b09019807e60a713329cb5f00543ee1106357c19558da3790dbf134adcf1c649364297f79355f2b4320bbbe9153a967fa8035644dfdd685cf6df6a5027a065f3f8aaf64a4dbcefed301e9e57166619a759a1c4fff3683106b274557a399a83edcd0aae37c53127455bd6d644a0945488120e2031c627db01d07098a60fe875ee09ed8193f60b97281d2f1c5691f080ba3af0bb91f5a6f8bf8d297f1a899f784d9d9045885d8c0c0c1807a7f0b49ef55cdcec3603413d96dbefa4a26514e32979957177468026b6ae96c660bf9c296eb3e473f8117ad98fb3c55972a445ff622c19c703149ae4656c8c3fdda29da4bf3f61454cc52c02fa8ea0bf8a7e792a80fa8be324be3d7e28a6594521eb2707692a2a541a3b4f85bd5d296e935d00642a33ea32ae18f4fe4d6af9ed32f319f0ca253092819585a1d1a8c1b8e6ab5f42ff6857c5521443c689ef05649fb5755daf0fb6774647b76b1b07b1c1c6b8620aac7967b9e7bccd5b2d5058510121b7adc8f68328766ef121fa71e0b67b7ebefa1239e3927cef0358481594634b2e8531fcdb0dc70d1a6c2e8e8254196107c3a15c0431c1a783a6466afae84ace8385cf5d998079a5fc5fc785846ca5a02865d2aec87f2c7385a14e8a2a86855e72e0160a36c67bfd6f4189b7f400dd0b068f2291b719318e5db1501a307fb908990e6af8dd975d293bfa0115661dc744544c5e8824b14a148bb9e75c4116a081134d45dffc105ec228e214500af531652c2716ba42f7e8d19da3728c45c440687a57db060d3a3d87bb823567a9606f1445cf6e905ef0b8a4676e2cc2462c818e6eceed32253db340674009728ae0023d3976590456c34d08530a241deb139cc101f91aecf127c5f9354226c74e3f25ce1afc156d43afc9774e17a88fe0c15a94f3859e9767223dc4a5e3602c433cd47e7f4b833ebd913b94274b8ac607fae2f7ac910c887f2e57b2a057b4143af9953b35e9eee952e9030504c7c864b9b22385cce3995224f750fe5ccfe47b4af944f14083d4cb4d747f9ecf70448eb48e4c63ebbb640b41105dfc9ae97f4e7ac0185b489785df00e67262ddf19fd84890dced0ae83b02d135a6a9eeb653a5cc6ec050505d29108634bc0f51196321352a86b4e1b2db5dce0e3cb9e6b19fe95c2198f07d204cd975cd6880af116f82838afeeadf4be498cf7e5c650e78ecd2fea6e46b0a03cb279f681802bbaa580ca930384ddd97c8549e230797025ea4c444da3590888c2b613cff7605ecf1a596abf4e5aeaa3bc9f311dd4a156f583a8176df8f725c4a64ba8bad46c0f7896223c3c616d52feebac0736e7f520a22409574002288d89f6d15968419e230c43a74e72e9ce4667b4b0e21ff04020c72016818ef784003439188ad68051b8c7ebb17ed02e13d3da6f2e0807f9651eec79b64be61ce03d8122eea0a10cdc699efe22e86b600a328576ed837c9ce0f2d9a82ccc0a1cb263abe02740cccb15b3706b988a830e1a98e4938d38bd243eae0829bd3039d4cdebc183f4ab42b3113152cc3aacb402fe9ac721bad7018ac2ba062e28daa7932dc579f2bd542f41561215c0dd38bb642db94a60845332ad777d534727f8a1809cde0c6806a0cbabe17ecd4a8cb286a35153c28147356366e2f8058509f7179f52a20b5a759c0dd09742cd8e2134afd774a3c4d55c1f45eed4a2cdb7d09b8ddb422ec69261bbc709256ae26c77ccafac1f254abef6b8f2c024148d19a5e21e64ca823c46bb5bf358ff9bc8f124a3801f766fbcf2ca6ef6f375a6cd8a866176c1662ecc0630b3d94c0fca3b2542be59b3ba9c171c8655b7899b4b688b78b936c89ee4e9567b7e984ff3c8b73fd98cc559a6473148b2c145ad360d6d1a569c3e34fdb33e7729bd02d68263f700701093e8580b9ea62291447f901fab00f817f0395e28564bc6b13f2427539722b62fc9ce54099f7446e962c7695fe5bccece2656d6fbf86f060f4dd375ca1b7423116510c6587dc8b573d01403fdb5bd1bb27d9fe78edd514e29a09533425a7f09a56045ab170af81116c3c07cfa86c132bbb4e55f2624540495c12d22fe5e752fcba1052fb975544c6661d3102da5ab8fd03bfa0b2a08eb4622e6e56c316c185b8e1895024c38ac4af7deb2a97818fe64e141418f90f52a5c069d183ac149b41ceb345addf131070bacf9f6e841aa03d9d2f8a5094d3efc6e2dcf39784c689e6e7e2de098d664b5de3fa7417b4ecef10ff1821c0bc1af2016a54d93f95921e697030c49c09ef9e89853bad5b4e2d496b6289b7390dc7590bb468555f19c693fb20acc5a359d2f7fb49e8c96ad2fbcd3d4d4c7aee8063bae4f99e1a71e9a05b75397fb4a24d4d4f23230a42b96ca10839a6b2e0686707ef8840c340a3cd72cb0918134f94c9342e6d1512e25bc61be1c59bb9c024854480090e12065a3083d93ad2cd1516295cfa1f9e54b52652676270beea94d89227b9fa516f29e34bf71a0dd647aae1947df31cd85c5f051921cc32c747ddb09bbe85dc605caeb569ee7e5aa31491c3dd3ac5b24785052725dfd338d91363a570811ac95ff9745faac2e0cf1477cd718be6bef267ae467e4bcab345edf92515943482d6cbe5cb1f7f79a719325387c82ff2bac96eed82106751ea86d3b0d45eee5ddf8df098cd00d77c22cbc497a100351ee84e67c67b0407746a869101fd5dafe121af18d21aeb8d814ac375ef1814c3e9e6501a70bcc2aee02d0911d23392e8e479585962a59be1e8b038372f0891fc11050c14df1086168f7649008b36d8fa2bfc01d708ff590a9c19e61a3ed25ff424afe1f2c423ec93297c001482bd63b5e8265558f8cc1cb638fbe839512536eeef1771df316e51cd55b2f8e46d480ff891b4ec944b22dcb854171462fabe78923b1ad84e0563008205377a1ecbc8442f88ea817c02cc81e87e3f474ef9b8346d8b7f057883f3c3acac37a529659b54e668fcd1dce35e6e1fc8d0ac2bdf0243c91483563b11a287a593b19c25d4a76fd0c5cae3ff66ed9dbc5a09433ad5ca82df3f4f9b715cb3a4ebae6442943a84d873131dc7e744ef0212a69a5dcb6dc2900f24793ee639c95c310a30a3e604bd74629e4a44310405af6713263dfead8c1928e02858ff4884ef2b11e88d0ebadf63efe1043614c46a74e0c41016ef5ea522d483cd5f6f7b92d5224c504ca6a9277c8758369cde179f6ccb23c8e9d255ee1e8ee67becfabba4ac503a49ed488b70b21e65626f8887ed47411487ab1d8576b5dce4639e4d4c81b351c33f3cbdb87939cf4505b92a646115c9efa4d9e24b436ab8f8456800fa91056401d1a5dff97542708d0429b5181e990598651f98b27bbe125e81867956c392bdd62588d256c30a76daa8f29e4d4da3201b2a04f6d03092269b59f66aa7cbfb799858a18eae8e1e4739085e898441e2d387f9bcbe46a721cc99fa36710dda4f9224c33601a665df2cc963e1a129fe93941c452b0cc5425739c56513260e39dcac587c1ba02368f17a4a7314cbdde6bb51222c0660661f2691348b29c059f8eb214edf8776a7cb53dd0c8f32f66778314c15c5a25ead2845ddae162de4c7a934c66f07d5ed82592c99d21f854ea214af98c90e14ecd4e99c0dc08d53c2dc48ba5d22f5464de714b23fea47a62828adc452e969baf94a6d39165accaf879edf56023f259d21bf63ed4cdbe0adf2f38e303c7cfa080e12b79f63740bc51c9e538a26e8ecbd6b400e93d6565997b71320abac2603f8367b2c8760342a06b33c263138ea8c2fb9a02125cbc056e43fda903484b9f51f837977d9f86e0d0051900631714c90e86fe54b1615f89302a05bf493c9f2e601365d197f9b4ba0f4f1837747449edacc0185260de991434371477761cdfd072f20b1eb72dc7d1862c975b18a2dd622e71261039978fe582eb81d586ae2fd01f1b3794ece445fd008c1c99052c775d6ca46a364c632f4ba7709744e2a9c260669356898380fc4f3aeb9819ac00511a28b9291aca84518c1e502ae42f125f4357bb0c87a83925a5e48f79f4a32dcc99025a41793b0ec0ec3cbb925d27086afaeb296413fa6a9fa9d6d3654c20719cbd0e944c3856f9690a192b44f55a2ffe1c795f6899b93dd357292cda0bf5abaebfd110fc9d8a197fdc25f2b7fc7c459a936d57a3e66e457e6a4225eaa5c64018c2039887c15065d1fd79469fa2f7e3d3cf97a491db81a8dee78fc48344be8d151a5e73a156f7ad503a27552ab03234d6b2f97ca6ce9e32d16f7782037145d72ec9d720d29d07c899aa2c53d932cc22b19d009a45ec395dc92892789bb48babe2ac92cffe0b04ba9490b7dabc72b84faca13d58fd897832c8625978b4f9c059ee5dde5e60c09c84bacf38bc556b3c7c2a7470513947df290c88a9085286d6ef210cedc00bd59911c65b4f189743db361496e1c9fad6e305f91f2dcae1aa87c0a5e94a5e830a532952dadc934090fd46cb831e465874330d628190dc22340c455b0f366940e56c0bcf535c83a49d37d3b70638c77b878c376289e94e8fafae86595e72a5b6a4b9005be52505c7e09f4bf5a682ff208f6900df6f1c3516c34c7468f9ab8e4e2cd0e540d66a8c3de6c45b2ed402b1a08a80337a1e4183a3314d516ada95224e58e5ac5815e29c2417c3369df902dc74fa4dafcb2ee33db921d6fade109988b2b7984aba7cbc2e0f03d45882f129928c27096b730e3afccb7f614a516395796aa833bf3d173fbf1b081cd9f94cfe90b8fb225d8fd16c8403677d8f130255503e0012e3e38501d0399cb04652e643995353684b50230049a1ecbf3ba8c68e5c0ed5bff14ae95c094be66da0e4a5b1156ac5fc01821e9116f3eb94d55f38c2fb84b2496030baf9c42bb308a3462e5ac21195685b81866b63337582c920dc0cfdbce650cbe3892dfb6ec34ed1077a469997d7568da70662c934d13373211445c8141cf70477a8487dde560d93bb18ae118ef0b87e721c5e9d94073405028646246fdd78dab2b1a5ebecf6f99818244f4958e1aa9d2dae608a82811ac0d2812832f9134029cd304dacdbbbb5520a011251d0d17e58c4f135a8a4ded729b493c23da39b3cb1684b32c87f0a738091fb9ba802a421ae83900c4534808122a24539cf2e56bbdc1edbc3bb8f23ac5b137d388fedff6dbffdb6e8d904d0821846c29b70ca70bc50b3a0b313d944a7fa577a154bc42eddedd7476d361d3aec9b42ed94eef189030ccd6c1f40699869d75795a965ada6d4f1396192cccae96c330bb288ef27f4ca9944f0a085393ca5fce01d7b75b1ecd7418d5348b1dafbf9b34489dda05c3ec7b1806565c604db0268ce20b856a5221c598308a5113e53dcc2ea67670e7050070a7eb0d3ae4d1991a599bce76a10eb5db46351ac97681e50467a7a36e176a0777aa29f416959fd2486abae278f4ab2c8acca60a86e167380c93b3ed7bd90da3321bee32fcb0efbc9b951e58351cd93d1cb873ae964d7d2f068f8a7702113c9b5611d5d7b002bd8da9782a9e873253f65a53d5b60ecf7d8747330277b46098a544aeba0379acae821ba21da86a456baa261a0d0108b097e0cd60cfb1a2323da2fdd48037839de688079e7833371ed85e64667beaabcc4900a34f1499c1ce1c8f23bb2dfc2a551beef4a6632de5d1a978ac1eabc7ea429b500b6ee12064f68e681aadb8e0169411c723a3158f0eb0a5397cbf7f441b09d748361d9d2b1a0b34fc703d50400140f18abc2ad218e92b89ecfeda8795c5ddb493b56538ca8e79dbf2d25840861042d80bbb2072d55ca10b8bb838e2068af2dae41e81849c90696dc4498076507012085111dd5e1d3951b902a697bc40c31935de14a11020a6977e4d20f2dcd3aea540c26f0a648c7212e91ff1cb61a2231eed4a27d29546e55adc2e2508e3382268a4a671a08f1e92d7e668bbdc46dfa0f011ff421c173f3ac78da0a84d104113027ddb46dc9713c271a0488da38af2d14f44c86f5fd0e35b97b72e916b3ced98769c92c28122db41439ab0a9355d413442a0c8a6905763a41c28b259a3d30f4af3ce5da334dba5135ae7448d8f969c5d12a24b4c6a97b44b42ca0b34419773a3ddbbe425bfa560519bdc34b5e421b4dbd1168a3647e7e6a3d5a390ae281cadbe1c0af747834289bcaa5dfb29feba7694798ad78e924287f890df1ea9f6ae884dd52891ae9a0f7953354a333a8876a3a3cc6753dfdc675341b31bfd713fe24da68b1ed21ee26eba6962d766e7443df978e96710a36207c512654e02a26fb768235a9a5ba3e8229017685052dfb5c70121d54769346d1fbb777212b92444a79d13f58f03c26953c60e4b2204847be42a687658e7445dedfb900444d40b347051df41192702f9bedaad8e034562fcfb5ed3b8efe368c7716a9a762925269a321de79e6ba276af723cb44b4d86359a8448034ded728266377a27cf3dced3489ee4e87b13689e404fb9bc364fa4a35c7b34cd52e9a6194b31be1a4120d0b924440fa57c5f7aca51e6697494831ee5dc5e2acd6db7ef87bcba9d9b1d892671f2d3e8a287de8d6812a2738f2853fe6486b4298f32b5272192b42b12a25db5af06fa31809a19a42b6723b73bc8077d90eabba060ad5ac9425c1ca34d8e4e956a2bf29d0d2984e81d0f75bfa26c85d01e04100cb3fc8ebc1f543eb785165924f941f47581f3647b0d56df0e2aff8a21444c55a33558dd684e055e7e1b46b061a346116ad4a0c14383060b1158584e43389d56b6585951d14245c5240493a99445a99412849414d20e893402c26884f203149493242727222c4422e90329433d0885403c008138241cb71dd9b6b88318351d685a7645966139c0b00b07d75f6e70fd051ebe5e7f36d81db05e7fa9c1eee87581ef4a83ddc1eb0221c7e3e20ae183905735a446ca39a4468ab28bbe50bb2e88a7237a43a87c2c0840a8fceaf5e087101ff47c50f9dccbe2cdbc9c233287f92f1b7dd1a2f6e57c6874c38a605c2dfe18d224ebe605f9de499d07fa894b804e61ef2acb5f1032d5dc069677eabd7d3ae593f249b5927edbf3d5937c4618f570b00949edd34d78d0e9307a8c4e3519cda4cfe81f98e234545b0b494018a4bf974a8f61aa8adaa512ce4f0a86416118efa65b9a6e5889fe1ca66c7051390c93126e3951f8037f608ae78744a2f007a660ea89b12e7c28a590856c2ae9d8a9f46c7cfad8a95fc27cb0d961d3a733d554a499cda7335fce37675fcd55df33969a8a65beda1b777d4638c9be04d84c249d9bb90a46f1ce23da642dbaa8a21d1d266401a7765d2664c1488dcb43beb3bcf7b6bff7e8230b0d1696cb70fbf4d6858deeddbc35c07e9bd57eeefafcf039774f21bb7793e2d453c11ee0e62b38c122c0a229af6eed0ed24b275df575d51ae09d344b50d47787d3616a77f4b976fbb8907c863caeecc330efdc452472d5d7d55c95e53478388ec75edc2fae088eb560182217efb084381e34a80e49a24122512cc45ab09ca3e1feb84913d6c7f1e01c4631f788e1a3448c2a2af3ceba2c4cedc2140cc38a1e52eb43451995e14f65c8a4326c92a20209b5aba2803bac86ea53539408f9d1b9795af9d678635695f4b8f3c699e7d5ed005d559ff5fa6fffacbf6d32cfe41dd6a2baf594c7b7dda0b37f6e14c1b54f9aaf72aa7facb9289029116e4148f8f37ec4c3fe381fa763efa103122fca38637635f06208797f61c01f3154203b98a2f9e9cb2591728b3e7132ddfa9ba9e1730324f5bdcf30db9ab107b8f98c8d216e5e666cbcbbeaeeb18539026c7c695773559567947754e6f68e775428f36c5a9ce37ebcf76990aa37eafad0008bfa3820a73f4a2325cd56423af79b54045796efe46a63da78f5297af76e9a0a6b003ecbecd4baf03ffb677700270540d15020ab066cb77435b00a399df4d2ab2fc7a344737a9ff4c4c9447f60a7d927a03e5164c67a082c5a8224421250b1f3cc9ba9b15feba479a4a21eb02aabfad6b03c60d12778a60629e535b0baa5131572fa69c2948aa908272a89764e54d261180cd35448f7eae944bb1a0a7f18857991069fd31ba618068395e5dd7be91d0dcb4f2f6194063b8dadc4f1e8d4e98ffbd16230cc891281b54bb495308a063dbdd3f8e9d57425e274215b03eb49e5cb9d28cdfbe9dc11efa72fe783e52796d3e9e4e37496b3d00e7425bd487da70b39d1ae48b7a888c1308f128135057f54381e2514ce8822f55114ae88f7474f3f562a110cacc48be3b1f2986d8f7340ca49b3aa2b947d5426f77017a5f3f64b9c1229df6ee98795c1a493942ce7f0688e48947138d0153a0b2d06e88ff215acb3c35a0091da3b4e817c75eb8bd6f66abf1a9f46430082eb2578333855bc671bf663677754557d3738eb525d4381b4e813521499f980f51080c07a09de8c459f7833f0ddab5eca0db583a96d5934f06850707c9183cc4e1795bf002570d67e74a45560f67bd22447d1148f5c3f59df05b00c106427655e7ae4cb0b1a72da3a92a409590361457729db308a6ff8260a2824641bbee19bdd7d8f43aa5a033146f1db706c6c6c6e20041740c127b5e43d130c2ace80648747a76f1aa773da860c264d96f8a47e7a90603bccc33a2d19a6378659dad5c0bac7e452d95867621b9b24c826a3cbe84ca61d2c2a9fc5268a2ade3b6c4af3dea02ce4dbe678ecf2b20d47d184097cb2096fdfbe7df40131a3ba37097bcf5541f2e3d18251d50a64d73b55372b3cffb3c2571a082d8841ccfa7bb42ccb7a48de8d655956b764709665199d3bd8b1f33308b16ed168f3f48e16cd33d338cd4cbac5d42379764c3a32870993549314e3f4332d91dc388cf362925a09a44fdd5f5de374cca4e394143b9a14b2c318074208b52864873d26958f6dfdee7ec0ce54db3193ba849d2aace8ad1f454593f41fb7ef2fa5e92f6d9c597557d1fb18d4388fd2ae71ce508dc4f0d2fd0588e3a8be5c7dc488a2322f60499397edd925201c30dcd46ecbb8ac97f5f18218aa0f4b0537a843700ba663b369b805e9dcb911841c45cd17540e46f1e86fbea05e608e97d134f519f5f744333497a88f76dbbb22fddd2d51e351468f5d5555a3bcb74495a93dfa723e486f47478d7ec1d12dd0687bd3aea6ea2235cef78f57495f2636364c503986289d391e29ef61479958d67ddad9c8de5f86a9f1473b1a877489ea3d1fe90265f0dc44398dde3ff91b3d1e721cc78d4e68b7445da2b99bfe50dea3f723c68dde7bef71ef73efbfea28156784f5d12bae47899b28dc44b150aad2298df511a5b95ed554d5a2f0fa417a75b6416bba6687af6857837634684d57d011a037ed83e27ba35bcdbdfaa3a0e646fdfaf5bbc1468ffd5ea31c2b634727b35ba29e9c9bddabdc3b031151bd13541c8168c4a3e22fda5911fbc60174800d7f59158a616e82f0886aab5290c0bd5585994c1062bd0db1c73a98c214a42085284441891230c0b0ea06001eb9f9026e3c31ba8b7a02723faa779e3ea08d0d3f0a240415f7a37a534b48dfe18c23de1daa901e72bd06bbf5e6882852af6db923aa3713c1b6e67cc0e6d7200ca342ba5efd0d52ec99c062b2e9d845bdd054f3d23ab631f0165dc2a81f4689f1b3b4c5e8256fc94ffff4cf123196fcf474cb14d26a22078b099f89c5647d7e60cfcf4f5f594e65816494e9320c6d3a06bedf4856ac9ece54bb87ff50190b64f70ecce99606022bf785a45b5a0cb25b8e60d66c8685c4e2b17882c045e55b5c2c1c595dc8fa6cea29db985306e12bfa0476f8272eda55e46c0e4ee754ef1eed9cc699b95a20bb8acec1591766d24daa35979cdeaf179921e3f4e8a901d6e1933884bf68caeaf9a97ccbf2a9ccd32d3b734d21975a3bebc22f62ab158475e1efccce54d442d22d164fe583219b76b06b9c6ed22d56c8f72d83e7b2a98a705b61884b0089f9f4080292ca378289206784f11af066ac6f7d4ccc30bc14a3de7b3f95ecd13fa917c64b6d2f13a9f7bafbfd6da75eaa079681ddedc7c44b91d1d3d3c50ba38c1cc8d80f62115bb9a55815ad8bdcc2189501727db61006cbee7815935b4d8ce2296228c84beddedd5d9aa5415e88d8bff7defbc72278797979e1635ea4de762ab0b2f8a58f61525e49e44ba582c6d1dd8d63b9b1e08139bb8420e0546e23d08a0e85be383a086f1a0a30a56af5c858b1c11394f96adcd737ef06de4023b00b5845efc02b90ec402e60ce4edfbc2142de1d6a4ca88d84119390a12ff79b5f86634243fe1aac3ee62ae6bef773488d7c3f2006bd7ba08726dc1610e86f821eddae5cfb7119b52efc5ecfc6b97141dfb49117c81d0cc330ecb09b7650f4ceeeb88d2582b92bfbc67feeba809e8ddac11b6c0e79b482624274b9253b1fb41be4e5a53e4a131fffce7867e21b46c0764b87aadf28b62efdcc609897d1d736f1c5080ea37060f11809a376f8064223d763c248ba8527e3f00ecca9fcd955724c86edbb793f30bce918d005cab0dd1ddd4341e5c31b889365d555c4e84c4a29dd06e930a57b4dcea86cd335062147ccf3c2c506391e3dbbbf0c87e4dfe70af16ef607febb016fe6cc40483e87d4c83a4f0f6f4292ca6db9ae67dfdd7183eebad0f9f687ebdb735b6c51d7e7dc75619fac3f1f431c8f2c14fb948857f7821c0f1a875cd6714135ba7b87e5a049e3f187371dc335f63154636bf458228e425551cb39e5e174ebd1bb9f5126e31647c4521e839718c1b95917ee9d7519e332007fef0198509b7286667c3b790c329acb8081ec78c90da57f37e7cfd682e7c6dfbb31f2705e15a6775812db438f37da0b64d73b37bdb33b6e3c717aafb61ab34f63ceb34c8a7af5460f2e5f17da617565e506ed4c7565e5c6dcda5cdc780fbfae1be747d38d1b1fdd90611e668763e38187efc6c8afbcc3ea4a2763727c57881edebdae08a087b9fb43d752b1e798d80530b107606297133b536c5d30da653c5021dd3b0f73f4d1af972a047be2f4420f41e86f46cb3a8640e799377f804221493d109221a9853c105aae01dbb51f864e00bc935505c52a074d99fe9949c76c63371e8a6273d26d7fe32f48bc3c0dbcd41e1edfec01898ad10e898a9dc788dc3b147d37e7453942a037a5dd4b8cdfed1b2f15f52ebed41b9406f57ef63883bcd41b5fce078ad2dc78fc9ec43d1c46c51b8f5cc64b7d38cccfc8bb69a1a7f8960779a9f1d911e923c618dfdc11f12854441df512cf37beefd00df7263d0531006e7448d4772e836122ddc04b5dc264f430bb4783bcd477003cc4f1c878980c80c93c1b674491daf448e85ba8fbbd17a9bfc5cd68c2f1aee14db7502170806e34238993775e8d5864bf317f3a5fc5318960153bbc79b2de987dfaeca0c7937e1534b16c639f8ef159f6d9ce3c90418f720f887140dbcb196417e4a5eeb36c71706cd878cf0e899aa1dcc624bdc684a731abb34ceb111ea17585ee9448284f996c05e7306a0338ea3bb675848261ac137ac7391da22100c1f612bc99ed32cc3746420f0108422fc19b09d127de8cc624a609de24c78468924b8827c5626fe7056161b69051a87c27542590501965c21b680447ed68d447aaefe675af6637cd52fb3bb99c2038aae8fdc67181dc2f9035c2308f6e00c70dc3b40886be1c8502c74c92a51da86aa435303292be4be3ae9b8ee99dbe317273b343e1cdd63091764e68fdb66fdef55dbac7381fd705afeb173cc1a254b05454febb812ea87c863a8034e81b78d346d0d04405cb7c94119700fcaee90fec31b46ad37d388846c87719e4e2ebba36f070aee629441d1c66ec85429d036faec6699cae829beb1c78f36c76c7b6c11b17aebb5e73d537a4abe0983e5f21eb3bd39761ce6a9b28b6d90432866dba8531232680546c4bf63a78f33a0a46d1eb9ce42eab3922b0bf1b8611d1ebbaaeeb6a1b19eb725b45f1ba35abda360ca369dcbbae5ae8dab17d2b04774d93e19e3b73c578d1b79de32e6d342af687d89b0d34129ab00a9803a9d81fea4621cebaf00d1464f61674d08a6c76587db0aad584462010d9efe04d5d5e061d6908bc99a6db2d8f2b1c903ca3e2a99874a5648c3042da1747c7f5682d90fbb86b7a563051dbb4999e4e1186505a21af6e5c2de0cea6b3e96cd10d840d080b7379b128bed5d385edc26824a5032c9f1eae1ba2ab788ab01edd218f67777059d70dc9ab7836249bce76c58b873b563792ddb1e7aee27181b4abb936240cb374e7d5de1d3a5818ac076bc2a2362495ff7a624d58180c0cac8761301f4681f1de559562eb2206c3ec21edb025f5d9c0cd8b85c1a6b028c6a6c018186e303370b22a30302c8ca6c375e61db62436c6845114338351d80f0606313826c3e9169c31de48e27f7e4c29e963ca2171602c5b0e746c4cc5b33170671726db74166670076eb1e5006eb1313b53f1748c8e7dbbbd150f92ed974514d133d905a32e9fab27a6d665d3d974b62bb6d42606c7f0a0b361b171b1f56c3e5b18db4e4c5d3d1c8f98da1d6f2b9e9e2064f6b821a9782a9e8a0b32cca8baa8c2a87aaa9f6a4919af8761bafec2ea69863b0cb35ef0d8a1b28ecaed84355a1beaf18abb5976c54288611886614f2eaa7ad6a40ed8b6546f51d5b33a6c96ea181ddc52bd07cb9a74b6d31fc30e8e5a75b617cb88889357306682ae8028b06bd77218c5da0c16c5591db685b3acc9429389519ce93349eab55982cf2491d17418c55a0e3401d000ece4d07cba8535263a0c137118958385892d581443aa694c42dc7b3815c2ef6ea137d9b2ae4885598e87382296462b68cc8957302ab3c1e2ce6845d479f10a2a6417737cf83ef301342b23ebc22693942a0a98b06766c29d16b0fcc4f2aff8acf8ac9c989cde615c12d7b52964b7e94c21bb46826477809e38f5998085337a53c0f4e133b3eb3ca25d665e43d205400204122495aff9744c4cc526dd82c3305b0ea35ad0693e957d7eb80f3303f9f015625baa0b413bcc07dac9949994ad308add01ba0f09b88e775810ef64add1996a8d2fc308f1eeb5065669c84ac354692460eae896ea0898d50f30ab0f31ab0b31abefa81e844f0fd62dd57d9892519549c73b19c43bacdab0f120745417a356d5eb6d052484ec29208aad4b46b3471fb29f1c34635ec4c92b21d913a7fe134566b48740fb9bd962f6fde3ce333d7f70a7794f40fdd3def308463da0611af6b7691ed0e8133cb37db9065cdfe2b9be0040bc9306d8ced81d20faeed57ab1066011c04a7d0b83617e387f43b2ed308c0f0298019839e60c72cebd888514f59d4d50df612216951f770c402310341680c6540fcd400418c0cb0f33367917008d01a031476c52f93e6c33888fa02d9b310724807753030045939ad10e8a2635fbbb895630cc52213bb8871375deece0b78b8f1c731806747e3835c73bf8f88ed2e4783f1ece200fa782280d68e378409ec7fd68c843a1162ef404eff2200fa7a62b8f2358ff90d2c037ccf1ce71f2d1cff11c1a7837357b914a037a118deeba749800be73b320f10a868174030fa7e6b40ec3c4288099e9ccec0a46f111ed1707c5c39949d2dd2f52b31cd31b641ade29b0319bce047647cb5f0feff667a9b0fbc57709a6200670856d610d8c45f1a7b6309a0fa3fe6886c328cec93430523e6f9920b8d33c708707ee543c7007003c04128975815ee836d51c11f2a55ffe1aa349704bbfe9a6306b0c59d1972a42034376cf4e9b7ac31e2f8145b8453d7171745a905d7dfffbc28c0a8f0431eeb604255154ec8ad815e3c527484d608988f5c8791b86496932fd28d4cb0bf37881221c8c7a34d7b177d74dbf2cccc230eb9980c9653573db84184d629d044d686caa5ea2d06892eb2bd875bd257b640bb485c47efd074d825bf818dd8b22c1a82b0eb2925198d800efef516c6c80c70678a6faaec6b8787979a94c5bed02c131516034c9fb9e27280bc9f1e0771fd5e33046556721e8a83e04f4212bbca96382d896ea5d55bd7b19310c3f6e19ec2619d55895328cdadddd85367171601d9365d8f638e678f4c0367a6ac0f5ec10d08efd3a6dd7be33d73c6d576fdb46bb25b48eb153a2becf68736764da9a5d8f1a4447b566b2797afcde8ec1b6b3ea9ac1947833177da2c8cc764b8531aadf20df61b719d84cf7f6c2aabbbbbb61eba8d5ab4738518738500d29aa1bc26ec10d2a07cbf458801293154f877f02c933cbf3c3308ff276ef3e1e5875bf5efa785e17955f17cfe79c640eb57b48ae4085fa70964022bc57c1eeedf15ef5aa87d11efc6416d0e345e6bdf74cf5614f889063b26f4ba72388898dc03ccb46602e204fc8bd95b980b7bc109700f089dac72cba350cabaa7a9809aeeafac94f8298b0be6e55ef988b6aabc7713fb45a6d5c11dbaf5af556d75c1e3aaab95d47bce831be2cbb9e65350cc596b2ecbd9edaa9fc2a95deafecd004a4444db46319c4f45e565da5b7f47a353b69edadca3af3ec2df6b926cdec2256fda2d62ea5a980bc57d6b13dcdbaf5d910a5dda335fc8cb9a8d897b7474776acab39fcfe7147c0eb15ed66a7421f3df15196763e96799e10fb8b5abb9de9d83be622c415717d29cd1e1ec401d92a0e549da80a7799aacb8b855ea715aa5299b0326a9665199461e6793f58c730eca5197acab416d3d131a473a4221d24ca44b78028caa6b88bbbe2afbd38d1af78ce084f08ece49063b49f7c6398f7934b8ed99913da053199baa5dbbb1aee5eb6faf652f7714788f65c3c76eb4c748c3c663255d1a575bd031de38ab84e23a2ddbba48876414c752f6927438b5d7bce3a1be109b1759b558d568d0b2b1be1fd8051b99d2a2e07a7ead6ab20236ee1574990d52fca4485bdcbb2ecd9ad26b22c6b8289208c622682347159d592c1441341ccd83952bbd3e0d54905d7ec46755f37c95c7472a3a71ffcec45f08bd4ca7a45d9086c04e6829fc01d219af1c9f4e38ed8e8119526eaf690a6896657a472d7664dd79493b8a7a49c7420dc45dc4547380227229d48571ad3b5632a7445247a2a214df4654db449b95d9b727b72fb1389a68f7890541189a428f44d24431781402009920f6d7fa19347d07c5d7ccbd18e2be8f2270fc9cbb448f4ada529e4d59348775dde43b72cd0e5e947bce8224a033af7cd0927aae8a2d9bd8a2efa361be36da39d0fd1b72d8a4274db30534b8eb403a29d3b2792e72688562720507c14fd7a3cca3c891e1fe7e9840ef1b1fd5d047a8c7114298d7c484e13e912149a977fdc0fee2967ce07e929d72e6254cadc52525226f6b8cd930feea4732771e72225cdadda3cb2c2c590c086ca8a267f6ce7ae4d904814e2b81f9aa4f1f1880a9533b48cdaeca022128944da398eaa9c13894e7c481fa293a95d4a468944d447e9e4a713ba8c0a85507e72d0e832e5a538536e9af1a594100af591f253e8a2a3bc0b9dfbc93c85a80fd151e832eae4e4729e6404819e3249a41410892ea34e46d407e89da43e44211028b4d5e18c11afa8a1a216908a365cabad86301042c816861ddb869865fdb21aa6009369395ac3e9c7be97eefae02fa336d0f5f483bfdf852fade3aa82e42cc8eea51a0008ecf02f8c8024d56110c7714d41f6bbf7d8744c14498870cdfe6f5f1302c92836415ac8aa719c5f0381bba6f7fd355d1f7d37885830ccd66eeeeeeeeeeec6d1b2ab099fc1ccdcdddd38180b8e612eb8a57a173c4a7ac2f0112335c64f19b56332eaca5af17056c80eab157ff9f17b10840379fa5843158fe331b1ad6d5e9f21bec682ac1eccbeaa32fc970fc4c5b1f5e960d463e2bdf7247a308c115be5e098a2fe5e95e82fa848c1fe307143ecfef2fc831356d52d46358b45abee296437bb2136d6dd106a67405f9ba8f72ad631d5b9b5ed980ec3307ad1f8382067d42ed7637174c313b0c4c521c32808bbba9eed9b6210d2ec2d0a8fc96f8c820b310803b956d8bb6ede9618b749ccb2b20ac22c3a0cc3de6d0f7641ec3a8418c4b0eb3d641805e1027a40cbda1708e1e1021806ea000288c5012f251a0f270420640c8a5bde7708e14091cd91753a60ba087dff32848681aec1055da05bb7409ac6cd0dc3b4cbb2ae4b9b2346599a949a0661ed6722ee9936594c26ee7a7c8c9717e4c907c7659936ff8c12e1f82a73c5ce9d237b7c1c2adb1806070b0ba39e1016c2db2303f1f2b243304a878e86700132bb64898e39d9ba0946f193b38651580f0c56ad89930feda0aad1ab0af24561238fd56c0db27b36cfa66396e81686919448572cf450e8db7cd5c2307abd930fecd72f7a55415ea06673024aac617f98e0b021a04b822e2943d9b54c949d031ad72c0a01d11a215777f281c93436b96d76a78b62d8d3b2209f148b8024d8b76a3b0409ae9924170292683423d2f5a2dd3b4113a89e40accb3b8e64942e623f766089ecfebdc755518cdad70e106921578f1e5bb9825c55f8ee860d7970203b76e2efe1beaf6a69bfdeb3ea40457bbc5718edb1b52b225d2d7ae243ba45b0076db06e58bbbbeb13e244addee578c101c4ee80dfa330da61329dcdcefa750cc3ae6a15a9960fecd9470c93d19aaed69b48d7cab284e8a8d5895855fb91ef56c4c5c12c0c5303e904a3fa4d30aa77096688d1cf466601dc2d156abf0986a9f9df128ceabf6364baa58f61b22790a5a083b41831ee8631ccb66dd8c2edbaae2b86e237abb423f255c7e6e899f68c086dab65591603b6765753d522f8d809fbd66b6e35852ed075c15f264641142c2204826b5d1c8fea3cbb67f3f4539f7f9dfaa3ed5d56c45542490cc5f78c27910e029d563479c2719ce40e922119922119229d9b4b135b729cd42217a9a5f9e3d577d2be2110b2391e117bf574cd06caca6bfc8f978fa177292fd27ed2def27182cecd6e89ca9d847e72d265e42217b978522251f93e77f22b043a09c59350880b71212ec49dd07e281e34bb93efca412b97b3e31e69e8559ca0182768451e44415948d95f79a4342b07511ad1e5c9aca9aa7ccf8ea39051361ea2ddfeb3833f9e8876352d5150e8e91ad54ea1d07cb1dabad2e443b40b41c5f9e08e0851696934280d8bc669d060aa1d6af15b19cbbd97a8a0d34a49861e9aa14b12e8a1c9f5847b5576cc28b428f4b4523af9e827db6e8f1b8d9769909cbb719b3c019142a1d255584aa1ab4c094a399127e72e0ad14ec4bdc778423b39bbed91a9a15089c504baca0be82c3aaa0485247695af80482f9d9e7292a71649bbab849e325f4217fd0474ec28a1f3091763b744281443e74252d6500c9d0bcdad1be8d9b9b80775b16e71ea7432757f4d1f566802f7912ae493ac84822594710423f6d76f59fb8bee2e123d18050f8f04dc0d5d75bfe00942961e5b8c9389c665d8eae02e4c6504a42c29ac0699b2441d21c1301585bbbb46300a9a5e8dbeb79e323b304fb33762449a342c4f41408d776bd11e3d3a50d51b2c2b2cbf31694c4f793ce9f39da9a6a47c69969e461fd11e3ba2d7bb6e4fe4957451dac97a9da2daa25a68339d344db76152228506cb9c00a3e04f730946c1afcc0b30c12813458251f008727b6ae941c8946fe9a5122cc19750de1c8fd2d251656a8e47451ad14ed6ed16ddedc19dfc42a15cdb10ca37d04f6687559134825b60272b689ef6b40715b243550851add10e53c316b53355880516540d4991774b54abaaaaecd7245255ec198655efc184296c2a844c982401bf1056322a64c2142d8091491c02da1ab434444d0d5a1a5235ceb011850d9b548a0b5cd0a2f2b9e049a5b8c0062c25461f21d561d4187f6aeafdd09d54fe3e78c3e717036dde089ee9759aa98c32d08086bee47804911c0f484f46d6204f55d0130ea39aa6d0703206cd0cd719baab2a555557755d6b905b53921fd93af6eed5ebd7a3574a0ca9531f43baa53039c192ca55b712e4eb19e44a6d155a17aed1a4728d268ce2aa8424f4d3dd34f41352622394b28153433e219fb681b369c1064ee5a93e21252119de1adaa9bc03fb5aa2041bf55119fad9b420bb500fc374a11ada09ed8ee561098e8e079cca31748357a327c2b8fdc8ee4aa57607761dceeb1657048d0a6fbd0bdda0f2e3b5c1c952fb3485096f59905d8d1426b546cf955a174e412b8589183ff55d356ad0a88fce6b090f38373433c8f7baeb5285bc3b3c5682e4431422c46a9eaee096f778d1417631555f0ada74b55533d6ae267ee998121ac06033c37fafc3b8fae39614c39b0a77d7e22c582a574b8e382655a36833b8e531214376a79df71317d977b438f1304c63cc7ff0adcb7b05afcaeaedb226c4b66d77ac547e75aa7c0d24e2d0c956cd9316dcf24e3b8c2a038a0e14c1c6a0f0b4cdee78f5a15c818204050b14256ccb4351c2e98a0e9d90acf03ce918419e74eab3daeac915c411c1524f3bebf2ae914176f0b4531f1955e77445431b8ee3c172bbe820bb2b5525c7e374c3a8c7ac0421352a53149e757945b0904176283cf5bd9f7218a64321c2e906a5081bd34c1a85e764a476279c1ae44a9daaa81d876d79ef507aea3b0a117607771cd604cda463a0cdb690606320c314c0cabab04c8b1bbfe540fc1bdd95680a6b88f1099c7e41577feba2d32d18c6d88439555c21ebdadd7709ac6b09d65cc1b67630f7d48ebf5bc19675bb6b0cf9ce15cf6e1f68c3a65dca8419ca41be775584f6b4182445c488801991fbbd70a0d5041caeb0dadddd5dc1eeeeeeeeeeeeeeeeeeeeeeeeeeeeee6e165c10566141f882aaa2391089254aa49250c2821042082dcbb2208432e825524c2cb90013d0b22ccbb22084b009cb62625915b4829bb02cea04a32c08a1555995f56c208410c22bc39a5003befeddf1eab3b1ac0cc36e22a08435d840095880b1c51666acbe42b5ac2344512dec426d43300336aab3ba5f0ca189014660599709bc98820d598cb1cf8b33e8a07275bd38438e91255fe0a095482581c4173ac852487cf103898412a92490f822099655e59042d56a874a01158cf10998598b2134a90c2d08e1c3e111f010ac10414add2f86a0a47275bf6882ce14487c21864659560e464d615996a85a96109c502dd89615d5aad6b1d11216b52ccbbab4722c59e20257a858dd2fa0c0533b1413ec5539456a2045165b90628c35d0010b33910a5e8105eca09382281c810c31906286c3f8a20b3238e18cee77874e1287c08ae3baaab0f3e4c3a2347deb5715247f08d7ec19fdd1d4b22891beaa20a796057978d27522a30a0149de45855c1d845390fb97bd6787a87d08c6423850c4a508aedab553bc90cb9add29521f578ddac5f59a9710ecf1abed49a4eb93e2fd51213b547dcfd4f290e09a04dd599ce185733c1c2ca7033e54bce00967c8c11a7460852340b0d8c2b12ccbb211d9e0094d90c3198ad0c514592842157cbcf0f9c9ae28c310a4e0d3041f24e8a0a9e0c51c48c0f0e174164ef0220ebdd56502164c503bd48310c341119c3430c10e60b4000b22a080bd907a47228967063800c10c22487de1080f52550e7200061cf8800c609c6006fb84155c2829d7755d525e2829a45f57e917dd6e6ca34de5db4b2a27a97ca4f21b2aa72a2ad7754993e992a6abb4c9f4ebbaaeeb3299ae721e3fe9938d938dd14fd444671494d2242a2a5fb9c944754815938a0a8d9b544ea7d3594ea713cb4a5f8f7f17694525729b692ea3542664d4e87d95ff9fff5746a36b443b7995f91595a8f295afa8501ad288e5d7e9d7055af9a5f2cbf46b5eff751a8fafc4723a9d46b7518374629134e8e9c77ffae9948634a251e374b2c1723a956cd490a39f5848344c34288d7c3c0d6974539faed075bd34dfcf75d2f595eb2ad74df395c1a8eb7ac6d3bdd46eb6da8e44a58f485fd2ec2c24e9d69744b112ca478fb147dd1ba3ac1cfcc2a84b8e48a2eb3a26255d0ee5baaeebbaaeebbaae933ea9f2a0d96ddcf5edea649bae2f8eebc4a42ae21240f2b508e363e83dc6886197f678d6ce282ddea706d933f6a76a187cccf1b8180846318a4f5b71547e87a3b276a64c30eabd6583194c7b2576c7d342dd9ba669cfda350e2308792292a297c3f9e047fa74b81f21889a96127fcd9a572f1d20b346ca65f0f66d4de3be957d3a86a3af49b7bc63984fe603397a4d344d7bd73ec2fe46a417c67c3f24ca35ea6c0dd262bc4e4c28b3b351b12eabddf3f1e9604f3dc9c97420a44fe7f1631174f6972931011d0ca3e3739777bb27f0b6c7c6a05ac70eb131a1f317b030a02ccc8d793e6b5a32087181f703c4765b9878ee9c014176a8651d8cda5d3036c6087e5678362abfb43132ddb2d7c26c6863382132a649306a7fb8b4985d9aa6f3dec517dfd3d9727c9e100fa569d795c8ab31c6430ea347428f93067bcdeb329aecf1f1baa89057b1cb70f70ee4c9dfdf191c13fa639cc7df9af180cde026cc61d4a78451ef2474f2ce4a18a6d37eed8e2f7607ff698fef38053920f1acc5f30ff7ee51a1be78253731a96d92e19ecff674725eeaf95ca21c8c4279c73adb5987af6024f3a518f50e9a2f0c00545076948904a3f6db3482512bdff550b3d7ccc4c4f351f29a603e00d896f8d743ed960c273c5e443b537c0aed648d7f4ddee8a1d077d07c05d2ce4490ddf19e611d338145b519a632640a63d40eb1289921b6850f9a0bd838b7c536c6b42d4f88b73ff05f4ca8c798b69786ed2f1a359fbae72a587dbb3b5418698744a5d9fa70ac4bd48e4d2171628f31522118ede07621e8a9da636fd8758e1383cfe6900a9b1db4f83047ddb6c136cb0732c41884dcf71edf7bef593d287a2abf3920b0aa964b606173776c7d7e545817abaab808614f08d1ad6bbba361525ee336dec98a6dcbe8d853662f6af4c3e8d2461dddc61cbdc61cbde7e891d16f4967309b636150b46d82b290281f451414947718ca47df66c77250974ea5ea27f9d2a3685b8ea9f10e8b356614355e82cfd4a049465f016581824275c811ca68a4f26679dc58e6abdda552e9a652a9d4a6deb65fcf52a4e8d69f184bc688dc86324713324abe5966f7eae891b42dc3b06c95c6fbf1c4c2c2f5d8caf25822d12ec8564f4460ed0b09d5a6200e487549bbeda347d3d6344e7a7f8ba3934e1a996ebd74abdfa19e35ba8572eb3d9bc66c96d9484a2a8f2f0588d43820d5a6424f3f585e7a8985ca705b9bcaab9552e974682a5d48a8964a4f79c601a97ea2445e5da15d7f3bc601912ff54597e9e6a152840aa5d97e9d46f49a57e555b6e57ee730ca7a69b6158cb290d4f80e552deb29d6e57ca2f99630ca3a69be311eca7c6554a975b19ef1c81746590fbd7ba91c586fa2acf6dfa61a13d10e939276b23114a3acc7a785dd21e431a90f488a61c2d86a1d04ba4cd7546ac8553bace6d5ea58c760585b3b2646f1824977374ac710cc82a35a2ca485c1aabf1f7a19c7fba17f7d51ef2cc7f184d0f17e688b765dd18e1b3e225e853c0186da3f6d346a190b768dac8a1af1dea64d07cd855e713c8e58dc7c15c693baef07f8edba109ec05f20c84385d776478d75c19e102cef07680ae5a8100015da10c2868d1a3b6ad4a011040d1a2c3a58584e31a7d30accca8a8a0154544c40984ca502944a29044849210d80441abd8c46283fa0a09cf8707222721189640e294302088540010081b8168edb50db167b8851e341d3320064198603c3ae1bd765d10a2b5761e88fbb09421bbba3bb2b7c8dddc1cc159ec6ee78dc4d2c5cccb61065a9ae775d10fe0a8164f862b1ae8dcb5e96b12cd4a62025b6612693c96412d5a10b4cc91b625bde5706576205892418a639f857986483fc72d6654d1ea02d24fc4b3ff82d7adb462cfcd5a4c03d647a503dd8b276094950828325b539ae9b60546759f615926559b6598cdaae169b605414e44bb7f4311ed92f95fd514d89acde6fc60c23dcb2559b336654c1a8772ec8f6521d7382ea525895f5632db1c8e898136097e2c2aa5f5675ddaaae2a7bff316198b589e19d26b5bf1d47815521ada8ddcb4dc8a82de34cdbb4c7f3d5acaea8ee1bf26ab7f1d56195b941ee2ed34ec619ab4aa864acb6d5492d99a211000000002314000028100c880442b15840225866bd3d14800c98b25672509ca7398e21640c310488000000008000009804090007395bc96368c81fda6376765f42e7404f27be35316e84fff3085ad1f0117f5f047fc5f42efad230408d6460539a36b6c188987dcb884a8408743dd244f5ffee21b15f6c8ff4f26ef8f85e12d003e122f60fecbaebd62d192b8d3892f469548598d7115f63822cda98d4220dd878bad337a8a2ae41a0e2719b25de2ac7ce268b110d8200738144529652427a2f995ed1f53280de1255ee26fde87bff90875289d3f9e899b4a9b23742b14b11b41f6ee5630a4bf1bbc494db3a179d999e27336854c0e49b1fc63b73fc8288724d3cd7db13747f261dd4cbc7d9dccda3333086a03c1ace72db1de9eef1602039f2cf5a4e51a186d5c417739c68f8ea1199d5b8d8cbf924d75a5e7dd710c3a102b0636deada10da82b516d5c97957c53bb3a5be2200c7a2e5fe2a1734d288e91cf19a22951bb8dc86c44468eb24911392e13f3ab60e8db2b03f4e7f4905306e59bda6f0938743c664f620df3560579db503c7f059ce002a3eabf9caa28416994cf498487efdd60dbf684aab477b2ac99628f11cf15aa1f1bf7ed3fe97e97ae8e978f6ea465accb5ba510c51b642b059069b4672dac9ea75047491644dd743536e43753b0094e6537dddbbdff4633bbc94cf52242b1a87cddc43b5182993d3f650b8290a1ff7c01fa3fa362ccf3201a958df60d14f87481f2b45c69a112407d660222a3c3dd2724a08225e64c02e23285c42d4ff01a1b32736c9e2f0da6896befda6250fe090fe80d73f61df965133e27deebf96e595430121328c5d242a149b83f55ce0a744bf6c296f7514df47f1dcc13c6f5ed4f44f38074da035fb50456255b81e759dcc2811e2e6b8d26348898a32b91225ed937e6dc028ad81e0fbf8164734e09c9c2a472eb346d9c4905aaa64de51f8cf2415ae20c1154b04e6fb668ef808ae6066c6e32637afd44f1f2ba02f1ec9a07439c28d7faffd7afc18946974963a32ec93daab5686bc57cdcfb9ec30557b2b506d7a1891353ba47ee3bf16bd7c2b823e06a14cf7edc097edac1c4cd9751600854e56000db866b7bd76a7db185649059bf69970057a5f9e1b7c90beaf83824a61c20ebff89184b9b991b3eb3dd750ba490184a0d88d28af2c9c03c8e9fc6e38a7f12904b8882fef1796b633a4c289609a76121db1134a260c6ca42828e77989c5265da6120436308c636a5632242ff3d002bfa127878d1d7312ebce7c5e42bd7d1e0a047d03520d4f29aa187fbc3fb240beeddc99e6c322483ebf5411fb19892366a1b97b29a4613dc443cad760177739a5e999971209142e08172d529e434914830a59ed184555003f68b78c07928abe25f3d40bbc92b6e6dbf582ffe986a3dd7ababbea1b49097a396bedef291474f250bcfe92e70d273100ca0c99de667b777aa9a0edfcf5ed7b84caed16e64845d5d7e1ae84fc9877de409588c51e9f2de2b0082568a1001099a6e548187cfad7b5738f86760360089a2d3699302f9432636e5acec15dafe9ad6d714b50befcda1667e8e37143ae72896094a29491c5bfe83fbd0e63b6f0b9bd26fb4f611d280ca305647c08eec77116428452c1c1e7d91319533d5f3e541e2c46bcc2706338aed07c454a0cb353be1f25b61218f687163dbcdd1c0b01e2c94c870dbc5ba85032868b796fbf1a5f8bbf70fb53b76cf862e1aec255b56bf9795f0cf2a56ed037901074f940108fb554af3490713d8dc34827e3825671d9eba2def050b395268799c16e37eb40e05c77ffa4f453ad5f5342ac7622a54ed309d92b4abc718a9bddb2a466cb859b8887bc9743d9dae849d35fe946af885dfbb8afac682b2fc820d3cfdab629b729589a8c0b72f50cb668df75bfdebad90633be88136b5661cb8bc6b357bdfe441f1f2b61b7facc65ffe840e5c5f08ade6f58aaec5c84e61409edb0249362868d15c8c38523df4e268fcc87be265959f0cd8cdba0ff1e2ec0c696d3f295403f879f6ecc319b543816d23b0a4eeadfa8bbd6523bebb72003d38916b90c746d26235e5a684d1a0a2190dcaedabf2eef28938f508dad803191a4f5aede0d8f9e191fa5cdc1ca75d5e11710628e4492b85f2da1063da10748aa2dcecc81917999c5f3c79ad6df3e6d365a1100db24a3449389305e9e04f072ecd9877942322e90d1f0ef1b0fb2885b201df1a10d8fefdb6c2327b87538a69157f6157a19b48d9d193c7cfefd865b6ce125dbf0c49aa7efab846e43dd93f7454e98b9de063ff4ef11f31a1683488ef725ccbaaaf6f2e0c1bd96d2fdb37f1dcd7b360db980a1c1fa6b2ff6bee7f7af13a6ef58689c839badfdbe552ee4f7f9d5b0d955161fba1fd10cabc0e484ef6625d1bfdca03a5a0560612261ba1ee90e4c507abbe4917f1f8ec9eff3bd61f3a30cf8753ebe187e811119cbfd4a00df086c9356684ee3b0bb06fdd441ea9b4feaeee42a567687a0bf37ff5b938e9ba306079796b16192d86f03153687c07c74817a391c40351f5ee15423a184e106dd45c150152d5fd9fb3ede89ce27ea5ddc61b325d4987081ee3c34271d191f07e61bd143393fdefcac175e26f79c36292e63befb68599966a9970cd2358b784f331dda21d95456358f90ec77b33ee5c70210cf1bb8bdca14eec7b213047ef5c8cfca1cff77671fa37f5c9d85b348013d44049ff9c69debf72a23fa452295dc7edce1c6f351d6b5d2a4df509d0598d9047feca225deecdde856275fa62ee5ec5d93488dc372908200b622d793cb47701f52377d804a991a485af9d27a5bea6cfda72521b881b84fb65d33f1e94a15f466fd984600c5ba14ae89ea6c021cb5c5c4af068e06b5db75d4a4e2b42e7c6f49198bcd961e4cf33b0fdb8e77ae51c37509d55226ed6ad558529e6341eb1434a9a1ca7f940aa5042635141443ec82aa91e85546ecebaa85635d9fda9c74418cf2873c42fca39b32c720e8df82dc78e22bfeffd228574e25a24231f1454a3cbd42aa20b4c9a41e186d42a93cffb8a2504beadab6201cb8509830fb7d02fd4a4aa5aae78f38476cf6c63c5061f4192c314ff736fd54a8158254b93dd419536fe310c7479d615f1c0b980596ea1e09995b4331080c7c98dfdcb0be1626b27f4246d52e74056c8d00568f35d8c42fd7e7c4f895bf472314ef35a0c1b46e049e869c48e0327ac231cb27408c4e27048c5d62f466f52fe160cfbb8694d8edd3486a673276209cde8d064f6e4446a102e5ff281de066c71c28ff5d71c63a99e63a90276d93529ae23004b53d81d00faa63ddf57e9dc849818d66e8395e72c1a37d6238b661d1da67c554088bbe4c11d695f4f9a702fab3b6c8c98c76eb0da7ea5af8e7418e5272e755b5b0a435dc1e2d8ae2a77a4079b82dbecfd64071d67d335ef594af258c74f51dc4a4e093e2cb590d9ecf1220d20fd1d055d9111c550adb9a0e47529350749579865738b5d37b90337e934c4dee25d0d42b322b55a6792f00097fc861c7a7207531a56839d64ae44b7719aa0578372e63921a34ecdceb487272d9dea68980efd1b97ed5184e9be6f384936e02134f940255650c5caf3f03ad4cb367a060094180d2b1a8404a2ae1df2445c150e2e1a913276f1a204adf9e6a7b6e57c468b7dde9f34612a12dff086b4414774d3fa192de12fa90d00ebcd83b4415dd537d76c12c27ae2d51e6653c93d2fd79c9503ff9653af1d1501ed5cc84ac482ae753ec0d80495be34a86cebb9c7864050cd255f070d431bd84837bdc2059d580e75d2ff53d3ef14c61a7016b261ecd7d74e1777af92f96ed4caad577a2a25efd88c07efaff21081b390476b759baa2baee4057fc71bb5a59d03c21b0234b3950af147412fa37331c46a5e5941e7b1d60ef9e260621d8121a32313e4099c9930881b5f6fb5c00ecd900ea4d593d67a2b01d056bf8ebab256d5c83c33a2261d0529df4bfd3fd6053ce3c98f800781230a1316104c32a7b96e2e0d6d3e6b10fcf06841ff9fa75f95373e7d1bcec4c8e68622565d18b5c415435435e395527e78e35c97fd8bb09e33f783c39f70162ebd72bb88873928dedbd1a352a243f13358a3405ddac4b8ec3f98be12ffd15f93e950fe0cc2ddd5cf6c04eaf6e98fe69a2d18421711224079292e1dc9ec002e3e6051600429380f545782a97005974e346f35541c2087843861817179798a2fdb2cf321f0983c465d2dafee7c006b78d844117a15dac0d59127a2f80dfbdf6cec9250ccc52f4dc97156e266e0c8bb0ee278cdd607cd3c85a651346b87936ad4f24581746b21e0d6325c0fe71dfe0a0e60954e0585bd41ccf5ab2fe0b1c4c1526061734af0383af65be40153cc0c6fa3f80d8279f35d0208bf1f0eb4c234503d412e3e89d105d1c830a45bac58605cf7349db2c42e209910c29c573c3c064e1019ec4cf9cff42d51d9e04ac28a87525abcb2b856c420203b31b2ead7f4d77ef2462dfb725b5632c3b643aac9a0740184202d60b0689a688b3133fd719db2857c26bc2583c425bae07a81270ccf116c039b2bf29d5963a2cfadc1ed4be9493e22ad9586e63b4ea551d863b7732ca8d24e6d088d4561a811197610017bcec4f489ca8a8c1fbe1c233473d45738665b40ecdc6152bf0670cb0f8a40a1d9829818e1d887ecc72232beae32e3fc554280cf92b12185551ad181e7dd4350216c830559239d4a045dabfec6869372017ceef45b6dcc1827362a6fb412b49ba5e5442a8a2ba367e8193dc89f4605a65f261a00ab123938023db22819aaaabf693155c18c3c60bed8acaba3c7a4c3b1aa93b0183f7e05e477088ca901323ad08b9e0ab50fcac4adadabb200e73bb05dcd6fdacf630e9567673956492dd09072f7434ab42e3a4fd7b5fafc9804d994eebb69d931051c5ecdc41d444a630f5e147d9da5f47c2348300b69f6081024af5933660bac407caf35067a760e18a64cd040be28a1154c552b991345cbd8f1204f0ee850909b53d48e7e522c262cf3a7004a502d230ca412758400b9c70225886bd161eb867c11593720204e0611cee0efeab4f03d5b9b3afabaec6c56a820502803e97c71185efe5abf62a66e2f9387ebc5f6081a148e1211a1ffcba238d834b23c88a6aec66343b4552b7de158b8a83e172e65c7a7cb4756cd3614f079bf4fd8f6d09e2d6ea2d676d52deb59570f7a26e20648b44c54265ef3978c787fc800502eebe9898131b7ab30f6330c762fa5a6f9be53006a0335071244c61ce59c68c0beafe844ddbf9f88a281f87eca13960814559b21c2d69da8f89b1eca4e91d691ba12c9a17415bb738921d3d84f06be494aae18ba453e3d41b44cd6e81775154854d89521e0b6e15b910ff21d3301cd1802d8dfe165339955eb34aa6b15ae905a9ede1e9c32a5aa6b8531a925a29078c7c6290f7772c5bf8e6e146fdf539b50d46d5eee6859d4eb1839dc928612746152b9a0e95e8e4835f3c598d564edfe67698e4309cc7f01b9af2d4b1cc204b61be667890870c6b6afc7ebc3510bd735b93e4b73f714707be6b5bdb9b5544c99146b839b810b53a019d9e77733602d232805de6748da88aa34624dc4ce8d497cc71a0c96ee792fd7b73ed8a81713dcf18752029215c93c445602f4f47b914873481fcab59c5f5e5e6ba1f7c4891f4f0320a0a24cc8da4b08c8254be11e03c73bccab248dfb9d82a2da3d04372c989a7d75ca5c6c4320a6ce6ddad5947edfc366cc9748381a85c8e1bd6651412e6b29e1cdaf706247f630340d02fb3d4186e7a5b2fa310a56e613210586b9cc0afe2d67fa936ee737ac88d2f4a35dfe1a04badead6a0e16ea7e25628537e2ad41347a19101cddc7e4701bec45011a165e233836e484bae81380cd708da7d8c161541746d5e4d0e3703b45138b9db58263eab239685c042cfe3415d56e5f53ebe8f61ed1f0bcd34aa5a68b75190150adfbfc3383b6ff30b88375d50ed77ebdac0d79e524c900b14fe10edbc53c40595956ce72b93732126c850c9a538a9e67f79d88e10468e95f74504ff5dc69afe4a064cabdb3d9ae10d99b072d6b7b305405f27ce05c213c14ad4ba760c63b41cfbc335611dca7f4b05ccb877607df70bffaed7af129259149c64ec5d92b274be84a8a303528ed0a6c34445e25edff210e5330dfe24ea86888f9d160d7113b2257b03847109c7a1480b61209d5f6df6a9baf6340a3a9a2afb884be46696719265ad6d24a48f2cf87dd1c2aeabe034e1b8fe8ecfb993ab2e76a658ea748d47d6139d4ced344d9793fd5a9209b5760c93ca90687c918cc203ba2591dbcdf3b4a1dc92274cc5c2d2dd490d48d14ff241b5ca1c932614dc64efe81ef291771297222297d2c46a7682cab439aca23e1f5da3fb8d1cea04d277b8011fe33897fbb2daf30527147ded773ccd7a885a7ae1ba0c21eebe5674356a3226e3d83eaff4ad4d048c6afc7011fd54d1700238f65dcda195125493d8ffc3157d0867abd47f1f66149302541b30d44bd4ac2666020bcbb675f4386115f9a609c44ca807d4c759bc409c5681c7c98459e8c347d1f361fb4b434b7805dcc65af3703b8d81cf76a2b70ec652e0e3338600f434594021dd3dd26a5eed543c01d41399bf3880848d5790f2e0febd74e6a8e3d222b6d653c615b9a5ce9669aaa997598f83124595a8a0789b505b4854cdca8d21c44afe6e0e9d6e46f46e82f8c87c4971d8f3e34780dfba9c043662d2607239c43482814151d62e93a2ccd6d1b14cf7656336e2efa639de222c4528a7e4c0353e3ead8b24e71ea081d4a7fd0cc0a4745c22222a21d87e312b45dcbb771c53ba404bb78db002d37bbb3b8d71af3f7ad8a564f44ccabeceacdf8c1c90e4c6093ba49f4bb7e3d71f95df5ab7074a2bb60b49aeb3a3eb713c3159945009202ea552a093c96cd4e29d517612613d246c7a240a03c81209e2e66f7c3fe2547618273f13c66918fb7852a7a2bfa137beb277efe63507cdeb228aacad5d9d582a06ec56fa5d792fcf479b7bfbb62a7efa616d0071b30501ed6c9ad313147f391663ad81db05be6ba4fdb8d7ce1a5668f7bfc788479242e8f0b4a29a90626224d02c0dd8cd408d9fa58dd80ca19a81fae6adeb55f988f4407438f3c9b907ca9de0f796a3014c5297254d6e07358f076898dfc0ec72aa298d30f53690e458cb687dc70b2acb4c3a988df999431eda8835973841000f856e6cc2aedf2a6b0c0bcb001d1a0b6cbaeac5b842db5a24fd1962baa2adca61fd2083ca23fdb9232e2582b038fd0d30d9f13a426257dd4a7c944ac9d7394db7ac33a781b3698a5255d1d18b70f82d71a190f140c4f3b209b9994fd65c227fd3dd90b8d64a58c4b447d4a759bed08676ccb91d1c99c0f6edfb948041f289a37b8547b97543cccf1bf252c206f6c961341a06340e7f3763f1dabf856bfcef3570ac07d07606de1972a5c05303357df350e605b9943f7594320d731987d22ceac675b5fc10895c299b474b1feb5e9877ded1921361f1a26f3517ca611a964dee9c0088605a4ee9accef67e092658b8bfbd6121b89067d50c1b998d88e5d45c5885f391dcbb52a16e113f340690eae401f40da9e75b634516bdee898035a575673118bea189ba01658975556b694026e3a2d52d725f84ca8bd8bc153d1d4e0da14e5506c14af2d7c3d118a50ce0ef0552ff5574c524a9c4481d4c74944e7aa56a7ba9d497f0eaaa9ccf4855997ce629800a7cfae8eb573e7a0e17c01b4a4ecb78b023a05b230cf28cd6f642b63787a72169f8a07139e83efe6403f77e4643428ae1007c5972c39fd16d59ff80ed124eb16f3cf6f039fd34e8ceb61437b58bdd496bcd803a313b50a52d2905eb401f2babebd2f9c874be22e3b98abbe99d2666eaacf9e5937d5c1e47f9655c92421ed072683fd5813c7e851091421ee20e3b34db95c149c78a8784abe9e9d54a71be35159f684310174c3e88db91350fb5579700332922170fb2208ff0284fddc636a9bf92176c768263b8f3e71c1c4402f5c73102abefa914e5c570716fb6de1ee162795f9cd96d2f26bceaf162644e4a28bee441624b0c097a58871c9e0b27ece6ed12937e7b89df7c446b905713611ed812803551373bea902ca60f3c99a358c1c04066c190180c8cfff9831981813a2fa3b76ffa8d141b555aad08ffb99c3d654027323bb5d2b77c1d8a9b34430ce6fd78e87af6cd406928896cdb9cc843296ace93403ac8004b1236e01040478d87184b40b88e3ac004608ac91eb65c0dd234cb20368034a8199cf729849698835a10232835418f91404a133ccc1050059281789f449088d89007631aa91e40f2542b9e089954173732b2ea8a584dc49d4c10e5e3d36d36a4e1146ae59872efac61cd721e0a215bdf13088993ef982785a96f025cdeea2ab1d26c2a0d42030a9806873241ea9ee8fc05ae27873a29a8f962454929d6dbf3229a214f7230b692d25607cb263894fc6bab0095dac91149d9be36f49ac880742841be48b6e20ca2481995538a3706f4eafa7be1ffcc5ee6a69428d1c7d10f9432ac1c8be9a8052859359085b95b7c3ec7ddf836fd1c15fd725058c736d99206cd6d8b1dd7a995459f7be5b2c878e72e57c5f72c3372c78e194818d2ad1977a948fd60285f831a669b2ae22323f231bdbeb40367c0d4a4405c960a6513dabb4b39e009722a5587ed7611c95d335f702d71729a3ba0099887097328e504d0a1a84893c715566f1dfed73ff733a5f10c7da48f8214f4fc2007cfaaaf61642d75a420d82218cfd680fb8e68311511038c59a7cb39c829c64bde0cf4ae05de7e8e2b348d41ce3af1537edf222ae4262d9e15bdff472ef2be6651a8c06a268aff9ac0c3a02681620903ba9dc004df1a5f81ebb2a5500f0b930113ffcd92fc442416a5845a70e6dcda50d6d9212d820e0af23b9bc485348dc596d2acfa283eac8df0d3105649b53b7e22395c3c21c960acc28c94d035c3963e64f9c5f5fa0e6cb7671557799707ddb14a30ee0d433f8512342447528322d11e450d4e1c3ddab6a3625a1bcad6106c3e2e20a32524dac000cbc691c672555b96c9941d8b96cc6bd869b877c7d0c56df452a55d898bdea70712619a2bf1d0fbf6c0214c8d9a164c7f302f27861066e1bd445c61dc23c2e447ea3838aadcebe9cbf187dada0909c24c7c2ddbd409b5c8447d4cc14307ef013bd55d63ea621dd9643da32ffbd6379c3051ff9ac1c64b65b90da0b5164d767df93874a5f5c6b2920b77f7eb7c4d59f9194c670ebbc5a4e0204885f17f9c6ac0c0645db8c27174a4a4a16d9074944e45d7cf15f462e7a4c46d8bf2fd0bf85c8f4a1a08951cc1dcfcc45d63744444af714fa68a5d2f8e315cb565c0b7cc40ed3d404bb76d69a828726d079b881460f9dfb4e9d0b17f8e03e9ecc39c6e8a582c2124ff14c414a0db710d20db219360be2042c5fcf4662c742f0aed489555b2ebb01c07d2e97673229861b359bc3a991bbd0ab78f5812265ecb1440be93536d5dab0d86a7419a1d8d494f0500bf9b5c5a0f545fb7932cc11aab7198da33606c5410d339a8cb80c343cf8a92224f9d1464c829c57f30b4716b48b46ec9c5a3f17626547d03e93a18fdc788e645b7a1164246c97b91ea0c64880a5f7c20611bdae5ff8e060d5e92a687fa27552e35ce91f03ecc7d144c3990a0401bfa033edc0ed4a7f89e61777731b95892042c3e4ff3069ba36233cc538a6473f74a85b3857cd135b797c9059b93dd49714398bf6791b7923f906c3ac51d1e6c336446145771939dc6082f02c34f36baa61a0a83fb3c41420319406de7994ec2d53cf2b4fba5b5633f8c67380811bc9821465005a2e36d5e58b9dbe01fd62f0b3183996806dc4249c0db8460205e984a2588255c3ddacf29790e71521146452154b3c2f5037d212ce5a2b9ca6e3f6c6af81ebd05eb45bccfa158bea0466ba162e40587d4732c7eb12082ce9bd4e665a4a35014a71c4bab288438a00898b44a69668fde5cfea869711893555974b0987a3f3c257e4c0097efe7a331da829953904297fd2aa859e6e5f830240d825b06b2a850c21ffa536be5fd814174980865522c05d1e172a25a176fa09040455a9867dfead9c2b728b8a398d4870d21f5c07a3922d79f18d5d6bd6c6a05c859fda4d4e4824058b08131bc2991d09a92f9744f39c7cb33ea5cb906ab4823923bd3b9db022ba40874b0122a76389c0453a091bc571df6c07a2a141385d6a7df71007ecd0bdc2890ed5ff23fca358abe3a2b52affd0bbbafb13797ecca8d8dae04065f31000354b338dc2ba1e76ef862acbc372235ec7d3fff77313e3c89a23699e3c3b27dd7af7333eba33e386f0d3a2eed38af34f37a6629c83d04bededaeb9439337587027c0ded04e970e298b5c02374b850c46cda713030b0f52a7cba3a6555386fd42894d18fc021e2908d575d389b9b24c91bf9edde795d4ff76c475b3e6c6b0a7e1f6485c2c5e8996cc09d2472cd96b581f77651f868bcc7bad398e0306f2b0d63c23eb74436e24aede33d81cf6f3d5ebc28de1962e72b6b72baac7f9879a77b3dee13750e1e577813d47be3d88ca478a29a4ee342708024ef8463024c0806351bfeb2b3078ffbb99ea59f37bd1d789a86e00fbae31027875fb403b3cb83ffb6813a2ee3cf03845b0d175ec4420d4829a07608c862f4877aa81dfea01cf673d1088902bec6ba30e1054d1d4d84f502bf152b9189c117b4db22c860985b4ba6fd71ee0bd33861966dc39b7c78a566c2f6305ee3be2349040ae1fe7778480c0b6ab4180258842fc22c9aee2eb8ba4a6fbbf6004823d658c2c285d8569bb009239453b4981c9955184df0b9da246196d2b7263a908f200215ffe86231df9fd3a901c4b487965403d8c06b3dcab9764c0d1da4214ec4827eb477693c7cf9bfd59de5290907f761594bec9cc3d6db2cf475fcd05cfef837061b047d7446df240910742a72b15e190f08fe63ca6f91d9eb99d28b2d281e1af4ba8a8b76cc2eb1d1b68902cb4bf7929b824fe9b2b312ce2debe5bc1f9ffaa8536a2f5a9154b9d7ff94b88b85f1aacb60ce3285a7bba40c335c49e12e7849ea87cd30fc544326ba95543752c46b5a1e925457874c77cd7396dd30fe6e6f50dd21e93c43ed02f7fa0323c998c9e5a2d46c2af6148c38dff0acc40c1be4ad9fec7d1ebb24ccefc7b1749b62647df33823de97df9e63a6c57949b601a1f09c95bc6f936a2c32c9888a66a61b34b4b6e28401e220962f5574bdbce697f7cf0888b3d1b6374a19aacfd3a8fb6b07a238da357d0677d1e9bb80cfb89991451e90a2256aff47fe37204ea3acaeda8e60ed6904684956ea4256c8f9cffa252ded0b0f757414631a9d5b9f56647b7e565350d75edbcd6f7459cb9c1dd6836253eac575f433dc17ad35d94a892d5c1f054869a5ab5b69fc86e2df66d074ed3eed0c7a89ea4db22da0c201bf730176c894f9fd95ed4769857e5af6e12b15e6d823188671fff805aed95061ea10d12148666015e9a8027e124c165dfef97a201a56c7266666e1eab2848341e455660cf9582ee015410dfa2264719dd88f6b26ca1c2fc596a51fc635cc505afcd8be23b4b852e25ac72482c12811c5ba6d20e05f7b8a413aa662d008d37fe823cac53272fb370e1adeb0776cecb1049b0a93fb96a4d5b5102a1c1355c744fb15ec3c127838e69aac62a4429d5935a22c59a19499be55285f71c4cd03a8f29247f249b2fbba19adbc80572152eea553b75bcd35a4c6041764bbd6127043d049aaecf4923bf4086a4c54deb0a1c6cc5a506a836bf913502da8ad8a3f3266762631f8df7aa313c919c9fd3c730ffedbcdcbabf6aefad088c674f6ea9d552cc29aa73d8ce1f4d88d413c621a830dc784b0e7619d5b1bde14a736cf54e2cb0cd94b3e9e50a898f18152c3c512d3b909d83d835f96c4f8b5e9834ff2b33cb887f38529463c63535a4ecab44bba1a48a62da60087b835ff1b799b95647de09d1bdbc2c053c24f2225b4ca4d71c4fae09612f84b53a5d7ee6d3eb081253931d286193ff2206269a662333e4695e51a3e2346556d48cf508d691f5bc29424f0ef10e6706a62bac9a653c913410b6cebff5c4ffb413ce6f124dd4fa72899ab2e05dec6809612c3c48c790c4e4a7ff4690e49bbf87446215136764ea124ec7ca9188f7ec0732f615965d1eb6e59bb8473e5e29dd05d4c9517dd8fa966441b11514a98155174be252e3584872c0be6acacfe7c43536e9505a9452f1d8cb62d2efcb75e0bd3c55250be755362aac825eb1e8730c0f0c441dcceb89891068abee4926a3338df8e30e37439fb70850c54d165ad2a00a55f22ae7f266bda6d4f0ab46d36f659f8f2d483f1967c10891c10c0fa24f4786620210c0e9cea5fde1007aa566377152517fd444c06830e955ac8b04d1965f93e591fbd09a06cb1989dc730f5313b4c2e91aa9d39302a4d981962b8f82367720fc994d6a83257be9bcc0a8ef050104ac63e6edb2b62ed751e4c0fae331481c4c5ad84e45da9dad0db236539ccde24595144b3805b733d86552a31919f8b8eec5644de24c19d69c023ac6a72724822912432ad295d84a5583091aba467ddec2f3097d8cb8c248b7810bd8fecac33a555b582105be87ac182124821823154b8f04e0f168a9940ef77a4035182d081964d60b6ec99b1238ade2f652fe4d09ceae710c78e83366497c90aad6f2ffc043f9ce450fd444a5bb843469de9835e1592f2b262de73e8ff9b220d3d9d4fee330980f4899bdc2a0a8413bfece6a2fd4032fe93dff339d1531cc2404840ace6a1a6d5a7f7888e3bdfde93841f1c958fb88d470d58a409ad9dc9ba087de4419339efa430a42ad3dac1123a3b64986b40278e0b3b7863e2774a78db0960b0461a57111d4112bf2d2e5c34238991fd1524b0124a89b332ca8244665a1b9db1229d452802da09de336ff6c67527c2959945f46e46e3c0bd12a6b83d02f170ffd895989dd3fcfca4f816e19b19ba911c2f3338cf02d578713654d9ff7f6cd09f6c1c0c570b258d5d1aaa2e6e77aef9ea959d2dd4e85456e06a5f787707d5385dc18b6f42e7740b0b334f2cd5741a0c0d64113adfed11d51c3f9bd0495853acbdce49e8fc6aafc60ce87b39d82369747b4ef23902a8f7133a2b4f3c2ce19a004b26a1535d87efe4eec86a02aa24b9d40229194267fb48944c08221ea8df511b900a1e212374ca1ed435e97296d8f1e3f4f2394f56d018742a298507b06d0918cd2868f219e24553b54ea712b8b44c523a1a40a7d886bee9f410b12010431ef26ab6bbe5a0b31116b899740d57138784dcd699b5e632ccc280e03177964168a9fdcaa43d61b91720646cb25797c8aa213008290cfb2c7c1ef88e2d8c5d0367ce4e80bcc54ec4e7c807666ae07f5e989afe4234e83c164c4650260f68f6d4e70678af181f749e3f32f27a9e43736af905d9b267c1eaeedf0d5d7ebf8f8f07db2c4a106c8180d1c7756719e72be5a0333faa8b40b61e8551b4cd51ed8e8741e791cc10eaffc5300f103965d079f33f6434f385eb907c587fcddcbac7f51874fa8ece20df9c6385be6c2a134d275366236040f3011cf490079df7a860b59fd9be0ff0f85f19bf342aeb54a0803700727645cc9401159b555ae0023a31fc241b2e10bb3c277cac535e6df136da8c80c4709d51f50ca9c16b105fb99fcef9b4c56e279dd3a9454e791a244486084b27e3c584dcbf135a17c11fa807873d37a714d0167fce9f52b3367f38e72d99b89d7af9066637ebbb826d1b1acea9149483b1d06da586791389f3e5b3d87676e3fc9cf8975994c139592d1413ba867392c2713243fc1f055f38a76ddd9860980837050b9cd33301353ae44fe7849dff931881817312139f0112f17b83732a1cfdda860a9b8173aa12604d1f079abc7b9401ace1f463b23d88f70e048b1dd009e764a8151c9186da9c87fa0b44bf589b534df07864b464c511ca48a6f64281062cf3f11db53d157a11bb44fdedf6b11510148d4543350ee65dcab8388f6ef5c85a8393a109fb2ddd34b56cc86ddbd80b4a38e1066cd645b80c80b9c11c9828dd404842fd1bae931495f6c2db57ba929581240392776ecbd02128b7a29298a8fdebb34b885d3f436e95875f066f831007cabe50c8e596ac16f335a42a7179b077430a4673780621b4f3f09d6cf23789a305ff642b18e028985e50fd6637bbec64176fd219454c9b4a92889d008e231c4ce5d53b73b04273022fb070ce2d61b8bec81a27fb40e46bd9392eeea5583d06976fa5e2a7ea42e40ae8121363167c44da9431a1899db6e2e05cfe13c0ab76397dbb245deffd6c9c0181cd1b1f9766e9d099281e5e7d8e2e2d554b1c633187024a68f759b0d1ae7ece27b890161b30b370fb5007a8fa5ff94effa03e9966328aa976f552b974dc026890d7cffac23d5d4e0ac487841a871c99d6cae6044f11f72f4f11fe4228ae8aa7010d63320260bd7d40879cb6e2ec5e760ac7f82f238840656a575b36060e84a9210348ffd0c4c34f1ccdfd59bc30355ae5d961c8fe1ff208768965b7a03b4a64f9396634d8cab88aca5b5a2c54cca430d2d7ca9e9cd3f812ffcad2bc71025f8e9e8556a4fb999b95d853892cce60dfce7b6a23b814c00c1c4a90c22a2f69267f601db70b9353e39610788083daec5a6fb600366aec44718b6d8357c7800e013f48565b6c1c32938bd767f4398a10af4623f11b69ce109c3c01103c5afc652d4d4885403aa6093df0de3466325b1ce9efd2702d37b1fbcd8b886b9901d91b70660a024788d571d3aeff7637e2111c8abebb419e55c3aed1db7f589939a1b628d40413f0b94a202179175cda0990b2d12112aff63f98c128e6067819d899df4941efe001ce3845a392c86b1d90c26c7e05324811f8a01c2a6c1d478abe56cd0e59a648d240dfbf18d1acdbdd45090b77909b476cdd6c3ade73f2b26de0a1e17f2b34de0e259f03f2b2d953aabba40c41d3679c6dd1f342c8b0879bdf1b376e0802213f2fb6303fa07e7e6fa08b43068f304fb984374079341b1281973988876af062708c7d2ba203dc2720d1182654e7e8b85f8d3009a8988bde2220bdd26c1f5688177761c8e810f878f603a8ee20296d1085089a44f5286f6aad466f39ab101e771f64e1bb46e84d358b98df0c3fa885278429765b9062833c1958481580b92824ab48c6f7b0e2cf4b5818602813e0b8a686fae8abd1e51aead783115f0630e69fbae4231eb57520fcb2118b67ec1a08e2328d396090f800338966591665ae8822bf9f36b4f0ad509188993a8703e948c782da28d416341fd745525c555527dc096aa9c4a97263ade81d63a3ac3e265f3933c7deada6c2472a5dcc1d499d523b537aed84b152dbd52035cded5a0f9ebfe343c54443a0fb1677fbc88288ce92aaed702fae25822116542bfc9f921ace369630b8dd6e02beb042e7b024ed199400d5ffa718662bb2d45e8dbcd8e76e0ee6a3eaeeb0cb0c81dd676df559b542e6da2e01169762137f592e7552ab2deb02e04a072d0f65704cae39dee472307dff4529a8acfe287608a7e91d3bc856131a13bf82c52f89331c0c9680631a8d52c01eda701b7793c11bbe4a136d90581718846758098e360b26733eb438e6430744816da24a00887a1b6ffdfbbce05995a649559057c525364666f8d593ebd71dabfec896e278332a08ffe53cc14148facb8df6973c1bf249d20701e561809c2fb50b6ddfa0387856b768f311d2fed4754034b672cf01fb8bb6b98666006e669943c0df5f2fbeaab3c2caa767e64535fba3fe4b59df491d3fad7f69269f7209d589384fb5ed64f31b1a150fbbee8a7a992c9ee96792479448c392c69867be9459d0071f158a790a8706a091a421c63ddcfb549b2e864818788eaad88485037d0732b8819639bd7b5af66d16e089b758038700ed345d02e43066473160aad0341bb9b648eb401a61a07a18b6267ef74cba88f565b0688d6f6ada84aa0ce905777d3d475c4d5c65b9a489a689dd3d73af9f20c03992773724e08dc6ffab2daaba45d2228401badb44d55ae6efdd8dc793920c434d093346316b8a1d9b4bfc2b7bdface54c8f7543bd2edecba0093c5fa499fbb141c56e8433202568caa31be521c089ae93d23affc25dc764e7b7e678354750b429bb0b237858263ad47319ff7d5df66de8e269bac35a6fcb8e497f144bedb63c8dfc94a4774ef192def443345fb5dce6e85949013c24ce550506dfb7608d685209c713a16a306456203ae9a2012ca55e4c33f58d4aa954816aa026aa0e673026d9c0c440ea3f7f548a9c6df2be428f9f09e7babc71265dc6685b757a3e4d12bfb1946922c2ce74924b33cd083c1169cd569cee93b806881e933ae4d22eefda77dd64b646ed5bf7a5720695d660668436349fa36d269d5c6a6ff7149701bf57ae2a90316aa2f602e704d842d4ab277cba5ba2107eafa31f41e271089e3fb8630419aca82f8183b3576b979d5307840c3de9693cf79d24833792fc57f17f91755586016bf9e6fd861d643fffd71eb430496228704285cdff4c35c10458730eb6697ab3bb1282ccc07840c6f9743f189556cef520143aab744a6193d6a0530eacbd3a19490a656e3e097059eb6bb758e048185eefdfafba7c7e1a75e540f5b03facd3f8960dc6865db71262e57ee216363280231878be9fa4de964ae49b5a3e717bd77d162c5be6db9bf7072593f805946e3be31c0714c6f34ee4a9382d0125f4fcb1eec1cedd5ec7c90c2863f071e716dd0188cef7e9f4085145421c6082a7c364f679a38b9f5fb440f862818a64d2369e67ad155123d802c3e995ba76814c424c965d1bb34403df6ef419218a5c9930d9e84fa689ba8dab54002127becc2336c070439262c4f1402af5f49b063fac5a707d6c9272f7a30144cbfe78351a2ae99a7e21bdd10a51bf46394d9d2844cddb8de633bc106c855a3ca22428fbccd1030131d0550a037908a0183d38c96891c4d7f0021b64a30e921aa5816fed561071e3e7ec4a899b81f4813e111d3495b24ab849ccbab728a696a5985b9a5791885183d7685fe0d58d9d01795e60c912ddbf23b152d378410e918fab75b37dd889f5c1e266c0f408c98d06e714e16f287608a6438d48c0a11dc993f7ea40272c99d4d981c67211f2eab1efc6e7d467d11494fd9a2de0000c1f7fd16374c719a4b18e11428d2cebb4cf22c97014d7d919d4bfce7fdd3d2aaa599c5972a068af1f2e2758444fc0655b80ccf83bd01bd6ceabb824cc07eeb2df6ca4cea1c4122a3554203032c8adef7aaf06e43200faf63858e12eb322fb552b1f3319f40557b39aa12ffd0fa759cd8b2bf9bfb3266340443f215e4e1755ced527e71fb3acf5ef68a61cfdeff956c59a0b100d5269c3dc017b2d2440fd4a0ec8cbb57a1ef1d14e61275c128251bd4673e83124b07915fe4fa1086d5c220f31d7e1c494fd064c9ea64aa468d8778d1981ebfe60dd8549d4bb463348c325ae2435a1680ea02a664ace8e5a6665eeb817adb9bf63b2c116524b4306aea40a38bc33d4288d02055ab99a5a923616985c43ab2aec754f573612b40dcb84538d21cac6801e3e759066d86cf90b5c62b0edb54b98f119e9100bcf54cdd688858aadfd8a3d877d4e66e58494aa12ee006d17bfa3b6be1d3d53bda5c6523b8d90345d0f075afa95b4748761f03a5ed6c557bcc31470a55bf5fc093408331c0de7aded906111e90cbd6fb825e0025bc0e3216664a8e10ac5c6938d92f3d7857b207dc31518e33cb139a0c9ed342d66df325adf30fd062ac0e7e003a19027e9a6e77cc37fa2cb3cbee166cd2b5b3ecbe60927e20ff9864facf2b843fdc9e1a7b81513e8bf1d0787fcad02c087bee14b628b8d2de61a9e49011df98fc95e34535cbb4d0d5b9f26baa37bed309cbc11509d1b6614a853bd773ecfa5e2b82c3eb259b9084e3fb52f6dec559ba1b402f3d90dfc2b4db2743cf6d3ef86ff8f96e5a0967d0f490cf0fc5393d4a5e361a6f039e874a5f4619ebc5c91f31e2a51eef91adf5472ca1ead6f5dc0981c42755897f3f68a9bfe1cc206091a2e723d049f0dcf2172c7e3c60da7fa5de9112b7770c32e6b48e6cc14382c9d98e7900ace7aa2b6f5221112ca2fb29f0048c7865a1db53582c07f3b9a520f09fcffb8ec5c63616d76580ea289fe38560dc6fc6106be0b8fe4b932fe103839520cb67d7ac34692b67ed9dee945ff00f9a699355b2fcad5aa1e103379f734ec088936bccc545b7344e3fddae49df290d4a004f8b1f98a60e5174cf2d4191cc19cc7f5306d050ce69dcaa212f2c1ff7555ce700d9459d666a7b89183a7028e7a9cbf5d3ee4cba57006ee5bf7821edbf27329593d1684fdf43a3fdecb7bd1c67d4c6b748cc43e0bec562dbc12362f8f549c7885b019ce1ee2c68f08c3af13eabbf61413e4d810852635b6d9fee4772018434716d0985b153f74934ccf87fa0332e2ac5cc3057323b4f4311546c237bc1488bbbd4757c41916f1bf02236cc9016e9f4fdbb3887d40a8743f5bd956647b396f1096336845f5efe348c58c623770e581abf9f86c5d4351f75de9081a145ec962115f3c9ae7a4e404bd5b47d8d85f1ab1882d137c0779c342b8e78d09d83adb32402e45648c9dfc63d79cb7593a2ce2473a3c0a4c1cebad68e23a1e131b5f3e303479ac6bc73c6b49746b888b5765e5c411c05f49f27c42123c846df63e9f57fb83ef44420e1a9dbf8fa8976ab13ed0947592442b2645f145c93f2fde276baedde46d7709b04bd6b9ff582d591c6047144b0a6456db877bb0a0dc13af8bae748f7c2a367c96cd9d880781cd3459789aaf4eb63e804c578842d73e2d197e73541b4c30bb1da4a4a3c341178debe630759e26c509861083b853fcc62c524493234d60a99c8196f35854cf0437596046492925322c92a99063b9babc6684591f9369e17d091931fa82d0d7c71f596b97bfc4b58af165c93541f9cacdf84d47a5f32aebb69d7ac4a6fa1dc4df18584693dd353f3f76d6b4df8f49075b4a417219185d09df54d6eb68095ff72f3c3d2ce611fe597965cc6ca7f8e3533ec28c7a41d1aec9a22cd174b3e30d1f9623da77ad0c0127483fedf2394a7021c7e879c40dfb1d23e7efa693412499464d04cd630f4f095792253cec383fa2185a207545f4b61b9b0e5ce1cc35e88af94693d24cca2531d403ec811ed9877978f67d3537a113fffc6a2418f9ef7f24120684d3112dcbc0eba9b26e6ec209e68200ffa0d9847e42ec41af909f671320c2bdf62d5754009d4384aff4bcb5b77c5d504cc61abdcf7821f89c4e38131acec733dc840624addf950201920d3c10109207bf9b802160b8ee80f390af4f79d2eae0a6fbf7324cc7f4ad3adb289f2e8046a3c104ca7e7d05fc21a83cea2cecc853d27b143b1d2dbcb37d18f8d9a8c3951ee6e771c0596626e0e51a2a7de56af0bc053f0c68584fbfbabe0d35a5b49fc7667aa6b6e2861c13ed6996736f09345640341bfae9993432a0b17c21d2249b2a9a15f3b5a674b24a1ddf63ee33c93acfc4c275a6e23df3cf2e0c3a72c7951243191b1558a8ee78631d68e0c93a7687a05ec1f078bacead65f8de148945bca8f3c844a60bc850f9ec1a636bd50902b181e3b11add10f35dbb4124289fd1040a43a6b8b07f76a46060411d80171cbfb4833f25a42b3fa60c10d4517d485dc62557bbf3c8d124c47ab472ed3d8c7490ada54dbaf81d8f09f9f9a51f622c76b08510d12e68696f4e283a845c683216694633d9b0ce0f9155f4edd1dcb508cb33a47c15437a7424417366c200cd947678c104236b36a3300f815c108c3ce735771399c65f24b0a909ee975706bea14860482081ae645d81566af3c3dfe637ff99cffc3d67166825769d2d9f31e915c73f54c86e42514819c3852e3df811ff42dde42166b04775b8d123e473265bc2c20062cbc4e94e758cee56a9fe130cfaf094c4185fde306af8026685900f596381ec687654cd5b168612fb42689f17963f308d9b7545a1966487d0bd3cd80d1e9ec18487a213e46272eba8c1611e425fc93dc5beda178b4f037b5e37b05bae793b16b93d7ea5fb22e529861dce65eb3bacaf08151ee526be0f2a4418292d0706b3c7f695ca4a527dca2a25f4cbe07ee53580181494f68c398abe12457d90aa5929ae8a5a61c36d16343c46c22a873eea134ba77b4dbb8b98f139f3e35520d4a102274501d78434692847a9ddf032a0e8ab1d9e481a23854b864b1b7d521cd4b2a98a4f4d840882d3714385b07467121621f7be2afeb8c1be14269b431812ca66416852649ae7c8736fb26c8c83a545566f37a2bf608247c2f93d2e960e44b85e84b12ffe692483c870f8ca91fa525bc40f7675ac4917c80c1a9287862baae1022b2598bc03d0526af2f6aefe0f4d454fbb1866da6534fbe9f06ac382ad1fe52692b184d2803c4ddf3dc32b3f61f43440cb0c9c9686062c1fe97f2b7eb267e279ada61395f947b7684aec56f65a4be49ebeb0bd962034fce83c2eecd3af60165b58ec5a660d5fa460f96503591a3d64248553d246b2d45ee0b167e450d9f2c333a7825c00cadd0d12f061e26f96552891fe686633c46d4354067febf7430a825843734df2c8f1ad0ff2e00544fc8386a3f67a1c38d4239615a10a3d290824f72fbf8cc9f671998823fc3cc3fbfbd3c58c5c789ffc6de1934a50be358fa81a3bddc9cfec3362baf10d0dc72208bb9e6becda5af6579fc50c5432cd8620b37c49b3d6da493a124a8349a19d8edff6b3f8bff084c08b9a56f732d6d7b9ebbbd4d1ee27832c97509d11abef7c06b78f443cb2448f166b154d69d063b156c86968bffd7f3d4360e41639937ac34998956dd86a5aa7c4d6b7dcf0b863c4d2840fb12d5dd654aa3162ecefe7f80bb9ff181ca66a81a51f8fe1e19babf3038093cfe7a74cc6043b38a3cf42524984d118d6094d0f4482c0351726709d22f950596cf2401858a7430fa2c46d3e5fd9126cfbce52b43653371b6f52df334be9fcfc5bf0b29b9711f464dafcb9af989e8b8dd5c632961ad0f7ca87e862ababadbae94c7c4fb412032ac4aa79e97579c760ac375170cf3c692f5317ce859294a97e9cbfcd140186ebbe9ea9851dd92bffdf39114ad24f7b40220b55e20c0db112ebf2ad804f895183f76c728ae46933ed0ccd9a6fd42c86a0f94ae1a4374a1aee1bd275742152dab53a1db8a67f908c719b15cec76aabb42e676805600a0a85397db06b73196d0d7e1b6ba8b8186e5c8f42dc11815a1abbed98f32c356d91f5a89427081d1919967121de6007c2720c79dcdf222f187b534a092b828030bf1abd8e9e7c6792506f8989e3eb66a5a4e83995d4b270d7c2494885d51cae8aafbec6e1b731fdc4f8b1e8668d7182a04501d8b9281c88b4b4fa4f328c3a0b8f51ee0619557358cde01fb166ac159b460946baa729f4832a28c744bbbcfe1f3efbf33c0f3e174a07a45c970d7fb1befc7308ff897a4510fc1d842c85dc068df529c8757bc238ec986e0c0f10abf97c8e7543cc90c6a162dec441114a1604ec9cf972c4924bd6b6c798ae5db8dfa0673126a287d436320abf55723f90623655160272c47e1ae475066b4ebc40bee289ed2754f3e5e3d221d04f54f7de75e44720e30960c8178818c32e9d03000ffc7cd9c6bda2b5cc073a63fe975ec3bc0b829e8f0148c1ebc64cf9a142e5e81543cfe63fc4771692c0797bcb612c23941e907e426f13d5b00090b1b40a96a977042a9b57130e971afacddeaffc0ef7e3b9d53eb9acae20c2c7979198863203f89146328df7bda96808ae8f747e3539d462ac34c4082d255c37ffaa8515d8e6524b6e8f9865c2fbde536a7ab71ecefa9612234b6303494a41853e0468aaf5d2dbbf94012dd5f624dbf4843fd18a9c0092ea6c59846f1839ebe60c76990e61b191fbb65712d59b783bda2193cb0c4f27330a00a5e4aae5e18a20e8bdb80c30110bbb56d28db3b13c97220412b69713a778346e6c759350c66a128e104b57bf77d95c6e0b7572964d0feb7a556bd170b70a9bec1664f2cb91596abd163c53ed008453a6b2b5bc6f359f0e2e25be1ebca03a60684a693e52667d450654cd63e782ebbf5be8272131d5d103261638ef50ba070c0270fc392c73dc93b0d15f4982bcbbb802cbc6bbc103270d04ac65beae289bd0d847549106a2d8e1448984ab34b9bbe2c0ebc746a3b0f47bbf31040a17105661baa01383fa0e2c128f1aadc5fef2cc3a081d77efe680f6307699df74ee6628ee44d09361f59f179a16f6fd9a1299c0e62b2653a2ee6edaea7882f699ab3070f9eaf5d93547e42b6a7629f487217bedff87515458c5f88f3cc54f687cebb830c10b4a71d086466f561c9c71e1c554af721b24a4dc290dfe0f02644b14777b7803132a8e74d84dacd84060afddd8d99f169e12b557f5bd30474f998cab78fa5c5cc102255573ed7058e56c38f36226dd7d1068a3709306fa2a2589d47e1cc00c24ac919d23906cae9643e2b42aeb83b03f43305a7625c85aa01aae3b3324323dd3a976f5446644be66b834cb2a6d73bbac45cbb56732c0b51a160989e2a6226b7450068c267ee02ca07d7cd02e1f5820ec9267aba256226070a311110869120225ca00dad280a0f19c512a800ee310183a28b0abf1681a8931e6de9aa2c96622419b8c370aa299d8b97a1127c7fc442d6fa57060d8fda9235f569841bd18313868d18d46983103a35aedf767956ad0f1ea25000e2ec0297dd13896a295e28f879bb7e7a739b75262e70e45547770cc4b6425768e20ff912203cc7939170c586da188d2daf90a32991f57c17fe38c78f45418011a6cc5bee5d5bbdcd74343bf785f812e6050c57768f2a8c1dd8a6c320842d517be93bb51e8f2471d6d4ac0aa54ffb19acab980d608d52335582017a84afc2ce8fbd9aa1c5ed7765ec9d5fb2c3e1115ddc05f5caaf420e29aa222d2a7a3d4435eff5b6f367b29dbbbb4be84972b77ce940b43c71ad62948893323b6ae3fd41e88e4f4fb8d1d6e6e2d6589e1dd900892b7555f36dd61f44d7d79f2793bf5b5b0f45d0099b941aa8d4e1b17c0a559f806f43d8ed2e59a8b7b23314ad16726a80d6cec51bdf83fba11a99f94c3737f81db28c8e29fcf4a18a3db41a9bf3a6ee15471c735d704c417d71abe6e3c592082dd38afb87f3bd90f62992be3104a8215dd5a81be7a5134445f6199756ca701a8eda739abe72261199b33d1feb7ff2014c1bac15dccfa98116b0acf2101af2cfb8f6e28d51f73cddc6806a74e98a4ee03e4b349040e43e3c2e4a3e79d09c9770c982734ab2bb8fd653af686e274b492db3d2dfa7649a28b2010be6bb75b87032c6b81f1c62ce9271c5fd39280c30f7ccc71a0f78ee90ab03e234c3ffb912855039509bb371f62dd1f87f1c07105f83f65fc673ba5b440fb0103eae2dafe198cfa64778fb9ee9ee3d884dfbc838785d36a63995d2fa01b5b3783a361fd5d3dfcfd46a58f2dedb167bce497ec71f4679f866a33f2e9712eb2cd11da378bdebe85a7edbe696e7c73f67b9567e3a25291dd4c65ef6ffcc407786b519b076c35ed8c7142cca8550a5cb89d06ca0766103392562e918f184468a57a9c34d2e68f0bea8188b74c6dee6ebbf3cfef480569f29e4d89f4154f2c1149732680a5eaefb73190e91556f394548b5582a4928f1ed79d0ee56b08a19ce66badf551e81b94cd60ea7ef4c21dcb27b92286b8566f904f4c9caa86f170ab62b9a371e31c8b9a2a29057722f3858061d78502a8c45b5d965b3e4b81567051c0bb5529158a0c009bc352957bd9ca5c834c3f8a183e751fa9b0d46f3db2cca6301b27ccd8c76aa605e32fedb89b06cfe1b6a1e2113b0c5e51d2d3093f0ab4d2d0719c4f94df3ac69d7db095126295c7de3bf8fa0751717938c0d53e1b9ecfa6206f1f74837ba7b655afff71a7c00629b0244c4e9052e4d605be20b3dee9aab9f60ff7eb4bdd90b4332ef2e7308a73ea654fdcaa91eae2d4c66a1f870e44b4714f9cff8f76bec32ad5bc991cc68e3b3c58187edcb470bdb66b0c37e52f36f32cc61ce446ef420dd6d08f5e849829d6689521379fc0a09d9cdcde4d9ecf17d780329841e65e37f8a07a7dae48ed0afb736ac668e38dbee7f1a5298a18c196d13c3de520c8cf228ab3c84f8ec98cbe68012da6fd55b1960b480b0c01ccf7eedc6421e09f3d50d27d4df31da066079a0db595339f69c609010388b36a0028f26caad773c0991772172f1842f5c16c924e1cb9912a1461de14380fcf4a040f086136220c5e786b4359099743e5aab574adb6abe82553385da380d3623887139b32b9746f3928878547a9d56f7a315daca4db7875e1caa9e1d23beea286c250790586b3dcd4ae809182e8d69d66e5ab561b9850b3f2c6eaf2450da1ceca1b57dd4b7953fb83b7f2b3c295dff3c9f9815c333aac31e41196cfafa5f7c66a0d34af283288492d07b8d479e0a6e441a83c9ae95d3734d75dd073c10bfaca36e0cfa1ad35ab1d8ac5339bb3eee11e331b35b0f5ad575488ffdac87cbd80a61a602d35f086912b8a1ff5026e03341728b154708d75e53414d04549386ddb6f782e2d27a8462f76d5e7af61f3406ac47172ef97eea8cf113551eb39467c80987e2f1c6283f462a5d638c823a5204b4507d0ca8e43d55e0ae7bc14d384b92c303169d1fc438890e2a343a87c5b76d1a795373297cf78e6d3cdc54e7d7af2edf514c1133e546880af84d42c8fb72b98c69f7a842da7dfac9560ae672976b30367ffd6b19926e466b89fc0f44f306d7544f39f2297fc7608e02496058fa8bd974f0c3f0e3b1c2550e6eeed3528fe9944277d524439e4b4b5c6e3cade62de9dd32902f817b77a824c72c6559ca90834376749231e13764a5f361daa494ecaeebd02b2276a4702a6ad0644b75693804de2de5e06b2d4671d5c3f6d383ea3c07463b737bbc1a6088caa5e4ecd59ed4dda4507339645b7ce317831e564501761c3b3b528095340cb88bcff44d932715c98205ea8a8df583dc18831d6f4e7bb43c629da0a1f00b8e1a76be8e1abd3b3800b1e8b3745b6f981a674e1a9abfa1714b512497340c40aa47643996e4667c05b1392b18a7f6a0cd82a7e20f8588bbe30121408f46de47498f3a8511b0e4e5fb0e6534d9b2bed3bc076ec9fa38a453d320b5e11ab0080524879b27bf8bc1d5e0da271a418a9b66db14bfdeb696e008403414cae88f308982e1ce0a89a93cfdf3a2a0c32897d7a78d73b17fce03c2a0a3a5b3cd50ac6c37602383e8bc5b77e1f9910f61fa5cbbe8962251ec8d0864542763e4cae5720cbd244afe08b7a6be81e07eb53668d28e2a9adbd254651aa9a28de956212c44718a5d27b0c9e964258490d6a86e07d9dc113e64f17d6e7509b6e32c028c9db09417f3e8e1064d4c6e111488565469cb8fcd5054c70c1731054cff90a49f6ee77e20661bea8e725ae6d4aabb040d49b4094d891805cda5c8064968168c86c436d5d091ddfc7ba5b94383b33fb3fd40b8389d1cb1588695180c0ca1a14985cf3a661a25380935650312c78426f6f93ba3b985c95df20a9ae9fa2da4cd5a4f62b470eb2081e1effa4e1af0b1c9bf54d9bfea5f66ff6fa089b52f92243e7deb17d5dba880add3b88412f50272e74831393cfc1ac992832adb5153a06566bdb421af1e8546c102e2bc24272f28a1635b518001ce5b451c3fada472323276e8e3eaa7257a3a71d730166ed24c5475b11070d0a85614623bc33ac776787d22a38d29e9169c98cc499d08d42182fc10817e15cb4bb5d13811afcf319115bdbb724b9706c76699fe01cb7423ff6006e316c43f77528a0d2952f78e6de7c1163f7e7a1a105c28c02fde88feb6b847d1a17e8f6daa90bea275416a99f5506c28c50302029adc7fa065dbf89a001ec0276a9d8eb948d339016df462bbfebc5102e540f71aec7d0d621460840b1aec76057062112f5b7c23717b175a349b0d5d1b174aa1e43da7ca44ec9942613d17528d0cce0b56365be26d30de01c27502399eef4ff919c44081e9125ccf9b6438c323f2bd287304289a342ac574cd54af75acbaf3bb041e01e80322c0e24b5979307f8db4d6c3c1ae5f0afbe9396a3029254846a321e820bc19f889864b4465a9715a2cdb1b81061f8a64e324a000e2406794729a71708fff945d12262db37e2f1820918e4ec1e8c5d60ca1d0e66dd20108af2e36622de8699f94157e5ddba101817e3228c5bf7d46d59e532add60c75946a4598d537c9659330aea34b16e1e6a062c52b82755884b877e1e8cd68c7d5ec94a8598eb0fbf8688a345fdc80d3f27c80566ab1878ef18d52c3eb9fe5ec9530b14fb096b66e999a87c8e88115e184efd01251448beee871a20db5738600b5882b354be9ce8c92024d20f543d361cb998921516647a059368da5aad5c695f19b717d493cce0dbbae484f800b4ed2e2b5d8bd57215c558cbe6aa3fffac83278414fbd6b7c4f263360900f07acc89a3d6e348b353237c0fdf4c9fda71320f642f2a321110487a86f45260250f77d3d22b50052e5c29138f0512378f008d50ce1400dca77924fd90006fdb757574942920bbec0ffa944e2055203368be480cd65ec714620e98cd335be6b86098a88e3023972b6a71716573d41b4e56d11e5d0548b22bac8a355fb697421a0a27f02bdfd4d9f00ca4d8a3dfdb0d0b5674e09fea599568b0232edc074c57cd5bf29298e04c8c0571d9782000d946003b84334db326d6b4303fbc6ca107a006bf66366f479e50bf1ae90676e1f9cb330122d6cbc4783685e70efddd6029cb3af7f840554fb3e38a48bd384a2589832ac5a88021ca7073f0a2b7bf71f15a139a0d913ab7d4466baf274e0f3b58e3f1a916df9212a6559b30c561d762e92c1d134d9187c52cfc4e006346b8006dc917ad2cfcaa1ab6d21d4878ea83631e1622275b425865cc86e4e6ad7080c41bdc104048c3787f2509bb23815adb6c370959ce7501e0c68484b4699d1c93730adace0a88ffd5246c58f3d8b320d1febb67cc8bbc83c527744a320344195b6b27da8d34bc1e2bde1d4d0acb504af4ac7ba88f7afd03a8346fbcc99c9bf74dd12dc403d07ff9d51354b91f0973e9076dca180209882a71fc12b8a785bfc7c1fc36f20366a99396a63b14549762fd1005747369c4451b0d5fd779c3ea4ad797cebcef1596ba2b0be5cfcc92eb26643fa5bfcb3b0581fc04ffe9ad3f9f09bb1293e044d6603112deca72c58b2a43bac6625edef0565ff123bd2e8defa191661248a0f7ca6ed63a92b564da717563f759a52ad964b739c3aa02c9b839157955b53538b4ee08fe492bcdbfddcb94d6016c4d3a8069ca33c6cf72ff8d0eed2621674fcba48eb54e945690c2d84e1ab8138d5e60cf2cbee024542893c731e35573ade697433744fa2aa92c9d1ce942536f9637ab9c0e4c2c550d30412ab858dd40122ed9a6758234764025999c809f76709d1fbfa203a11842aaf7afe6bc86a56109ce413fbfbb25bf577dc114d284cec41e73d25c02b58de173edd9fbba3ad15a70b37d0eb532cb1ad4eacab635f0a77ffd5e667d606ab77a3f3a1a86e1d2541bf156eacf13998b345972052bc05800b222c4bd535c96dd0fa0e6c9d5d55de9efaf4daacc59d66bad9b920435079810c4aa374ab2b2926a18f9883bc5983d68ffe86551c22a9a60ccb811b06b1c20996ad66a603893238ee111ed2d47d7d372838ff293246703bcad9ff25b05e9498b1364f38fe6efc3aa9b985ae3a5c505a9a7fe56508b59011631d8f8cd01ed0e9a04596339310f17ebc861f50220b1b35d0be2892bf527a1bd1433256e45ad570bb463c988648d4e80963ba8de9380eb7c6aa6bb7056003751b82b843866ec39d09a4ba31cc52cbbde3b8273ef8321cf1c6b13daf013ceef7469a20a5a98370c304b91e89747cec3d0d4dd5cf579b42e987ecc05711692a978d052f45c819a09fb6386421739ba10d5bf5b8151d6a91817c31ff4bddaac0ac51377b33ef5cfb7cde7c9477ef6f78d44657a43e83cf455e43c323c2cf1852cc2f35242d2e53756b3767abb8c41d2184baf36ff0e7bd68be3851bfcedda7f6a92b9cedfc39a464062dc1d69b80baf3401b4568204e381d71480d594c5323ec081ae08589ae5b1e7d7b5e866515061d7ce5b546226a6779332ca4ac304c570286c6389840c843f69f25b58dc980f1fe37cb64502414c90691d04b40877fd5e969089942597ec7cfe8184e000300c37d4829da576e66b9bd1f97762245ec9c08816d9c6b40c69b674a09b92bb7e603dc927d241f6f07df33ba4fb76a5a144a6f08882db8c788c984e2b3c2e869e8fbf165c771445966a6db8a8a148c9adf526498ad76ca7cb516221b08ef4d473bdc8f5938a87a62badeba2e8a637cc0544fc2d8e0384a8ae91af0182c33dc9ebfce440dbebd56c15e23e543e6ab4bbc1c8173ef1075ed83973a386fed2f2595da485e23ba12c0dabea1cb010fcf94a2819aa95a5e96b07ca7bbec8c87e8096a0b224f193718a88c9e9754ad32406c92f1563db2df17e98c33495d58d3444360b9203ad15f7fdbee08ebb54f4a0b41bf1cba58c8ea5cc21532f7588c6b7951a2354f93877a69d6d140f2954bec6f34fe6ef7c6429b9387c7050ad7e5cecd10b713e7c5ce89b718ac38e32236c5d573c4f470e35c58a3b62bd248d463a9a5c148c9fb03fe97ae37de701cc6e7e2640a571df27bfe91dec82b39956a76346580f3c6cbd2df9ced8aea34a7bc1a1e2fefb9031f005b3d70931fc0528f1de23fd888e26af8be88085d915bc3101b93d016b78902c0cb5e57235113a069638b4ede56eeeb59c5bc795c0e7a8dd745cdf1beba0469863423fde9c4479031126d2f845c4ad675e4acc9a3ad62aeaf04277635f042a4ae851c30e2eb7789a6566a585fe48fcf07c9f33b6f6de1dafc86ef6875b6b9d6084091d987071f4c9e9071ff2b352ddf36149f7f4199bc6eae444ae0b40b9c5f8790adb62eb77357c7f84d25516337fb00f0cc4f0170ae17425ec40b3d9c29af468906bf8b0d4592868bde55850937df713cecc112e6acbef87c7250fecd961deb244044c157f477da2a06acb035ef4639c2ac229565f77ff735ac0c1254f3113b628af2cf7428625626b2b8bd24c96bb0601bba09b8d8d65a6e46108df9c3db45844f809a9012dc2b5e24d60d845100b3912bd3e007521a3106400c45e27fe23b266650e0941b9faeeef5d4789baae05c8983d85bb49903302443627343c7dc1c523b04c407769d7994abaf25361689640441679dd4551644d6aa8c71e37b49f5c6b0a27ae4e7e9f2afb51882dbb8a9d72b946aa9ba4d62ddb4d5f942e308c5201a4805220cded11d87192bcb401d78d869b5c5110a9496bbf12b321bf4983762ddb56ae5c107dc0a5e64ee1399c9b68632b5b34ad8d0941388cfe681713da18ca4c34e14290ec266c25056b745a3000bb08e346f86d13e56a8f6e116756d24db15a56a0128ce61a6fe09d51c81b8039395f2e139375e9fb8a5c9223cd81284bd3c2c83f405c1fb1a29f25933a6d834f447b9ccfc2f001c5ed7cd2547ec6270511cebf4f0f4dd2e6334ad9a4b012e62fda936469c35c23cf146acca0e0a29a35e3d6e80552768e7922c6b8891c91412cee6113140aceae8d42ad31cca0bae39194d9ebc70431636582983d8d44d77436f122bae1e8a594c60d8e82cb4a57c814e2643f663babe0b82bd2d7ad40efe80c524cd34b68e0ab5be4415066ea4bb4b5e4add241a54998c61a14920b0e86a01fe7743605a85a1802fbfd7151582c891a044959ae95fe63abe81b542b94fc06c8d5398376da5637d574579b918f176daaa70b8830fa52df319f93da2a5899dfa64753e007f58540eef6e64262ada6a9943f3055b8cfe553403bbadfe9dbb4062dbf78f0b0deb3de1f2bfe39d203aa453662937b0c63b1deab8c6f7246f6f280ba458c5fbd94aa65b6a1850c8a5b01441899027f986f119a2b262c9ff91a7199b68da8d866e2d69b34392bde66999fb482ad87d68dd9edfcf9d7af6a6dd85936f06154e2a117a417c4f551df1051e725bdfcca7c0ae13d97c3710d8b304cc2d026eb09b8956a26d5bf0bbd80ccc5cac67b04a0f14509a60315fff93ef67bb989805f26656ae0580fbd199b5e21e2a7b9faa071111db65a6132ef7a57515f1588b8aa3b4ab10f3cc1cf0a8836491288dce0969a5b0d662c59316ed9e470f72e7338e30361d24528ea04f46577a6194ace8aae806e811dd1043317567594a677ffa107886221c55c393f814d9bdd726bfc4e647416bee27f8f8cad5f2873c135798215ceda050a501a176d612497e9491533283defb68356f73408a6a85cbe0abc73138d960b7a5ece8d9e3e6ca6501d332a36ad504a130bd0d3fa80579c22efe3beb8d2572886d03c7748ba851248819631924d7ef080f966c83ea04bd53a17f1154ccc76daf4b3b8790f9e573f198534c6c7f318e6e18076eafc07b97819190b182512f0d6d2411906da628717dcb82d8af0384fc96c9631a10670043453ff5d9a484282988668dc68989285d944f7f44cb5c4ac0ff587f371cb358aa0352a7b333c9b6110ac796805b30ec8d159e9f4837970b62cb4a91c89d976406275936d5f559f30df154ec97c45ecba23f6167625c4a9eb2168721649d135821281c56678f4589a3fdafe3ebbfde9764905a8db133cd0e90ec80fcc0aefeaaea4df9f9353200907b43a2260e79f161d4da6ac9990a33aa7018371e203b694e27871cf6c7c94a5199f3a5089420b70e539870d867d078619917477931df99a4806ee5b3c5552d1a76998d4222129f64479a21aed8d5d3aa78950c8320ca8e87f06bf6a579740b22b252ce1c752bfd6945d3719d7b08c24fa96dec2f9d1431470063e3624c1b2b8a2546d30da9d9baee61ce400781b414625ed0806aa8c01d834817df0144e40d274abab57246933615079a66a87e722d11afc281a545fa6afa1e6351a4436f0f7afac19883fea6e775679cd386c7b4e053d80585417f099d171921892fa473a97a7fe89ad44af9867de489257201bb4f3863b26be010fbee679f140b938fe6624ebe8a439cd8377cd87f7cf501886f51ddd7770d0f571990350ec4ed58e573116cade8713b9f48512e9a46ecaac750afc562520f4ee7d2f2b12971ba4e79e19cd994b9c94e3bbd7475537e4a707b8ad701288e40e8e2fe244cacdc1e983a63fbcf09cd225fa047ed93b91d264e5200dae113ada435c46bbab19cd081fc82bfabc79e88ea3d0afcad68d25d5c07bde110462b45a88710acf4dbc68719643ef8a5b68189e0bb428d985a283b123c2b98a418c6cc7b788d78fbf582eaa9ec73b7cb71b3c6110bbe32d4b51ecd1e5ecf4b0e90e573669ce030c951064db8f5f0bc57fe52a16fe542afcbb655d28463b1637780e481f131a05c1369644c42c01ebdee62a6c5fd9bc4dbbe279e6310af5540bb42cb4e605552d7c2359fe15d9976b70e28e20378ee2deb13dfd691d9c5c04b65215dec6c95b8af3b222cc5fcd30c32f19bb774a9e8f259e8445203bc04a6b22267abc49e6c2147aca940641ae3cee17472af8d55c89ab2c1f5d09fbf099425db7da91bab6b36fb255424fcd3af9132a2ef63de38347d3a133f4dcf9e87a2ec9e375c8eef58146380df1b15b19c41472aa303bba4f38588d91bde02f64468fa0cd93b1c8b441be5142ec38f597871911e62c2f8f04b50af94a52ece023393843a08ff4023a285833f9426408c408f57b9e07f6d70cb6f519c38f88f04b81e8a683a157ad410619f0600cfd3fa34b674b509daf90a6ec7247dcba9112d107d27f9f56f8d81beb2d64af188688613c8cdcf7d7d2596d10a0888fac4313f51537225fe9b7de632c63b364ef60c6b050fa2f6c6542da042a19ca43199bb0188f35fcf21a0466063cbd3f61abbe929452407b50c58029ede2ca83d76e53770f00a3a994ac682ce8218b3100aea51eb2173286486f538911596ffb7d398b6b7ef8025a8f3ae563e88bd4bfc52d59bcbbdd0c8c2acb3441de658ad74e7d2679e2dd004f720e04e803f9032b6abd9779c9c78864d85ecba7b0623b9f1bb7363c74e46b1a5dc19446dfc9e09b2419d049e02474881456f058bad6448de9ada0e3c0213ed7b4c96bd4577870e04a3d24dd246a2ce1f65ae85d51b2759f4c22fb0a2b3d3fc37922cd400b07c83c95210d47b6c145d974e3779bf771fdf8c6d31352951f1d84c90c0f3b512b3b54793a90821164888a12956e5203b9f6a20dd0452b586964372f0ae98947945ae676891e1840a019d491b55499c23f1d8f4bae785a8f4402eb9c4580ed07cb621a10748932715380a7d70be489427056fb383a3414f93860ac105c3ca061e5c50e58a275a88843ac37326dc7451e6382ee40442630026a41abd7158e4dc83b6dce8897b54898432f7490d85d2612fb38beae0b40d2150599aef62e12dc242c8d4bc96f3e13f72d69a3249961f9207057c2284fc2a4d18d56629269053460d1845bae0860647223458db1ce2efa17f906d3abbb775c176c704ec87be574158611d6b53e8a6cac299855574cf86ce924f514064ada87021b3eb8c36fadc7596872c84b03c466bc0e5e98890cea6108c9451345b1d7fc94d4444dea327f2665fc51b913a466d0d758e59221128227c5e9525c2e88c4edb5be356db90af07cc751ebc0727095a1b774950a4f0644d034e6c1c04436443d5d3fc1932b94723af5d83ccc46e36a0445591114fc0525192022362842418888c52314fd0066f40671de615a5d8c73083205f04ca89992168438032d68c70d3962254c169411d3ca8065513b7ec559816124cc08940255bb202774f8d6945de43da4040c99506d8f12a504ecc0c411b0294b166849bb614a10a4e0beae0414513428b4e9b4f8ad303e24252fb5a0357267678df41cfef083c9cee6aa7f794291b206ac74c43714a4ed8bf4bde035dcba8f5bedc45d6230c338d1e7825d09df82ff0d1a173e1646a766eed20b09eb29beecb90896088f40d2e68a4daddf11b2a7ac6b83ef08a967eb1f9a8098aaf9e34403b0702e21e03f5cd00e249b3be882dcb16a6ab7085ca58d10b967a93ddea15981e0d77854bd2b57a591b4b6d5644d159c33e45c32c80bb8944a5d99235a9db5742b65bbdf30cf08bbccf2694266ff5189843ed29073c6a4a6563ce062bb2163b761c74de099d893feb55ea1cc7dc94e3fd61d258110b3ea75a955e8cbc6ea8b8e585ed51b4ce28867b396172a314495fbce3d150b6f42326f61984847f0209dd679b186ca9b2d21d0cfb53b8aca38e98f9d6aac971a154b69a523c3894cdd660c9cea53b25113853e9afc01e0f640f11a2d878ea4824e8027b58b6a97275c9e84e67973e452fb4db146d510019f65c55175ac4a472fac68114d1f601d3ec57f2caa8f1ace91be180d4f04c290cc385773f6d4be3e8d5a296139525ae0a61a0b1a4f8d63e24f2547a20273dd6ede1334c5c679cb93640dcccdfb6d49666f456fc531fd275191d4d7293c5cc0b78389bc652a3a9be69a37340f8af8fde846e27fff93c4ef779489efadd539f62c22107c2c95bda799577e60e7d4c6fadfa9a1a6d8ea82c1302d351f1ffd9ebb6d31051fb8b9d1a38b26e0f36606cdd0928de1a07be2f39217e3be1a9c6c4a9ddd52f279d351387a8b07ec8b225112a4f90593ece967434bb548b8549b5134f6c714f046c4d44c544fdd7b526f9f28a3ebc44eed8fecb8e72d837c96e19043652e4cfd2716f6ae1bfa3ac1faa64a0e58c3e18bd047e8db115853e03dd9800a51daec1785b2cc9854ad93a7b8a957c89e88d6e08eb3f37be7c69e0be95d57ae63e71ad268c3a9b64f3d05e1df127a9d87f28109f418bee1ce5ecd85b1b80f41b84cc5eabf72252c204abcf5769ddc02b38711549ca4aab8f66f138cbeb84ff6a17688fe7bc28a3b9f26b1992603473efdcff9bbdd033a9672be17477e6eaa9ad718168708ebbee07fcce7dec41a95179759e4085664d7c55648f170e3fa68206b3e29191f6568c6b2f254e27139bfa05fbd9d2521183b1cf5382aac90b804bcda66c859f08fa4d03dc812148a8e2d3d7f6764258c084f7370af449d7b4f08416272337930efaa5b370f8a73aa91ae08b6c4ffc55c8e6839cb10b2a30af006f419b63e84724d82f852e75b68528499d83d1f70d752cab39cd43fee7c6729606649b93154eb1a7800b7b68cae88df6bbd0ed78481e5d9dc83791b64ba6ea6aade3a18602893584895dce60219a7b7d59bf3b5b3e1e3f060cd9f4a5ce61d112c6cb34d941d14269109e3a109a3c9a0df8725b047516067583c8e2ef8b6a2b8333976c0ec464f6659f82b1a45c010d006f680d569aba4bb5351f226a2bd00770e6be873ef740c34425d3a11131b3d129dc03e87ffa2f349a9459257d8d88340eb5e13a7e3c67fc0f5dc3631379d6e34c8496961a1eb4553e8b16fe954911ee99886df92021c98d2ecb53192544e137b09aee105a2d6e73f176722c11b992f30310b54ea095a3c0566202242884c132cfb21e9fd109176f28e1e0f80da4dddfc379f67744b7e7db668da935a3e11d549f32ce59dc2044edd9e7a210aecf361745aad022ade82c2e7d4fbd7bec7f0ae305dc0570453f6f48377d80a0402285c6ac04cb5bc0e480507537a1e48d9414caa2aa868f07d4ab1ba3abd5a05b68b9bec8e6c68d61cfc629cc0cd434a3ee26d1f67c75875281a242d695018fc97552d8427886078453aa1c83031e56faa950dde72b90a80be1f013a9fbc2040339643e8c172144d283986d4e00dad193828bac03fb8d7dbef30e8ceb1e5feb3e9ce4265fbfceacac82762e47535f7d9c474822944c3a76ff20091070a8a72c8a1fc3c3c90d0f4907792ff4db917d97b879ff588780f9b1c828a1527d280b00a56d0ff8e7c0a124c3fb43d4e10410bb5872b9eb2a400f8c9772665758769cf6104d554194e9c529f987c186932c91b8be71653393b28c9addcff07c6823c1a79bf4fa5069bbb825b551a7481a519dc08f775b6499d313e611b2c6aa50784bdebfc8f8a8cc963ed1f95dc176dd6196e3bba1b1758827b45aab54c6b2c79da8e17e3227cb39959a6158bdbe3121ccb1aaab0e8edc180b822d36b08a3401e0078cc8584feed3828a964d29f96718274eabb45330cee0db69d40a07701e32ddd80376c3ded12855e45be18e802e91830108efd3f01c38b0b56921565199295767705d42bca5303355ba2613ef90d9af5a355741276ae2e8bcf7b9d9fdd168dc671929b67f7f2bac860e3d5ed9fde2a099efba38e14abc5a726faf95235df0a88967ec046a48a354646299aac35ef6d1178551477aebeaf6ef3581b84ce0991e5a5c1336ba335d16509ee69a2f9b56ae5a3d281e647a523ec765d85c2d181454fac04ec4307879c311a9789c388e2394c7ead3232370c4274bdf428908ba74cc44683410ddc03a810e19311139010502c38aa4774c25d1949f72bc9b025c587798471d3e0bbe02289500f3d8bcd32e0c49ba144fc1e95cd80687315429f6763134dacdd9703e854bb8095922646e1f71f9fbae5d4367ed6f568c33577ddf940684037b1b2906e3723d47570861137040f1d04918c8cd27979a6f137be751e2dac832f12bbaeb0cd517146161156de94a02109d320e98547a5879cd680bd601194164a70c3d3497636e1a64bde93ed77b69d7795bcd74cba4990e0bff52ba2ad024311665b167f28d55b03d3b5619e8bbb602ac98b2028d042b57ae03d320b5296c4894e02cb7e0803597e0fd0e3ea695a262b5a50b0380c91e028370b0a52193221dc208b2e437ca44f656a061cc4230a3ee30b06fdef7c196f6ef2fde181560f67fe7fa8fb5abfa8c65e61c1da653d8d3e556051c0d1e88014787bae2fe84b31beee5cca5330c763051a812638079e6968e8d27bb75f09424288754ac2a34398d8f0b51afe63b0601707a12c93e8ca5caf2d5736a6c72da9b30b2199c78b3a4d905c3c147a66a9c6923643352e48095a4de44c1395082d94bce34692b90f6d0b11a678258aa1f2a7c0003fc7bdce3803a1b0231c004b798adc0441f525545a54390a73a80c9988a1909afcb75e128f177488a315c89b55d31fc618653713a8835c63b654f7f896eae5e2e850696241697f72209c842fdb0505282a055ee2bd11b3296bf2d41df5b11aedc561c70d5173454a562c933e5d0feafa2bd8a6ce143c76c827b0ccc23f8e69c76a1b855a5218db20ecca9f959c3a1ef69e0636748c5ad0254d7e53aeddd094220d8ca956864338bab1ef81fcc521065b694b144ab01fe6e6534f03fd4db673406564a716951668ed311164095d0a38407555c5917585c5fc2f1c37bd7d0525084ba6e01d30403f2b3e3b81b2a4393da533e26ab86cdafebaede2e283254ef62cdf72ddebf591e6b9a16c364849df15c291c6ddac7d2d71bdefb0b28d6948d9d0f7bde7dcba6bf6947067fa8458327e50754466f53ed3ea831dfebd204494f2f05baac503cff35db6eea5795afeb52fa7443aa061db03dbd67cd25952652e7a977a633f1b7b4f96b849e9e92be587af424dd112943ac345cfbb190a1385a0638dffe2b8238a2b315f093c57b16c3e1df5b23b568c5a3ff83a4aa921729194c937524bcd7d8316a734bb0ca9cce048ec97cddfdf73010ac5dbf2dcc3cde4e5a44c00fed68a0b1c92466925a95064ef184b9510e763c9c17032c04405e2d08a2f6ff0632033f51de89356487113d62b22728ecccac5f9150430f2d7a859e179cb25a48d9b59a6e9c877953b4ba1ca8d5731ae2a8bdec2ca1045005db0d861222f650b23b56b79407f0b153ba5badc450311ae95889dddd66f7558a3ac704a4881c69eb178ae28cb993922eb2e682c7ffb3a2b4cc66371d7aada8a8a9f251310a2b24e111e45b2aff10d3a018392ba12763ee5b43fa4fdf404043bd9cb7a6c3fcbc9eb741260731459211056dae7ae30020c99ca113296f0ca755ab1e522126eff9f6a15f6306677c28f152275ce3634c585c178c2be9d831ba5dd575bec8eedaea11031354fbee6b14e1d7620bab96fbcc9d44bc02ea38689e2263ab6aca389ff8fb980dc68e03001851bfdb734530215168cf1ff2427a897ea685531b2b695a01d70178648235a1e8437b2cce5bd05ccfdd6b7e060df443387be13f40a191d86c1759374e8640f89e25f99dade991e78c545066773632bb2dfe1416c65032e1fbf85b56f3084099f9382d01a2a60c55481f6ad83ca6fa33ab7e43a0e955d772c165575d53ed4084a1cc206aca865d2addf704d447e9041aad0c951f40ec1c32661ca03a748df9c6a881d7f759941258bf6c5e901282fb71e7f81f4bbc2a1ceceb50f20484c28a862f73f3a39b6eebcc702e58c75cf0d89e8263f4936b0ce9c9db2c249f30afee063e59f24746c96b177d18de0ed95e3e311d804dba6440941f6e42de0ad07c9610cd5c8ca8d38721d1d407a135aedfe54510687200eb3102e80a3daf15898456fdfec87e9748a562a6d8189da876850eba40fe38d9b3fc9959a5cad5bdf595e3a15c6e05f9522e340a48f6974631c1670f4e3195e4e51be9fef06ab9f1fbb0b2228981a62c40df766bb7fad42e611cee1a4b528b598f838c93cb16fd4f139bec684528ea6011b87d4307b6751f9dd87672e63f840698e9b11613af2d14df26543e4ea46cb5b6b875c46e63ba3772f4c5dad1ffb6b4a2b99d2babaf8eb90ad04b7f0ae8b0082edba2c82a90d4a995b74eb3b98c49de2136ec846df9be4616598a0780baf5db94846da9465fdebb4110b7865a2ebbfc072bcf5e18daaf0f23c58a7ad9782db491b66ad5f19fcb8eef1be7c1fcb66ab287ba09f550bf96158fd4d7a27d045016c72c83391a4e8580ae992ca5ea48a1ac428db125addcd2bb3d874a9521737825707244e871cd35c0d853c767551adb77c35221dfe9f3ed1927982e4e5c2fd2b7bf0b907badc8c3131289621541e763a686b9c6908f4b847b549a63cc816a147859c4c56e66b40a1454d9480c0680d919335432aea336ca12931c5b1a91f5e5f181d5738772a19f5d25de7ee57241f8a860b977b3c4c16d0931bdd2cb444f1e673671825301d2dcc8f5eb134733d01513706f64d1c03d167b39c7965b9140843d77463e85a18162936928158ff418e5f81b47219c2b86d2d85d4557226e0b065896c5e977d2bdc9d5562c8168da1b6d0a0dad050dacd2920b245dcfac0f70314f2260a4ab1c3f3d0819e34a3f10ad4f2eb40f4a9f75cf26499fc1d128f176b10cec0fdfe7f85dac8f5b30443a73fcd30576710e6e8eff87b1740eddcf3cc73ff397e0b7b17e1c9073fc3eee5db0bef6dd239d19c7c4d58ff2fe0ab3a4caeabf892472fccac974b41cb4b86223e4b07edef48f9557845ae25260632f20c917ce2ec4e9064e97a46c9dcef714dbbfaded1e598cf74abdc416ca296736de8727e1938378150bb41064c74f9db9b29d2bd42e53fbffd43d5177e08a47cbf15362078f25d28acf79e8e81c7f2d25fd705541ae617cd78876fd01349466f2be5c81c6dcb7e6feb3b8b2e90a488eff24aaedeed65b72fc2416aa1dc3b81e0bcd2b77046275c353696245f30fff29aa7f6d77a5d3e95dc6e8f8b9332891f0c8af3add80b73c7e0463ff2c8adb3eb37e4f3b40fb804966999077fc6eb184c74fe6d79e46ba5fe782d59e4686c71bed97e17a554bd6ce23535709eb44a045bc6188eb44da6536ce3ee2f1d7fe50ab5db8ba278c52c101547204eae61bcd55205cd1541dc9786123ad3ce48633094e609a917e40011acf1dae195374471a4f68f9f8cce99b0a3d008122100088c0cb34b0f5bbe8284284b35ca978e6f8e8702e628c8e9eecdc8099e1d836d3b025db5d42a49432bb0c310da30c6ebb42dfe046c185029715d657fd375929eacd153be3c542094600450f8c4087d60c95e586a200d2832796b8821a5ab815bada1b4cacc189293031822cb470eb51166a922e8109119440880b5ab8857aad5692242841c80e8a4043410bb7481c6f13376186ab03374c21042888a10a206833d2b609ae8bfa0de781909ece8fefe74121d1a8f440fe837c2d126d8f22a65312798b9638f29a5a7e9e44dea2f52465097f54abe132539091824c14708bfe2438fa4b4a192ff052c60a992ec87c41060c326190a1824c1564ac207305192cc88841660c3257c89041a60c326690d1824c1664b62053850c17708b7e1976b334bf438e9bc076fd27696236c60459f7afd9849c0ef9a4d9d80212e4a5e5f90f28241aa17e5c37a92462124f3ad8cd6aa119358e3c9020a416c9030942b6f80309f2b5caffd7af23b6594082b0b44a788e35a45a39d4805bf40309f2ad1c58e016fd395c3d43bf7e5ee6b0036ed15f9639b4c02dfabfcc5107dca29fa4cc7107dca27fa4ccb1056ed18f2a6342805bf49fca1c6cc02dfa4d658e36e016fd22650e37e016fda532c71b708b7e5299230bdca27f54c68800b7e817953149e016fda13206086ed10f2a6366708bfe4f191304b7e8f7943123c02dfa3b658e38e01638e016fd9c32871c70cb1c708b7e4d99830eb845ff5862dce2bd5862dc027e9fa320b12c8a9e3f874beaf8103c64081ee2622a16f0e3d37ac60e223631476a5d678cb1ecad75ec769cf11641d72fa26e95eb43c997484e45d82c0c915b22ea668d8cb022aa882aa28eb022aecd42b59bf530524abeba46bf8f244968d7bf95a50b1c1b8776516620c762eb886c64b659271beafee5fda947dccdeabacf9f3ac3b0f867a7f76babf44bc770d062b48ef61f7e6e571e428fb49bb5c1a42cd321165a6716e2278b76e9ecca330c7cae659d634490ba964331bd5fdea7f3da6cd79861784682326da36b638e8998f6a05cd3b32cc3b5100bf7f16975b44bd3c63cfbb26be4a451e4a388e2665decf3e7b8d5f64c0c899b16e250fce4665d0cb6d5f6acc33759678b2fee05ea60dba671322ddb70922b06e2609b8dab91b68c8b916c1917eb5cdb6bdb5c3b06db665c6d93eddaee5e5c69ab89703351d7d9c43d23699908271375b0ce161369a46d7a895e9b4cac9176ccc4c1505c6d9b899b8b744a652611103fc1b898889f54d7c9896db4d3cbc7a7557a7db5da09e45c2512cd737128e0f722bdbaee64a43fbf9887f2601e87f454cfe93ed9e7cd3a1af762ddec8b791ecc9379af4ef6c1be9947fb689e8b035ddf0b7c7d5d0dc6b95e219f11413e037e12e16fbe070872d46babf4c767be24f6165bb436bcc7f7e07f1c856e959ef13e89f067febd99ee9308798f991375697dbc87c77b74df01d244a128fd28d86679af1fa56e56c751afcd425d50e86675249bdae7ea38325016d6ba7681b390d6f5f35324d23e634733c2c01a698c89605dbfcba471c9ba1e5fa6d015d248f8a9718db2f115ba421a38d6c69838ba4470a46968234c53135de08636ce361b5758e3c840d956a15aac52e2c8449b1a68e30a6b1b5026ce441b1a48d31137339136c2401a5a477c6d409a38d6c631f6195d220cac89a5c7ad50758131d9e771eb5b5f9e2c0c925b26d85669170906be6a5d8d737d2f11d045f35c1ced83d13edfcc7b75b2584de6c1ba59887f3291cfe5cd3c2fd6714f450a89b1cf9f9b5917be38319228d3c8481b1909c68189b3d82616e3bc449a0616ca382e51b379cdbafe98a8d9bcc2191813691ad80616ca382e71a6896d62618cf312651ad926847160624c33dbccc21727d6d148af50ec33f3669d082c04fbc83c59271389995e9f9837eb62a0373530d19b1b58e94d8ecbfb50f698467adceaf013e5519756e74db1660a3d6e81c837352feee3d3fa3c6e89b8b92971138cf10e3f55efe3d3127560a48c432b7fe3717960a559d7ef89f12f75621dd908f9cf7175fd1ed9ace447683512e5e4998d3a344fc765f22449c25052afeaa47caa83f22964ece4513c2fce4cc5cf4e8a9f9d570a3f49147e7a4e3867767a66678776765c27f9e224ec249f9f1e5987a471b246ce38354facc37947d68191328ec7c53db0add2e10ce571953a301029eb70681b0f4cd491953a31d0acc3a96d3c31d14ca406a27548d7c623ebd0bee37a12468e6f7a6622143fb523591329f1d34c44b59d9789fbf8b440fcc486a836d6e12719c85d1c45dbf0d3074813156347d891d966e1d69346d8ae1fb56ed619337d3330069b7d5fd2afae695d6f64b1ef477e7a68a0d92706633f57d720d8f720a8f6cd64e397f8e9a9815e20da47168aa1649b257a1028161a3fa199e8037b75fda23f4dfcfcc040b2d0a716a27d5ea058c8f5a185661f170806aaedf3330b6d68ae192c267a6ae0eba38da05a4716ce40d7071b1fb73e6f82629dc7add09b2197e8718bf4666806fe87f63d7e8d8f5b1e3f519716e8dffcc03ae2e3d6c703ff443dead2f2448f5ba131e4a737432f909f5c1217f9e9dd2afd793344ebf809e2e7acd5e3fbf30ead7f1f9f56f822f8e1e8e53d38a275ef91629cef4432514c7c1f9fd6d963c3519dff6cbe33aa8dbf21c9c41f61e48b239868f6117d29f422d20cf4a1d7e741229ae73fae51ac647a94c89b4a2f22aa91be34928d9e44a2bd50fc041244d33a9fd841f2ef1a7992d10cf5237fc2bafef3891da747fd59ebfa5197d6f373e422e1e768849f24183f43354ee2a7c825c24f51adc4cf918cc44fd2889344fc2481f829faf093e4e1a3d856e90d3f4932118c9f23928b427e8e407e8e68fc24c5f629927151acf5f1d3a7b67953247bd162b3f0cd116c5493c168b1ef4dd2ec05be29aa896f8e642fef4d12ad7b53e4da2da083164df0e00653b4700bdc70d43b72053141155bbc5b68a1855b62c851b5d1acc5093010c3164186b4706be43e3ead8fa35c5826c21c5880c26105ae166ef9f8b43c8ea2ed9a76a2095f20430c50f084166e751c15aaf5d6ebb4d2bafed3ba5967969dd8cd3ab59bf5daacd3c7a785bab4bc74e43d446e72ed50051126f21e2137d54235e43d406e7a5be0eb3fc536eb445d5a20eff1f193cbe33d3a7ef2618b5a4bbf07c8dc4d6ed7db16489047e48e4221416ee511db234172c0eb4764573fc2fcd139ae81cf8f7b0748d304eb1a04647ed3041ba999fcd8f604a21045ac92b7c6e456e5ee4dbd61eedbaa2f6fbe33c63ab54924927c925c6626446c9275d69bc56115b7b1e818632b3418cb78d131e8dbacee756c561120f78af83c9087dce6a3225505962a5ec2d0b1ec0e7907198a5c842c45d759dd82cc6f6695c32a4ea381be33d7b96d67bcb95cdbf6c89975fce2e76529dc2024c5ff7d642807d20447f04bbdcc6100a618263f090a7207dd06fd37aecdf2a8c02afc5540bd2abc306c0c805b9be8b118e64b3531bec76a8008c1cfebb86d6b73e3ea998d82fc9e81ec518159b80576d363abf0c220be1dbfd7b11473607bb876fc5dc752cc618a4e87127473e39a431144b563cde3cc827058f360d1d531165f1d8ba908db29988e4459ab4e7413d4cd11bfa81c615b857f542241668003a409a61c204dad6a5a183f7d7c5a225f7ad4a55552c1d866911e3fb896f829527ad2a32e2d123f4b9ce37c8a41716bb52349afa16dd6396a35efe3d37a3d35d28b1e756989fef3f835ee6689f849e24082685a4fec10fde85197d6889f228ebab4341f7ad063b0b655a032dd2a0fc6dfc14fe2e7e0dfe0bdc194440ae33082e9c6d5316b062cba09a6b36e7a6c8e9164114c5be3041424f762c72c1d6c907f406e1db3749881a624df407e37c7946f5c9bd7e6b54965f845367363433880e04b9a633aa69ec79bd82c90ab1085be71e9153637ae0e044b510524b034e844c7ddb81f7c5d7ee06f5d7edfc8bbefec37c50e580072ac535b0fa604703ffec87b98c4cfad33b7c6e71eb73a108b343c49a77007aee1053631feae82fc8dddac8d7fb7a4b9716d167f3398d5a1f83721c02bdca56023a4e3ef4c80591bd75661fc611624484aa563ba556f8a63ba59200cb00abf0d603b503b86a2e331dd2cdc82a9313005e7d0bda97bdc1a432074e5c6b5b5407e07d3cde2f26700dc62d92a1cdbaacdabe3dfb22037af8d6b6fc097ac6ed6f6a4499a7cdfe7acb3ce5fe900130f83e956e10fdfc0031288608afebd87f37eaf4c3b0e2ea155b88535d863bdd663374bab58ab608a55b009a61dffa86ed64ec774b3b44a1ad38eb156399c1f9d0ffd63db5229103b2e90a0884d4c116cc66ddb83493b10e4c0306c63b6efba0e0cbbb0db84edd6b7b209f177b969bb9e6d957e8ee3c6aec49ee7755d97bfeff338cedbbbdd51d81eb73d6f97a17b227f2590273a1104418fe3bcbddb1d85ed717bf75d3621fe57a2df12796885566d1ec87d188a1c277e22d77d187ea88909cb80416ee79c33ce39e39cb9dfbb0aa4e9d9b05d6f0f0f5b2a90e6860d5bb663f72c1cbf12b73aaf3402b95fd451903bec34c8fd799b26860b6bdbf3bcae043bb7edaefc3ad7955ee7caad33de44306e1b69011bc235846b48052e5e55995a53a58bf40169d7ef00b6eb6f800bb7eb67408aedfa1780aa521e58176e8a2d5df050bb7e05ac5d7f02daae1f016dd7bf43f576fd30a54ae56175d196a956a5a3541d40c5f2901a20edfa654a176b015caca977abdaad4aa95ad500543c088007d5851025dbf5d72853a852e5a6dcae1f002ab7eb97a96d968cbb5928d4c776fd271fdaa1a85fbb66bb57f5756a8a9f9f0bb2eb87762e10aecdf2da9315543f35b5b26fa7cabc9b95f25216d5b7a6d0ee7bf154efed3e30f554eff5d28efd56cf0551aff5d06e05d5950f35f9dc12c87a6bc81d75265f5b0257111b7a475dc95702d5d64347df0a8a3cd74b57ba16e5634b601a04ca0ba14ec6b10d51b7eb3f19d930fd5e545443b515d7357c415764f5b7a298866fc88a621a826fc882aec88a68b8866da882adb8aee13bb261fabda8a88e631ba2ee976e5518aa208108de0007774555b655c2064320811c54b0450bbf6cbab22e162f1658e16dd1565ddb8e11ce20023780410745485dd9123d20420ca450436bf3da70d52109246c210b6a687dd82051c0a10938a02d8feb05281001c80ab870849607f54108aa08e0100234b436ea8ab6a90b944dd9b75557d5755715cb43ea42d5a6deec83204cc858f0ce80e44d5f760d43145c084208604003544ddd56ad431ace40862c52da8a82be6c3a230860b8020950cc4065d12007214c41072c9a68b54e30c2128460850bc06084168602142e2ebc6aa00558cb648d031a6490451d9a68a2558206b9228b9911a488b5d614d14dc73644bf545453e8c886e9f7aeefc9b8822822ab125117611baea08bc27d7c5a299cf5a84b6be54db155711f9f560ab7462e6f8a29f7f1699d703334e1e7a32ead1a8f5ba17005a6445a47e9db7a94a72da548ec483511fdf02590ab7221b52ceb4a9ae3552de87561addcae7fc48ad49877f9b8219405437a698cda17d12af3accf1b4a61f8493a47ed295acfcfcb43e94972cf112b523f6e0c0f91dad12a4a3f6d0e0e7ad99108f5bc3f70904b5a4769e8f5a42d0e6a4b780d7ece781f9f568a26eda0215245bd6cd7291a952c494beaeaa228aeeaa2e5633cdbf593edeb627c39698c199a5606c9bafc1903e5cce0a7a63d49f6e4b8a706e5a02dfcd4b027d972c697936a56d225d1d1e5a81a957cc994b36ad20e4aaa2f877d4de22b92823ae84765571115a47ede9444452ac8fdace59b64fb9a9cd41c5ffea686457195a61595276f922cc72d126e72dcc7ad116e725014cbfbf8b4442357c47ed4188fe2b4a3d16b12b5a5d0ea428252921312ca452156c68f7452907a424a456f7bd25141ab8aa4ae8c50176ed7ab57ad5d3fdb353f49ea3942436e6705b1a454f486da8e0a22a12237c4763868f4b62172e5a0911b52393138086d69a5bc8f4feb067ac3f5f490aee88d1bef8d109b8a94a71beaa9edba15a9d1da506fac6bd74f52c3b5b1be5d7f0f28dbf59bd4786da4f0d3c68bf6c0d660e136d81bab8d1ed61a2bdcc67ae3466ba3add1da506fdc786fb035581be90df486db438dd5860625e1b4a6912b625554243591ebe815b5a135c49ed44e8aa244aee80db5a0b5a3a622ea566995eb806d95464774a45ba55daee3b5559ad5817656932715594ba927f4a2da932be2794bac4745a1a77404f4965a4f8b5a4f237644a49284d08f3b7a93e48e48d23b22f2b825228d5a92d08b564f28e532b5add29fb7ebff408c1af367f9f994da936a625177f679ee767d4a4deba9948ab4ed49359550972dbd27d4a47e4aaa083b7acecf927b4ad7522a22828e98de93291dad5dffda75299296b8a6b2c476fd22a9c935a12556441531bda6d22ab2964ea8492da9222468a90d9d5410fb7145ed282db9a053fa5945ea890da9a5f7734245a6f7644a4d6f8aaca5550425e13adeadd21e53243de9a8954c933ba2c315e1a609d5413389a8ad96f7f16981847801fc009e003fc4e94f1d0fc407f100f80070fee70fdffa1c1ff3321e943f63bccbcbf819bff2b07ccbcab3fcb9f2a78b3f59fff2341ee66b3cead26ae1270b3f57f8e9829f2edef32bcff22dafe2678a9f29fc44e127caa33ee553affa137e9af0b3849f9c9ffc415ff2267ff2253f49f839c2cf133f4f1ffa9127f9f24dfc14e167899f237e8e5ef4a51779938eb6c46216edfa8720403900b7eb1780dbf50b21f28ebce5085ba2dcf2e496220168bb7e00bc5d7f104098da91b644bde5e92d47d4d2248376fd31658e1f5aeb088a42cb5339b26e554b796a6bb45d3f4b49a2c2a8232eaa2d51ea0b4b45adca137b6249d232edfa51258a2d475c4ab6eb8f51be36eb447d7c5aa877bb3e69550ffb76ad9aca971da5a2b6eb77bb0ef1b3744f5a93675fd8667174f598a0a87779fb267e96ef096b927ecbddad4a372bedfa447d43ff725644edfa242d71454a94affc242d714b94f3f4442d799ff393d5047dde6143f75b92893abe28376cbf7c49ec98a24c504ffb2e093d594fd492f7c359d28f3cedbcc9c393f4cd12bef293bf8f4f8b05d5c0585fb42894b7a485c17a5eb827a8c97358d21416f48ad61604a365614f27d66d4b2a288c37e56571d1119436e5fc4c617157509456254561535c96560585f1e24559535a182d0b0cd63d4159d214960585b1be6851de9276ab74899644ded0fb1961372817757241a636a47eda0dea059d56d1fa59372328140a3a8952143b8242a5a592879fa4b7f1e6a90df1b347f8fd1fc69b2423f27b3c0e181c7e863c7073c43d790f52890f3638a9f32fde448dafd2637c0f4bcb8aea4285f57c0f2a7c258591be4851485010efd1f1b4b82bab4adb82f280aeb02a2e0f6ecbdb92aabc3cbc2daaca4a1b037d81b6ac31521b30d015f705dab2c64861a036f88aabf2f2f0b6a82b6d0c7485557179705bde96b4c55d5955da16940794e56d69575ca8dc78c161a82f549255454d415fac246c8aca9a4249da1495457dc1a6d2949505864be2a6d4949505864be2a65492364565515fb0a9f4c54ac2a6a8ac291486fa42255955d41474258591be48515c1214555a43e8874c37e89886d81be98df7063bda6835eaa725d51bad0d77b5b1d6706fac251b2ff7f1e901ed81256db035de12c53dada4231869e7c5488282524eea0886da79a18e242b282535a12395b5f36224614129aa89451d495fb0246dcaea7993651d81e19a3c6e89bc9952495c1117aa88e5f5b4b49c158d0a4bc2032a423d2d9c9555a3d292f0e0f296d4d3f27256588d8a4bc2c3cb5bd492182867a5d53c6e916faabc24278ce7e1718be467ea49de7c81f253f4aa13e54fde6c594bb88f4fcbc3cf94ff9c31520e3f4b5ee40cfdeacd15f7dc3c77f9963761a025ca7b62414730d6ce8b12500a7b62494730d8ce8bf10405a59858d8118cb6f3e24559535c967604860a8ac2824acecae396f866ca6b3a99442a31c54f17242cee08f7f1698df8f9f9120a3f79730535e9c8787e963cead28af1223c486eb1bc8727b1b7689d9e14795325d56c441befe3d302adacd7a869d7cfb909fb2a3ae349a90fae2812e22754847d79500fad0fa79325a4654be34fee8ae2e255d48579941e5e1f5cd85855d217b2b7c6bbf8136d6df0f387f56ca5278ef7f4a106f7a13d7f505b280eb70718ee03fb43da5f1c6d0f2ef761fd017571f4d0be701fd4566f71ac3db0b80f2bbea6a2eac35b7259b5b3a225923f2de135ad2536253141f914ae142cc9905635e1670eb4e57636478be387b7d5d71c2c8ef407b7c57635c78a03fda16dad3dcde1c3fb03db523b9a6306f7c1dd2a2dc385c7f0f169916fd732da18ad38035d79bbfe1696b0860ae3c2a8e38b4b435d812183f5c4703d2d6c4786ebf28a46fef4761d439581ba78918cd5852de131d65246ead2bef81117d4452d91a19eb8b8262eabca97c4605d5219eae9e29e2eeb1983e52e678cf59491bab42ee80beea2c688a1ca4065b8e02eac0c3686dbc2ca705d5e19af8c36463b638527e105c9adb0460ad3d2484f2f2d0db7064a038549475e581aedcb0bc3c2a0242f2b0d16e6855969bce58b4a63857961561aef0b8df5e5856161d0171a6c0d94060a93bed0686ba4302d8df485865b43857161d41797868ad27e5e5cb2860ae3c2a834541a2ef9d2d648615a1a294cdaa1d1beb035501a280cdb81413d34d897f585f3a969dad7855969a1dbe21a8d35e605627d51c9196847468c76e5e5bc1d772383fd16962303f5b8b03262bc315419a9c7a5fdb8a82e688c95436a5c32542ea2ee267cadef92cac09efc9714c56249ab779cd1ae5492a3794135ac75e58633d855ea61bd1d96ba6a3933d6153a62b9e98afdcc5067bcac96859656eb68463ac365b55ba559e86a9d91ce70592e2b5db133d4192feb65a9ab76c6ba425f34fc64ad2b7706bb4a5f5216bb7a67b42b3506fb51a778a568656bca51c97683be14eec872daceba7153295e54e63e667b78479573e2964663e225ac276ff2b8257e521ee5530fc98f3c6e8564c9732c7bff45bef4b8853abde95b4de841a8d18b1eb7c6ffbce739aa4fbde903ea2225d98dfae8e8727c784975d3fe3aa61cb5836ed677479683a7c052ac8f65e93f1ec29a78092fc7053f551c0834c56af899c26362284350929f271c0897c959c263563e855b9e245ce61d79394f3c46669249c13e3f45b84c0db750fc1cf118166f13334155433c468d999d1f2ee302f1daaa36bf4e50c51a5ad0852dda947dd5742fd186281821046e9003fb82ae01364c4c30965d81cff0822595fa522fb62c848ed77a0aa2997bb8bb1c3a7068379016d800d7376e81ee37adb96e81f0b7b7400796dd7f6510e077ddfb3e7fa52900db77bf7dc7cddc4370fb9077a5f9e6f7efebbeefb526662304af0b8ff0b64dab72d7da6510425415902c2c33ae0d63c74d6c60ec18bfe815e699c5dcca171619e0cb0674c7e6d83dfee994f79cfe4e8f796f577026dfa5b67e8ebfa8cb9489fe8f9b78257e5da6746aeb7fbd4aedddf56f16157439ebbdbf9c1f9729fc9f491629ef4dfcdf8bf8c318f30c6e566ee54fe15409d229fc5bb9492cdb0836c7959b8e821c62b6590c833505c0addd6e557e1c3a06e727446c627eac7338834040140422040a327c5143416260abdcd075b9fcb2e8bcceeb3cef7befe37d683ac5f1ef8a4fe70fb74c09007b6cbbc4ad2ceadc8f4a423a4b3749b492129dfb976e92685858a273b3f04d12ad23d1f4caf47533772cebddd3203dd28bc962a67af78f3f4ca275a449ea1e39e2606cabb8efbaf781103a18db2c126d9368a4dc0652e45b09d2fbfc66c7d575df7175d02eb502d2ecb83aa8e7f18e0bab747007ed00293bae37902689f65dd13da8441b48b3c3448d9411dde079a2f7f93edf196a255757e24eba42af464f723baed4dd2b7517b18c5c824ae8543637b47bbf3bd4fbefc5af045f5f20733605f1fde73fdcec0cf9beb203fb3edf19d271e914d76142a7b8ff81f6ae001dd7e7b90795d8d09eea55ee1bda3fbca1ad277e7453101d98c5ffe85823b3c1994e712699ddbd07b3d029ee412cec3690268885aec42016fa5723c1984e71a775abd8409a600c8c8158d0ab20e8d5e83b99c737907bccf72678c56a82433ac73d9eb556740e744d100bcf9b60169dfb6857e8544da7b8ff60d1b9cf80877f5964feb9b96f2589866174e73c17e90c6de8dc1c3ad77185c02cbdfae6de7bc1d605d2ecb8fa97c9ad2491a4370329fdcc8fd6fe8d9bbadf7ee6474be4b71648f23baecd32756feaa09b65eab8a900fb4fbf63ffe9bb3ff1f3898eef1079133fb717e1a6ee2cfde6fb7fb43e5d99d229ee454a96726b03f9a98e0babb87f6115f7dc879b248f4b9186295cc10d404a7ce378abc6359026ae918ff56a247afde227db2cd38eedf76f7e6efc937ded2ebfd95669a1539c5602e8d229cefbaf0541748b4a1015a2535c7e51e97deff77e5a802eb293488f358b447bcc75be2b4155a7b8ff64208c7f32992e7b5dce9d481e674e04217b1d1768902351c704b27b1cdbcb5dd77135906607b659a61dfbdc7e7310b655dcff68718f353bf66ffcec4e006b75d0ade25ec75671af3538b6153c1a639d3b1bf303dd7bdc22d1f4ea47e760ea6691662fde49332c480e7c7dbee3ea388f63acd2fde8b31123de39d3f74fd242afb8efe3fa144cb8c6ce7dc95542b92fbd4a4a705f5a42b3423212167a85a7c001ad734faa6dd6d6ca1eaeed2a7a48c846894eda5942aff016706c52697e4e74ee4725de4c5cfb669ddbdad96661ce731c1e04179cf864df0b6f548b8fed9c869b5f6ce4e6978adcfc609d16e4159dd3ab50c73770c273dd4048c7f5d96ea0841b8cc1eb3a2ebd32493354af4cf0f54af5ca04631d207a85afd077dbcd8e908e127b0bdd3c71dcd32037b2b0e6c1cc0d05a981dc37b2b0e6c1443390f9bfb1fbcdeed96ed7d0bbf7520fe6a99e137a85ddb016be18460bbdf2ced0bbdfacb20dbb89825e7968e8dd7b500ce37975efbbeec53d82dd6fcd0ef0f156751e3791e81d109ffe1d41d23f10b8bd4322e67d579aa2db3fef73b946d037d07dee58130052d72460ffc67b80bf7759c456714fa26d1638035fa0aee141c4e6b155dc63cd103ac5bd1548fd18e030a057dc0a4fe104cc09cd0263a75ee1297a40a271f87d752ecb847433bb9848bb9999f8bcae467b4934d2157a85abe8dc935cbdd2cf3d36495890b2e8dc16ba79e23622366b3ff7318e0c1d64cd6115ac823912be9e7fc4540c8109af8f70c89835c34bc50dda20e2049016c08f7308322bb3443d6e25fab5b6efca1ddad5da1e979cb8479c004ecbecde1444d83b7e04a773bc89edf1163a0bce2e57df4abc6d95de9b0aa2380233cfa1ebdf35bd6243afed9ae7ee9af9e531240359eb62ce190da2e8a1410cb2025fbcac3e25839303570e52f0291310c4a1102da0218bde79ffe40361f2dc939bf5f1ef846c81892f3cc71dbf8956e507820c3ba622074e744ec754e460069d851322640c12c51260d0e9eed5755de7da80bc579c210a41908210b090860165eba0854f04580ab2fdbf87b8210bcdd2e9987d25810a170b4b087a61e8691b38f0fb262f4872641142afcce72183e56508222a60840d1c6f3292df278385c545cb311c7aa5bf0fd3ce8c5680882274cb080cf01862870330ab43a73e1396f123532f3672804843eca840114460daf87d3946c5bf0d2f0c3dfd8225044924e8f47d26f0bdb7a1571b04f7eb30f9d40e0768165603ec050be8ed0d4422c96ef28f6bdd90216a2448a7c4100cc310dccc71881a09f3626213ae6d451a9470b54c3b3e731ff9337f02bf8f9c61d076d8e0f00c6bd2c63b786c8c71bcb0397f9944c2a9a84fe558d2b109d9f1a3b008ae418af06a7bfc1f5c03c479cce91889f1034bb84518a13fa5471012b9068f0f6018066015fde268828418a20806f0c835527945bfe6c51009284813d336a082ae5f93c50ffda0125d3f7782ae7f0b52822292d0ef02c3f8c02afacfbca25f88ce335d7fe8f60a884420913bfc829ccdb1e1f0fec5865e6d924ee1c8f14f22e1f8efeb90c02afd1d89747a1d2416d2f7edc7af468b57e0d020bd0aec17d8fb3e16dd75ddc618735f4aa7746a45227d1f37319873058ae09173ce39b57d262413ed0141676c6aad35c65a47c61b639d75ceefcd72109d4aed54de3be85eefbdb3ee74f7e59d73ce9b06b97fbf7ed9aff7de2c1471d03610b9c72620f87bef6d83a511265de42ae0e6ac35c622e707b2b99e70498f8675ce9988ed350eedd2cd179dd39157f493e05527445e314742b8c610a3aebfb3c93576e4155d83475ec11ac34000abe4d5a835a884aeff9363083a7e20c41036d89163d0f57b8674581ee88c83ae9fb344d7bfd194390538a57f7441d72fcea0ebff3a2e47918b90879899055d7f46015671400b7446f54af7ad2402ab68949bfbbf37b7be7173ff7ece357f740900b189c030dbeb97c07e10ec78a35ee5d9b7c320706890fbcb8e71a7e7bd310cd62fa449f3dccb8e43ffd0390b11b18989a97075fd386791dcaccde3ffd4668d4ffa375f64436c96cadb7813b73030765f3c129be5f9ecc21d204ddc04772634f2a11951e8453f73129d664a3d4e25548fd2c89f786924e2aa108ae5cd2a8a2da1f9f46749e3d7e5443dd16b766760bd66376f54875673d6ef8b4e338b8476531acd4568527eb3ca43b39c2df35ba29eda2f442adb12f49457ec86f06b922a714f696643b935c9e8cbeb57ab211efa6186a33c7f53af2629df632675f2ad4f7d7f5c966f66b7c42485f798212939e13d4848f8ccff3f8e19129237732af3bcc7cce993087dccf7389df80ce9e55197568e27bd0f3323236fe299d327817a941a9bb5e483aa5dff48d3614f546cd7291fcfaae34f346fa7ddb41f95bdf12e50b7eb181b77c667f5b43d7c8cb4eb7fbb666d603e2c8d3fddae837896daf5a35d6fdef3c37adc8d1a04f7a09bcfea6937690fbcf36eda8fea61376867c37ed2f5e59d76f3515d2078873d65788f19d127118ae13d44223e33e6e0a78f4f4bf40af8043c8f5fc033e0c7efe107de6366f449845abc478acf84e1e8477ca6137291fad3005f803fc0ef7804c860f953002f840c192f2f2f2f62f153c68758efc24f961fb97cea4baf7a17bff2265ff2278ff229dff91b6f6e940169d7bf00b5ebe7f176fd0a2079bbfe04b05d7f4a59a628ea5699bc246f098b00b5ebdf9176fd0770bb7e03a05d7f014ad65245494ddc474bd67245bbfe01b45dbf00d2ae5f08b5eb7729cb75ab504c3e2d51cbb66c4f5c00b8266b106bd7ff52fe5a82ea58bb7e20d0ae9f55966cc99ebce56bc2966cd72fa3fc92f48757bbfe5649eae3d30a3ddaf5b68ada34144241d94cb8127e72e8b65dae4d4b42dcbbd74ff1934b3776bf9cbb37774b4bd01417dcf6a6a474e96eb9edddd42edd2db76e5b876e9653b77643df15be575a747553d5c44dd9fda26b897bd536f5e6e6a6bcb9a5286fee93373b54f526b7aaf80c79c63cf926c7a6f80ce7396f6e6f0a9fd96cdedcd4c72d143ea3f924503fa37973b77c46fc245032ac4a07ca47e021f044bc047e02282e7f32e017f00d7807fc036a3ceb4f04fc8e4fc02be079c4e4f8f3873f5b7fd6f833000f80475d5a3140bc8e3f81f853e6cf983f8778027c01de007f80475d5a3af809043f65f819c3cf983f799907e2757c0e7efec0cf163f6bf0b3c6a3bef53f7c8e87e1270d7ebef093c54fd6a3acf839839f32f8e9c24f974f89c14f153f559f8af1623a01b4eb9740dbf513f176fd1158bb7e08942a948796a50c4a0ca97d50203ff223499224c98ffca0407ef80924bac7711ca7604117ce405241929c4ee7f9d0873ca4d875381ed1e3f1783ca487a48224f1f77d24497298c87948966536cbf290cc6636cbf290cc7a5d8a862a623c2cfb69623c9ef779c48f0d8542a72e56e0d449ec43f85b699eba11a73eea6d5303696e347cbd0692b33d8763c4a90f09351f3b62e9f5934e9d536636cb9c4072be09cd737813e810cdd2c86479c812a42c0b2918bd1990e6463b1f7adc4b1f9a488f3da1d804d2338e1df971bef462a9f4222f520a3de18f1fd98d65ee9cb034964aa552c9837b292c3d4d203d6287099cd08ba1d0873a1d0e133aa15028140af550c904725482c8cd86e3429e71fb5114b970fb916f747b5e2c37c075f15f1b15c5961b6e340c592bd63d642bc16db573dc4642e7361d4342e7c6d0b9cf41d0ab1d84ee41e029a8a08b4f83fc645c178e5a350511867ca39c8d7248de753449927ddfca0c6419877380f3744fa789f1701bd554605666220c4b54d1b9ad44155e26e3884364268ea9d37dcf6e1ba0509e48a4894e712f869bcda6d150e8394d4c88c322ddb9df36c0abbc53eecdcd44e75e5c02a95ff39f37b34c26ea8dea140ef06a9b00a7b8e75e549a190821166e0d7203e9dcef94db4b74ee3710bde24c5debdc7355e89ce7b9cf58e854c34c80577a0b9ce2b41632e2eb2d96d042af360c708a7b71eb9d14a499619989b0d442748adb1ad5294ed7f4eaa5508308c42590e37f645b538e7ca758458b5148c45590a64e35fae1ef96743913302bc7b08ac330527044900101b3b26cafbe7c84ce7d3822991bfd4c32f49b655b1acbb6b4cd129e12c80c88a5d024d3399f532f7edf81fc54dfd0916bd28f48dc46fa2c2b954a5a20bfebefd358c56559a91493db409a5e24ea1ff516a255dc6f2bc8ed45cf6b34df280ec8ed45ae751474aa14e1bc298adb8b6f01f159ae13455276393fbec829354ca7a55e42a7b8edc70f750ae3bc8deb994e711b5542a7a85e859dcda6e39d8ed91e88e1c9bcea95899bdf4dcf751be5a6e945a2a9cc6b8e99decc31d3e720e81487e224dfe8834efc536a80107fdb64690a80c8872fa237d9dd3ce5aa57a9cebda94cf51cd32b1189443e667d5ea46e15f7a2e73431a22dd537a0e9a620445ebf08376d1ef7f17f7499f861090d2c32583a16c3110d5addac4d02ace25e059d7b1874eeb70dd4b56bd946b10a9765b292e63ffccc2dcd46732fbe3f0bd1939b7eed0c6cdd885417c9c412dfbeb0e3f31a7ee6d6879b5e706c15f706d27c99c9722b8e42a49067f4e2e8fb2fe409794223d268341a8d469e90e7db88b6df6c5d87b33df9e4b6f9365d87b311e99c3fd1e69b82fcdef35bd6c478beff3e8b4a204d3a84d029ee35bfefc09a8668f198912fe6eddb2c0d376d3eb7cedcd288db8805cda624627b036d14c36dc402ee582cb32b0371654df8e2366e8d11a9be9d800c9feb3c97614aecb473bfd10de4def9ac0940f81b88c1804e71a1c73dacfd465c430f9028cf3b60cf868fe20dc2103e0e8d359bc7a1471d6a9cb085e814b7e140a4ca6d878d8e62c811b5133a95eae3866b3ea08fa6c47b7c52c582340541bee73de4c67d879b240e37c98d26716c31d54319ab53dc6ffc02a9be3d473e9773ff3e92fc48f2b72686e42fe4b6f12634af3541e8df7ee359d64529c8eef76bb3f210ade29ed3ec56716fc5735c14b82791645bb34170c109cdcac88efb570269ca68366d1eb734bfef806ecafccae91bc674abb8b773db09c8d7e9d668fa7ddc4b81854ca3f803bfaffb4daf3c6e1a91bfbe679e0ffd79d906611857a0c4cc164cc00533501185904d530214f06c868a2030810a23bccbe512410a1d3aec18bc90d9d714e0a0ab8083cf07518fff85db87d9042c85e03a361438b5dfe4dbff7d2492d6e4c6186f5a672888d8c4fcc43af7892f23906211766deb1ce7a1dab91ae014c77569b883ce7d976e56e8daaa1ae05538029ce2f28723d8361574eeb977abb8dfba58e6be8b406aadb5067514dc772956d9ef2bd7aed0596b9d7b58e73818075f6e839166e8c27da5431714c8cdd5b90f673e7461184fe73e048261f47702b205663883fec9bbcb82884dcc0fc6bdc81173409a5fff504084cfd629300107ec66c74437bf0c4be24dc0fe0d05d2fc7ecbc0d6cd2f3f0db2db5ea4418e6c2d746adb5c3ab5fd7e756a5ba26fdfc1f4cafc5e7dfb4e89ad63a2afccfdbef4cadcd0aec4b6b510f3b60489ee48ba4603697e68dffefbed3f214ae8d437d237166c42f40acbfa467ae9ba2e7ff937f86dbcc5802d89b18c06d9bd70ff7d24d9bdb66a7b8ee3b88ec4711cc775b0cdda96d82f566dbf2d41c2dbbffaf6b06dbf1f4c7cc31176de8f33de7a6f2e739cec5a4b41f4b66dfb1311ddfbaddcdbb66d782bbb0f6f7cf36fdb4a520adb1dc8fd9cc8260acfd35e57b2e894ee3ccfebb87208ad77f0e8b86d7bd129161eb2afb34f3841b6010c60f8c217bce0052bace84217441f88391073f04413627cfe304bffc67f90dad3e47ebd6916d9da3a3f212bc2080c14915355af9c70750851841178c8d6c4ec6cc4a63529ceb3d8306bbcd098d1b30c1b317a56d96ff20023a5e713eacdb18f7c7e93fd5906a5e7fda8126f95e94fa5570ee920b89981045ff27e9107bd74d0876c6c2ed7c82f190c935d805576566287b689e7cfe8ce6b0e427e02671de4d4fe4f996b805399efcf2e10f21a7f7f564203e2a61e770ebde88d26f941ffa95e995b0f7133ffe753c4c6e376dc0d97e6949381ac49cd8c83be5f2ccdcc83bea1c0437a0673f68187e02132d0d802ce0459dc2cdcfa4edb0a72ff26eae0f3ce9bb47db003ae6399169ee058b069131e0e2082c7bb5f90385b1e0ed82f740a6793fc5e4c6d4d0038dd44a7b2a6c39a20cace5f6c2c2c2792d539c13566e095edf9fc261866f3f93de50b29862996541364de6399714af3af3141d0c7dfffb2593c489bc383d83aa70980ee1b8eb18a86bf2666e43c366b7f216f41ce6964724702abecef7ef0f6fd427fbf9f457ffa7567b2eddfdc06fb3c2d8839107d203e81f1fe026982350c13eafbc12c300c06df0e05e7d0a500a7f69ba16bb3c0daee528057a01c302807b0b6b9bb55bb8b5ca97711c8bc697bbbefc895aebe7f2b0b905b9bb6551bac7568cddc5e6adfb903fa4057afb62ff4fd19d068aea15d7d739c15de3739758ec32f0490fbc6f18f6ddbb6e7b89c73c6b96fb22bc83afec076f6803084243aee3ab6c3d831875599e5c9aaedbd37471cbe795ae19cfade34e9d89359448cb98603f2caf65cfc909b22dd241fe4a448df341fb98725722c9257997773d5372788d8acbc6527fa0772f38b9964d79ce6c449cfbf7d8ea5f8a0c762b16dd3c4ec0d7293474f7d1f4992be87261d2c8d48f5bc3d7e65213b403d0daa40ccb90400ee23175f40eec79f33aab78edb5a20051c3e22fecd7f1bf04d71bfa63c62f31bbee11a18c1373f8fb8c48f35afc9996b60cc8f457e44e64d606e6f5788a20c1ca0573ffafedfe4ef2d6e1a7d9b2d9d73e2edbd5fdc7b9b3f7aa703761ef7afd3e9743aa02876365936e13da71445f1f3c649b0fd0cc7715cc77dd7711bf733db87effd4cd83df879bbdbdcde685ecce3f18c5ecca3f979229ed18b621ebd7fcd3da77cadfa50187a51f379f03f9a079f037e88d35abfe72da0f58bfc08116f82049f9f093fe127fccc903ef4097d4e24cd977e66e6f320aceaf0d02b35a54976116e1ac1e21971d3c3b91fbf4402b16c58f4a449face89de4cb17c2223094a3f439a017d89540a9f1402fd0c8955a20f7fe6f333188bf47f5ee36387409fb0d42cddeb902c83884db4d61ab33c375f5820ffc6fd11de9b67c79c03a5fe3dd83df71d0882a5891f7c1c1b7feff1d729710972fb2e6f47e4927360f722740ae31726e647786fe6e7bccf8f3198f9111f6f62bfc7b9d72adc5db1c9801c62b3b076c06f96f7dba75ee855e7376ea3d1b796be9127a1caf69b8dbe7de6e648ef2e8b9ce731d03daf3503c89de367f7bc3944f7f0f1cdee3d9ccd673e3ea743724aee35b0f13809bc9ff9beef03bf07413ce3f19ff15ef3e1cf6838698f2107bf2f731ca7719bf366e211db9b9c7e7c847ecdbbf7dee3f9888d63ef379dc2de7b20ac827fcb642e7f78399f41c49bf57beffd9bd6bf6d4e9233339afbd85907114df8b13844c75c8401a99fd42bfc1af8d131d7c08330cce61c2875eef5aafb3a7e04f76d95fe8e53527fde2afc3a88b8fda8f558be4ee9547e91d363995f46ad0100ee9cf320876be0473f22e43cf8db6fca23381c0ee7700d683e73fde3efbcd96cb4e61ad0e8cf9a37d17533dd7b5cc7753fc3bdf8dfcf88de8720df36fcdb8fcc752ed828209af831deb8002216a5a07e9e82ebf514665b6ba7b637313ff31bb71aa499ca322ac076a857a8444a565616355468440600000005b31500003014140a84a2f1384e823856bb0114000b619e768c6ca18a9318492a860c21440440000000000040102400db9e13fff06ff00ef32f9e650bdc8a613514882bb9e782ab893030f4e4ea81fcee12578328e6c67af0e13d7e330b5ddd3857735cb09980d03e127947b2619609795f486c77af86855ec6998f42aaf0afe352abc740fcffac4b1b9744059e2df2603fd31efbd8d6eeb266596008cd2d15b9b3c0b2038687dec96ed8025d1a6e0cd880817634a54e02099bf6117aeeb7df48e2d808e097c694890203b78661f49fe05414313d3001ec688e4fc66608985fb4c1d1c8ef16ff2b666461c6282222612fb68310c957f70135b872ce0ca00a8094dde414465f032c64fad93f23b163b0deafd7bc1faaeeea55d7ba5facf54a5418448b164b469d90413e93db8d8d8310543fc0db9dffe85b7e1c001fd5b8ca37e23c19fc9653529baa90299f23577d962fd2b5717a68211d44c081ea0e243faf8992df1d811af7c967b86ef3dfd07aa16787347af2d0a474edca6df418c7a2f066e657be3835516bf0e16a1e33293068ba940657a17bd0c96da87401e010f17ce8716bb67d75589d21fd26d9ebf84bdf8549286f0f4f683812402f9451cf8f6d5c1043091af89a6d3470247bc10372902c930f6884fc0ec8d7e3f6dc57c6939e3dcc8a5ba51d6024851e8e4760d4be5b0abe93740395d90cd32e72ad1c90f6e4d5c11e0d0cbf7cf908767a616488563dd53abf1c1c52fd794daf6929a8ddb66bf2eea1728c8930309222becc52aad8c2f341f059125bd053aac7b684f47471251231dc7b0c3935a226d271d50ded07986b1ea25a9453756a9ca1163fd5daa56cd81b78989e7d507d12601a16af3060cbf070d9ec96feac6f61e06c6e2b590247dd5e7faaafda3c8bd6afcdead44ac776a876a7ce49a847858f2f59b08079ad8ad4f631bfb69b84c32bb0e96903dee0a3bd8f307820ebb80ca67b10f691d53a44c6088cfb92214d7c8360f324bebd1ce482c38158efeeb7c3c7a966c63efeed402e5b576ba45c6eda872b3db735c2bc9bfdedcc6bac81fa60be00f3f22f4c2515db28a78cdd78e58baf80e2cd36c877a21cc696042409e0506233c43b5d995856d2cae72665c60bf09b02c9194918ca1649ae9c9db7883da164b896c796eb9714866c075661f28d149fe0cb4818898f4b880f2d4cec1339a7571acfd3bd811626205f5327d7074de9f3c429b7e3c2046509ba71fbaa4fc279551ff3c2e45bda9fa46eb32dbed4dd8630e98b96d391cde8e912cebc4b261fd5d1f9166bf5d498e1681bd252de6d6d42ed6e90d8c40975e9a21f638d6c5816fb4c7235c768803d9557742b1261671199e5590ab85e021de68d180fe160bfb5e28ffa60ee625cf6f42efd3abc98919b34f48e73c48c2473a8ccc63308139062c3e151988c9685efced26d7ca81ecf2032399815b01e41b32740124d39f74c4486d2aa97721a53331f5c0085f31d234ddea47fb68e9ad8daf1777bd69a6498b7fe69b010a3978168104d7543a72e94eda53626375d3aff63546313fc698ce25701c2fea7ccf03c5db10d7af389d4562462d3950aca59318e2da04fc9856bb33aaf912e2ad29501edb9efca878fb53faaccaddd6f5562835adf3ac1961ef0f4aa4702b12e27f26e46007c71af2a1b1d368424a76102f37bce360b60b686a4b930e771c0046cec00e159926178c76984d14ba2d4e6169ab3ce4a22ab7e1f34a6086db832ca2d4560be6ac23eb5cb4dc139908dcfc4d8ce198e8ec1be7ac92f751e451f7c284619815f6c006ad902b1ac1cc22315730f29d4ac08ec8d77bb784ed806b0372b6a9cb95c04d8ce3086a1cf1889f9921ecdd4866e2f5029997956461a79da4e30942260ee4fd29e1a3d667ab241ffad6631003ed9f7904ee44ae40a6420b65c446d784f36d427524f815168d5b1aea79ed2c07779873483e7d542675e522cd1bc5baf6762a43456b49587140d8ec93cd20645060905f6f910387c7c836294cbcd2894e9dfdd4b8eb6838a9c5efb31e2abdf37458219f45286b13f1c61cc19538fd842f02fc96ac745472321bc7271ff994f7dc72c2c024c7cd5915139682175a909b329cb9d30dd0bf4e3226ae42aaa52ef4196cf1a632497b0f928f9b90e5174f8b454b579181d5334b3f037fb09692b596ad119bcaac86547128d2d873e4eaa5d9685c119856e3d9b55986d26883ccf6e74cddf6fd318f3fb842731f18c3cdd1654c4ecb276bd28aeb8d56e3f6ad5e523ffa2e48bc0bb3c9b23b8b9c50fda279859832e47ef0260db5cbaa326f66cc2b9b97c0756031adc77466d1c259969f3ef0d9bbc744e446a59c5a8bc534c11a70ecc6f7c3efb23aa4b2a26228561ded58744f9e6eceba91e98545c4d28bb4ac315188b902203ff3631876377aa05b4ea75b41fae1c6e09019e9c4104307565e2d1ece13c991f3fccac364bad2a3cf00027b46b6806e66a6b8d75be9b5e552a405fe2c4f132063907ba963314daf53ce7d5221dccb4f09eafd174e2b5481a6604604eee88fe43dbd968f922121e3b9d21e84d61b4787f6ca70c8ddb35cd8e22d72b2f974a500862ec563028102e77e211736b4dcbf04c6ee8ebb83d88d5840ac733d3ea4b8abc933f33b76e03a74898bc49af0b7adde68d689a386484bfe41892349c6490cdfa1d4c520653d2afe92c01a4a7afda51cd444632c32ac147c6dedd467f843a2ba190b36b5aaba293bddf2e101876faf3e29dfa14010d46975915b0206661b5fa01fdc1a9b6ea0b58623c578550ca40b9c48c890eb67cd4bd2176a9b85e9a82183f25aa37deb09653df7634a3ed633208588d5217e2ca55c6ee4e1b15c6a4f34b6db66b268e5e8ad4030f7b7533c3537cfad19380367124237a320b29332bedb3c493d2be4102f016815694d661189ace63bd39525f945d73f53dfea72d557c7ee07200870b93b18c7958f773de706fc0e121ff6d8e9b4aae1e1010b19193072a94b3ebdb881e561dd1dea6ace43a3f1038075c4b023b8cae5f10fe28bab00c470ecd443a3a1ba13496f911db76be787fb21366ebf88ba0e0fc7af538d53b74b1d1c5d60b7ff677548a0ccb390cec28ec5954815df81cdb6c7048a0590e935c7d5c4384f873e094700400d0c3d70a30018ae05c55325c2b20442d89c41bbe77f8144af4f31b8e6661a8225b00b815f93209e49a2babdf6367eef7d1072c5561a9243672dafa5e1c51514219173bb38e0ad6e904d6b32107bb114a7e62738b61d3518692db266dec28eee97a0928cca539dfd19f33df709395e7f53c9b003728ba23277e60d1c3c3564b4ec4405704ad7e6e4e51d5a07ee7143ac986608ab5b0224ac9917bca3dabdf192eccc897df79bafe6ad82af06a4ad1d1ab90b81fe91f4c8f56e27c2b1d29e8938818152f7a162e832e098be4088007e41ac58b650c455ed2e4c89fca99b2c75b780148a9e34f703ad63bcdddca814b0645a72b03cf5b889a45cbcabba30343bb7e3121737e380592597115d92ae9f2e4050260d0fb4521f655290336554a3ddecf76a4723fc04791e51a64184851ae8453f91c35d8161441e1d2ce054019e014a53126c291c22d279723dbe1659010dae63083381ec3bb7bd2ebfafd2b3f97c3346220c3090c0d114469504e098d9bce2512291f1c6740df2b908517217dd2f4182832729f0c56a17c4127b5bfaca188341243a171c0667236662fb7c88586fba9a85f2a6a0e09a74ca05fd9bf5608b3f40b54612012fd5b4210edea5575203f157dad2c03a17bef389d5034da1247538e2e5bf728048bd8528b18f5d41e2eaae6a945bf8f7d7f5de2729302af9024860649ea9e4252cc0cce8e3f380eb5c317dc0c26390e123a848a57290b0258f454b15d957f62d0468e38421d7e25a50afdbe4746fbda3cde4a1c7edc970991878a443143c6799eca91fb7439e0b2ec8d8983471386ccbfbdb9c8949ff1797b48086292b2c399c530901e3db28d6f9ec906691baaf06051a3009694d4744437e264e02376f0ee159dd2a45482a518694b3ca78752f94f34663363f655e069d2c827efe73ad776116cdd071b410052021c814dc535988ad48eddc96f9f23c6cd3a71e4382d6ac7553855c9965658c0426df0b69b91e2b27b93963c4b9120e5059cda5c8243c3e85c85dbb240c6eae62b03ec6c54cadd3339692ebfb8acf9e9d59482b580bfd72debc12c696b3782dabf4f48c6843c4df63042a47833b1f1bc9161cab4222102e4083a03ca8a3426428a1d9168f3591175d5117ba765b4d49ee0e14383e0bd295c1efe5740ec841b2e966605650cf27fbf16d7f5f287a52eb3b8b7272e95c0596573c5bd5e29a8f841c5152a50b3fa581d671d379e083e98615542e4b1806e1a20c5bc9142d1a3b4713c862e5dda74385026144cc219a41ecc047427134ae1b6ec2d2eb4e3a518c9372fc6ecaa80b0d1f600088b40e666b3919dd3fdaa777e257015b3da5eb17a637482dd90768d63be9a54657f143a50f42acaf729690cb85c9b268d7eaf6f82060a154e291b63a558bf66968c86a8f1d80c9a68212299de19d89372560f6091d58233f47dfb29ef9dcc3d4a545790ec2cf93013c1af23a38a065af232899a479400469c928878d59b7361ae2214cf0fe31c132054529801649973992f9ea2a63834d917c50aa0f192bb5e9c4228bc46709318a46b24381abfb253f93530e31d3e56a6d59de444019b27c6233890b9dd657600cee88df9fc32501541ea98fbb2cfc5861945ed23830eea2d4d330c9390aea5effc4f3aa80a821d855dceb1b24f64899a13c85d7ecaed0859e461b9703bc40f2bc45c4d3a948efd171cbb6761818a7eaed48e353b303e7e395103737500039cfc8cb61a8c1c664c6c684b5d12ea323934db840242c37190c6c81e31650c4f26cf8b702fd232b9f505d127a24b7d098a9f42c38b746dba1a4777f24d8289bd0306064c8ebc5715281853076070955372be7c18ffa95b7378a9c27409bd8f40a02df11ed1ea53d27d2afeab5a3050395c8048ad86b53b6e7f185036a753197a6d0fc678d06d0d56fc22f92019a276acb53d0333f9e9ce2e4f47b426ee4a48aa559001c49311efece1067209e2ae0092d47c0a8fd3c99368849f1920fc84d58d2978892d10ffb5c1d1d9bad6dcf8c288b8d53359e98f2464bddaba70d1f656a853fe7aa915c40da21df7b48f82f93844b4b965793b6c1b3acc4579ca26b9a48363f925cf6cd9a25c7da57fb5b5c98409ccb300cbda133c20fc4adbaa104b30b09c281a3299d44b7ddee4668f9c766f0fddffbb8e954f58e5e170e704f121a41c47c16407aa68cd8cb5b458e7b5ddbe5f4ceec47ed9b6e18e2f97d43b3efd979153e923cb5f8796c0bf3507da18112ef21b17d9123bbd17539a59d0a8b6813d5a0c8e5040152483e134f86fcbd107ad372a0389ac5f411438e8be0789ded96e22148593c00bf0fff4eebcd718370ca049ababaa2286f4d9a85599c0cb60ebc1d7bf57997abe96e22b0510371bef22d50dc354b04af9f733fba6e937deffb5a924da2e1a74ccd1430c5490be338a4e518f711c1c72d565177a312d24cf3d45709425a0e12feeae9393f7109bd726e5daf75d67a94b10691f929a3cf1cba53d08ca3741ddb1c41b4f4ae42ff5c1be5d4f039ffa08215a957c074e475a1bb2f2894bde36a359ca4c44f7369c6703c852f95e28cd6132e3327e36c2975d35b182c3ec5b2348da1b188d923f657afa6754c51e66003e4c8a9d4367cb4dee347514751bad23af3cee1e90590530f4737c7088b5461249a030bb5a9e1ffa5e611d04eae9c3a2b2714339ed6a2ccbbe0386d9e78835cabbd29598651175c04316995c12bd6a1e81d5ecf60c4502cbc9a9229b7bbd87cee0491079d55ce0c894766a198ac2f9161d442d186799a99b0f2bda7f5546648ce354f1ce673894c11414dbc740cb8629336f512362ab027a6eddc0100bcf1a35a2e472a74050269253d6f96bcb0e920be00b7f615f35bf2a53d311541b0a97b951b948cbc7283712b944084d9c327d54b0b17d326019794863e84c11bdb6ea2aab28a3d3cbe77980493e79f06fa07441d76337dcdc29d0c84e62aa8e2c90849183016fa4d61ee0a083490d0638ede345eb077e4b8d447de0d34f6ca79fd8423fb1cff47b3421c323b1be335b51dad37edc273b7e7c3beb65590b1edc0655eefb5a7a5a9f02f38a08174c8807b1e705caab4e9a2c93a5357516cb3c312adbfe185c28a5a172d84a8db16a43109cda6587dee286031a2bcc900ff598e598e774a0099faafa32324b955be83aa3dc1f49239908f1444648e79b46c87c195152d6baaf440063b7ef03450c397580bbb1efab04fbbee62ce7e98de1ee8f3660270f65cded241840071e25c854ecf04c86a1daf96f20c360a35097bcc79c4f0e322f665e64936ae09026eb0fb0b32a413532ffbcb4032037c3ee134e7daf61ae532709dc2cab54cb939433988d219f60a897d895f7cf1618c92815b8953cab8550e2e7584290065b79b3f6db6df56330cbdc05570bc114c898901441911907bfbb54ff655c5c67ebd0b20ba89f2b47e0605eff529963f6716a0200c5ed2621ce479401ad1b730a656dbcb3a23289335032abed0b758a30764f928760eb208caa7c845a6240f146d1f13b98cd24f4c155ba5f68aeb29dbe87647adc0e758cd519024a3bd38d8ef0d3f8fee9c760109ecd30cdc8fbed0ac52c95d902ea4201cc1a87a5e92823d246f0ee309d218ebf3e6a51c795b157d7a01fd5b92019d03f7b3c41b018f6f0fe69396ce95d53ee9067ad41242169f1e8e761fa1a5873f3991c5a8dde3da4c45fb8a5577cf9dadc73fa43c0fa5e58e8cd31dd978f6d818321f61d4f38a495ef29080c91cf4e976e2c85c81147af2c60189a77acc50550947798a8ee1091b3cca9452af2c4c0350fd92be50ccb4f4a25ad718c49ea2212e4f8a4848afc56757124354ed2026dc3408e57c1de767d081c8960092726eed8ea516081613471eccf36e96a5407f78279689b06419b9c37b49714b42aa146c90c20f309b04cb669bf424688fce82d0942bc7db3707a87babab6e9fcefd36ce6e080219acd03e3d63e4df9fa758dbd76517cbdf1cbfe163402beecf75730f0738e9a07f07dbda2a231d9ddc54031d4c3fec45bd353cdbf92202c1646e17e0a6209e8e978a482b0f84e11aa094b9206e33e270f11a953365c7ea2ef8137229f005720ec1fa9608e1c1c6e181df57c99cab02ebb1828966098c5c78866e1706444cb40d9d4207cf6a273adf74e3c4760811295614449e34408aded1159098ce9259ee4b5edb8518d4ad0d415196ff83d8c9144ba9b3a247f8711a78511ffdd1c2f9243eea29eec8476efbfdfa3aab90775a0dd4ecc9267e7c12fed658feb70bc86be04f92d53656f484c936211b2a9b777b615533b8e50f4d399e6f5909aa8936758854bd263dcfaac1bafc850415f5669646af026bdd3f2a39c8fc6c1a001d52995fc7060bee884dc1c9a5eb54e5623aa6543269e733949f0cab171ef901f6213529c9cf7f3937783d0147e9cca037dbc9a8fc4f06084949e98c0040f38d4d9f6b97d0491af81cf4847fe1742763dbbf218f2d18e9b34e8525f5c07cbab1ed83a45ad2481ea1326604aadda8a0918d00a3c04169fc67c96b69324b5afc002508047d439df7d737d0b22adbfb1526bc6650aa443e883954b8622d952c1e82b98a70d469aa98c3862b7fc2339df0af91e49977346557f7fea50c23868ab0804b09c358745ecc31371c037eaa56dab48bc373729a2a5d57ce1524bb80bc00d57b667518d08b4068686e9fa54e6dd932b722aebfb9052521721d81bd5008c811f4c610623f6b2d537044a939276235ea0ea2f94cf9f6f399b759bd13ceb43a0129f6ed9789f41863723f2e89f1dc6468729484f5a48a0ed2b4b1fca4d06df379cdd7d0846020aa7020bda90ea9aec47c8de1565b9eb2c84684c89723b4e7fc4b6e1fe3a84de6cf59c60f551d4a59984a0bada207ac5eb52a5ee20220b4e392549b9f7b24d0a154b1da2db5c5727e134bc5594614e93fa56c7fd625766f7f5ad41608f19833b446f2e011b291340abea291b5b75c802b2b2c3ae08ed11c888d3bdc35a0e309a92ade069886e1517f63078770ee9536aa4b1a60d194d0108a7e1c00fc6c3fcc25c3b28dc66c7f6831e336a480cfcb5601b3c0181fe6f26ba8b6829eaa0bb6dcf9fd5521cf174d52987d92762913099ba7b51432410d71be73a5faaa485a613d55d56a96be80b72f278dd703f455a000ee6601692cea8d63739d0559066dd99ce4752c396b66759b04ed0ea2edf7d9c5b1870fab4bd6fe7d37df77c9ed869cef6c3c1e03a17e0db7faaf8c239289819c4c5fa44fd409a38d6ec37e0b894cbedd61d6cd3ad0c6697aaa37488767998a6d843474b559ea15cd16cc305876a834b8adf135d8a0db442ee63afe3fb1833651233f5d780bfcdd4200928f2c7b6f19ab3330ad00d347bedc3e6234d453fdc87542046df5cbe3bfbc17872aad3dc87939cd189c0d367f6d2e212d229c02d99261dc6f55d3ad3421ef05214938dfb79c9c2acc5e51d684630bb269e0b8d0e90c9640549679cf750bc2d1c11a61d84daf57c98a2bed1ab7c46fed26d8c06c2967687f4e1e20b4ad502c396a8bb07ed2cb3a4c014fa70cd2ca7159cee612821373ba8306e6f834e0a6147ea2a6d9b06accd4f25c2b025f369a520d7929acba7b6a89239d0b88400986d3a738eb36fb6d1204e0e5065772baa9ed42a4aac49b804883a82658a6a468432ca7e3b088b1a14841528271f444604b0168be20d2f626a5a5ee2178b3aebd0927ede86a5f78aca63547c2362e3ffba1705b3c861aa10e413dde7d83306d741320b03df88317cf39c9ac98bb6304f0ce96f883e673e6e556a7e44ec7df3d94fb5b3a1eda25c6ad40004deae429949aa8dea08843ac7eaee27e05cb55153af14272a47edf7d97a1fd504de2ba5d3a476f8640ee2737182aa5dd08f0f7481c1bface9cc265a97780c7a87ca5f1c96c7c0b1f95488a001fabe456594e2f20c37693ad8eae93193fea8f1afc70a0a3a91b5d522991527c36b5712abb11c4f68c161347f4417b83d264e9e854e2538c0a378c492ad9885812d1e45e8cf0affbbda8e6abda1db51aacb821741d946d9c680d7d7aaabbc3a8c44e27b5309e286a5bdd2b9a3caeca55b940516156b215ea181ba79b11eb7b6c7af286cbd837e015511c6f8c05a64b703c0ffcfee6c00967b1db0aef2ca2426defe0c53269778a7d66416e29e9ecd3ea9e8d7bb757fb7361b1a4bb086039286936102e0562c552b466d4cc0dc494d5d056687c62ac6f0acb3bba86db8c94a46b3e567c9a7b965674eec48e4beecab759349358098864770aa9b1f560dcbb41bf5c0bc0b81499303a4449211aed12907e6444d577b2354dc08bd57f7f4c9424817463a63be3ef275515a29e743adbd71605d098016006725352bd83a8784cdfe100867f42e5681622cea454c1c9e6389768c5bcaeeeb5a19997bfe58b7acf6ed8eb8e9bc5cb478a01b01d65c21462045eb905f84b19f4bcc83492bdc064cf35e76ad18706a1d46dd5adeb2318877a99bdbb55c682e1e9565f383bcd94063a02158fb1d784c18cb642a25ee66b461d0b416fe7c1911f60d120bc6b254fdbf0310ad52b021d42d14003878a4a165238e676fda315428c256667cc42e9dbb34c2cb62fd7bb2bc533a81d3c8d0fde40b650edb141b679ebab76978cd4fb1847a30b2401aa94027a98333a4687a303c4cf874c6c680c519c00a12ff83ef8de62debdf79696bebacce3bbd0e4e7797951a90bac23272df5a18bd90a519b93bf3485b317f8990d44e6928ea27d70127e7d869fcf1aaf7a7bf66a6c2f345a6279a6ca4f94ba9c61d79619c3695f81c0b81fcda48e60f0937b5ef78ba2d111bee5205a4866c24d828f8e07aa13029a6cd17ab7d3cf01d96b21a50a1c542db37e04b049d2cc51fa6be03d688862c36279bc6d26aa5d8a9713aa980bcce1723da54192f921c341096e3938f241a258388462acde99c670875a834af728af08f7a7beb56f40138e3f9c4d1f99aa19bca71caab82c6607a235ac722b1a9b027172081e458599e66f32b8d64ccc5a8e6fc5efd2b684b07539cd858f468bb4ba8260e129ddb8a225c5133ea338251d6d8e3e69a6bbe3587d09037f57c6b0b1240e311dac3daa524bca7b891afaea383d7d13fefd82f3365b54752375182385a221d1f6aacdf1fcb3e80e4744121ffb8cb5f414678e2385c915a692611c08a5c1c643c2716b5c395e693ddfe4e0b036647e3407325bd5ffef1f51c71553130c029b16af1dfc563c61ea818b4e1531ea03c2dc07c7358914f4f76fab4ef4009863fe5253a931082200bd40a90d5dd9135abc901a5010504dc7f0c7cbda145d1728e7f54126b38607e6b736e392d9ffab66b451470e7a643894f3250dbe59e3733a634c845c5522fbaacf89674b1ef9219f025f836705f5a4a4fb419b8035e3ae02532a5e886dd2ef950e91b3b101b16bad5a7a2ef3fc6b854a7b295af0c6d22ea11964ab5f8176c08811648710158c5435d72e7472167301705b990957e05dbcd82b8a7d2140e68a98cd7946952704096835e2823b15d3beb3463944e1bf6a0f8050539989de7a7980efe3bbdf88bb5bcebafd394286b7d1ed01a7229504ec4443322027d656f5078c3ba99bb55cee7bed9d3c72bfb50c8dbd34284efef9157477cb2b98f32707b8add82cd2a9314cd8a4c875982411100d5475ffcfe2ee8ca326b78a233479dfc354b04d72513c209d759eb1f56e424119642f407ac22e88a89ad36906a547c7315a1a9b1d2c001928c3d12427f41cd102ca5dc264a52d847fdf2ec3fee544df426398519076c9ba11dd1ec8037312b4d8b07b80b8fba8e38414a058c2a0dc29bff309e20d644fa311e683aa65985dab9e32d1aacb975821982303abb3fd236a4006b8cce64b1056d2dccc93d90cf9a12efb03ba7456899a448e45c6c306e94e86b19d3a7d8d622a295ea6110a2cfce77805b5b189ec0ba363110f947cc77b7e5022e995ac8690233ce0a0ea5b525a45570807a7e8c8f895d53e9a58268b9019b3ffd93afb643491281ac7d39f8000380790f1d93028f2aa1e2740601dc87369ad3c596fc15b0356e56fa0d65ddc5cc420744bc92418f8883402dce452a78b082030544a0f42c129e280e1a222314d5940b3b4f4bd41769e86b04d6ef60e3f3d5716819c01b55deeb144645f5f7dbe81dcbc17dd7be410991c296f1407dd6629763ba2bc12d8fe43d057819479fcc6f60a94e5c136877e20c11c2a9637a0bc25c9defb3e012c06759a628b2a664402ceffb88f4bc11565df52178c5884d551eb7ea4ef85f40a03f745e2ad9c83cfb39268ce2f36a11d6e73dfe7be362ae5b623eaf5cd2af9cae72a720cac526cf5760d93d6daae5c13c720626b548b4c17ddde7dd21bf994bb88dfe1c9df941e02a4b0cbed0c4c92a655f07e403b54c52c16075a173e1157650eb8b40a152825b601538adbff2e33f2ed6daa9614bdc349ead4d45beaae6ceae223da8652a1483a87de4f6a7a807ee8110691b73ad4089ccf543dbee391271269bc44203d98b1ffe482e1891c51ced70c68762b017df81b633dda760005212616cef420a89b521ae1c30234d0a21836e068dc950791cfb1daa4082b0b4b2499cac3cdbceec1376b7971f2702f611a03e46226b7679a1430c5960fbaafe527be128da5724facf0a69551a46bb5dfbc3c8617272b43e4f3bf5ce37f422205a9a6f40d406b71ab55489cc77bdc7f68d6538821c3f964eba10c35def3001f876a88b52a9e9bc9ca342a500d984042e04316858d2e70ab784b9fb48e4902c1b7b47797bea84796ffb1c9b0aaa261a13f42909dbd8f1bd311c2340643249fc25cd833d69d9a1129e9bbeada46cc96f1e7b3b43b11ba49593ca3bbe8d55fa522a628125180daf66ad2ef7b32a9e68598a1e76ec4df11f0861736c4f213ae07edb7846815f1e9d4517b4425be5ba9a23abf781cfe82ec45e09a6fd0b514d4054416112d1c3668ebe390cbe8de049423188ee439c20e820b80ba3e3f1ca22ff586d2dbadba8cfc38466e627b6c913e780c4d8648b5c13dad436e23ed47beea19a3c1243dbd0c229b7e67218c0536358d56240b3420c32c47576d05a666043953b0cdb270976599e65ea061db52f2b80116cdd2135f9da332643865b4c0ca9f8744917aa726d22b38613d60d6fc2d2d8dbbffe07967012babe7bed5b7e22acce9db81500944cf23e6312d683c4b2e185c24ac65d75430ef71be0b731c931009ae7d1bd20c2e6db458a5afc63f6d5ffe7aa6cb6857fb18049dad129b261864a003edb50976db3f8bdd127e51b9d793862834d747a477362e17e02321736257558224138fae5440ce8c9e40b7457d0044011768dc7428df57f0a5f847b4f47a697b8d53127f270e6a670ee284f2057000e4f4a33b847c3bf9d6ceb18d1535884fb87858c04c8a732a52395b834962b23ea24d21f62f09dccdc4841eb6425e37498caf9fd4281648b92679afb354b845301e0f8fad8df71a5a787bfcc8d36779eaeb3bf2d3f781fe567bef64e8490e3bc1ca7f579d3eedd85daa82c589b6567b27c625729d57179c75affa66f38e1c6bca8869f042d69bba97326963f1dbcfc0e9d957f9ea5229a5bf145f13f507f2f574e18898b6201cb68b04218796dbc535875c5316a796fb2b55d00f69853d30d052a62658c4991119a447768d624aae51aaaab1896b068873089c48a6e9ffae9d2da462f26aa0dd406413e4a11316680c5d9191bd93366ff22e02d8872ebbc202f4989ac64a4b24d6e987a363230427b1fcd62f8127cd025647c6585fc14a50a87f829e4013595202dfa036235c4dd701ccbd1288f94a3a0abcaa9e2ca61df74a1cfd7a3348420c6b306edf40504d828d1f561318f539d71f515b4aa170de8ee63dab54d64d8efe66a8fd4b25d4f7e7f23335cc98ca949c8f6c349ae0b1ed4f1a7f9e6fc5a7b2b7af7156d4e6fc1de1a9476f4346608b8b1454bc89078661093c8ead7b7785ea90a2c0a3c45632c6da843f0627af8a70884cf5e823ba95de33b631e8cb0db8bb0de72742a0ab99eb7b7d55fbc7480d1f9bc0c20469320c51a4bd0b9c4e7815788c7bc79d2618e53204940e5707a845cdcba1722adbcd464cc09cd86943aa8dc4c98c8646f64cefb2f38ef3ea8b3132cb344ed15756f0bbb77f002d9ab2f8a89f6e3069bcf8e57285b40e5e638ae6188698890e4a4b486dd9b2ddccae3b21583b2c7576d84a3f03cb3fa38832032c4d3fca9f2b48b2cd79060171f49607063fad4805dc1510e21a464e9146135998c3635abe5331b616a10a9b95cbdd85d5024587a30dea6a7c5c9a833ce3a454f3136235dcb9b2009dc5523d48b3a20052552040044de1a2a2b34a5174f61c347c31387a6df7ee104fef2221211cdc45f3731a9484bad2f4f92444c2f48fe3b8dfad2e30e6a896ea0a49328e22a4c18a4ebfd2a5bfac1531e4786e76855ec121138b8808ea64ceb6faf2bbff232a89d7c5cb188092a3d431da1f31701550d77456718d4dc637a6998335cbc9ff2527199fb93f2d6aaa156194e818613b136d7795d4415fab95911e702983b2494d8150531a5141067e8780da01556880400e0e19f4f04232e3f7a47a6a24c4b944904b7cfa06dc4d83214b301ee5039baa467dee1216185d105654c01b9beea167542acaeb1bc39ba9fff1ab328ea91377dfacb0b88a1f8d25aba72ba0d5aaf5021b69b906f788039827ce5e45e075ea3c0c8ec788ff6c54b768bba55299dd1c1096372320a745d032d451c6d6d985500c2f0a09ddbb1a3060367d3efffd1b8f33d501f3a5375d6ecc9d7e13e2d61f7e6cd46853661f8d47b4c8fdeab97a186c2839109a9e1506f84f29a2187b391211dc092fea9a504d2f0a6feba371792ebcd8a8331195996cea8c4c4a0034efec5b661d86ab81d755eeaf02069f31f0a8b52f023ffcc3906c750a5c9e22a2f7dcf7ad3db556f0f7df0e5a32aa840744eeb09673cc24abd9486fca90af4cc852ab553ac05f002a393c05581e0751710e04eee29c80e95616c419312b9150ee0bd75d6273b4ae9a1d53ecae93230e8afcd4787025d0a8e32b593eed392b29139806c2fc26728c905c2c34054f653b4392371dc2733bf2fe735d590e5955f26f27b5cf477f09c17a415b4b8d9861e203ca5e2aded8e6c5514f0ac97b94757c564afc8176b69f779f79a62d40a65ef7a7cf25ee1a3ae17f7a572dbb525fe957f7cdba454ba65a3380eaa07a2b3ba8e21b07e237bffb80f7801a484670c6e50653ddd29b060c17df008c0ff0d08f36127a49a40212e1eac5960dee005d313056100020746d51e886555ce6b87e3f8ed0799ad859809b8d2f00ff636a0161484a1d16a35530ca5dcbd96400888e89e2a2c40781bf0e079328fd2b19d8c2f5e9e235db9916faed0427a5855bb05f1244366919ab6e82b63cf98dc195dcc301ff7121295f492156ff8ff23c2bef1ddf14b986ab180156d8397067e73bc3bda28d3c4237d18fe23fb1ddbd623090a9acf499bd0133b2eaa5c4162befd136d7ec5d4d24bf758b80669bcdbd8b473f5dc0c2e16c82f5c798555b4e84b1f44533aeb22078dc4030c5cc7614c15949f4bf197d5ce31e020e050ce437553611ab88a1cbf880a9f8352ea34f0ed3b13156282eb8870f044967dddd7c90909c3a8e3ede33c1c7565426be349c8df14be75f051cd70fb30140f4c38ea6dad070ab958df59ff6ce5dddd810ba29642ef6cd662c9c23e7a0f5d1520682b30b2269d494d52f29826fd9b49d443df4bc5e46d225d53d857c6a7a3fd155cb1ff24046be1cb83e3e149f8ca00a209e5390b87ccaf7cd80f304c04575eeaaea6c905c80beaaa4867b1352da435485b5bd52ce9b5c41e6d0d18b831d2bb993049d7fb87506796913d9565a383863a61066d090acbc5508df52a348a35f64be82fbc056896947e422088aaec7568b0ef2ca9f1a04942d067cbd3ffeca52ce1f39226668ff61fd49dd351df24d839a79ae7cbbcca3af8e9a0e63902f79c5e68f9141c0d4a01071bf57601dd3e64b782e638382742aa1229909ee2c6dfdf609f487774541651f32e68a238acfc02f3267d414e2a200bcdaa6bf8a37ac0a40fa38a2236d26b7b50256ff0f3de98d622f74022308f01250a200834a171a6bca9dcc637e2fc1bdd7b8339d5e3419dd24f5323cf565c99e606cfa3cd102ace9af5eb854c602f42a20af53e05bc09c4a34b565f2996ca513868400458d2249e1a44540023c97e1d1773c540c6693b61de386a55db3d44b3e2cce02789a634c694a1546ef18d71fe3e6449d363ac5666b6a4e34448f075005f465f32efd6705ab0ee6622c8a76cf969c9cfb3209074acb30ace7652093cbdf518c72b3c5eebcca72f36f7399530777b6bbe6de5405edcfa8dffaa1dff21f725ac86fc87e531ee62705a41f4c97f24f7db630fd45822bea5c7c4e6b315b5e301d04e6f877fed7665e901e4e679036dfeb41bc9ac9dda3fffa0a22addf17c6125407fee4d475c267e61983c9b5e18562fe65593261feb805dff306772b0fd61be3baba8084ec6e2547b675828228de687968db198e5d73f90ddbe17c6ba2a55f1a56a763990a663c02f28eb67d2704917d345be5fde569ae7d523899362e596c555f3d7a902cceb265e46e42a1a4b8a67f63fc22e91afcc6d20549682dd850596ae764f6635ce451f64edc2ca6756b354d1fe3ada0c2597e35588f23c076b913390df9473971d4e22e4ec4b84a8c61dc8ee9a9cc2a3608732d3bef3061ee648c4422f0113a651552254e4bb3de851d8d3242e5f902d6ce57ff4002c30e561fdc4665f8f35ceaf02c3ae563818b55f67054c1cee20152f30638644039bdd4232be14436de86bc19144d19a6792dd856ecd788d926fe486092229e125c99d962492e143c7bbb7b77d1fb95b2f3f289ec636c99ff837e1974257403fd01d29f3b94ca840c217ab946702045368834700054a6bf8fc0b0ab94de1e050e7d3e42d8653f1b33af238df20b165c310ed9f29d7580e38f770dc4c00893a464f6f93d74c9a37cadce32efec7484de402c6693a152489a3e59dc00d5950fde619041ec251633dd93b369ce556ee85e728ced1301401d21e7d5be7092c15c8c91ec8a954a62f0a057df298a3359674a668b42b4f65495586d9e8d34397b9d766f2b06cf7243722cb1d216bc7680eab566b70aaf28f37b7400c8301fed866be08ac84a0a36547174631e3ad413c5d4cd731cb19751715de25c48b7a20ef2e2a6a2c2eb0429020e453b1fc823b770e792345f252fe2d0677299c40cad78521bddf4725d6f2cf4c0e64d166a8232b182d3c36b2898fadd7a668afa0b2b0b4f41ed0c728107d20a9a4191ebafd7d0e61d951c802626ca22749250c868507f1a5c15a792d9e6669113cd34ed9f10038f8f20f095e8b23df159fe941648a1c49a1de4301c304a1ff8f5f47ef9623771c435d496efb74d3201e04cbb12044f5231863584d1675d611fa68403e7ab2f592612489479e01d77a1dc43d667839b76136f8100722053e57bf53542a58a0bb2428b34c23b7592e8f191d06113389892943b5f83312faf1a627732694eabf177e62f6c47609c69126e38a9590c0a5d4728530aa7afcfd50c740a5a593755c3c4547441855bd033a5ccc012371f3433184fb51a3ae403ec2063d63d33e7a7aa5971f5f89c9d37447585c9c7009c49cb2fd8016f203b695c2c858806bf1da617188a8b5241be04358a376af74f1349ec2409b5bf9a8bbefa1b5546c6887225d44b9d279dcf42eeded02af2531d0d6352218779a2606d7c85661d2c2d9aef55fb4bd5302963046697a9a8f71d03b2ba23763378288e8f3a64d6f416597c873d3081047e29e69961cfa185688ad33f580e2cba5dc64286f00768999002c334f5c86547990498fb6f2d191cfc9037ab48cf669dd510d7d973bb3e5a8c1fd783a0bcb221c5433f4d2bebf933b8f3d9a379c1cb070e1758c9ad41fd4edf3d718d566a9a30d5bcec1303611940f7a64b9e72002db7490ec2c7aa66a53aba0e38592861c9aa6544ddfd30834ca80939e8c6df45da9890c222e39152ab599b0d442b06a3294cf50ea4db893e6de51eb4e3d3bab52f8f9cdd9c0bda2857c9d83246bc8f31e8e0292d9f3b2c61e12414f5d1ddce87fa2b8eb9115ae2af750a82ccb4f07f06a74ad5ed6ef888b5c32c7297d0ac20defc031ab50c1f25cded43fe43a48dc946919045932ad8af0aa6b27b366dd99741b9f541b3a3da426be25eb54a46fc1fb8fd6cfa5666a63b47ec30326f41034c10e688a8017ad751844b1d411111a83e12bb2cba2850385264404a020482c9b0c31536c61feebf60c552be2fe5f8e911c47a61bd450c49dd7ed3d789cacd5891f401f9845b23d73267e8613fc8a32863e416b3aaa397b7183d8d5fdad178a81d3e2612a0baf11180d171ae3a111d66df960bc1f0e11c0715eb0e662464c7b76662746e9b46a04ee1a0752f31ca7a48d8b5f002333503d233c5e9a384027008284f3bbba4cd5c408d4dea3a2a00c5f4dad5448b76af5d65d45b71a223246907c4ae6604eb49da4d3f04b407f827ed657755165f6c6ad313605e7a12831645be9bffedea13930281b8741b324fe0ddf14fbc8bfd221d9841955d74a99934ec05c5e3f7948bf24ae617da7c8dab0209d181305dae354bba005e980c508e4620c0047d12c82c675988c3f800c343d6760517028bcf1c820f5ad34f2c85908484f576cf6c1b424d6e446ad243b4dd64470038a79d8b7e500e98dd7822b8ec531140dd265f8df01a9b9b385cddc877cac24f9a8529b4d64845b0a5d03e4b1bcf5061158e195cf71bc7e6ddbd15280bd9d71397d9b95bc27a274f73f3ff86179bb5192c03d07b91a3ebd4b2a37f98b3115f37ccc497c2e208efdbe0c4aa10d74a7d45238e53f9be1ce8611b048c41d599bc598203b6abbcad022d65de6851c4a302df329ef0b008b2cf83e8947f7fc3e259a572fffbebb619b837b4e72b42d999436e0c6b251c35ba42a4596d621c78f35f6d25a1c02dc75d9faf9d9211eef7e405fa2d4fa18145fd682e3a9c07842c3c4f84a22ab57df3b8305c36258d16949a60cb650576fcd63fdaee3dbe450237e2fda44228c811bb033ee5f212b4a66c666d178adaf6450c67174f5c4b804672f10eeec1ff1fb4df8073bb7a2d31e21381d280e7685b39c59463e9cd70e39f823d414536b03a3639456aa8c0019d5c95c51b5b60e79a91e9391f356fcf47a875ad6211c805d854493fa3cdaf27177024e2b5ca6a79141096444ded7ccc3489b6e4f3438190c8f70a33fce5e98a6cb579b9236da36a4689c0a0926e74ac8fbe1e2d91d9c22a36405bb2e076761e33e7379b752903fa49bd85324023f0e5589091616fb9bcad57a8ac7d307266759da8a0abfbf6e1254547b4214cb624a824505e6f3d58cc10ec5733d04bbe727d6435a7870af4d91b7c2113cb9cfd04b185148cdc473365d5fd7df6879af7c19df8490bce1aac8b465af443e0234fd113769c84f7e86851bd18dc508c7d9120620e2077b9bd4adea48fde3c5e1ee9ac2a39205bfb94cbbfea7eff5c62c0ee24a96a3421b17a4d4a1b374fcc2c9d767614fc4836e89c9fa539b791353dd8e2179627271ccd04175b43508ade049478bc888853dc5b3aaf400741c152b51e02651de002d223e5be30d69dd7a57f12a0c7a9333fcb09b92b5412a22bb78dbd1e309a9f769333802867e10c05ec586b6381a22e021094cc6183730743b65bd10b34eb2ea4a41f1c5db4b5b190c09d6bbdda1ee1226f9c25e741777f2974bcd9a3a3ecc432ca93651382416dd1e392481acc4fac8cd64dffb185766067a4db097b2502d90542c9fca035f3c0e11a3e753667633fe76530de863b255488942b545bbace8dc0dc454268f49133254c88ac5efec3277cd27a11673aec2de732833f391514fa5299a04c8060b65d357839d15f588e56f78ff2c03a649ed6ebce712a7d831e6bde52f988629c653a8242391d36e86261644066fe5a68eca2bce4c3fdef6326fe5c740eca805758e076ebe2eba721ab0ed8dae182c26033f73382236f47a91fe7653c3be545c2ebd92041e7b9f582aa84e6753a475347a5c6fdadb32a6a9f567ba8f905c34b120cd9cd846502d6df8184457bd0ef18d84aa6781c3b1751f3aa4a15d8334eb748342b25487543a13a878ee1ee50361ce7cf3e5fd4d52421152ec30ad5c9c92ab23f609feafbd06b6c3cf807acf1e4b9ba8829428c25ac3ff9c4ab5006aad33d826b4a0496c2275699de55d0ea55663d553a890351a6324a2eccaf8e1cdb9bb596a0098597e3144edfa1c6dba53339888d02c6a687c55be7bb7b91d6d257b63d4e32977e3bbc7c1272f56b9f3c458e67886745790db6f34f1ed6142b30ae9cfd8ee78d0b147ba2c9f3a341c8b4729e9b21b3408286b824b9ae93ebfbdade3e9368046ee487188dce474c0fa5f59f8dd2adece65ef98bde3099a8b68f3c25c4865ff1e5a5885b22f4d78ac4ca6c0c619c71cb94458f3dacb83b86dc16615f52832deb600e9c58e441062dceaa7b8fb7cc9fc27825a00a48e6e66f4b68d2d5c66c9856d70f41ab57cd7145d8a34a87163a2d31ad3ab3c0385133f86cb8afc27568c440235ce6d3c3b1956030a0df90da4498ee1632c12e71ca829d9bd35b40da0e8e83ff999e96108ff577b92955df39818944af3eb254844a0ef889dddcbb9499233a606137ee547e666a8272d3f203050073b0d7f54a18f585140066902aac78272a2f426c83c0fed91ec1050ffd90404417b9fdea8138925996941590a9139496bc49ee7fced98613a07488ca3730279cdecf9d4bdf8e7023a58629524a53fddd6effba63aeac6df6fa096615427b45f54e8a42663428be10d9c0237af83f214ff058d450633bdc0f249b72a8b7158629d98038c2e1ac763dcf0a06da485dc1d8949d8f99ae997627f776e3e8f121d3e7656814f72bf0949e039f0c408560b512206f998ab4c0a3810c3818de9f51239da8049a7579a84e1ad0894d40393485c1a81b216d3c3682e40caf6fbb469810b4c25742b1159db03a3d4286962ba53e6223c95c47c2e22fa2eaeb75aa2bb7a6446ea2c25362d025347a0aa1e0e473d53466cb38366a51e97fa523f6944c9439252e7425227056a67ccc947657bdb9224f53ae2f4b244726b2f3e2dd6ea4831590f45425d8d09ca3befd9d14c28291b604e98ad40c17d832db84cc568f595e13fa4d4d85e314ffb1a2de58fecee4e96fce26f5fc26b2ef49071fd45da2e2f4a2e8f249629978cfa3c1275934474cd3c02454f82356b02a1029202db26e6695ba352a164c9fdb28e96fc38a1659d52f4f789a25b900a686a56b20f3e93c2971f2ba81c428f818da20a4cff7920ee887d45a20472501769052c08338e2d3c582613a6fba60267f23cff9c16d1a551fd694dabae6972bea725dc44e4c39182fbcd439c3f05672de5d4f3318c2be11426637fa0b6b90173fdf9748331778ce9b6b59268f8762f617c2e13e2490642db81e6698132d5d87b9c6f3c87a7d336e4a95dd911210aea9e42730eb60e327b287909a6e4760bd0e280572c95604524e50dfb2b25a62d06849cf3f3fa6a9efbf8832903c04f6bbd91d77c84cf2b06d72f21052134a0b4647568f75c35ac21ba457aecccabafc1e3a1beaa3b3ff0251647bd2b5f0177cfe8cb082106f66de43158f2140e33c83d3975dc9a2e87bf0a42431df946c59f2d02fba00112ca5a88bf5e1147efca43928c71f09a74e0c5557dd2e96461c5dda8d3dba9915bdd22a4e7719e92d281b4ca0ba1e0c1928b50745cd423143d2e11d1dc1576da823dfd11a092f2f3cbc3b0395a47539f647bad29bc2755c41d748125677d0798a8d91ec4d210599b6a1e6a5e596effdc7bdd7ca25de537880a20728eb303f339093eee4f9a00c5319f7a0bac87d53dc4689a20cd6774a6d412444d6de92a84d06adbf786fef101c53405bd0536bec15858d4dbb4889adc22e56eaea636b59499f4a4cbe4bdc4b9197562b8471b18f1d8102470b9a6e68cc80f990c9a21d70c6e451e12090df252003d09042ae10ba0fb4c7dfea4bc557fe8577679f7f44faadc1c0436035ca7b95dc6cba9c53b7c0125e1dde9f0b6c869e831330df8495000b2cc096aeaa7f3de3d2bc951f4b2f4de1cdfddddcdc31c1d6d075327eeb8b2240f278d3f9531d1941820248f04ef76d95dc30e44fddf899bad155e46af518316872766d9a0aef3235d7f996e1ea0a712d019e9de643abab45134ce148b356df93c8dfbd8ab05b7cd332a331e7144e9ed4f4182a4f2c61b0f5a152b591c605f8c0f88d3c9c94f20888e7e19efc2a42d3ed26f7b98a8c34f22bfd23c881e143f126e60295d80690a08fddef4eb28b83fcd097b34cc3027e29212052d4079c16701a0b3b9aa60036281e55082e8dd0d60c7c59711a6c8a31213928e63cec24ed869e19f5db89ef7a87a42e0297895383dbe4dde3a971f35ff91d90d2b14ab9d0579e90659e62bc48a3cb579cc6f82481cdbbe59a8b39475549f684540d810b8458355c43d477013c5dc6e55c6c276ca67ffe6e0d6de2ce2c48e6c60f10ff0008716189c3d557ca96f5d7c77fd2dd8b24cbba1c8023fabe1e65e577b94e73c4a537935ad9f2e16ba0e5f712a2e4482a4653ebd6e3c4fa5a84cf6b53cd8f164dd1db8763a2ed6d034d7948b22e58a4e120389f3dc30adf7b7a9b30900f82a8026fa21f76f018c98c00de6e8655d06c197dc5e8e824bec4520477b7a3deb8c41b77c2445f29a1bf04f357e40fe645ab9d75c6ffce5168cfc842b3df50f0129b7c56fb9f82256dc80672dd337d453041866502a245d0a570883e562caf033f9992646642c4cdce4a622f466b04668f634203cfa09ac88762192e6e36cd0de36619a2035509162bfa72f379e26c6e0885d680ac6621e9828a4a747a9e8e3e96ba7142c4993f3f0981b535449a0f1f1077d7fd0b4cbf591cd84a24cdf3f1140ad01a830670ff4f5f925ca7beae460929c5db94027986e2bb1294ab8774e3e877468be08267f2a598232e82399753628197f0a5faf1fe977d83b11118b2245a01d8019eea6dd3f120a560f5f9d96d0e6365bb140538381985852e7faa23f151ea3397259e64ecbddbf6e864869017a3e559caba97b1a0925b913d46de7afe31bde181d9ca5c7bf4609edb6aadefc125593ddd620c9300df3b4c17b50b67792f7b3861fa0bd84f33a62de84d87cbefb5dbc7e9c507b8a81b84eaf04d842a4e4c2b64eb19b75e0f461d40147fc6540e126789d8614ab6698766faad9a2b3c5c766a3f093c8e42e0d16f875f9a872bbfde0022d40fb81ea87d8cee3c14fe0e3d6119faf64ab5f588e5d2d5cf11b3a63a98c89fc1e50c533c6a82f1e05e2b1ee5c0b1c34b2ff473ea4d3428a21f2fe3ada7b26df12f095a2bad5679f5d3aceef06c237a8d8cd352c3b80bd8f8ff1dc81291c01074558ac5b6c7e89a0f3137c1ea20eb09ac56edfa76a5c23565887be2672434c22b360ea5d32f215b754166b41030ede13e03a4d1f5315cf1d6573baec18fbbc5d0444acd1ea52b0b903729faa62408524775e81332e8ec07f4920a0c1bc3a95e15c138d65d969c432dd12cb3840e46a6852e2d735dd14dfb3adcd5afdc006aca5e9095b9f70b96e5484caa5cc4b7a16c1d530fb27bea5062d2974cd940aa96b304787ee6f353d05e23141061d6e63305704ab132ec84b8886b9892a671f5239e01ce2c073a953bee6fa0515f8911b9c417b6653f4552a04268503ba8f340c8d002377e211ce0438b96fddd0f010af4f9304f8a9205ffea13ba2485de5175860b1707dc2e9c0a07ba2c1601718878bf636ac13aa1660d36ff69a238a425a404d663d9d8b025c227ebb1a6c49500312e86f3bd300bd1b1a5083597c324e45775bab3900328dc1d68e5829d3b8142ce52197c9f914dd53a9ec4fd4964c0b213e2b9643f84cb54dfa24136d9ebb6189262bf06ec3413fef23258e0407bff5d1a2523e0e806890e012dadd2103819e0a1c2646fe5c8f032a665f26e218075ad293062f0039e1cf87851838e82dce1d59f29401499f7f80e6b5de3579e2a47ee23499641f3777395324f5ca4f7a72e2cc9603c6ca79da4292587bb766fa319a64493b519091e882a835dd952eb84ee1483672190be354a14bf62330cfd4f6a3de38bf05b71cc2a4c0b0f03f7e38f2bd8ebfaa14e036d42400d8817057378a773d772d630023a2854862cb5d4388fd091aeb7264eb069e562297f26b118326569b3007b11c2bb548a4567c791f3b911ed06913ef82c883296c4af723d2132687e96240a4254a08c4315106aea873389aada274476ee4081970541c76f799adc431d19be3487f620aa3f388f05462bc7c25c2710a36d1dd883adcd8c5713fa21da4629362205646e801bb2acf3302ea8c31c18b8c21550e198735609171aa56edfca5861fbbe72dc6e029ca1ff01d9b049e76142ee8e2622e44f17b95bfeb0a6f7f786c3c7d3c2358280ed5d4ed8af7a491acb8a2039b8c08461495833483b009200845bfaa5980d30b5ff77f967bd3b782c5900ccf6f317ba297526b25fd69dcf6c40f6eae8fc7f34d9d93f2adfe0a47ca6f93be84829a764dba68f1dd1d43a29a1a8e071dfed555495561bfa5f7d21886e4415ce0605a4d3a57ea75711ff429dc3578876a22fdab26966a70e9e4818ee10061032488f048b0404d3ddff7b218f2ff129e194c1bf441d052763b64b03469a5da06da7005bd0d97ab205b2cade2af2daa543e2165c9b4c500e1b3655af63a27dc105ab6a98a32ae1d69cd049a28baa0efff26515b228e1ebd23afa23c1722da97087e6f238f1a402fa9ef1844ab3763ae45ca7f35102d83156217bffa039085ea25f09a9c2089df7dacade776dd689106baed6b3fefc147b1c6320f6f12582014d890839bac9fed72ed7caddc43b6b0cd8c6152e898d2fc06d7cdffd20043e5c4bc6629c0140e72784592248a27857c4d84ed4de91a06928822c29e884a53f9159c21207fcd24ab447c34d495a37a35b1ba825cc162749336a9ccd8bb4b7a4a3999afe30284f3b8cd39a2e9db733e63e19d319dcf47bc84b4e913a2050f90846beafb59ac811feaf9a9fae0433fec59a9a01f99d8dc9ffff7ec53ec983ce750a4d823b5b550523db61e904b0c7062feda7dc3b50f577556a80b20f68973e96a33561638a1a79af0df72e9436e846739251932da3e955260874b92009d39a2ec006b38873e77f087fba84ea31773d21a43331709329f5e0aa2c350e32ebda7bb1f43e26b9dd0c2eb7ba65f1dd85f3eeb4dfdde5f7fc7ea6117acc7c4b5777000010e21a0c240ffaac8777319ee836e7b774990dde10a8962cb0518f1ac3146fa856ebb07007c00f6d62015de00b4dfb0691ca1a1002e20d60fd2b61aebbb037bca56c0ff81510fbaef15e8ea6767cb2ca2278b7701b7a9ca5339c3aba025118d67f3b3b3d9f09de375fde3621137374a3d83927d737cd34c9c67e54f509b630469d293800c4a963c10bbafeccd94aea47f24d251df343b5fc1b4dc7c9ff8c8a2310a347445fafa1338a633d87628c2027255a82780cb1428c2f31838074ab64da6e5273b673aeccd3e7f3b3f57f7083361233763aef4fe6326f2f779781c47d06d1409a89083887dcb10efb58f927010907883072b38ce974867baef61447a5247dc8e4654c630ebbade925381ea037548ac13350989c3347747c426240d53dc19319e08294c1633a23d3142209287847718923e114175f0f616e91fc52e51bc29920efa7aa2e31d6ed237b864a978fb2c55d2e1f21849a091765a49b1af0a2ba8b82e5a2bbaa8220a52152900af757000ad1ef4fa6aeac60d4a2c9640a3eb06d487f6c9fc7ac904fbf6a4fd31bd6e288463d8c1e80cea0d4c8fa9ac134ae4863a23bf606a723b1508ceb41945d74e5b94fb20d5c5ccc0dd497d41345850cc70293f1e45a6600e9aad2841d717d8748eda74131c09baa509cbcec83a8b4f7ca7515ed0ae05256b4017b95d5f8c5a0efe631cc32fcaecf10adff883ef9d9274cb666e9fbc7ee343b2786bf7584164111dac65aff0de9ec797ae8387cfec6de9da97aa3ac70e21fcf57201de58d3aee6d8388ae612701573a954cee7d5b4e02b37fd7316eaeb3dafb1d5a385ac6d1a422e55b77309ba6c16eeff75b9dc8db91f125a013c2e1166921675e3a26b0241916cefee99ae0b72b4b436ee6380f8c76bb19e8ded8f87db3f334e3d29c1d4784feab6a7ace64e5d8e8c7a44ac1f0b205f73ecc9f283c7d1d0735b8b0f268d0f0e39724b8534214f24c26e09c31b4e403b5825e44bd95057b2a2aa33cc4b5289a903eb6e8463de91d450573652985af9688c894c116a6a3bf97605950a922e12fab30ed9cfcd5ffa6728f7ec44a0e56ecfc3fa7aaabdbf72461ec763d66a70d8f08961bbec1bf3f264a099ed2104adfa6d6a6bd45a5e47fc8a35e369605f3d3848b79177abaa00b573517727b24c22a964e34804e7761af89f1800d8b1293ef26545b68285d75b9ea6134e9d3562cfa8d31b08b8bc98194c8e3bcac8c9f2ed69c63c6bbb07c9344bc26b5b80df628d84fe6c93814ebdf8ef01eb55e1d04326d2dd6f48e3b9482a4b5d42e6f10842ca3ed7137cab27d53e99a8bb3a516b75557d75139e27bbbf364207ea8473a5f7e9aa89e78a9ee39b0cfa6bf264af75a7620f993ea1d62f5c95da9deb93b60296246dd6fe8e1ec4065233b5026bce5669d0daba389dc3264eaad7b99276da923f79b4d660bec59321326ef1acebdf970ef00f45407f30bb906093050f8303d1dff00448f66ebb2220b04fcf9347abccf51aa668a76139762ae15544171537d0928a089b3345155c247526e2a1328c11aa1c89c733a820a5d08cea862cf524cd3365a1896d73579e56851964869ff50f4a97abae8197403469dc001cdb50db4332e49724a4490dd835379bf7c210ec62b5402ad80cfa07546248bdff488da550f5a51f7263e986697d133c098a162aa008b177f2b47066723107a54e103112ad967678218df69285ca035e420997031742f9937019e994b9909ba8a82af65fd28c13579b9abbd3844e812f2b89ed8260f29712a525c32140eab0154b317d8ff0a4b2acea94cd48d85ea869b1a645f50729db3db9a0bc74b9f823ef0accfcd8122205efa435a03409cb995e7ca745beb348190bb81fa64aa669848e8201a3244ed5aac953d849290b72bfeafa06bdd7affb1c5117ca4c080d596b3c8de9e240e8f0a3aeea196c7901662dd4cfd758902a6cebc63fb566af1f4850d4dd6481a9e0022868de2aa064c6556890e98a12079313877c08df8eb812f52eb6bd8d50fa89eb8675df65e00b0f0e3cba7c00940fc04120b427f800c2c75a4bd1b5a9c60018bef39bc7d8b99b89cc96894a2fc4f432b716d51375081d57b6a540cdc5f727b14c5fa1f76fdec8facb6db8f8f69e49099079c66d04f74069d833793e0c633a93bb63eee6400685d61ca29d0b18a780f18aeb72ab489e0ad9e3c52a727fc499f6fca60e8109b5b8d9a77949aefd305bead019d49715379ed2adbc46c3bfb1a840764234f3f2da1877aec70ff8a177ec2800805baa97373d94f170bfc6417e80bf4c36e5efa307fde3361a56c0e457185f96b0e37288d04e589216c1119bab6fc19c263653b197696c2dd4f47659e9a134a4a27feaf77bfd273c6ba8944df7aabcc52a4001727ebb9b4355341fbfbf53933e679f08671405bea4a8ea5d34bee4f32dc35c44d65b08692d90f8e7803dabc632a67af5233571cafa13965e9e3a776d7e5cae55b222afb5814482b5606d2ccdcebcab01785586f71966c299ec65855f87b54902ebf4547675578f1630b4067d2d15b04600196a3e8a7639c549609219014aa0840036748081bef122381cab95e83d00d7211835446a533b0d985d21d6632d731565e102018d60d2b2a52876935afd3b1206b464aa7544e2dff87a7edb76c004954bfec4ed91daab85478045ec2ded980b6486584bbea57e394b0d95497f8e3dad591dc9fe8135897047c4e5167f2e4837437b28fabda306bdc7a1935787554b4dc5a6c53bdcc087fdf028d39e40f5fab115a5f1823c6d3532d0ad0a57f613b11a7a801e0c664766748fcd407566fb5864a1b796e7bdf8d56edb628cd9fee7d436145dc7e71fc15ba11debb161935db0ca62cf6a2d348fd4a24d8a121b3daab74e592aa1b13a67eae3194d92dcec21799618bb05eaa1e600f6bb259ee2608f414375725e1db64cbf3c8255053f719503f6f7eed414f36d80341e73e7b4a8bdd45e7a37fe79be13dee4a474a28f0631658659b218f6cab4f9d5200815bf544f40a481af40403f2a000216ca30e82e245468a2bb2359d10816dcc36c332794c99959b1b8617b3ba11027b46259752d7242219a6dc596676d165aae1d1ec26e796d726ba5589ddfba9bf864e943e93a27892d3422c6cd1c9229d843d2e208b7e892c813ad4473f80863fb00ab5c821abc572366216d33c7e5afc7e6a796997ce1ec76508078970c2a770a67e0b45bf279c631e97fbef8efbfdb21357c9965c8f65d0562e07df728b7d315124921bd92769b5b679fc2f4191675750e251f366d94cd41b8f98ecac193f68650281b2b74bbb5dc19c9a55808ee87882fb50655279d65f7a355b9f3d245759366fff06e7fb6245d190652d5332377f8fa231bd4252dbe5d0cba0dc61052455b0e5d8c026079e2d9611f6a592a66a5dbc1217676deea7093aeb60a85639f72e0ff764d7e3abe201cf448de55583efdc9d7a4912d5dcb422b06ab13e6399df7833cfd612df1d37d87d435f62562684a0d07097ff671049132fc811306556a2e68975e2605858dbc5c3b31ba51f118238c38f6ef6b30507c0df2e891124482a4aea34eda8bb83172f622dddb795a6d82cbaf4f833d75be0952495d0ae30455d23632e455bf40f844c2a5609fa9b01e8763acfe2284cca1aa3006cfea4c06db45c519a871f6e5a7228b15237d7aa999273822a1275c87ae799097d0c13eca263cec3689c51dbc1d856c2a4cd10520e097c08c0fbdf4254853a18205608c21726dfe4fc3f075a7e63d283c34304158a516e30e12bb05f0d6e2970510ab356df64f4fbb8423af130c98f28b943821c8e9248ae019f4ff29d98d00af1a30d67fda8e80872c30365f0efcfcf3dcc36e91c3aaa5674725ac96a4788959ca5e6b27ddf8899ee490fea7233a24ba2a37451b7bc57344b8177517a4c763c15a5e09736e2af293d2ec62f8beace15d7ea1ae298c529f2a7ddc5b93cf0ebb1071d9a822280aec07e58ff04531d213c0c2bfcb293a8948319ce9344447224c17fa070349bee1085ce188b9b27a7d554312b2c3f3391c4219a40ffe979d9529667d21b0ba8aacfa799b46bb0bc849854d9654dbb01592318a0b2484f047d539d96d1c8adc2a68a72cd77b659169fcf20b95574e502aa6133ad432374ca48a212c4cf6889550598ce9747118bd4f3d8e60a763e3d6a064a91fa3bcaeb76e4ae135d1403aaa8c28cda0cbaa8035d53e48c78bf70780b6bfec02b3d740c2f13cf14c1b5fda2deabdd639e8b6d647e9c7de9a10c373ba329ac32675c83b76853ef693fae71563946851b2e4dcbba9e0c479b7469a3e4c7e00fb42f907d0fcac8201837cfa1c11f18feaf650aec32337788b27eca25381bd298acf03825692810676df65a8a5b7a8fecf12883439d774ca4a97c29a146c724422ce16455777a7b5e7adb17dce85042171318cf930b858a1e71ec0059cd5318fec462e4d41cc71368eac240f21a61468aa792e5a5b157780961061e4e73eccc44184786076bed2e374a0dd1a79b3cb1c049dabac7cbe7d9efd176d8b1aea159da02df5edc8c52e6b4310dfaeba8551fc85556399ac3e9d7e5990331e6aef6c4415688035472d3eb0031bf091c9dd4681be9252b0472a55919e1383bb234bd5d36aecef7d5168f56b37aad3015c25de449a354a2edcc64d904437960d405aac4172055e299b2ff7b6c395a3aac2564544fd2b6951292833f0bdd19c24ba3dfd5b36455fac9ccf11085d65d0e636c5287317ef3f995212a30e374c7957d92c6875884c2543733e2e6cedbe8d12d8ce714ec146b80c62db48ee6b660db34f2e67ad5d4508cc30956b5169ebc2a9c04d249b1dfe9aa8c56d2fd4ef7a805e9eae83bba5dfa30c3afaf03e0636e841f9c77d874a38b05eaf4287bc94c982173d2b0303b14dafaaf29501063b8a24196d66ce06765e5ebb51831f1584d0efe720c2f7aa3b220ba4de89a6f2b2aa6bedf95651fd2853bfad8ca3a906658ca49beda4fbb904c23d70dd8875989fe7a3b89359f3fd89b496fb527a599f6c7777b047f7265f02adabb2d1135ee34daf92df39191905896679aa116ad119ef9c48f7da27795d32ad8dec7792547299e9684b20f337435b4ad9c21322665cc1da330eb24274e26bb8584800ca224fd5f3acb9b0c61d8a5e26892ed156d0a7498198fbde94a29c502af0cc354603df86a119881dd92262b50bceb66c879f8d799d347db77f93367ea07111cb5d2dcfbf808e7cd2d63f0a0297efe3314e23f40aa43e63fbb19db9e96617bcc558fe4dd1f37a7cb9738dfb0f3c48c8bdc3210078bf5fdd0d230758de58397263525087d5222cf7c5be60324dfa9ff121981926d3d50f0dedcf156147170d99ba82d2e3f61da9041e831e323a78a4066f8c3fbba6ad07e1466a4c7ed0c1b3ff9cb37bc0d3ea82d6907c6f7faa203ebdf1aea8da04224bbb8b904550daecf519a910d9e41acdc9df2530026812128d15d99a3b553b1a9bd34f8c11cab3609ca33761ac1e549c6809baf9d2941d6984424771e2bd409dd9cbd78bfcfedddcc6ae14f58065d86dc8d186612bacea2fb343a224a486648dcfbb14b1c65ba87a56a718ef9e4e1ab9ee57d01814671d79bd27ff09b1807560b21cdad08e20f344f763b236331a7cac8d492ab471b1327e818d69a414598eba0e4a66c960f48e6568619ca2d5723090db7c2d69146ca5cb53e8cb50cce0eed16bdcf5384284c1f474d1ee0420959d27a64b81c8e57062ca23c384510aa1ba5fa451fe6646468ef7c7b99ca1744c07b961852d2e2a36d99b7ec061d572cb41a815991fd82b084f62b6b1615644b1e88d61bdd49b30d670e460e3101fcc144dcc656d7eaae83d4e95aa0269ee2f05b1b65e3557d21ec400b03a2a58b3b7db3c08c41d6f7b6bd9d42d4b080426c9b69dc88804bdc9423245913e6027dccf30f276c0b3293e58bde2762d097a322bdcbf39b11b17af57fff7457a9522c69ee939739a6d2bd355ac97324b5830ba9762793abcd93806ddf4709333a0b6c1d92d08af6eb542d40447993ac5720aa01f6a4540fd6e2c1fdd1c8d06a2a3c3bf6d0d18f1555ac82edb492cf555f1a8e4aad527ecd2b3aa4355142c22de3a4f13c5034f3a1bc42397119ce514d378bd655716e6a759b1efbf5aa4f544243ded4485b58b7dfd812e0fb59af65ab1cf87978a739828175cea24078ddb523481efece677a5b3c3e0c1d073bc5f8e2cb565396b78cee50fb4934c15ba7766b3682e066be8a84459370722b4c062b8c64544af57fa9783ef1ced0c268d16a6c4d4c76cf5b442439f54c18e15a784d03bbd066678b78f3c95d97cd638b70cad5cd92c4eca57ba30dda6951aad4e918b7892aa0a61c4b49b42339cbca5c75e2bbff0a1b06f0c6b4c7182a04bcfa768ed9acbe9a8084901e8aa2f1cb300a86dda85981a3854ef9885040dfb97a83fe64014d58a494f2a9ab508ff829830484ba2b508f33f2e2d6f840b719b866209870ca2df0aa651819cd55cb4fb80dbc486fc6995aebb19a83a3267189627b4107772b138cabaa1118f5160552d712e433adda75ce99f51f4d7a12d13d9b04e35e032e55b47bf1fac71ba49aee1a98618355531a4e4e12a0c757d1df0ad0cb7aae084023782a7182b7133622501fe63f1b4c20f52555fdfac6fe155cdd09a45651c7c3ad2b944e3477685c2ac086efaf9479e07596a0ec2561e391f754a5871dc31aad870ee87ae42c0c2869b43607e07dba91453195b161a270bb2cf1cb74ddf809f696eeec2ff5484b431f8ed3f80e055be1d8e72fff4adb8b27e729ef7b1cb7cd323f5bd3e41ea571ab7c0a681647f218f630a3ea7346006a978834cc8a8bd4dc6ad35a230fba73c5e911cf0849d93a4d7a351944f19a995578ab2c78d96dbc1a569d7d2c41a11e2bb3f1215b48d1da56e0aa2093f2dffcd0708662971ed66bf08f835be56c9573eacd6f601cf37dab08dedbffc340bb04ffe031a9219d13be49ff223e23bcec9cdcb90f0abc4c0448279d3bd3f0412ce5386050ed442b066c4d3475038ffa0a0a026619302a2c496e5f4a1b73cc0b30ec820bb433d471ff5a1ffca93790f69d04e29cc68f3ee29654365e61976a94626fb6db374dd0b9d1c9a415194b5a8a66d942782607880315e3506ce5624a0c1d85c3bc8566a4685c6d0dc99d39c8b3db480c7a154b94ed91bce3155b7e273f5f53dae460d5f97ee86e7780e15e61a543d4ba705095457ce813e4c872d7770a4dac0b31f7005e9aa7a92a063d043e2c68390889d734859d4272fed1905da4ae13849d803e5c12adc81bd2f55aa9292baf4dd29e8bf80dbe2aa0eb78231e9d502869259291226bb9e8bb46640fe6c2c77867f38b2c46053fe7cf9b64bc8350499e6aecca54d6972c1f7bc7da4880944237d93cc29ff538a20d6b94574c6992b369abf0a9f1f20902bfc753f15dd1ad6fa17478924b060cbe7b26b8fe2f18d2bc8b12c16f09f97cababf477738d4c9f465748538dc75b32ef794b91e7a7cfee3bb287f8e74b8f6f72ab9d454dd4342582aded1e3cf25701b4a23cadb6bb826e93fa6b6696ed25e9d6f149fa58a08d90ff42145e069cdd47d574b8b36ad334e632cae0c0fdee575ea82ef7b89e4ae5a219c38af5aaf7c6c933ed27e856bb3b5e07bd5ec16d312b62b125c1fbdf532ae2bd42d7d5c80968f654a836eb76ed3a237a0c0cc1e4c47c6e5dce45aebafe6c1072d1f1550f11fda7e799154c0102cc85d298da9d0b2eae5babaa9062f5ff21810e5500dcab6eb298a69838e83a6f3d8be33611fb017745d2bc73e62da41af8f9d0381473e98e175ab99c6a584a2740140dd138472319961b541eb56bce346664f1c332007f63c213de1e16ded14d2b4bac626502ff405d396b8f716d483568a4b1c3d28011b803d9f1765c92760b57964111255135fb3af4a8776941a64400bfbe0b06ff14392a748a80a90520fecc9117b7f21b7cac13769c165154394a2af6e558d5ebb2815728086fd41d86f167760cfc2e943311354a9fb9c6ef72c52fa14f28174772e3d85b55ad4208dfd14b2a79ff8aae8d4e017dc398b407f51651954c23198b9ed8da8f446b149f624cb109349e8902a5266a48092559786023057d9736804c084ef17c7916e1f15aa5321c7319be12082ba3ae9f3ae5358964a571cfec311b05055866377c8d38d2a1ee4db5c6ea1c5366f1af9a7a05d490f4f65552b0898594f21ae720f9827fae87ad2a7154d91e1969a6b9817e70e2ffc50bfc7f5b41a6fc02cb4b8e58c41090458469ded6b5c6b4ebd14acc4f60c0dfde42676cbfd115280bf3d127b9d13eaf6d884ed9f991faf8f3b44fad2d6b9ba908d2ae43350fd2af7606e29bd3e9c07e4bf04faed13c7502060d5a8035f77bc898e57581f49c7ba30042e532c0f3fe0d5cf9176f85c86f73ae3baf8d45560683a3aa958927e02c9e31ac0b9c70bc8f830ab69132d9580e7ef9ba8d9a734b2b7dc7b6fb9659252067e0c6d0c6a0c200882a047650bf0cd2dee2ebdb4db3cdc8e11202633f45804ddc41610cc13e359713e821e1508e6a6177f528ce3ee1d8d3e524c3b557db397ba85dbf95732439f2f5a06c1dce42795a7ee8bc6ccef2906e6b49aa1bf3ca9628bbf0495a031731391d03543dfe2761f411a3337f97372b8fb67f4fbd398796abef8378b5d98ffcc0cb7c7946807f1f61bb9c396c37ee68f4c947dff573251df73f2f7b53f33921f3537035ba2fd7b26dafd9b68cf2d27219119fa7bb8d5e5cd692e34a2fdb9561f6e7da9b74725d3d365a501bcc868095080ef005f9ca8b0f5a4a53dbac496630ac01000a02144e934a3a5868d0110806ad5a70c23d779b6c32171626c991f0507348f1a37da9f62cf0e84b6000544002d9040ba699d0656f0820a4bb0c803d5f10b9b2e98887388b533b8f2bf192683fd244c4d0d9d99d14098da6a11e16e978181c1749cadd98ac5e48c9c99cd3e22dcc87136103d5fea683b6e63135be2d72ecc2be615db951f47363a71a317332ead7dfd951df3b7225c98bd4c300f97cee1d2d96c361aa12172990e49e02212f9a435f17077fdfa9c462312ed99477d4d2a0952411da28f48928822dc2322d153a5291cee96b3ea49eecd52c6c4a0c2d53ec683febecad32dfba0519e34b2346f9fc1dd95455933acadcaf25c4924add25a25fd1186f6fce7e68b7db22f44df867b695a692b9ae83b8d54455f4429ad2c997229b594e3e87f34d1b7bf81309c97208c67f414c7780feefc0793fecb7bb315b6eb6c636d345ac274e098230cc5bc4277483130883b243678b4190a4c10bfe54dcde8b76c49558cdff1a6f3555794cf6faa62838e340d339b220abd08dfefe0fd31f08e35379baab6acd19cf6352547d430eec56591f62191484a2e53a169122e32f30acd9d1eae3f096b4d48292ff28f51f86f20dadfdd33ae55f4a2d7f04ec92251043b1f0a4a08c5f3097d3c289aa6bd64244cca97542261753aeb2583a24b6a6666648d8c3556890889969f52239fcc30d3557d5f4d554a0a46c974455591a395e51b55d117f91b87b5d90cab6aa2b4ac6933afaaaa9ae14c568fee3235da4c26f4f94821a2da8596ef33cf0b977e7d29e1a40ca765f9ce9232528894912c6e730993afaa9a285467a6c644f0132316841b849bd2d10a5268e98aeb90da727259da5469b29a392ecea22cc6e24dac8936af08ab1e114e798b93107d8a88e344d5435170112da6c9be8f5af438a6d664a244b90a4d8b6932cb555aeb5330c7f7651edabbe8b51b9df23409fadad38d035aa47d0445f2c93449cd83f2dcdb2c5fe435e553522aeb45d9f3beb5d2d7fc71388ea91d57967fd9f3289e393d1e2f7eb003143bb7af7f63aafb7aa3299a684ade40ac9d22ee3d25da6c51fec31b65c6e39876068e2f2828af97c7076ef0e2074698782673ca23f143d32a5c29541df0f321c5c8a9182d4243e601e4cb9007e25219aa9a794286fb7a6b2c19fb98a1a475080de71de13ae7795acec1c5e8faaefac12c07321ac4ea0b6e5c5033039b2c5ed407bafe8eb02b5e06210e680f748da08efa026d45af257145adb5f2a81ff5fd085628e615dae6fd230c8d63c2807ecb950af4b1c64c5405fd8d22c7041f7cab69a01c2050cef6e56249235a8be918f9645ea1a4fec452c934719893b7fc7c7dfbc112265f70b8527f7e5ea1a58c8c0ccb8fa88a0a398828ea03398488d25eea20da40c62086f2651631621c99281ef4b93d75684f0d52f93d431f490f52f90e556947447e43cecc506a54c571b0088773626029a80ade9406340b2d7b20c5a6b794d932085a1a41cb67c152c81156325150cc2b34a5745ef1a2c50a12284f9f72f251f2c7cd501e411265cd0ca5169ba82613f59ee71a229af50db73ef7224d452ff23f1145556b78c20feac0831f74610b7a78a1cfc55474c391255de84311ba1086d80bfd1b5d248c0d9a3e4abc51435391a62a4d534d54ad54cea6aa662a345da9cb9a79889e4a95a69b7bd1f715fb6b3889fa2efa8a79d08fdaca086ea9abd038ae8af24a954949c13e625a93194a99205c2d681a84fbe9f885119ca06d94da1671e910991952158d897d7e82303d4e303517d971d2f429fd7cc53d4e8ea25f5b5db82437551395f2f26dcaa61ce5be0baa385c13bde8714c8af71453a744b16991480d57f4512721aa626ab60361340dcc216a019e9182eae5059d30c208238c17951650d4a7f55774f85310092474cd3b47d4277828345d7929ca8f02201a0a4faf3ce51c213243595d9535a4067757221e1877cbd9f734aba4d552347f6df63222fd6a419a8a72375552cee493193ac76b91ed2d574bf22b4b7b324df23ff4abea4be1a47c524229291f27aac7495b6d16846b7f6b33ed89731fcea73dad2c078d783d9b28d1cbd79e94b4c88a3e91e8e9149db49c79eae3e43d55a09596bbb2a68c962f9f097aaeac40dc5d73a642f4172325efd7296fa9104edf507d1a648654c81216192aa435519bc6949c7dba827425e9faf4bfafbf4bba52d6f77b348401f77bea9807cd2bda6fa97d45eb51e2be7e1552fbf78ebfa7f8cbb4354349592f2e77403994bd2772e6260f1097a3c2118a249aa216bd18e9229aa2b6f46bee5efb9a73ee386ebb37c7688a3a05c7781be3559e922fd6447daaef569725ef4f6fcaa1f2899089fabc7c94a72349c1efed13d04f1549d377a2827fafd8df2119bf39a8ff48e98cac217f5b4d414d6b640df9d48b2038ffcd8ff339383ce87f5e3ae9741ee73de53fae42a84790558b588fcc90c60b96972f55f7e5cb19d2cb97352c7fdf25a9b2a6a685d04f79d9877843266ffa5a1f82c031863ef48766293343f929785ba13f0ffa3c0e07b1602928096fab77656d14bd2b4b45efca8a4f264ace6891f91b1882a2a43f590a096510789970b5d90ce55795e7871bbd30d28512f9ca2bf7a307c2d018d482303156b0269ba1acac78a3c61b5357225a5697966f377fee3b8c4df451545272159a5651e1a4dec023a256c953685af42938ea0dcc217a51a6422b327dc403e5b99af2518bde5f844bafd5783cb50e99a19475f684bee8b7a6b1341196b3196a59725c7c45d1d75665d52195c59a28afa25a5f569590bb2b6b735425b3b802b651b1016ce8683f96c3fb653c823e25ef9128ef0b0a7de867a1dfdfc5e0d24ff908fa8b640dee1465392bc3ad9f92578840c00ca57c793c2d47798af21245634941f5cc2bf4e34b1d324d1225afd0cfd583f7d59d1e6e6551d8dd5a4ccbbfb8831b00c6abe6e6452527cbd70c7dc3d566f18bd1b35e1459595f71afac89d2b4fc3aa4a5e5579baa64a6e2173395c844452f8cc0d272a6a5ac345ad61a2f8610d1bb26d152be572a6713255f3e99a899072defca11fa01b3bad2663bb458518289de3143f90ec6ed9c78e180bfc07c042770939432f26766b4fc172f0f177cb54002919c94f1432c168738c0010e6f78031326530c5910a18b3fc4c10b69a0c9c18b8d11dc7ca0069e0b74306b8314bc40b2c54bc56207378864884213a490c50a0d375d90b088c1466b976f10ad300525a0610b4718c31e90accc6c1978c006900d2f29d379c19330e839279d3e9fd0408f74b401841e6eb0840b62c6e0843bd4a0010aee0627cac0c5ca0f7568b2871a781ba4919215fed0e42bb9c005252b00c2e62bb9c005a52f66cf810d13f905cd7451ca71d4ef1664fe4d3c5cca059b293fed2659b1416f928e1aad9b12641bed429d4a38f1da515d090e495725a5db0bb20de700ad82a6947ea8dd4c8f16c2087275f4220735a866f81822404b031071d2b2d483781399a886080912d3eae288112211c54517908a8e286d831cdd6d92761da5ff1d1780cad1fb437aff56d1fba5bb9452e621487739d96023013680b57c0e53fcde0363c1ced1e562f414a5b902cf5536703986d189d8125ff2463b9ed367e0506077f71e1823c1da57cd1225499050cad55a2bcd91a352666e86d20fd682210c241269a23aebd58f3beeba699074e1648d697f245dbe274997abbd7c4e7e12cc577ef9a50b49d698f33590f6f347234d43cf9faf2712319c4f0a22de00406c990188e1fcad1e40cf4722a262fc23b4bc8b28cdd772887621446c1b311d1ef1a525c15a315825255aa39ce1fc8dd2df356b5c2c5139d8578c29ceb93b67e802f75718715ea179446ab2760c57641bde00fff8257a048e9a3f62dbe211381a5083a30147bc8d1a2ebe9214715570f65a7bbaa6ab03f31ab80c228a72a18319b810adb166a8753e82301d1f5253e37057f146e464cb4d5aebfb828ce122608e38f1c61b6bfb1fe634e1e2cef7dfcf0c05d63df0cafcf8f27d07afcc6d09dfdbfa2a9ec7f3d60b57a5d3b91cca7b442f5f8a3c95100a77a5f678a28e48241289442a5ad451f1c25509559ce4863c3f5d5db82b3abcfadfe39828d9836b86025b6badb552e2172d4246e4a0bf50921b52815109855e8230a1eb0a038d8e5fe86805302cd1f7fd6a01fe1b0e5b4d9035c0fc8552882117b246c85925687f69a59767dcfd3d25979bfc47a37bb9df9e21b87cbf3d44d0be3d44b47b8c74f2f6cc68f71ce1b8a70bed4f6a9259ded6ae354327d2b9be191844fbcb97a322183a224650aa6de92b954098ff2d647cc5bb24e3bfd3b1010840004018fb5e0fba0a4310c67a9e746de00c04bfff66df13d0051e0163402133b0051ad1fefd4ce93533513b6cc9d26ba2e4bffef6e88b2795dfb8c9fb9bbdefb2f79dd0ca7b30b4f242cf5a8ee3fe1d8623e8d91a7e6108c2e4dde9743adee970d1f14e00bec8c5fd8a770f5a02bad29e79dc67793bc457c4fd1f22ff10204caeff9585e5ef7766b88aabbcca499b9f2743882a44fd381c0ef5aae765202f356ffb1f679d5c0e76b5e5f0aeff891e7c20dae29006147d32be97f17d2710e6e3c8f86448cfdaef0339f0e3ac17afb8f2bdce765cf7755dadffd5e7ea7b75d6bff93e0ebff89f24848a8c199dffee59fe7335c3131dbf8039d105d0f10b33c4680ee523dd4cd4bb66e8af8418facf80c91afe3396c81afe336e68c8f48c98aca184e844bb68e041fb2f9191c32dcc845990a1ff0c987409af8005edb0d08bd86285d80285d8e20fe2d075bdee0ba3206b845bc41af753ddfc2015d15b3e5cedb707c1404b4037202613c532c32367fc0ead3c1eec510da1aa0f4477517b202ff2e3f6daefd85ecb3eb4a8efc377787e7b4f06f2c2bdddc3b5d6c9b5ffdc73fe7b20dac3218d960ed39c6c02c32d0bcb9b662630a44bd49ac6102acdc212aa68935b8279e975832bf5d4a155e945228556a44df3df610b04c108c6645ad6dcb5664bcc172d3b0ce78e8c27a9ecb0e509a2fd45dba3ca786f4fb47cb083657c04bbac80f892a2ed04615696f0bcf64d785ecb4d74e0c31a37f92b11b3ad2cf1c47bbe8927de937f68b1437bcfffd8fe89dc84e73b907f68efc9df2cc6f8cd5ee5c5d530116e721b2a3a823666e8412ef7db868ede8ae76932af25334565e2174b42574d8c369384ee8b2563d03b54a2dd1382723968ffb83b23da1c3639ccec606466869cb7b2881b12b19ee7796ff1eee1e59048d8e2c28271e507e2769e0b1243d70c8d59bc11e38da843ab6f3651325e847768732fdeb57b19afc9f8ee7402617a9c4018afbabb4b7797eef6ab3d8139ea24694ec7f9c0b79db7204c07fc0f6fb07b0b76ff81303d7ca67dac34577fb66eed9ec33d7ca62da788db79108481e1fcc77dadb556aed6cad5daf94ff41df0ef573ca9ae3e54708c61cd2aacd0ca432b4fcd74078744443334a01154835390fa62a9b71568d2c7d03e08eaa05aeaaea484538281b9f472c2ed88d42674c0f95d1c3518ba603a2cdcadc20a6bc7829cefeb8436da3f9c098fb4bcc655e489077111cf5b0ed42a43260afc40f0e3743e0e17b7beedcc22dc1aba40245c8aefa7e034f7fe6372dff9b08c2d1df79c4e85354357193243afbf69c8f48cf63c11f5135886569c19df3f3469c616fb1c10867b02c717b0032ed1bd78f237cbc2dd2aac2be3e4d4d9024d7afb2008f36f3b325ee5f306a249ef2f0377200ce955582a43268a946958f01f99a17b7defb558fdd80cbfd913926ca22af7fde6b8fa1c0feebd6f36432e3bc75d926c86a418a9c90c9d03a418a909493684f54a5ecda06a861eb6f6a56cb8379e0aad7e269afc475cd03fc3711bc723e35971be0882e0db3c70956b4d54e7a3f6a83c329ecf23c4c3eab027a6833d413c2b8f8c478887e551852d95ff401815f08a3ce18c9b5cc3a1cba27c11ece46dc54c77dee6c16ebad2de5bcb558e26ac99a8ee3d6c4dd4d4336c4d54bc13f5854726eade0e874666e81fba381cceccf0c80c699edc1d5a790ffe05613ab9075d69ce7fb3a9002d09206e68e52607b1e038431169ae54385600f1ede823dd90dcf042627c164b31557a8aab39afbd3c457a4dd3cd44916e66e8868822b92186f3a5fdb71613225d5ec815a2fd3b96747996ace13f44ba5821d2a5f4624997aef5433caa6ec815a29f35447bd7596bed73dd77d9d65abf83ab18e9ceb78030d55afb2d5783382cc24bba7c4bbad42fbda4cb130989d0754426aad3922e177c4b44bad8f79fb144badc3c8389ac71235d6c9e11ebf21301992cd19e636c89855308871016212c8243d70c43288434da9f0b8f8433da7f0693300a3adc42fb77a17d874cd0bec5167ffb87bb3d2ad0171135a309c866c61d3caad22b08d2f383e832c389acb159b2902e33663df0f820de50f90df2e0c02383e832e389ace11305be771ed567f58c26135552cdf00e11557a410c7d8613e9525ac91a329ec589f69f317b5252cdd20b589e34d3a4fffca4b4922ea5214164ac58483398489752901931e952029968f79f5cdc70b3e85d729590106bf87bb8a48418fa3f2e2d21b6f8cbb0420da8ce1cd1fe245c0a52f242cb94a0a0fd91687f3088f69214b4bf95c934e410512521338cc51bf64b3cf02459a2b8df2115b47f2885e8521ac2124221de104521de50e142ba945a46c22d3e4442742911d9e28def3d04800f85f86db52bdec8ef2f36e3a8e990ebbd1452ef924b672cf5f6118cd9ba2f0921bd7f890747d033be3484e5fd4b2d19ef5f22f2ef1f4d43643c005a5a881211f978877010f241a808a1248cc0a05de506f1461dbd628b3f87434790a1bf0a0e1121b6f88b706808b1c5bf83434088a13f07877a105bfc2f0eb1628bff874332b1c5bfc3a1202121dadf619dbfbe5910daa170ed975e1ed5446129a897c35618ee2ebd4aaf89b2defb9794a85edce6a583d05e10dadf03ef0d898456738b1a9fa7e71677872dffb095b58d08b8f18b26d8e8f8c591257a081dbf38d244874388e1125eae2f5a56604141660bcf0a09da3b5d330d596cf16ad4f0be0aeff7ffd837059a8643eb87bbbb9647d5d1784a04efdfb5e28dfa2bf8dd51c197eccbefd7bfc3df3640359ee2c0fb7b541f787f8f8ca740f0fe9e96a742f0fe9e1acf0d8a0aa58582f2517d5a9f9acf8da758f0fe2095a7ac787f50cb533ede7fe43df27c157987db46077e1341c5ef687381dff1b5234c8adf31b6a36cc7d9097ecbd596325bb276fc96ae2d6720f05bd294e0b7b431e2b77c6d09e3f15bc6b6946d39db733565f664ede9da73664f9a3d6df67ced09db33b6a76ccfd9f6d57699edacedaeed333eb05b819d05784e81270af08c024f1360790305963db0dc5892008f008700bf9be483007f0073007b8d9ba406b005b0fc0a6027b09c00964a6089847c07601d980138ba7c1e38bafc08e0e8b20438ba494a009f00473765404a81a34b49058e6eeac01358e2d2cbab7815e49756c1af20ef8ede2502cc2dae8e4286f1cd401a4f19f1fe9c96a74af01778ffabf2d414ef0faa3c3582f7075b9e22c1fb83359edaef0fde788ac7fb83324f41e0fd392a4ff5787f8ecb533bde9f53e32928de4df0fe1d95a74ef0fe9d96a7a278ff4e8da7a478ffcecb531d78ffce8da750f030bf808f9e6ac01be0a3a718f00af8e8a92372fc878403bef3d1533a3e011f3d15817fc023e0459fc4bb7cf4940498f81b1f3d458167f9e8a92626f0457cf49405fe3f7aaa022fe389f8e8a90cfc8c8f9ec2c0e78f9ee2c003e0a3a736f0427cf494063ef5d1531e78d3474f3df1a88f9e0ac19f3e7a0a044fe3a3a73ef007f8b9c5f5a8dce4af82bc3b29c855e4cd690fa6e23d2ae77e77a8c0db8b951f15b8bed8f95181b517eb1f1598be58fa5181fdc56a1f1578bed8fa5181e58be536aee314d1ded3692a707c095ba1ebc3190f69fc3d185c6d18544d812f0af0950277a2c09d13e08e0970070acc2901e6f4c01c1e98b33148020c8e0083346ef21701064380a39b0af020c01fc0d14d03780fe0e8261bdf011cdd54e39fc0d14d02780ee00de0e8a6d36b004737d1f80c600ce00be0e8a6f02d802b80a39b00f04ee0e826219e02b889193f011cdd947f87047074d33f1338ba49c62f81a39b827825707413cb27812300011cdd14e31f8091c0d14da37700d6818fc039b0111806370033e0056b8c037f33d7f0e70bc0fb2a00ef4f00de204cfb23006f70a6fd5df0e6b0b4ff0dbc3934dabf08bc3930ed4f04de9c99f64fe1dda1d1fe28bc3b30ed7f00bc3b33ed6f00bc4705c0db5d04c0db670680b7d3d8c0db57db650480b7b35af09eb113de534603ef391b02ef6963c27bbe42bc276cbae68c10784f9a12de733503ef2993f19e2c8cb78cc9e4cc86056ff99230d78c0ade926625c25bca48560ade3186779485f08e3310ded146ef6f163f78877a7f331bfb9b49d1e91db6a49028d8c39b061e6af437f3d4c6e95d44fb225be6dc34e700be4d7577583f6c4d945ca2ad8d4fcb5c03717768350bad42413a9796f2394f795e6a6efbaed502c2c8fa5dcb53ad0d6b78a3696d48b47cdf92e8acb91a2df1f61b02d818238e393f4fcc34d56c675add234e85e5267fd9b554589e227177a4c2da5d99d44a6981043269108180c31218fa11165be8db3d5c9af7149dd69efa9c73cee94e7d7b0d9f62e24935c349ff8485ac41e937c3588698947ca1a7d569a54f3427d569755a79616dece1b01f709470e75b87794abe44bf99a98d49ac896cfb6ca3aacd0979a2a5a042f4cc7435c31904bab2b24fc6e9b0bd62583e5caf2179cc53bfe5ed4eb4fc4d7299c7dc24bbee3dcf9bf381bc44ff39dff3e6fc6906f212f3debe7bbb870b82d93ab9e047bc81366ed176dd9bc0f0603aae8b7b93e9f81e9ba8e8bfd16f427b9a7f68b1c39ffe8ff95a8ddf04fde14f63fca13de6709dc3d5f2ca8ef9796bb9296eb099579a981388139e37989be2cfbcbddc147f7b49d7bed8a20a55d8620b6d464da3b572f4db36d2ff083402912ec7711f4755a5307cd2934a2e8b231dbf19469f73cef719bf185cf9df05411046aa60667bbde41c7d676e71f7d5314a50a73302913a608e7b3d1e1414693f281fcffd7c3e9f8f8a8c26d858a26feb104b54c628ec146461e829fca5761089d17c3b6fa7f3c4e9ed74aee759cf7652f4dfc7797fcbc1e07f1cf77db26b7592aba0f5be0773642d73d79addc8e12aa77215b49e673d8fb3f503bb5b5dabd6f338cb711ff7d5ca792888f53c5b6b4724c4ea8c8456e111ebd5262f4e288810ee9b71baea3da756dcb9ba96778b687f1953612b86458831a2b4d2cb539e98596f4d6c31d9ce7745afc28447eb709560c59773dcbdde1a41e540bcc1e115efeb2fbbd6fc78707768554346264adadf17645d3347b4cb5017a11a1d42c2659016e524da1f9ca11197d3dd5917a59432929a4c2d1771b955b7f26474cef7e47b02c6689754bcd4177819f3eaa93f324dde8576d9cfec40e51cf7e98013a345e7a7e0b4145370fabe47c30fd1c5fef78930f71eaefa721d07729a0acb7d4635873bd96f623c16072035d71dec37b145fec55570205ea2e55b4783966e062c75a7c345569cdfc0628bfc4fa6be54c1dbd1a077d83ac9e8d212ed9f0eeeeea4d7d8ef8e78301aedfb84d49752765276db67f120251329abac4b4a373394d55aaa5c0d694aaf924746e7e0d6f7184fcc97c5adff7d4f5a723343102cb6f873fe996ed7e1ee7b1665d0bebe1f0eaeb55c57a7e874c76d4f66283915e8c653315a6495f7072d9982d333de1f04bb51c5d59c07c083cc105d38ef99854588c72a5f71d51c2eaecad797a1f2f6036164c850796732c3efab3799e1a7c5d8b5beff54b0378961ce1e8be1f71e1ce3b23880ef5fd002d58be7ad3ff6d80c5c05a765646712c36f6a19d899c496ef39ee06fdbdb321d6f8de6a8f8b689f719115f7a2bd4af6989bbeef6ddd387e135be2740df476f744a5f1040e5b20f85dd769db13afbd967d68ff842dbd4a4a3ab0f42a2959a95b5ea9f99be8407e22fb8d9bbedff2f75a067f7b4ce67e1fd8e9749b93194a00e00d4283f617820666b92413dedf379b6149c9bcc06643851deede6a72f4940c0e28a594df04318a5359c3b83b6c79545a27a58d0e08239fd4e06e57dc1d5ac5c15ffac9951c2ec0f7220853021ee073de7abe22ae7d0f08d3c303c278ee88cc10c49c8f060be9a3e861618bc69393ea143351376bb9d3e96cdb6b9ad675f776eed5fec60382cf824978735a9443239b0cc432fe7b74327257c4adb5c375b80eadd17513a1ab67aff56eced75a39e3e47079852be2d6e7b0b4914966e8455c226ce85a6bad28e0d59ee77928204ce5be5a6bf56aad5ead5f0f9fc1709e67dff378aaf492267f8e9378b896ae844409be973d07d7b33e93204cf5dea3f2c0ef3d2b4f4c162bd0dd2b7eade1509069b2d9a3614fcc34d95c44cb56be9741556c9993f3dd9ab0c585e16250779d184b889021b11a1414141a9afb6d37292f88969ed7637b71ab1972325afad86edc247f2be27a55f0c2164c11295d3a32999f511ebe8f9343078c9db7a00f0f524aeb59cf0b5bf5432247429a6931497e9f0d2e0ff99a4e42d3529e5658c81aa09511c451aff070f7c925dfe2fa5ead6fbd062a272c4eaa53cc69654f589c54a798d32a06085355544eaa13162310a68a9eb0fc4925fa538c74895a74025fe54473529db0a0aa29ba131627d5090bf059f0e654b306ae7932729ae14ea72e6aeac9e6a544e5f76989f63fdd9c98a87cd42cbf4f4dbcdf9e9c54272c524e2b6df113efab4acb8f1d8b49ef61958f20cb77fe0b7279d4d7f40e5b9d19ce4c1438844a83443adf79ffd004864bcbee3ec968f7dede97bfe5d866333b3f0fd7af99f3d67b2e0a37cdbe2154da7b6badfd3c6df3fcb2c5f54df64d4f86a8cf02c2541c6e71fd0f736685a91cee7418fc4d36519d2ce34db3ee4d4fa44bd4dd10aa89ea1e7cd28cb63682bed59af71454d71e5e68c5c178d9349ba1f71504c3e11e061f7c19786f4e40371e150dee49e62484e5717e9f5ada4f444e2ece3ecdd07461bbdf2724279b539295eea316fd3e6d3210540161c08a379908f4b20a7cccd03f098b658c6a03d1df0cae67c12faf2ca1fdf63bb4dfb20f2d3e307f59cb405eacf735c80c5dae66e89f0caecc94426470bb99aea66b496f937547b473fc9d6879232bbdac2cbd4a4a26ea3eacf42ac5b47bdb8c965fb796a756763ce1c3f34fe4ad15b63a17ee8cccb09bd1fe2c5debe2aed5757ff10602135aadeef6a8ee7b1fb66cf7715f3681216b748fc3e3134fc53f917f68b163fb0efc0fed9ff89a7f6cdf815f5942fb27de02da3f912db07d07727453d8e270ee7fb845e3c5a321db62dae5a947dd4ec47293d7395c4f04c574547da341304f8cedc305a26368557ad58a3b2bfdf82e01616eb43f0a4c89fb72d39319822a50f5cd3637fb627051402382d03633f424fae5a9951dda4a13db0f8f96b797076fb8463b8d184aafd2cbf33cd00d8ef9349e8a2fff2abd32e806f6c5e06e87d55a6b04a57c5bf1856d713b14ed3787bd5ed74623d13756007df0fd06772024075a880ec01a8038d0fe1bcc427bcf0a32e405da3f6e14bdbf1918d3e50dae48bf41196cf08a7f096a379a1bb41815248afb4e88ace11f4e4177dd10f0bbb0f5cdbc762365b0483372ce9f3daa556cf1f7b027c8f4c87870105b74103d2ad8e3034f1024c826b6f8731ec75923a21b9b360cf9505515b61b9b36ac81b39e47a57203ed3e07bd3f8d056f8f0cb6270bcf0f405f68d0173ff064e151fd06e5c9c5ad0f0291d8e23063b0e81db6666426a44076a498ace13f236bf87742c22433f4f0a5fda5cd9c3384c1844b5c4948031376111e891ad5349f52e338f67338135b7ec897d0d511e267dc7b4931498afdcc97ce20c36c06ed5f928328ef183a73f2f6e8fcfea5262537c4521ce28d58bc8186585a43bc41faeefd4b61902532c41bfffea5324454fd9b37890e797f74fe5d6a83a69921136207875dcc1049d88518fa0b81c325008045199d3323874a66d815d9f2e398555ccdbd0c5cc5a88a91f69ef4314e29c83b34f2564e2eee0f8ee338102874ad400afb230731a4e144abc8cc90061eb401f2a6210bb320c32b441712121a398c827421d9845608bd883754bae0b89092c81ae07700c83b9c821079874766e4900939abc8a8e480142321912e2f8464235d9e454a225d7e080909c9869444fbdbd148e547208c8abbbb7477e95e6b65f98a1fb43abe55912ca212cc63f9dd637b79b8042bbda270ed4fedd5126c2f5d495f52e2f22917512a2fff8b28cecbdf5ef186a7e58b3a2d6dfd03613e18dc077f0b4e10418030418030a2df42e5af8cc94594d3dd9d52aa699a26a7cc5c8c31da4dd21a0b5b3f03855a613394afc53c2555758615365135b48a371c546927c5acada55b67116ee7379089f8e27175335d776486a6033d46bc9919ba0f297bf8cc63c473e42be27a6866786486eee96286d6e3929cc49e184357e9d505b9f6a5cbbca2f4fa8ab89e986de5e5c82175fd1caebdb75cdcb84f2b24f8374198aeebfcc697c042978d6d29a594554a59a5f4ac77733729b64317129210ceec90c66b9cd848b12fe66a2aac58105a8535c33987faa896122ee7aa5f3f2412baea872da977d80a89cc30744d94fcbe7e98f25efc4f9e962f33c41b5efe4a3357e62597b4dff782ab4dbde27d12ed48a6c97f7f53d7ff9ecc9473df0ca63d7cc40366e8a9d04a0cdf0283f69ab98fd2a5be8c82762a8455d0fe3bd4021748bfc32f844a7e875b089f106b3021864b28124de1114222c8d01fcc9ba477f8e5100a990bed1f1299285f32439f8547360cf3265c18aec338aeb31f78393466ef7a2578336075c612d18c1b1511e776e0c7d91930af7e2eb8bb6b7db1d8f20aad422b8739cc5fa75519f4fe66af30c0aed5bd741c0c77872d9b96c765d5d08a375254d30ffa05349e4c30a4f91d76d1fd0e6bb020fa1d7ee105ed346627950e83f6b00bda575cd01e22d1fe91f4318652a0118b2dfea51734d134e440ca3bf4820a328442ace18a2d01405e64def5374e8bda9cdb7fe087341adc4c331318926e316c403ab6dce42f8970021fe1293ae33b264a565d7f6a7446d34e696c74c4943c62461b256248c41b0f9828673243f9fe3a5c4744c918cea9c41147e4c9a926aa06e16256dd9c154bbdc9599bdce8264e455f1bc51bdc15b125a63817c81ed8c842fb6f133703edbff1be9c6afee6541cbdd14dfe9fca5b3081488d230694ed53398ee37858ca71b57a14ae37b73fc5e4a6b6ef6e2d0436bce549c5bd26b9bce50722e1e92dbf0573709e8bf2b73fc55029370ec719469f51203ee426bf9e84e84d310fef5ba0e566816c747b7ae241dfb3272ca44b7d6ecace4b8aca95be3745e7e5156fb3326f1ddbcb24b6977faaf26be6a4740ecc8162df43e1b6da8139b6e751378ee336148d86524a29cdf2293ec5c81afe1eacfdc5df7730f838dc3f975f5ffefc38329f5433742bebc4ac6cfb6cdb72a7796cbfbd44a23ecd7a567cc242d69079c57bff4e4c4ff95374bad2a779ff360371c47486272c4e5868208ce679525a2d29f5999ba6fb534a95681df5c3c1e5a8ea37acfd57205ae2a8ab664faa1316d2457e547e6e3607a92c87079ee3fb88a052a9543434303636f7ba6c6cee6571f366ce4d083696b60d4da5534e7328cdfb988718bdfea573345172e37ea2bca7f4bb49a9bf7c0f7fdc57efe4e20cb9cdd9a0838d25fa938beb6fe36fb7d151daf9b9a5dfc49bb6db3731a76df7c5b75dd7718a68ad6d3215fcbdc97896ae8c901ac5c947c806e6901ac54987228b2d9d979bfc7037a7e3e2c0e28df9fe1c99a778bc8d1fbf3b3e7e731a8603e3c03a326ef2e7c0e28d8d052907bc47f11b50c1fb73a1a74af0fe478c40059e5ae2fde5ca89f7973632365754bc57f1fe1336639e4ac13b03887841f184407a84632586047e010ab8c0e304941010800ffc101d10c1b78060bf8d8f9e22c1d7f8e8a9117c113fb7b8fe1d194f7d5c3ff2eef8c82cc056fcc775efc7757f77fc272eb282b75658618515565861456541a7adc0f1e553e3a96ae3a915bc3e307f16e0eb26ff15604e05d85380bd0aec54b84f95bc9135b225551cc0f138ba29f524c023c022c0d14d063802e7c0466018dc00ec267f755c9eaaeff18501f8056b8c032f006fd99235f266aa66cdbc71d5c85d3ee334be9261cdd894cd69f382b9666856322c199b81b79c499b17cc3543b39251c13bc6a22cdabc768479f0fdd468ff0e07e60f7a2f77a23f4134ca6c7f58daf3bfb8cd87082009688104e2da1d838d251b63ec64898b2d32827208beb17cc6696a6eb8d8958de6ec55be2242c6c5cd5c9a51cddbc4ab1aad5e2664ddb88986abb936a3d7c3c29b988d99d0f5ad11ebca6cb9b2e15e1736baf958dcf3350b89781b23b79a7c71b07b338abd4c86c56ab55cae99191a9a1aaf719b9b9b584ca66374958eb1e572cdccd0bc6231c618638cb31865b398ec2606bbb189352f4478ea868bdd291b11e12a2234bc89d85e4e305b2e8e26ca6aa2cc26ca649a46597d912e4fc93839bbaad1ea6534e9d25ee48da7686e5ef206266f6ee48d7e992c4fa9b8d59519b1be154ad77c794a662316fa7c5d6e747f14be739c2d17a9d95d6a030023d6e16aeff58988372a105bfcfd8b88290be0e135872f626c83f68952f9620b4f9c007b700d30c30f8b8c2495bf42b31153d3770245e6034ab413e144c7f86b4b958e363760c2a277bc99d5c85ce14fa7b4b10da0fdfd11e0360c4077200369df71eeee7bb8dea30474b5b2b2e23f412392c46db4a580737439798f66deef9c24dccdc653df6b323769a01bed9ee264cfdb659a8d6fe917c3f241c944699f249f97cb3a324f89ee7744b8237393f6f97c2814aa405ee6f7f6777c6fed7f5ede21faefbfece37b518e9ded434d33131821984fa4f6bff9b9779c4c14f8da77661d0e87c301435e28452a11237a19a2fc438b1ddf8bfe87cd2bdedb0fe28390917f7c79c5cb2b4b04f1f69b08227f1322d173fe03822007dc385ba888c82e315f44d9630efbf408cf15eb760f9b0cac1f8e25e31e698d634941c1cf26db649b13958c6fb24de6614dc6f97c3e1a7599cbdc89cffcc944c9b74eae970282291c8eff9c9e874173fa744d93a9ae8ce5606e865ac78916a3b595d6de7d1a01e6dd793b67e7e7e428e1c6c8b166b097174c6b1f7369edc3b5609c14bc81e8944f92197e5e33d43e36b1457bbb87eb79f9c3c1f57e77a6c7017d3e20cee3f094fb79c55019bdf69f242496d7fe63136fccd7561ee53f5f449795e8f63defb21878f41357cd82abe0f47cd2e82d07c290321177441afdc4ce043c22ea51f62633d43ef0ed087c0d7c6d62aa472a31c0b7a07deb31b0c75848e0c45393c05f016791ef55465ff618084e30be7cd86fb0cc057f7764fe9ff96920ccca12a2ff7e87284737e51d7ee326f0bdff7038d93ab99c077fce3dfff3a1f9293e71d429a10fd87db8a0b5d89d20cc96fa3e52d3d52690dd3e8b87fbdb56d50527e73bb289f2de2ad1db651f1bad71b214546f2bdb9f9739163764a2fcb5e75c1ccd44adcccd19f93c0cc2574b2bd38474649b9ba1f6a0196a1f1b1cdd34f7e7a5b58e6c869a95c9b4f656669d7caa899af3b5ff64266a6572202bd3da7b747be666384118e7b6a9c9865082a85a4e8df67726df03f1a1d921827c98c7e659ab7d43a8ac872398c4f6f5435bca37844a6fdfd4294f35ba7dca97354a53529efe7698a6daa798669fe7528e664aed7f600eeebf8f1345e9574a3f0bc2584ff631bc5df306c4c747eb7f7b88205bc5dbf597622bde5457fadb36448ca63625f3d8be630243bad8a7b37ebee64fde536f43a834fd9aa5eed4d046539a796cdfa13623d1a179a5f3da4bcf7b69fae87fd96af60373889e661ef453de8aace7d12ab2d57aa2efaaf5aca595be88624d77aaee508a694a3681619f037354faf3bec50fc2e07f30c754bdad7a99c76fdaa33ce7a9f92899ea8dbecd3d1c56dffe27356ae767b1fdcd62594bfb9bc0d8a18dee640e17f77bed3b1badfdf665cbe9cf9f0362dac3612630bed340988ec30ea35a7c4e8d8e33400f6561a3578d6a750bb26209d13859ac1dd5364fabb4569fb2c6ed8b5ce7d9ed8b9d67ed17bfee888eefcd78d66b74f42e74f4968e91c99399af3c26c6e4661a4152f34a3267a691e9723283ccd5644d213327b22e94bc6e96d474412363e410c9a244745c49554c326fa6d32631268936a0f8339c4e848e4f0db04739a48e529e90d823a2b69d151df2e3e7909f394db82b48489009399998ee4c38a59409aa699ac684566bad9589ba6ddbb66d4c6c2ff46dc759cebab999aee992c96868a44aaaa28d96dccc9c2c2e13dc0b7ddbe9f93e73119a2538730ecf71aee8f09f2f35103db921a43f5cff3a51d373adb5827fb8b435511f2cfa8f2b82b4c6e52990cb4d93f3806a463d380d5f355ca9b53d627d666e02a9402e4fcd4ee7431904aac1f16505fba0cff2588b1df449d907e9e9b3601f2bcff220158bb445dcd190967c995c8c58339c21ed6b40aad832df834131339c1fc22012ee5097a7a6ccadef3fb5df1f4bbeb0bcf54f824ab0d099a7587e86aaa7a6d49a8eac33f314e9a7ca287b2a7c4ede2c8ee5a9cbb1421ceb8359b2963f1f036fd04a7f2c900af4b1386d84285322339c93d31ea42c4f8d48926aa589d234aae1aa7df28e91f7e73b1f0ce251513e9fbc3718f02b1232ea8ea6691cd73d058dd0a1e113d095e646acd110ce8398a3bd487bcfe7f3577b8fb6693f6a793ec6d7af200444af7d525ee56b1eb13cafe5518bc709b4cce3f3f53fdfd181f25adeda27870c4383fef31d50d6bef338fc833fbfbd035222f0c99def5efb0f0e2111fafa282879057cade215106505cca0ff3cca83f0b642dba0f73e1fc123a44ea91fca1c2e6ecd9ff29fcc23e5c1cce3fe474bc934531009ffcf3ba8e3e618234fe15af4f53f79ab643acaf52708010f0444d983770b40ff79fbc13abcefe3699d07fd27d319e6fdc3d3409fef6875c41ab5266a6a4f276a8a161eb1b4dfa3d19019ced736003ea7490493f0380ec270de93379014cce122f4383ce54318f41e7c53702814ca7b7b941c757c4010e83e1f03e563709880b251004487bef39c078172e839bf3f56c71f04ff93f2287873321ae54120cfc7e070e17914cc61c2a52bedc92828bf3f47c19c0fe1a8eda78040b90aa93b1fdade3f0feaf83cf846804020d07f3e9fcf07df07811bfc4e18faf3f90ee6e0e07e3e46801e456fcf7f8f22c3e0e0e0ee14c8f4dede03fefd6d03e1e0a87138885110db2990e9ed3dbcad98e9ed47ac215256217584b4ff06e3ff4d141474a5b59fcf5d4e47907aa9bba8d4ccd3c6992065886600000000005314002030140c070583c18048a627922a1f14800c8eb05674561e69490e53c818430c10001000000000800010540086610e35d2c4e3eb640ee6295a5c6bb3308487a5cdce1213d734f3ccfa695ea098279de442dc32ee0831b2bc949ca40b8e2b8d1ffe596f9630f487f3dd0dfd18941c1b86e4126d61309143d334b42145060f188ca962259e33d0998924c44b15023a103f6d26107a28f362f284cd746c8d7f160c36f03cd73b2638984b86871fa2507e7a172f5a9df842699d200952607e61ce9ead78db43166a342c86340c04556bdf0f3d8eac6ca0edc0b75b9539b749da486365c106c2e40445dba7409944e40aaea1eb7093dce5d58ace6a7a1f7b5521aede55be9d86155bef51bf51071313d36726f911a00aa8e1c04dd04421b6e9dad10cf8d39e0dace1172d2beb819cc4322dc0bf6e051bf80acd3e1e1257c537c9e7f27bd4d37daa8655d2b8aab70ab62a7b5b9acf0a6df412b04f9e84995a6e18c1e6ee3a51cf29188160405b3e79dd6340fa00dbf218a2feb52b370467d5dee3abb585af35b3fdb4b4345fed718fd62bc007f7cde8a85d720a5d982d76402b89604a512fecd5b9c81f8653b12a3a6604c993a155467ad7171072e762424b13616b845f5ea58fadff43598184469a5eb5775219b9e9691a514c52572ff339d5a4aa04083fca0d27af1d4a777bfb147fd0d71a44ee7ad0eb5325d8646ca47d9396087880e515eb1d9ecc3d060137dcb32afa7fb9102eaa61890edd31c37accf158343af6e4e761bd0c3f5c67a5bbee884b3d18f2992f04976ec84e25e8cf042029712c9ecb6ad956a30141be331480cae443898e4c1f8b14487564b8d8d4eebad549cdf0dc77ae3df0def53647239cb2e4dd2d1f66d448e607029c77412f957c00240a7b233305c76ca8a0f4bb7e39d90537877932609fbf27307c4409fbaaf13feafd54d845af62fd1ce07e58641416e076fd98a99651d0cba26c8a7153d6b016f0376a77597690c3a50962ecbdf77712c6cd71ce01ed554670fb20e53bf9dc0da12e4f5d86d194a25ecdc68e17139c21faf9b2a935bee8a64168089b4e33c35735d2c83136b3aee9328e62914a3b2e0bc4446b0c5f245efa8b5a6c973411c6624f23ef2c62e258797e5dd68c195dfa6c4bd5d5581720b01061ff40c5c580de113e5ee1238a6128a474943cbbc26f4f528701c8cb62bcb9996cb528db88af90ad9cc939e5d7f1de25f37de3886f80914e611799f8a30167ba9b3154d76d10b40123f4f7b0548542883a54bcd5f858b2990ccd4f1c9431e1d71d0cf3100b73dc8fd7472e6fba6910f9f35a6f038249a622bee79907dbfd10cb36863e536c464266676767354ed5f4de4fd2722439600d3df1669bd51043d8bae630aa2097d87b3b336d484157ff06c41183c408200c8e4b348704b11513ba2a61c662ddbe3f0e416fa69e31cb4321e37a0201e778fa927b4c607d75ccc0c3a44f24d6beb2d44f983e57c8e62de8f5b6f87ec9d244cd06501271d501f2eadd5aa7993e7a2da87e091f4e50f3fe16574903bd3a377a832701f9e28d4fbfe2a3564ccffe06a822006fd4d6c9877af03beafcbd3f89cd7c2b498a78e61facadd74e92200262ddbfc0ca3414e10765931c98eb4afc925650c4d62d9b7d73020114b432df005c573a5fc516cefd486920ebc19918afb0cb35da35da3e0064ac03e38a2d3588ee9da78a0620c4655f6cfd199a35805fc723b6f46580c16f724c6e808bb3b51cdb6cbbc1ddb5fcd7c7a0caf4e0971635e0b01648a40afb0fb042d96413800fed40a6adff225dfa840fef996e4040c302a1d6f4ebfd3daac3accaa2fb5185487f9cff1dbb42cafae1c0960d11bb60a4e92a38db2328b4edc75348a71974eadc17408ec33d5594f8030dd57ab9d74b2b49738ab2612aaa7b8180c405bcb8663e4a7ef8613120d0961a7d02211fed685f12f09e5b06029cb39d21ca64931acac398e5f0eb30f00d81bf9626e2fb312c003b8b4bb73cfa5c974bbb9b4908206eb78bb5986f6e083c5394310d402d47d3199c179d200e873d5881f8965f634203ec683aeaf7d0286b3a104877861fdd4b991788797e729b9a361bbbbce35841431c0caf320dd4e1bc799fd4941c852f8b1e43905396c7cbf1e3b56087426b8d221a97e8eb4cb189c5984b346ac9afd2fa8d9dc839e3181c0fc6cb33d911485982712e108981c1db7f47d85710ee56507b7cf265ec0fcac3c9ca789019e82d14ef239fc41e1d502758da3f59b87f12132d9d64913b4c0eb4fea13da44360f64351548b4f9c5306da18cfb13fffb1e4dc316bb863c1d7314ebb63c0bb63fdb163b3ae631255c7e2eb8ed178c76aac8ecb54b8ed6ac43f08e83b6845fc83809c83b4f7876d12897f5ce44dbfb36dfd18acee8f8aa1f7d6302d5e798e948c31adc04671cafb030b28facb3e66aef7d48df7a71e788f0a4249806b4cd1b77064cecd3d21f377388407375a93aa837c20c7c2ae79fef43f7f5880feb0a64d40f80134adcdddd594cbd29fcc58dc7fb66fbcbb05437b1a482eac9a4d181df8b90ed16f7ca7f8375adcbc549ea3dc6526637ffe4ca8f10792675dbdc810f2273964bf3af2a711e50f1f983f2c397f7807fde122fde129ea0f8bac3fdc607f18d1fef088fbc395f78735f00f53e21ffe907ff830fff0a17f5837a83bbe9c1568ee9f50c07fa292ff8446ff09c2fe130ffc4f0cf43f11fe4ff05d260b0200dd2ecdaca500624202c43771c78a08c84107e41f7b9f17990c0524ba1a815533c6d00752644ebb1a315fbbf1f8b6d76a223d5b429b741a2f719e08fd3311b07a28b34f47a26cab41222a5b906aaafbe3a8a4930b8e12d4da21e62dec77ba75b48c2c01ca78f763eadda5ed4d747f9186dcba0b63532cde9c958c0075f76f5c48238f9cb5af39fe19a0ca787fac8880040d18107e002b0360c60f9a01ae13195a29c70ed9c69708e7adb92f8ea1d97713110014a069d02263e01fda7f90360c19df0a02fcd6db94db8fc1b371a013507deda3a2c0e0a6cb9cdb6b547d50b49745d9a41cdb0c3b3be54ea672c36e4266fd2c81ed3ac690026bb672f915cbecf420d6f25c6f1d206b7284b3ad7cf6f858edb1b8c7028e9ca341cc932a9c5b2ef034a159dcb9d6f19f86f0f3d950cb69c74b66e5579e3bff04fab3da348d58e084233ac176f040d611ded2621ba9b2299203c0f5737f8515705dbcfa6ec0aafc6d4f4a5b2005bcd62e14b699f849ccba1afb9301f4d0fb20a6f670b20588000f80128f182218c66910395124d859e3abd6e275d43b7a8480b81af2359466d0a44d15c63a5b6733c8cbdc585ae24b8f23e37263691697477bf7ee48c81f316ae2dc6a89ed4ffd26ad8d829b70bfebe02fd750e8e6d2a805b05b9c41d2598f7a1361e1e7d0ff8b9812f6d6ed7f220c5ee907a15fb44ab84c5e1c1d47d50a8e6abc0206cd5c80ef117766b23dc5e240e337ccaff668d42d89c1a3a6f1d0dc7d506a863c8cf20cd0a5c2dacf34e0902f4bb2097494fea95906eae2b228e78196ae4a702ea4a244bd79fb2f447a83b54a827567d1494f6dd052c9dc6178b4feb3df009b16f30a3a3da69622e341c45a7c19d1770ba741cce978300a1af973179e7cdacb7db00cb6b4898205abe007d92bba07c2d98d020edec90ebdc9ecf1ddc86be658f13b76abb3be5bec0745ef670c19034fc52e69496e6dffda9faaba2e075d96c91c9d13a0da6be00f595edca7a0fa550bd5d46bd7f0d343620ae3b3b2c3535580cb21871e3dcacecfa58a9452f36e536ee70fbe56e17eb49eeee44fa364bb90ddb7a8b02bff64b674265356399d0e606918493561ddf527656caca2d2e8f10ce05fa0261cf8f4c2831b3bd6c02cd1c7ca47f2d1b37b0bbce31ba34ee345a0a2413f9edd280f0e08218e6430905551957da5e455a245d6c8f8aa25ac139dd0b864488d181a0f39a2c8a012ef4a792de64d118ca4b7a368f5e85f3288782934d5ab48a5a190005734810c23784341f1096d8fbf93304961e4fec26f3843e0185a38f2fdd83f8231c06e17aa9a6eab3e4636832ccfcfa2a8a2591f28de052718d746c1680f95bfbd1c22c2340690a6bf600eb59d13bc41030f2e9ec6e5125ecb344ccfa340872a4af2c40682b7788cfa45c567367b83e3552a2dacca52b5d0679b3bb8625a4db240d57f99775d6065714104af32c17c28a299eb191de7dff092797f50c33fec61b1202e2ebd3846af27adacc7a891a2daaf8ac1874064a2f6d4e163925f514a5830f549518c92c829357bd5856c60bee9330894977b711a92cbd9c2476952ad665b063612c7e37d606ca408e884d1aca118fe791dea3e29233e30a26a1848697c64ec26a2a04342cc1f061022660464168212ae40f713b680ad8734dc0751ec8d59d4c02e7ae0292ad3644bdc2c880fd4c188911cd48e7ab936d96094f68da68319532afe5649464d7d7b5c3b5b088ea24511413a6b2c131b6443dfafc4fe90196327115166e867b2f7659934c84c144f631ccf0efe8a0b3fd3f937fb55a476b3eed61792e0a83f2d6eea3b9024d7796adad815a9cc5c29b69ab6e8a7fabf1fc695d04387651926542560f25d08d47e5cc1efcc0d161fca551c127ec6daeb366ce49a722ead951b68ef3a591f9fd31486aa8e84f5c0aecb826642dc48709e34c1a345c05288a0be7e9aa04b174c002c4179ee76c712b19b870fcf7bd9092c590a2f7bdcf09d225340b5816f29ec83e22cc230009d808e3dfee7e6b8810f02164cf4dd85075b790828c43a8cd77988dfacce6f69e468c40de7aea9a23d4f7809694a32bdfb4fba184cb2ed857cfef5950974d1807e15bd079eff70c380a1632abc1ee4fbf39d1d06de748646856ff779b840e0c7c71211be01b31708c0ae4f406b1c02b3652ca52cf983d6e24f79eb2118d3594bc84df8dcb14fd51d5b2a33d88d82ac1b0c218ee9d4b56ff88b3bd5a6155250b1a97b7d0825af57068f0b72000bf16c17a31a386367f4e40669341b1b3e185162a605da89b620e5ecdd391ab3139cebea4d24b2ec0df55ce726eab925323d8dc1ec626fc92b809feb5dd544c9e230ae8fc1f5bb2aba9a843bceb9e988fbd053bccb03f4b28a4afa94d7a500a4190dc7307e243dab6682ab8655ef8fcca31e8ad59ac23d9dbdde04240a1c0118e72faa412610b36ab4fb7904166ec38c720b116d88a5a4ee4f530fdc5e3992f9f5bb5fcde8233d0b31ce5e87082c19fe120adb981ce92d9476a08e0de3cb89c4edcae9523aa148b2448783bc2cdec431780d8ccbc7786ac41d526db8812f1209da4c9e0f9ab5ebbb7e0477570cae2f6b5f5dd6b650759526427bfeaff819f3bf26036833654d52e037662e53e97d25e0ae10fd001677bb5dd761f50e72c46c857e401d08680be68335d086d4dcab8605c6aebf4b1181950060022a23c14907ec7b4b31c55a9e81b9a82c42b3416cbeb254d463aa2e52ed5d1c05bdee30d32f8df7472aef154f33db166b9d01b1310c9272fd5a0b0ba52c8849bb5d150db4904dce32082de6797816e96939a44753a8191f56ce3eb78698ddc42278be612d29d8e4968f94c23293692fe373953eca688975352c60603fba391978b8fc266ce95fa9f4fde9d226a7e8cdf4241a30574115b830102b583b7a17add3f26d3e5207f28f796950c7201021205edb6547ecdd03a49063aa2bad399e4c59e8d7d33c93545835e48d1329d7dd29fa747ba2423ca96811375141e80363c84a855645eb47a2e5455eb5b76a8a87b13a4d155d3e45420b056511416eb11a407323a76c5a3cdecb4e54d1fa8dd8b410f0cbe17df18540f8be9093226445dfa37d8d47bd4032d75affa8b1b206e7918c1f6d6b66c577ce36e989763e0f8881d29879db12485e25e6690e5f53978c9b79716dcdb98ce8245fdb14db93a489626f859be5ae453c733c632df5f92af6f111a0205865c2283b110adcde3f82e69918ce58aa93538afbc1df486d2b7b42491f7ccf956a28ec3c2a188259277140a66ca6b9feee1ee5230810e62bf652965be35fbae19695794a9d1ae0604b5e9bf2cc7fc6e251ffcdf0b98bc7cf0996eb2bf04a89f0d1aea9d080af367d61b524ba69bcb5e2059bcc116a397db30c2634151f03633a14cde4c2bb97e592ea43c828870b31f7d259bdac38573a5d89236ac3cd9893827df6c5c617578f40427a22a92c294b2805764411bd7dad07d7c7652d470a1be0c1d710c089d05503fdcf8dfa6af227abeb3e9656c5edfa2cce76493ab605dd2b933e3daec54216003bdbfca876e67732f046f7c225a2077ea60b08638ea877f99e4ea01d38af1bab1be12b18d639ad85047ef8b64038d0d1693286b4067a682693eb8c3fd6bfca253dbe6e70b2ca26003f64a4d87867231fba171e7b564eee9d02721e31202fa4a009a1e3bad5c04a88beaa8015ecc231a4cd579fd365717310f64d0323b18110596dc19fe2ba69388e15c3a3fc56e2ba769cf129e4821940ac8d4d5d1fd5e2ba06e610d1435087922e7bbaea3381e3e2b5af72e03027b79dc9dfc65f7c42c8dbcac0cda521ef29f0e76c5a352e278fa76a02ba171e1bef0ea65583782d8cc5d5b2b92d85001f58454b16cca0455e31d980b0427864e748bcf9dbb9324ed6fa412dded92585270733dc41a52d238a097d073dd17519be8470cd5d270c7c233140e37d5fc0d0e3f0180a8113b358abf8f03e188fbc93c6e10e6f423a61eb381cd491a05a4c660c3ce49379608e32b84919612f4c2f74d4c0662a6d07d17b2b089f29bda2bab7c81a6ee342d27843e45a6c7d68057541c5fbcec18e9d4e98e20d5547751854a645064977aaa5597054fc65eaceea6de180cba3869582329b593a837241dd878940d6b17aece6d67b1014c7211af421fe966771f55bd68e12df3d8b19cc9d248b8fe098d26442fcbafbee31ba3e2ef42fd85d83a75e091f640236605a9008c6e8ee5d97304f4bac901055c4b8281e9b76ceaa0bcada88f968ec9919f34162046be640942aba2618a16ecb176684bb96aa64866b3613e61aa4de5e27425f3e64ae5aa54f6a2d01d0e45db560025670f80ea19873d3c7d350073b42b1e81a5beb47ea1f02d6596a74f205d5c7ca3b16df9616c01dd2e6f9f374b30a014df576b0ebdca433e2d1b851b9acbab39e325d7e4c52146666d4e1287ee98fb3c62da351ef6581140e0e40fe36d9f0e5f7321d4084c281bb1a3eb51b0287c110085dcc8ca3382e2aae10013100f19bc83de44aa4fb6c53cff5701f0bc0ec0c0568ec70b0c324cb9e221e6c1e9b33aa477783f260e3c2b2185f7c0cc7f9c92a768d14d419d235960de624a45bc9ad34fcfbe62a1521efe620dd9fbb95214ec8a81d0e94dd719b59f7888ae3466cfb5fc2ef9df42d7c183118809a26df92c864887dae6eb3e1db365f736d5997f21f2a107e0b3ce9eb1acb7406d26642e3ed4cd809b2ed7b40c6aa9ea099801b1dfa757752cc9ce3c8ca9db2bdc07140291b7171d99ddf86289a529e57a1de5e1ef7569593d53e1d2a35845871e0ba721f7ca99d66b6c6c433f74c0c61eb279991bb3407a13492eb27df20da2fd456087d42b987aad81a4ee33a46db1b4e7f269b6813508779954f6463d03526ca928e04db850d67bbddef0d115b68ada358d6427feb2fd4389ce40af03bd12476a3ea36f4f2320ef9cafc0c233ba75028bfe86f82849a66ca761f5d5767dc30f2595f7c7f20be776340555ac176b90d7546d55179f91d4ea5bcdaf3968d5ff509b5070b53a34a10766a1e87b8071a06e2377f2ad2f8baf912a00901d6fa64175010c675c19805e6dfbf0a690f73c50645e1a3dbc548d970e3b15c875a37c1f1ee7d811f623df3cc978a1af06b6bec563849ed9a2bf540ca88f9c2ad9be7ca7ace6965025ccddf745692b09fa5d804b6cdbd39b096cb0d4ae600bd6baa1e51d7911dc0cd1bfd2704991eae7e99caad6e35bd5cc0b3151c97eac7c41eacb4a90ca5947756ed51c81a579fa12a0823b5cdd57db8ff94c7e09095a5f3cd570a2ebfffe53aef28d149d5196a90f2daa2771c47bdcaaf8f9b7072a6af530f928b17949c9cfa3353906ca023d1e7a10a7e42f7e6cd074c5a221bb8ad77f7aa789f614f1d01ed77e543d408614fc0f5cea7dbaaa562f1b096751e6bed751f139ab662aca5f6c57afd5667a529b952691faf1635932ad5d2967829b4bf63881a132855a99666e95b9dfdbd91a89844e995b2744b7b253ad62cb3674e80869d2fdb4475fb45d7ab19bc6ad3b2e79b847737a847b4a59afad73248eca99c4ecd9411a936c7b56ce6d0d610bcaa198a61467ec6445321b4713111b1a8326c9f04f8232ea5e2ad9e667b7735520d207738d671dd36c89946c6c55c78c80cb2cf41a18fc5589c610cd40bde5ef39d2287d0ec6b42d63a2b2864eb7de5af639b81cfe837c615ae70e3dbc5885d635c11a95a4fc01e30f5c94439e2a6adc12d732f2dcb58fdc26938973f874970bfb51dc585a1d661058558d0f955023b646617e2ab03a97d1d99c01e8a5fc3ca5bcc1a15d476f1e7e52dffba55e7fc1b8ab402ed269bec021be15531257f18d0bb2b8e4bf02e37ee87d7a048bfbaea443208ef5182f5b09207a650a2caad9bd48af0d6dfe27469b8549f91bb9b4b84578b7e9162793d174738d7e2d22fcc7a6b28e92bc2e673db9181c9565a48aaa4e46721d3ae385ac65f6f411f23ef8faf2160f64e630a18be5c86fc54f9133b5a4713dc3c41463ef3d9f17f80b871c347b6694c912a941a526df03f2a9f2a5de40e57e82362fe4572b2291a030ec07e55f298600bf8175557f3a1b8f83ff83531b004f5e439fe75a42f69bdcf3097e9fc2c458c2ea857a3ca534bbd26af6b1d2eb955e782f85342fc11c29ffc8912714a459c13646df254545a6e2ded8ba8adc02075d71033f0c599c1ea8ead97a7acbec7f174696c87a133d7c43104735bb98c3da9b5858bae4a2fc99c25828581e1f0ab526e6b25fc0bd7ae9aa85744f2f7f384017a98abd90bdf385c639521d51d45c7a6ca9c4375842243b455cf92cb1d65b53194b82ab52a72562c9afdcef01c332a3f437226c5a4af3c9602ecd4e186d2fb35ddd0b06f3ba9944032e45c2d9d1278d1a551bbeaa1d2b16ea79909d6095a82e9ca26865f410e96c840e14cacc72f52a548c6b66e12b61a7bd52c7415d87089d26aaa79c52ea6a8f2f3c029c32454138e7b94c209a895b16f8efab15eb3f97cb5c2217e3cd1a7e0f16ec22affbf45315f342b1006f6f21dcc26a9b55589806492bed8588817f5f2f3282ac6585e2a1856d82779daba1704e8bd3b0996ebef153f2dc9ba954f93d276d6fe0fdf4fa129118928ec94f300faa88f2aa13299293f4019e3a0d6645e1bbb5621f2158e1c179d649916ec2073a702d8d6f54fda88434fadce45eef4efca0259762a4bbd529337e1952691f1ae9cfd73f945a4d44d9ed9105b30ac5e6e017db46885766a1a7bad9a140aa80f0620c1fea5719f1d1e1d5898a8b59b34eea48665b9d17bc3c0d76ea27c85b9fe9a18c65966d35d061d0c9fabac2feeaad0256c24564c8ef51f2aac1db403d511cbc1b92cf1a8ce7caadda47566666f8c1615244a88b185bfc649914a585db725404d00c16015041a2ec5124cae71dae9f274c3ce1118354a10a5bca64911be031c30adba3e6f052ebef85a3c6160774ca781f5c6b0aec04212538765c968bb10fcc7ea96dd798e8341f21e8d1e02c4b923ec74604736a0379ac8ec798f4e764e3702b246164d71f0b6f749b3c3977b3980281033b824181213b0e3ebce8801e9442d96a30472d989ab71e1027c8d20e7eae3169ca1bdb735084f315c3f0316814c36665b26a5c84e1a8a36e2329cd43c38ab17f4a83b8457084656c34a4b5fb21b3ae155bf759442ea74be50c630760bbba248888096cc8839761a2e7bda2ea5ea0479ba48cf532c131ba3a8d302d97ecf839d4083f1f8faf58906c603de61734b36a4653068ead5db242865597ca6bc74f0ffad581d4b3e28a02106848d99f1816746945345a7ba1bafe4f3db5d71446bb7797226f1cb80b58eb663b9d42e4df0e36bddf0685288fae7a0736dbe7d94eb84bf725026982e1cc551ddeba7f22d7bf8968a91519008ad77b7788951a787de0334c956e696b8217a8b71728f9589405346b2d3389554a6134034e59cfee099a46711f09984fe893937686a41bcd55661976e1f9406fb37ac1a6dedc4410c79dfd01af8c44a3d74b454ed3ffa23076c55affcf32ba3d6bf0ae44372da1d9439a931210348287bf71a898835db5fff8d4454c0c6b718009b2df4eebb0a9a91e2c7abf46e27b9e79fa21952634fc29f4832138cf232660e1a84d5df0835ca86f2aa65310147c462e34728fcd07bb2912c94c3ddbf3c15cb67d978e2fe1a122f0bcb19df2bef709150824e8d435429ad7f62076f2b9440dec2aebc5abc180acc434436f5935027441c5e06ee3b57dace086622e382fb14024518d3660f2578421a0ea93e623264587a99224fdc0b79b55b8d2166d59a3d649a1a1e0481402163a811335354c5bb7520ae0843d3db59d21a9fb0d7c99e16e43a6fd2e964ceec2680d106c4112a29e20f9bc519a2ad0b382b4ba4546138a2a4c4249584946b1ee20f53c9eb01700deefa5dbfbc3bf65b47c394d36c099cac8ffe42bd86cb311d541e8f8b505c1815d3002c5c20fff77a7dbb07a3b78d38f78db8089d9aed07e62d0f478201c956934a2cd5ce67845d5e9978e89e7cc400a8b4b71ddb41cdbc2d45db85ce66c13574aa7801731d758477f8cc503c68a71290ee3a2d3123dd420cf89978187abd55c42ca4a7b9825b9ef0872797cef27a488a11f9468822cedb91057a92c09ca807618966852a00a939dcaddd9f03d9c33c75e092ece8704889e15b6eda6ee170bd227638dc70b1587a4c8abe8c8463b260b9610e37fd855148b689cd5a32a2f5461eec381b3e5321f87ab09bc38871c2c6d21e248b967a99487d0e9bfcc91d32039a0f6b5e5faa97cee144eaab394b78395f9fd987c15ada1215fbcad8e58a18e7644cc4c9f630b1e1c9437e2881ffd04cb1bc173be235d5ec74d873c6bd8b2e6079b60c9e0d7bf158e9e3c8946201e3afe4a687e563e3f22b9ae669f05a8d2adff10b33096b276f0deeda31b8c1e6c5ca17d97114b67c7ce3949571df889dc1182dbb4f62f613dfc9e6ff6094df43a1e0941160fe4103a5ba415a5edacf0d46e196a936358e0dfe44b3eb8056713f555b2d9226bcdf9f1c269fafa18648ae7ba1f11d8e3bd65c9c29a92a70645286f157ef360ae3f79ca9ee1645e4a0599c9612797f39d66acb7852e6bc5121e036812f22bbc3d19b23a27ae42ca3f19ed2505691d9cc51f087ef305853fd899f5d3dfc8c6288f10f3388e261df36b3b8e5883cc47fdc1e9e84c311f1c04698bfff10d11d1a2407c8533f1a8cb725b9d65e95d1e0eb358eeaa32585afdcdf31ebe937a4419aa1dbacedb38f952199f630c66e22a6ca5a805db159d52da109be5c11aad6fb1aaba3bbeebc6c04efbae5e2951ea0350183d1c3e1b04ba2d45847c81ea32a383041567eaf029f00dfacedfdf22116b694ec76a8afb42f144b6712b3c9517e003a9898308034fef0cf14126693d829127654e11db461b8c81481368548ab3584715d7a54b899094ad90cbff8756c84f92a10aef05c05f69aeee1580769593f6faa8984dd44e5546684615d62e68c4fdbb3373fe749f87ace601723d47a4edcb12198059e0464983c764b8f7379aeb967c9242ed9652f3590ed2cec963aa59e3c84ee3d482798738458a15acdaed21fa77e8bc805fc2452fbbce537fc6ed4e018b47b328fbd79768874b42e53161d765c24752bb5d6034174bdcd5eaf511801aa41ecd6d325ee5bd6dad8aeb87d4352507a6f28f11f3c6ccfa6d54e7fdf1aca1261be6e29e1c3c406d6e2b275035b9b82d956d22326ae3e80e0bbe4b2ad66bbc77bbbc3e8aa447431116f9035606450a1555bae169e3310cd71934c1953572543e95c2c887feb887cbd7dcf34f5d195ece19d86d2d8c41b420f63181c7415018385d64d6857d8e4268d5ba5d1bed8ff3c1f9410f9ad7493c82260c11ac566dabb276d5441da02369c812105edb9f68758268229a307fde34834c8a068e6374fc299d981148ac918afe4aaa23f2e082f201cfa103fd2d00596552b3be873b12032c6bd1f1f75c27e3fc6335a74faeeabff41fa0e53dd13f38ecc42beee36b0d4e8294a5aa0a029017ca5e0db19705a71c5ac3fb1c94f2ab619386bdcd097b5a27dc46ce334b459d88ba405b80a7a96ddbfa22f8e6dae4b97f9c3c2785995c59cff0aa20a63fc1d4b29415ba53d1355c9af5fa5972bd411ca9076ab43590bf874bb90c0cc0a5570bbb0631018773b3b31da1db021f20567ffb0210ea51961b5038498a00bdd821bf5c6e8594a1d6876a4fc1ea08921048de04ceed486684b9254b54e0555f155c7c512cf6072df74bb83258f3414cb60918b717f57f2f7dcd2eefe2afadcbd313af1afb7624d15044267975ea8e6bd8cb26f9dfc5f1d07e172c145ff27176c5fc181ae976cc45f880e4a300aa8e70e936e2af5d903b4104478e2cf513c74514a362321da8043962a0f201d301f6c732b41ee0ab28b0605ace6427574731764ec95dd15db510042f939ed9e3d92537d0deb0ba5d6a05d484a932fbf73804107232bd5775f9204b5b72c03cb49a87217f172803b6ea4c04cd2e3ab40d561ffed0ac29fc20ebdf2f35100412ec01b357378fa83d7e9da08697c897bb8a26189af80258e5f0712a856809f893449ce60a4a2a46289cf8a493f9c53e11e1388fd2114751d68da6d6a24cf1786f4bb67367d71558086624dcf18686d0696c9d965a255ea43b230dc6e718f4d40bf678789c9a26b02210365d1f7f1a2a42ea2aa321619097f572c82a10ff8dbcc02d5af474eaab66a6f069ab18774312f383488a62733b3798477f954965f3eff9aeceb2528239c388edcef135727c7a6d82c769d2ea78bf7457357869bb664a7b68af48f7ee25eca8aa2d73eb5c0ce92dd76d2be47bfa37537d4af702079658505a6dae2d5bf6ece82a5fd343ac97ea6a14915e297ccd73740bb844bc9ffc50cb4f452f843fae78aaefe667687d2aad0878d11408610edc599ca16b3bf625e9ec6d85ab8959c4b7f8b48b225e0c221cc3bdcb7f80429bdc15f6af61ba4d5ec12c5695ac8edea233f20f98d24eccf673ac215737b347d78fee66483e42f7edaf0ee20594de3d180c1ab3219c9c5549abc8b8ad6f179fd0b20708a40961d99d415e84d321970d05a3b5b79bad7cf4be0d258b4820b7e3770ba902f9235568fa59357a21f6b0b68c9161ef8c82b7416f805f329c467d714b763ccfda5fe2f4579a386953bcee95160e6fad90693c37f2a0946aacc5e466a11f30c82304106aafd49fd783926107efdd085ac27a2b112041c47b2190cf9794bc4922716cce3b6a9143c99c24e32b3e478e036426a37297a8368f22711125079805d6c925a61b98826f12948a27bc70a248de6bf31673566857d367c6b65fae1e18dc5ab1879d1ad958f721ba38474092709c2c42bb846520337abfe41a1e20edc12eb36700bae4e6f6a3572bf9251c3cd02fbb2f7a66247bb0e353d540c2081b4ec3a0bfc4098965460f8dd47215e4828163b13daef01bc877b24b535abdfed3958f95db3a7aa32321a8da45b3c4c59ebd4b66316ffc44a58ddf78570bc24a7b60b12c5eda348f899fbe6f38241a485b46fbfd5c26137ce55cd75957f9c8ea6c0e0013e14a3b133dd001c41132ce5a34aa32485df9e248b178a9fef35a2d5a4bba1956608a275dc351fa078e645459a2145decd37181aec85557e187f149a8a2c92055fbba14601b89b764034c3da649d3335c3ca10e467305cf9887eeec4b8dd04447daf92b2b966900d6b86b0ea23d03fea66f3b8082dba0d3242fe47eec5146454f6cc96bc1ea80f81a096882825484215f8a1b31e03ccc765da7858b3ced6b4408ff6342046e077a4c57102be21e86bbf70833b5f395db4ef845176ae597a032901dec1fd0873a0caea64330c39ede61e6063074896c5aa8db605266da1a9606fcdddd92d71f87739b376585d5930078830e903871d6b7bdc34fa4faad8c0f22fd68ab4c4479b40f97cf354f0067a351b7226843df16133141003ab5aed7e397b0763c0aaa67b341b4349ed47142811819c4f4552bdd882f3edbabd30e081111fead4d4d5f32b5a7537a9c02eb7e3fd7dd80bce794e4b4c083ce35f669cfdd978f7c3d79b9ba5773ba4ec7e24feaf2e5f338dbd5e1736afc0317d5221c8778989db7487e1e837fc87b3bc37e550ab0415a569e022008ef01ad8eec1f7395d3378d1280159477f0d88eb648fb844868b51316de36d60e4c90f63d6f467badf7bce81f344249af7947aac523850cb252396adf7ba48a3574a6652e126c7b660f55f18b76cdc9174c67226376326c16616c97de1c82e582664933663d24edbd553b7563badc43d858e3f850ac4af25ee4f02aed3d13f6cfcb72d350a636e2886bc060e3543ab3df22181b3cfce72761195a5b291f9ac19ce0560aa0198c0d1b37836bd3518134be92d1a543c1a350a1d98bb892272a39dcc222e0da027beecbf5e63f1949ac69791f6e197432d3dadf1a4eb2ac6b4185e85a040a88d0a18625d7684fb67bb6cb06b0ecc6dfd04edf0529d944cb095184323eb23f77ec291ce72a33cabb9126dc127b6f2bf99694bed8829c0acb87886fccd9de0b04212714590866d71590cb5e77071ea99d95adeab7e50e2eb05e0a1f849cc830e94b546bea02aa38326a0fa5c8fe14ac30147fecc21f272fbd9a259a34087dd3d8ba1627e09d9ddf300f9b96bc97164e2a2b79236c9647d97613a928ef3fe9b7b4e4812085c66fb6e1f8157bf88a5f99fa33b5e5aad804e8bd141911d660a8f3dc4b37bee3d27c1294063b16032d2749f398452d10b8f14f76ee61292bc50a812765f59c490a931c9fc17d774086613d66a35f245d45c5c0ff8986b051c965fec309c08f9547a6d8334d03ab1105c511f40cd8df9784b1f3a9d61228a5349a48e73668ed25516a4d3cce7bf520f72cd739736dd2838bc28f1f317b2ae03304347ac9a858600e8b55a7a0bf05531e331ca06c715822dc6c3e437972b22c20f6cfcbccce5cb3b73c3f6420ab72ce3799884efc2a787fdcfdad71cd8f5771ee1499463c006bc5522748ed5266f9f5a373d9b447b05b5873d7da7b74ba0c1dc2811201181a9aa32f7517f3c7049723f802e262e4081be998b8994b85266527b0c5022ceb36f2f2870ca68bf9f9a88eecfe9b2a633285989a8dc50ded5e63109a0ee8c4cb3966feb105088f99745505b425c41952b1e309925eee5a441cbbbe05c8f66ac9a53aefebf046bd43676df08a6c1366338715512ca4069cd6793f99a253b1adb0b51c106cdedbc9b6a38a0948871b22adc64e66a97520ade82f70895f5c1a953157286d465b412203750b204ddbb5089abc26cf8636c006422da24d15a0800f09f477a0492dd495b38cd929adb56beed74f13d1676dfd024935b47d594d65606b780198503527091768af3711152af785802b18ce3f0c717fd64f38d33e768e3698af93c886a14e745f51cf138fbbda4040073e3e56032cbe17350e9a4b67364e6c0030d220300e9b989a253e4ab35edc6d424f74b6e06417b87803287e45ca4dbdbd1aa7dc9075ce5d9fc5bea73e743127c9fd236ceb06100093fd02e956e0ada33544921301ad5a1f0481d351fb9c7f0731fed209947ef416824342d4e1226e5df88eb5716640fa961bf7241c604cd7328a3ac689a14df1adc7c223b41201b2b15ea096888db3b51eb611ac8b0b32c3d635545f18c07f8fec21031b817d4300f56c425ec48a02638287f4763d1581efbefa82b8a0d89f36758fbe939556d24811af69fa23156b04287d28e53c8234eefca4e11326303c13b67914784fceae496e6571f135eb6043b0953cfbd56d1c7259b967fdcc5c2f913c8143467b6820ae8ec9552649018ae5a844d067b8410069d4fea96a92e66ca18974836c41d1ef216a1253a61a4eaff81ac729cc69b1dbaa18427ff1de46e5990939b0b01b5d7762ed6c98efec063747309f1016e36bfffebc1088ebab5d23c5f87523fef889ad18e483c4b28dc9f932e9d10d54807a716c184ab73be5cc24e270a4db1da2b23d5999e3d04d97f83739fade2db969b4dc09de068f3a451634b12756f964f0f1d63f2f8e35a0f2cd930879a2fba83c7433c3698dd927f42e2c7419c3c5bb79458e1d0332c877c23face2dc7d7f2f0af866af33824ddf69c2733e725c6f7b42bd0c226a8c7b88dd3b70413fa987e76f29b75ee046ccc39b5be80a58a51973ab94d1fcb57a298d2ac3f0852b3c9ca97e59a0e40aa088783c624400f0209162083f0d564d1cdf2b197a2d45db319e9ecdf270c61eb340c464cd937ed18d4c57e9f84f3116b8ed12e2b87a676c4a689dbdd3d07e367af00973725e607782caed9b778e87eeebbd1621a5ea39f0eb2599efc3321dc33e3b43d1caca24a8039c2ddf71de4c81c9542c84a34936d96a84e7265bb712a71b10f41c80e41d1aea6788d0d6cadc6071f99251039450e36f5b48502649069b1aa50a623008d568938c619f0c50891fd8ebe110747579e100e31d2375907396c24c8711374a186f7de5f52ab5f21cad753b5fd7efb1bf94ee68c6f1cce776e52beec4cdbfdd0982110ce61c96e0781ec4576fb8a7902b604384a914dc8287e2bc483839f841d95c0f959f32dc9053a667f128836f1b13be2a73e0aadeae02305da627159064147654080fa5302a6884ddd29aaf4434edb71d3c84822d9b96b071fa95ee70a53173a4fee9858f2a9e304b5f0932fa4099911af64f5868b6197956d747b01abbc814c7d4f64ca922c098128e3e415f0de41673612b43b0054edfcdb1b7dfdefad8835774de82e4f538a840e053c3fc363dd79b5cb168a598805befc6383a164564ab58027f104444f46d015c313e8c92a20503a5cb8076c886665230474774b5c0e81e009b84362b490efb076c9afa860852e676ccd518fb504ccbc8109b5184bf246c61d338bcf581b4f66806f20861d37ff57f966d730751ebcf407156e0f0b3bfd6adb87c0bb11b29f2821aaf5b8b1007f32fe1a4b8978194d3ec1cebf812563cdc18434a80cd218f44d65bc971f8af5ae5064570f79b1fe1e7fcb4bd264b597e5c96a5d605333d00dcac57f13cf00a6afec19385f57accde45473644f839c94863a424bc2ce78ef73ed813cd440ed3273f8c09516c6a78f8ab90286daf9da45189a718f43dfd589e35978a89fd29fdf024a4c5c0f6856bbb040b2752f023720f5bc77b08e01a4e155acc6525b3d973da3b1830f565a252ca5d2b2019739dd65092e1334ca51425ccabe06e7d51e739b1430e38dfb26098e154874f390979a1a06108119ee1cc232f8564715f8574526d55c5cdff7819a782f6abbdfa8be80544169f364e0730d1717f926114524a1c489c3a1510f11006c41ad09c3927445d1e8303a6222d089a8507b24496ce2d080010ec9c557ac9c1112d5813d7dc72f30a401b3feb774ac30c1a90d427a06a98f40586032a113c56b9e37cfe029197de146c89a047ec478b033c0f2d48818541fdc5d291f590710e534a0b92781bdb882951a7a37d466649ad9c2acd0ccaea3782442cb38ae652dd037557ec6e44ef454500762b8c9275f3dd7e21a9e825ccf48b64825c538b03674e220914515decc743f6077abca8509ee9ee921d66ed466086a13df1dab94e91fbd17aaa5d3a5d44a3bda9e535ca7af7cd9aea045ce805b83bf097e6940d8c0870319e4ed04da80d295b10d9be4a79a5a257321e69fdb0936d09ccfbdffacc0909aa8c505d56ae0952419d420fec3150f0cae9759d552a909221ca44aa5104b2edae33929a1ef980e323bb26722ef834d458c09da26cfc04d3dd2f4976937d34502bda9443155ed981be9f3aa54bb55f9cc6f8b28928451af18f594bbca7450b07e75efe0dd6cc9fbfed318013fa1908c9611ecb2a49b7268d9afc485685ba304a4e7563137d16d2bfb9a3e441ee622e873168d992fafebe8100c965811452cf4060300ca0b4094e4f8ef2517110437945c4e76e62b3a5fc4afdd117ac914d686e89174c60230798101de603f4b03970e1a13f721a4ea5efd3ca886c29d5f659ea36c74501003c02902f1908a57f6acd902bc16fecb231c921160e62a92001b964442ce61b2cd1b1ce9155fdcd4f9dfb4008aa69a81414c63be16f1b630010901e8e37f428f938e9007bd4a65742fa6c1e5e5786ee1684e022e44ccfd1887fb202988d8266db2134429e7a603936ea7c0c5fb5fc4865ead28a721eddb1e294f7d475a04e0986be3e91b9874ec12644f4b191efb611c7927a0099ccf108eb2aa3d67ed6406f9921f1c9a08018b39b3ae7241e98787cebd514ce71dce15caa14dbc42561cec8e7cf627ff88e585ecd05707b0540076aa6057aedf51af581b17f81eff280ce15264864d7457339c539ee8c5c42cd96a22a48959164fea29fe32638b125697d5cd31be754127ce5bbbfb33c39994cc97dd1ee9b473b88af7d2da392e0d52c41fe2a81944fcaaa370c989ee9b64c76fef4191d672d3e15cd30a12ca84f37d56da2a11274fddd38a7afefe47ea2114466cc21c7d979bc5007c271143eb359b8cdd4459f1b4294bd10c85129f1896711805d2aab20a10058bb3aa0186e94407db29040f5b9094940a350342cbd69f029b1006b24d617b4630c11362e98b2a9168e072aec537ef917a2b1d5baae67ee53ea40c435aeb4f1488df7676116cd337cbbd9b3b3b018d1d959781adc8593d6fa3345020028d6e10909239d2a33949153d62e669ebff218465067d188e0681cce0dd64a0a0176a799d765b601529e5c2e950aa59b02b618418e0639de4e61d3ccf615a4dcb428dc226fbc99c5d9d1b0f222db471072d7ee812e9972afa1a2698edaac1711df328842f73864e305b89982ab16d4e4c03811839119cd33d2f5de58f061e73b4bc1a829c3c048f310489e2be6ca1686949f13a8e88d2c2c572b7e55a800e5ce0a3e2141118058c7d3771c7515503cace573b390c141949ba12b60ef3e950888e76461a2e1114666494798575106fa425c38fc4117943af882b1afcbf5891af91a6c22b78760cc257bf7029608127ca1a370fb63f4e9907b7c0747cded5866bf478eb59e9899e73159874284c5afd5d21ca7bf43ae250af0ce85943a7d68867c163aae56056eaf7a309edf7c72d59075b14123a34d4b48b190aa229a5da5aad4217de06f0f1f8bad5d2d2eb306903319bb6f90e5ebd1d5e36acf380d411d6d72c5fc161ecfea8d53f85136023f88c367e3cfc2aa92559b767d1e76e6b4d9d30ac01b769f39503498e64e38ca11497a37c78b42663f831409ca1eee943f0d9a0720ba5f22b09bdca4243196c99f3e9c127e44097d446826d5f98546bb5466d5dfe7696ac6198cae33094c85eeb537926446fb97a0898feec95131542801b649730cb1ffe46f22a97d5c88b8a4e0296b3404574daf42f342198ec9f87a667073ffa472351ef7cc0e46842526fef671a4e73d7de4492cbcd785f4ed52d83b7a7a65307a4fa106ef3422217c14a26410e7a383b8e8530c0f5ecaf907f7534cbc2d0a86eb87e858225c2703cb2915a8384a889feb2d02ab84714c76e22cadb415bb032a7b789e8a549c9a5ab37bca75e8e35872aa0a77b8d40be9e01b0cf6d75b5ad48d7ad4f93b4beca1abef544b9f331165bc060df9eb670c6f566bb92893494747fe1ab7d7adb8e1a59664b89582c79b61b4805d8b32372d4563f0167fbe242ddd528af3a67f83d6057b197742085392a6e1eb255a6fbf05cd8663cdb459de3479e099a0fee65b76866b9a938b3c8eb811af33a5682d55f3d5b3825c4e8c160a214e899ef65924fbcec55cdfee112e1c1a1ec19eb5144d62e3342df9836c5d7edb1e461e0ac9b060db026823f0c255d219a51a7bccecbde9e92ab7e634c66e4d90de921d778b3e992d57b2d025988b0f9777b2ebccf31f92d8b8e0623a37059ffb27c98c5faeb9a9426dff0dfb501de2ae3bcd63cd6e35f7529241035e5593a1f57a45935ade76c6025a4c1b25c7706ed2d9b48e3c7bc7902fcac31b316066f4de216a76f0ec29a661733fb13fbedc64ad5387fb381491a6d5258c10c8c75b4cac730a6e965ec57b39c0dad21ed78d239ecc075277382c66c748322cb6e013e911a7a15baa80c746c5a40eedd43696bd1310ddbca45ca2ab1e987cc903a3be65325a6555dc81b90340f3331380165af524be6fa923fc51139a017f30a5d0b5cd0a23ba68f500402e9d6e0658194f499d0b95b8642c733cdeb49be2c0dc915cca76980135a02523f1dd3654f04547a673fb1f1e76c4d78970e52feed57bfc429995d870a03a2901b122b05c8e6b18c3e4428db7432f0c4c5cb3dcef890b5d63c032a39cf65d23117c05db5bd948973ae56c67c23180f180eac0a3e7a24548932b0694c8e54f61e7a2f8fc67353c384523381f65d55ea77c851ae4811b5c0d53d5b62067a3604d871aee2a289fb8864dd84aabf57a09b5a373ee00ee9aba9e0274ca8ed2e25958d8644edd07162e41199923b8900511854d82942fc8624b4ab6f5fe0d6b7f64207f6f6590672e0cc0118ce77562ad568dac32093634166ed3c5cac14c95777edbc6e554e6ad715653711cb0e0bb8d5602ebbacb8895318eefed478fe6caf24eba5d103c601de94e4d6f5d1c1a7b9f469e0ce40f082125295ee5fa3003f0c6a329a45533ecca43ce83db583c4a34e3671e5be9efb08d677eda46ed340d559692709eccae0c534519d8b059ab3a372eaafe3eb6ce3705ae0ea0f2cd7298667836b524207bb5ab4494ec8455a99cdcc1ff576d69086c082f56b70d8b73f0fcafac409a1479354173f1de5e8b8c003f5cf96dcbc9fde2b4c4f98305d41ce62651dedb763cbbecfc6a16a385cc72e6d873ecb61fb471f3ff0a5e41fcc1bcc857c1c5cb78bc6f264d1c168f8966eb4dd96136c6277316ce1718711f384476100121adbe4c06d9545de8b212368dacfffbb6ba8f6f930819a9cbf423ddaa41a958fb5974f4844bfc18f6db3eec3b39d2b12e7dcaf2b5321e95ed896997ea843a81d4573fec821448c3ccae53fe11f3acd3cf145e9f0c41d0190b53ef865df9cfc4db6b8ac023d8001d7689546f1c0f6d12f607cf48fb9517bae6c1998236279fe81ae0b64961171ef47f9ea3f06926459fd8fa009ad7d084541881886404a9c80b1cfd00ea624151b1615ab1171a1b8cfaafa970529018e3ee3bb7d385d952779291ab3126a7c5f300e55a18f9ac3e303afd0079bdf87f20fa95aea4305a594cc870a758a6c7e12d1936ba19d317bd39510fc44b83d8d6a301ef5d9df5ef6b3937bbbd229f53eb21792cc474f73cbe043556975b9b4a441e248f2b4242b122a8f1de5d6b89a7e6f2a6ba62f83f6f6afd199050bb94526cac5dfe7c5e78f1e4e54293dfa5e8de62e3d0c4a21578b978e4606eec138226d1155b5af2f102ff4a9f6af04ac3c6d84af5f388de3db894144036f896e0300d7a43279c4523d505a19b0e3afae29a24e66286a40856461598b570062ee8252a364e5637d84d421405b5f5d4f68ecd786b2daa2c5f7764f05719cf8fd61b6316140ff533fa94bd843e197fb8e798c986b8eeba16626981f389df525665d12e7ae6f8fd93a9dd977357958a3054b976a3bd0b43d56d75001dd426eae103a9e9907d52a53af5f08735e973509994fa64e5ba2afd102186ea0b644df780e35d02699f923cbb6d10d7347964b6a1796add34551c48b89ba865c447df8ae0263741a99e3815202b5faeaf5963bc428010c45c6acd1ee7b53ba16423331891ecd3351b81425b59ff73e853220df188f67760c3edba3402c8d4a06c8d5c44e602f43ff071439375e8b14a494ef513e0dcfd2e58455d319ac000091687e94552db9f008a52b6786f7754e18947978c310c87a15477a0495b9ff37c59172dc9fab2c24de266dbeaa83b2be10f7baf1408aa5dfd0f693b1d4f06d3b9f3284e944d3d314f169e9827f0d950e92d917489fff510b77c9c94d8822a1a3fde16c5f5c6a0f78bcdfe6b64f3d87f7a8e551f60b3ab7908b95a8abcb0474028b2f8417a758581ab5b9b4f84a8ce15772a390a2a79c988944584facdf6087cc0cf46bd23a596294e9154d57d023df589c02dd3c892639332982d47a2c450bdde8e871613b3da0fa38a13c1a602addf7f23f460aa5208e8783544e25838209417f3e1f92d6275b27e7885f9686cad2cac0ddbc49a8b231debb9e0d511b890649d5874a2428ae8a0116115f55cc6667f20aac588da792476e98200a20e05b85d60d6a32a20fb2ba825afe582b21fd584495c2af6c48b2b02e1e2660442601481e59a0f40333e648cbf875c5f6fb8cacd3cc70a7991c8afd406dde35889c862b012efb54e815a9df84368ded7cadc1094bfb126e59b1c3e0ed4260d5feca8a501a6de903c0d6a54185383b34d06ad392d43bfbf69241e8f7a511fabee5c654c67c7d07ec354b841c7d3b0bc5093d43fc0794f30080ec315226c9b00d7b8489e7f542d8138be12314c4d9c664c1fd54ad612f78a64a636c4fbc74a12ac5884efd2cd0a119165deb59a0d3b995150487b3d91c984dbb53328dd2df42725d8ecae444821b0efa2cab9c0ac5ff965dc36c519e3b782283d393ed101642e40e09e32f1aa37839aae830f955784c33997991b042c6cddb428a93ac3c7b71db14145b77b383e6e3fe5d19cfa4418ecedd3fa919a8acd8a4f0df9fd698421665a6e3fa51a649d60cc76744254d520368ab5e4fe75a001a946a9c78b97e1b2649d0f52664514bebb9d3511b4089d208c1f5988330849feb9bacccc4ed89acd30086887279df6927b466f1584f79090883666604555672b4a83d4b1f7998d55a7d687fc3079d9c118438ced05d618ffe29401f47f5012739f4b7045942dddb2d95684a90ee2a018bb1500d0aca62bea14334606d5d0c92d44266f4557d95005a80df3ff8a507ff9f1a08be62c82ccf066dc48c12d8064e4dc2e420ddc8b55d551e4f19816ce8015bc75ff647dbced9c5fea3bbf3f2a8d72c0c20079a4b8cccfa75383c0d1d98ee64202347e24918106757428257c9c8c26090a7f35bb517394c24086fee5b84b0b98f9d563a5436355d5b22c8e460ea3df9de6aafbec83289948efab5bd171522224a410279ecca50fbaf30c8aed0d27345e8d1ec53576bae6ef59211663bac2c4f5478afa95cf16894626d3554ec5394ea2879bd704f03269626656dd5053643be8b725ad7ec708456b1f757556d3477aa0049888b9409b36bef7e4d1ab4ba27e6cc01d8aa2f0949551027424d2fdb8a1ebde595d9c087e3564d47e93300caef3565b32bbd301304d75e06d52bb46ca1e6645ae3a682a803ca8e3ca5460b0e8219c5f72142a959606c206b98637c9a6d0bbb2fa25e570330a2089f8b3e3b5873fd66b0f20686ca7ba1f0140a5bb87a7c3e5d19ee3e3f305dd4d7231db3bc01faaba81424eb6036484e80ba9a332d39076bdb08a44ad5520296a994d26a6d8cf1cfe21cad25b487ab94bce8a5611f1a6babefb64f02e8bd004a6a170661c0e40b6e3da8661886d3490262fe1c573e267628260ad540c2824adacc4c289bd5217b202a20988adcfcc5b26a1beb7e68de89bc56a2a1f982327bc393341645bc4c8f277449b93f422fda7719eb955a8fa6544563ac0359d1884d5a78891cd64968ec87b794ace85cda965d455d08650a94ac91d80e23684f3ce97fc2d3c9539f6d103ff5d923a03d977104a0707f82c6f1e4a59d2467d5fe43e28cc7733707db50d9dd68a1eaea2c64cd114e7c6261e5a0382f97e55674d1cdfb987c17689ae4b37616d397696601f2069a492f629ee7a10d84a9f3e22df32c9de3ae30de0555984c3e746e53b748ac489c02830c07e38e2f1be12e0bcc0b4883c3c146485102839b34c6a854bb3b8824c8c58ad39007a751d07237c6d1578035cb8e923424ac44212706160921fcffcef1ab2f9284ed188d0d1a0fdc7ac3699beacf6c7e270818ed69bade64f0e8126dc4b3c18ad63038008130fdeb037569fed01a9cf0a282ed142d839bd8987228d29b183618c4ec71b6d92313f4250e99981b1b7309cc4211a580f0c40ed8f9b8f344d5b0a88f31c455cb560907b036aac568d5f58b9d7b10e2d4a31e40aa32d23b5e90927c0d0f7ea014ba16aa6bca2ffe63c47a191e41a01af2782a746aae3b0881854ce1d387b4ab65254f53eee38adc082428be906bebad4614b40980fee99d4097803e06d1f21b0a872b436c4c3124abe50067e5b30f0c216ab88eb5b2b39920175b75004b8f606e9063c407a76cbf6b602d7bfc9e5debb1550522014ba3f0e522f767b37e761e0c5174498a388e36b37761b93efa09407425b0add34921b43240694a601b0948ee18ddd2bfc818467bf024f012c8e73a60dfce02854fa883eae37fa126e92a5752a19994c40986d8ef65a3f10e135f1f2a897a8766084cbb71134b3e362469689d13a30db06816cb08709f77cab759eaceee355a795b26b690e841e16e693fd060783118559d146ca602b0f6758edcc1f4cb2663de00d214e12743c6a52561cca0195376f6722a4c7119886e9504c41a2ce438cfdead1288f41c58da61a196be0ca5e58525aa1fb4cc4f8642868aa610dfb7c0312945cdbc59a55a284a574c0ff7d6a7d913803818be1c095c8ee1fac79900a43d5ac25753b50f3d469921dccae657aae00dcbe358d93d030f6fd284431a99068ff49d381b2abfaf7b5637c65dbb027d6202ed028262d0d120b4132d98926ada33611ddf73507dc738a052c0570c605c405202332b0d6308ccb089d258afe0120a870738441066c5c0c4970b3c6f62d0762a807aeb2410137160400bffb8130c548bdbafdf17fc5d82006795d2d913e90342f88e4f8735c4773a0e0cc739990c31dc5852c5f8c0a5ed8baf21650dd9edca97a97fb3aeb37dd5b14d428aa465537c185671bd459a861586a4851661b869deb0187a66ea9a3fe58fe0456602a5bb08767331e20da71bc7939aed6e2cc112573e4d1e4aab27c1accc2d39b52919129ee4e498779c9e63a011a9f8e871fb8f889a94fc116a7c54fd879bddd21dfcd06649a0a8381c93635c16fe51ac4483d547b470f606d0662c6706904736fb24de7fd22d2502809d3710fc5746eaf3ff51e56c611d238d0974a12ec7552637b8828005c1b5bd081fc2a41fba2f56a2e38538765f4cac22a6ac441609d7cdba03a0c734c6fe4bab9645c8577f7a5df429ab614c114f2ea6376d1ad49bc95c6fcc65c70254d4213659175b092398ffc917f3fd0c30bc43d651ac0e3688739f9108f91687748a5a212405a78e79eb3694f787b0ebc7de0daf46ef7c419c16e94b75215d38491a425dcdb403e3f68115867c0707fb1624ae89cc672cf3c447be9a114cdda0c793d0f5583d6e84c161b78fe244628d6268c3fc0e9b2b819b589dab5f3693d23392ec2bdede224cdf03e976dae31dba0b26b6d832ec07a20861db82255e8e7ac93619c761ed3416ec23a938da8f5564d37820396d66fbcd18741975d4845d6afc948028bf78094e19ab1f1552c031d815f6466893bada4099c73659607ea1b53835fe2077c98f588f7c25ce68d4c51f323d76bdd049e81b0b74af27884d3b27d419ee2489f8b976b74b078e59eb99710329c4cc8a4b6104a1e96f6952813e920f6d6cc7447fe15ebf357b8e3b0299d8d01f7e528e09673d7caa2cd60d4319076db8dd39f7a52953f7eac5b15f96e9d9728a2d940ac04be4557892083e4e3de0b36d1bc92e022e8c0beb83a0863c6a274380b03430428bdc3e0d546f631d131be6fb8099ee706ca424dbb86bad983f943207754fe66c8499c2022ab79e41a920eabf4631b65a0af9d8e11f4f159c583382a5291a1c7961c188b3d89b80a736c49fac5aeddfc1c720f0709544666fd9091060bf60b8f1fe3a4413ab2052bcba3558104524971afa00ad4134c6ac34ac213c157babfca02979e0e31ab3c6ee990e9d95b17923c3d508c4f21b2536b1e43db3690f7c6e525067fc14d21aefd82252c2639e754627db0c87834a3c1188ecacc88ab7551634e7f18aba06da56b4d5799d23ea696421f0c87059a4a3b07330c528b7b9f8fb69311ac1ab4ddbfbf238d563c9666f376aaf5012fac7e3b25601d62cd9241db790fc4578fefa63ca0819815bdf6a4477db0daa7fcfba1100b8597ce704749532320b53b0a6756709d03224f2e63927b81df2a673dfe6faefc824964b1abbf41037f794bc46f72a5a9bfebccf84688e53a1db2686804b3c019705fffd6b6e2407fa614a49f991fb219c892addd4e9dcce1901145c3bd5b890fc83b4225ecfbbd27606606e8c1d4d64264220ece473d1f676d09fd41359f6227eddc5e05bbc7e5bad9a173f1fad86e67c5da90d19a74cf2ff0431a2af460755d9788ee4ec7a09ddafafee1d799545c1e48360931ea7a734ea60e92eab4ab48838ad2672734cce2452c6d78868a022587897387232b4903f7645747ddc7872b78123ad29d450359775752561633ad8b040a1cb2e2f40a2fa40c0dd1679f17c791ccc4b20f1faecb45f0427287dbe769ea8f5c4f3c0b3f187d222e894dcdbe4f141573f8350e789040073b8d534277748ea920c86c2c4a9d08b589a0cd3cbc9e5578d04bae06c9793ed299f55048cdf46177487047ee7cde5a44acd263fabd95e3d67884bfbd5b58d3556798afc237bcc7ad1315efe0f0f96fa8776a82f9bf3c676ac85b9edfe4d7451adfab710502c580a9bc935c1a024e9dec2fe9f6fd0ae4c56886589ff9de41a2965e297f2d362572ccf3c8253abcbd37e27fa1ab8c74a469991827d5ddc1b976a0ac34488cbd76bb2c77681a2df3da040c7541dbd75e3338d5ff0ce13ab8bc67f9713647b8eb0faf00f5607fa9a7cea65dc365a0ea39e70567791f668edb4dfd118136228787777375510b8a7600b381dc4c81f4f7cee1f004fa7362699d4591f30b50c5fce2dc48c29e20000db3b087bebd928fc7a2a21c43ac4c2b17926b6468e097139fdd3d108a72c789620f402fda4b55b823616fe09b59cb4a709a2b9d1f854ed7d2ca4fc923c21585920a6d691fcef5093de2200edea597ecb7b43374a1e0b778891a2c445264464658ee8773e8aa892a1cb99b0359145e27042073b275552e9061c863a5c8fe9679c5dd88d09f52e3a77ed5082ad9539c393409d4eb70a40b719c3c8245a8d3d36252bbcc04e2d370f2f6b909edec4313e9e1b81aa8329947a1226447bce49d0cdd1bae6aa65962dad585f250a5f0fb1abc701f43ffc4981f1514b629350b91b20f860ec89048a811259a157d96fb33b6e8cdcb5a07d0136d2c1d7dcd6a66a48a09590446760657c3bdaa081ee2462007b8bff4643bd3d68d25980b62e5d4dd2a9e95ca90bdfd7c8374500a960f69f96c388c4af2f80bcf80b2bc14aef160d7ffd366e1030e9eb2501baf0562cb7ca0c5923c62ea979f8c0012294e75ffaa818819fa90bf98689c1138087644cfbd21b35e430b6abe850f48bc8ae220b891a3adf3669e6e905c423bc0d3045062aa1e8b2bd3b7aec22fa046b349700011b717c39a0aed49f007209e8101f305a02cfc8029159020610bfe05dc04c034de61b589d19411c909140a0ed6f0b2b8398c485f356dc254a1108ea83d5444e87766d403a29237153aa3c9ec9d86f25c018f57e815fbbcd6b8fd6a9ca68c771ea62b44cfcb724fa6f02e6dd2be4b3b2ba6d932e46ded714a23e5378a8cbf3158cab68867b08f8cb2ae81a90cfee3d8c082dce627ffc9725237543ac9a4a8c0f6d218a8f1c3d51653e54c1c7ce19076f5ccc0c67ecd108511ea5f0939b296354b42acc016646c66ac1e2769ab67a611cd9d1c8afa13cdc710f748fb1db94d7c3318a48eec241c1d795a3210da90b101d7eec472d18ef183241bc0aedb6ec6d135cb95efcfc3c52707c8f28fcebc12da9b75fc04894532ae473db799ebd42fa7e79f36e921bc7ca1fdef6b4e91fe88255f268899ce8e694c79101fac5f8f08cb80f845c9ba0e7c8bd56290e41fb1a8854587149eb8114e3f93be6b1323d00dac3bf7bc4b9162acff8694688fbb437e63ae085726161f1192e27a5510905ab7c612915132b5fd1c89d2f4591c1842af86abb6064a6f5bba562a0d5b67862a373f30082289933d764b8fd95476e192b09e4b5749f4ddc9aedf224e24e769e9eabf84ac0154d5e22deecc65c45215f7c6ddc394a55bfa0e8a0244c10899be3ef93ed21ff1806600a562705747aa6aaaff954e61e7f983d437a8ca8770ff8870e3fce4dd8e9501d089d941dfb1512bede64d75091ea6cd9240ba5be1299ace736ac4123bb8d8a7afb0dc5c421aeaee0521ffd459685581b6cfd76f3a766fe7b00bad5f5542252d0f37b30cc35356b85fcd4afb250e2834ad6f7e2833034baf323736083c87f42613d6626a8104308d59cc8e5c2651472ed5f188918dc76b034431221d5b41c19b7437925ba3c0baa594acfaba90e6bcd81bd391cc3322793e2d57f69c5acb834539c905e45c37dd3dcb5e00d059c4ef74a3783b4a24b01aa8e18523db2ba6cb3ddd60ada8730bc5426196a123e01829e76f9d7cc6e6c176153faeaa997735a856c6927987c12565a559e698607f1e42e8ad9d942e99c6613794045d7d00ddfa01ed44f762e1b29408889b1d320225874dc91e530247a306f03d5f5e5c375bf0b835cee955dda4fcd3abb83250def2934070ddf7ca9968658229622018df38c409d85745430afc9fd428896318716b75d6cf8c183aa15f47b0050aabfc9ec78eb157db5460733f855b1859454220e32161dce618f16426b2161053628687ffaf858bc0258a10e8384bd850806276ab3fd80d2e9c67d9f5d815b9a992887b7981fb05996b2d40f4875421661ea82d3bc568d1696594ae970fc688de72b760b19386a250f65550b41bb5864a76db7e2ebf5483e4058684fdbb032ad7c23d0e300e8b7bd94521458a435db49008a9dbbefcbf1240734ff1f8256ac1663a08108244667fc08e2e4d687c8851d3a3594794c0f9a878406c9550786d26ade98b197f28d2fbcf4e2656c2e8dde74b6b1462a8f8c11e318fd0266cdab32162e2b0d2989b887e3700b1771173fbc1e3cd8108aaccf35997d76c6b20ed319bc489809c1b2ac43ae1e14daac1c0d0b82c6f5921e98e83273bd80fdf5395588cec8ec55c92041f426508ec3bb3a828fe61e6f8a6c29403204806e7c63f1d41411b63d91622b347f27aabbf5786fbb7a5daa6a08b58e698d68c40998da736f49222791db151a0da76207b70b23d2252c423330babb78d844ad1a085ceff22b31de18166edf03666310b766975126e8b8ca4d32ac2667c2a2aa902dcaa6193e4d974804258e67a669e76df0dc6b9836291eae6910c74cbdeae6f26bcadfa47ddc4c1c29066fdb0d03f8260b3117d0508422e7c1ccce6c19d838d6d29a404ad33343820a0b3d2c9bbdeed5ec84400f1ba4b84e6609b50cd0ef9dbdf6b28bae2945f29c43f9232792454f0d016c919fa001a4b42ac3a8e3d07495f6aaf14cd1c3eb80ae81053e1468dcd1aae0ed184367c5180a7605132f078c080b7a612aa6801e6bf12b81260cc06d503712857098bb92877c5a54d2e8e76947bc9ac872eef3cee92364776b990bf1f18f68a9ba560393f101f38132c9fdaa2328b035679cf18a01b7635743e0d767a47b8f762554ceaf740e1bb77a5454d09f6dbf93960e1123d741ae3049c51d09a584554497c39d45683d8fff6a65ae6c0999385c7257d8082ec2541a37a211b28578e2768e05eb8aa5bf1b2ac09673d2ce2f4b54079d3ad84150252bfac38b6742a0914319f413f3274d76d727f3df9b8281509b8cffe5ba8a1f0b7997a37fe515c813b0e95804de2cdc08f2c25d667749887746a68ef537a3de1c8554649105603237a98c493a4917dd4e3694df4336bc461675022bb54a083a0111a441a39a9f91e80d15e5d1761ccf3de56749a9f62e2f3396d3f96736319aef70fea31a3376e3341175adcbd5dcd70db6eaccaaf2710c272cac86e421f960b03a17dda0d23c5b24df845754e523615a72081ac6de1f196020919b4dd613f0b364d97285d137a8c48603dc99a3d06bf43350f4d107cd7a8cd22405c7edaad7b2992ecd276fcd79ce35152bd7f11413680f0989b6c54a92355093e1a59bbb9558d96dc4d7f990aa41128421cb80f9e2bdce129e501c3e0f67efc0723979fb0bf8a8fe7002529a8e9b9ad7ce102daac7b7202764647ce939d9317151568aa4e5494f5df1898ae9669710334f401ea169029527252cc7ac005e18381322b68001280b4adfa2ac038b186b3c464c4069daebace2da91c7bf5ccec4fd18e7d978745f7fce0996148842e0b7635ce8a5cade36fa045a40e56dae657442056e64e43d19c604921810f66273b14dabc83b521ecf695b45d666599495c8db306cfc76434a8208c2fb8fa9fd940c9f2c298d1fe5399e45e06dc90d62432f34fd22a977d82c9d2992a64f9d541f25be975dde1b43178b3262f8f415de20a1c197fe6ae8ee0a6ae7bd0a342304739498c7c66ef46dc4397240196bca01598c9c252e3694ac7de63875c2dde99efc9610e9733eb8080cc51485a32cd07cc18abb9abc2a4a814e02b16e13d69e2c383588298f80e7f0edf48fb535adf80b20c32088c6f92d2dd2ff0b63dd33b393e37eecb415c0eb4d4573b59cb22958cd9283f2abd4aae35ad0fd150c6edcecb275031410d7a3f5a38752dacacd92bb3c7035689fcb80d521336777e6eadd49a4039088f965fa131cb16423fb14cd3edee9d0bcdb8ddb3d4ea302e75b4cc053aae7ed0d7ea2704ebf307388a7089c8b6a6f7d8be7aff1485bf4c827c95addeee2a9b23beb7e948a4d8e0ba0ab6a1594a4f5e258af916c121ea67c4f424e6f262ec77be02de8579442401b175b93723d2f9c39e9359959aeabb611de7089ef4303484f8573cfe23edb41c54e2970c94ac820519ef57ddd56cd649945370e246ecb9b2e5d2e92e3d86f67c23564c3565ce2b3904dbd7f5b9c95ab72155961ba45c31fb8600d0c4c0b54801f879c2f65df3c344db28ca26b221f264592600aa0980dcfac991498e6fe5758c72a6bb969ab5077630ee06a5c354fab89de3f5f85fe02f721844d91828aedca927916d68c12ec5267a65c71e7dda9e1ad2b3619f17a4f5f7dc66b3795deb0452752aaa5897c701d94e8cea0f26cdef7cf305e7dc5d4d133b5ed70fed13a941ef7e3eeecf25cf3bd0c7b3f1b715ae550c9973d2bc8f332b99b5a530229e08a9c3ca808b5793ca255975c2fd79c698f059788008b3bdc26d1ddb1ab21c7d98fe3b152eaa6a80f02334dc5e95022361058f83781d8ed1163488949b0cca05a359f10cbe0d6737442a510c192e40b2f4593cd5890f93fcd5d5bd46e5415ad04038ca2e8d7ced980d8a19ec3c6852fac55008d611abf22718768e3d21cb5a3e6c8feb58114a0d0bda34c4eae53781b0154995c213af5c5bf4110306887aeee7f7ef4781a7b1220c2b81923a1196f7595b518e3332350644977bdaa70384d6c24fc23fea1df6248ed817c399498ba5d00d1f062b4c19a1031e8abde9db640c7a2f351b14ac08def598707686f1b8d8672f759cb7ded0c03f70abaee7635def364d2d5612305c77fef59169f58712628c6f490a70823cf0a866c32ec54dea628ae79cb623f49f3c6b8f8e124479bdc5998b84189e4eb1452b5cc2a786c92b375e6a9c355f3c474c8186bb43a6f08bcdb181810f20b522906e60a15042e087f10d24b12491a4dedf945bec6c30e204cccf384b020344efc1f0aea0a7885d171b687d1a6eb71077c1dcec2a8404ef2f9fa4cabf0ec44b882ff05ba1e0fef1fb3190dcb46d44bacc11d4c3860404eb76b23994d93be6b2cff3255b680e27b9ea0f8e93ca86d7246c633ca5e56dfa4f061c1c140a9a5ccfb7d42cb5206096ec0baebdfc24475750a7aa0985e806212c73697a06c8476a7d31777254a716d81d19026360aa335ec9c58e1a35ba3840e7fa771595383594ecbece4011e45a556ab42f9355bf8e0825b8b7d5a61cc65412b76069634b28122c1ca1b96f12955eb828fdbed39cf30ac459bb8d0f2746a3626d1794c0222c2468a2689a90be5ad9327eb8a7784b50e5d918190068cca0ea4b2bf1465a3eaf030ffc4fd50226b8f8015eb903b8585e8d991b654961361a094f4d05b6479c3ac9252865002ac61c86e414321b1c9957df6eaf9ce147100991abdd70bc6e3af0b3f134e7cad084b644862706a26226c486ca92cc7ce33d7a038d7ae571c8719a41bd567e9983b6f44e49e46dbb6849ec92be2acc942d0ec4e2ebbe0f78f6b1e44c30052e6bf5215077a91843591cee23627f7b5a7c53bd3bb1228aac6d68811faf4265254a72e5db4a589af2135d02078ae8147d6750ce9609149f52ddc2cf84085a1fdaf2968da823e4f3e1e245e479c32c7e084bd3fc3596977365c1e4b293fb7c78e1a92f1e801792e493cf57391beae0a2c0d001c9e67fc87897b72c8ac49c93f0681fc6a26639664b2b2230ecea3307e4c6c8cbe38115d8760f8cc109173595e4fb51947f95e2fceeede0787419416fee717cd8b4ceade1c9e76db5b9001c2d7a01e69a4b186acbbe2d250b1178e262ea0b527b38e8900bb9b420d7b6693384a41b3cde74038f1a2e2d835ba21b42e59714676e650b94f3b4d0d1b8b079829420b5004d9dbdce35928f49e4b9409805912a9ea66fd176f07d291093b3e5d4ace058d30e7e4daa9cb91228f128e661f399db1417e0aafec0d8ac153cf208dfb70aa9e32862933ccd4305ad6d278d503592b4c583a045de3b4e9ef4c192e29d4012b663035e406ca41e3a06a7783a11eb0427e4a761c4e5c997ec0e01a6dedd821b07e49576f0db04903b4bbbd284593c67661245f8d200bb11581de644a742b6b74d90a26db2694138cc70e5c8057d25718c2a73227d1045bf6356357839445ef6570f84c43d854a2e4f997af750916cb6560b3a188c984f787866a65b99aa4529c530193e9bf02ecaaa3d533019a686d0b45391c215233a069aa57b67e0aa6f62aa8a56e76d45b68957d9c23e6c04baeacef013361cb19944b975841628170fdf4aa2b66e419a6b4e5aca3bd9173a581e48b89d6065a7498acfa7fdc7786bf99dadb3c4c6937b6f0f534cef6ae2b9a5e926a5f27e0406e613824c3a36efc75b828e6ebaffece74a17ac501f5a70c07429a72e302527375632b26048e7bf49f222e0b659d27078e7b2cb51647cbc4b23b8619d5da8cfdbe8f4e94df4eb4f2300cd39d99dd0aafa4c08b66e8e0b8869a53156726a22fb7ce2f38cdf4ea02d99019f69a958e9cc0a5f57f37f0083204d1f89a2e65046be3067e18c26d87a8696e72a1e92b95bc4e0577202ebd83110bd29b29b2486fd64c9f6f05c7ee69b8a58ffd0bf4f5be610f211b989e747f626fbddaf1643932ad880ca2aadf700d78ee1c90ee584cd43ab1a2c688ab1cd54e1031476e0622dc430ec8ea707b07d09e9a759e0cae3702cf742f440986e60f3982fa28d4e565d5a703a8002548e88b0984577439252c3b5eeb825d42810a28bc717fa7bf1f6d0bdab8527931ad4d00ab87864749345ea62ed1550a759b336d15afbdb6e3680409cdae22df1cf3c84d102f47c67a83a0872cb78b02d5116aa3f6e326b269137f136ca61499eeab48789c53993f2ac419478527c638d380b41984376e6a2caed9a4394fc939792c8f77370e46b044a94dca54c4a1e4ebc476d7bd570f6f029e7f817cc59aa05dec246a0e62cd846c55537f74299b8aa7b8fe3606006e807d8ba82675b5d7f00bdca8a04058e0b386e92198e0787f18531f66d4a00c2606a2576cffac7ed81a08aa027b40ae4c590d1d7b496ce5d7ca275f2bab7c5ce9932cb8f6c0515a0deddaafbff1573a5eeb936e906bac75a2f2d60ff4fe6769123dd4ca75268838ea1c45a85eda44d340e5a0b7023481ec09517dd6b83fc6a102b82df9e4d53290dc5825babd3a4e45d3d1c89ed9a47293f6dd4491746218779ac2ff1ee0a494e24e741f88e5e3dba9685a16888b9c98b855e34ceaf797174d797621774ddd2c19097723bbb2bfc467055c4addc9b164eaa1ae972d813d456cee4f9e09f9d1a9f3b85af230eafffe7ef8467f9f85f375083afddbf6fef57afb7d9ce71b2ff8dc5aeb067300a77cbff64aafa42174dd02e0fe9bf72fdf734061473e013466dcdf92ffeb3e80a8a7fd81960fc9c60038b0e3d34b3ee75ec1d00dd867f80689a61c4b2c9747c675ee489962783c9a1262ac59bf35946bcfa557d112e8ce6dc66363a9a02e010ad878daad16077b9f8cf11afde5527363d25d9ffb1a35ca66dcd7328150e390bf80bdf109a079c68d754880626d5ac4f88707e335dffbbb838f24e0ef70a60183de18e4675b44c36ebcffe8cb2156835f6cfe550005d2ceffc664b3e0c9a52d038a98f018a59809ce16794d7822454be08636bcf0e3d5cd66f0cfcff3a8d0894969ffe17c1cb7e6f8ebde41928c440d20890900bc9d590d82c753414538cb18f8264abd201142abb8ef20a734c31953b8a88f7a92733b2b7f732145a309bfc718831571f6af2b7c5ca2b8eaa1ffa7c0a8ffae1c1906893c74d21f5c1c94d1f7f92449dd454bf08887a92fc3389472559b9cb0a254fa68fd2cdc3de90c8282a18b87b0cffe5f26b6700d6b85764fac750a99004af6c6e43adc700345f688dd055c827b4d1900ad662d7b23a16757ebe87a241b350b2926fde708514726b919f529dd459dd49b1a47980b57ef34d883d173dbb1636fb202c65bcb882517ba38191cb15db295622d625f2d2cd3c59325e2dd3aa20d2a766265d49d250e86ff1f22aee616343d071e9d69c5adf5d8e8df4c6f94a82b7c4d6b5427934aaf5463b591c4889255926492c30ff46ec98589ee7150e9b864fe25c5c4b9e78a767cd7e7f1f9ba2dccca5702cc924a022e0c2a4712e405b642a3e94f03e930d43ff62e824a17e935f89ccf926808480b89e8a16ed0de8da69515ccae540a22f488096cb0c30d416300349689e30c0babae732a9634f11e8ab2d29d02dcae1087c9538d532b264a92bab98d5eb8a64f708d74770e747ee29133d0fed9c312d180e8fcea62fff6ddf810fbc372396ec2ed7509da2e96365ce0882b80de7eb2dc6a7b88899e817aef19285b88314b58c4de48879416fb1c0a426412fc6d407005459d96964c37ee0dc9816798fb8df1ed1837863e00bfe25f24a8a05d20010468e1bfacef93f40a835995cbdcff8c2eebde2f802d013dd0dfef2b57a36269f0145771d76c24927d1b21c7db3d1b346f18d27cb65e6a59c42f46540e6d53c972b080601e33821bc277d36a2900e07e740f11201c3ec0fd3e209c9f046c977c809aa8e821d5b9e7881e60e94c59286fef63670f07866d01072c21e654235713f58848e7fe081af3b2862bff31c253bd69cf287df5ebd4274312033a008d082cb1a0891aa95ca5a4c671036f4f59b4ace81ae5e2f6b5ac22bef8d7c7530d1e00cfcc76bf359924b7265e0dbd00fa7994390600f5f8535259c03ee3b0158cca85cff211dd121277c9911d845cfb134d1a2bd050570e6d586891f78f626439a649fa45247dbeba37fbf16f924d9e5669d7c539e7d842fb1024a4b0c7f66e74ad2a1879e8cb59ed771602672f1bc5696790eb92c3c15deb1e0a8b5803e015dcd053fb2ed825e1869a276cc548ad9b1876af517858ed2338a137371eb56bfe422f6d70f5d92b0de368cdd4eca0e0cdcabed6d631c4eab5db2b06c043d4acd68daabf3ffe37e74b970b0229052b91bd21dcc296b3186f5caf374a7719701b53d895c2b2b277f92dcc94b88de8688d39d0df81714c7de56d67f9e8a9add28d742243d8a1e9ea44fa31ce246f2f89cbf129f9c10b194a5b0dfb79f149d38adf4e9f8494022bf4a98ffa14d8769aab5645149ed520c13ec5e196c96e2668eaf9a9493fc01c420319f2b6c3977cc603bd8f097a9f2bb2b41658903478a915f172277f1f06df4900b921404594b0311ad4d519ee8ff4b6b20a354af42c6baf06912e5ae0027d4a83ce1c8e04697de116e387891b3ba98367dde4ce7a4c0abc962a205e6de38725747ed6655f3c6a048bc11927b81869f0338c5ece9b54f9ff7b253baa5ea1bb4e914ba5a793285d8e80f93055f0ec09c911dd0c636dee1e927f642ee8a32619e9946c817ea57f5234d477b508c7c2d3765e81b15ad9855b0ba008eae1c83f69f0d2f490963c0ded4a06f2eeb339509fae842ce002dd4f38cf5238b224ba697956f59d13e2ba960f2960252535e142422102de13ab0ecd9cc87187bd2881c538e86b38cf5f4674ea8eacbe3f22007f16d6ae3cac9e9bb429a0d88c6452dc902df9a9833c67e3c27e9e84468b3715f14ac4fae9900cda87245e69d8b8edfa55ca94eaaf5bcb4a896ab22c75ea1e2a127c3c253e2d70ef1f27b91415f56311b957195a35b5c953d71f5fd54431479c1042f55604de2d5cf47dd69b70db35eeadc882637116c61c1ef284038567290c9c3e5ddf88cf9343b63bf48f416905235cbcab56c96770af30ad6a9e559579a1dff4c1fee0c88745aec90d4b6d0d9af2d1613a4289fa83f6f14f54fd17cec121ee82d1616fb1d1374fdfd1793114ae9b161c5a3bf105b5c9ceb475d5cc01d3830c38e5f2822e3109021148f5f76ed81d0a54d203ca0c53995320dc4d6d0e8571c8c678a46437b1bf6958f2728ee9bab0513e03bd23193c52e05383f2e872a18962e6fb3db96ca8c97ab1471a4c98f27ed3309de31aecd631165a48a5e079f9fab666bb57767777f796294919920935096e090e33bebc54bf6e22a9b61ac57d7d2fd2280cb8cb811a4569f696c3685ce6b8d72c0db7d902dce40c13d97eb356b86ba68b941dd968d564fd9becf9e705bd5ee1ebc3429c4d8e8634595fbbedb172d55ce32bd7911572fdfae36b5463a46a94fbd71fadb04f69912b4eae9fdd698546d5cd88feeaaa8d359797eac7417399fce4c9833b026ed02ab34c73cf3cc3287dccbbdda9feee2d6abb494569a574ce49713414af0d1a8f2646a3e66b61e4da93abf7959146aeff5d6f79a93e771d28d7efe86fb8e41ee3380fd3360e2bcd8106cb30cdc77ba0533d6aca42d334ed438dd3b430d334b1cb449ad8699aa6cd4c45b713b93bf3dc1ad599b208c3efba173d77cb9ab92a7eade26fa268cac294326511aa15a749df4274eb2a47c4de5d3326cb7ea451f5fdc50fbd1ba9b5560cb4353b1a99fee763a86398a839c920eaaaa4ed8cdc99b430a94c59cc69cac2a46a94a5d14c293a6b8e6852791569770467eb30bda190a6e1d286968797b550e8f67725c9f2eae762a3bef7adbbf55a2b7a2a7a2ef49bc3801f0abd470abd26c225ad56892e87dcea087df679f3203fd2a4fbd70211f3daff5d4ffb8e64d94895e6405dfc4baf921a36b4d22bb334b4c9af05a28d547953a7ad9e6742f0fabdd63e7b1fd8570d67f3b1c0f00dcdfa75602eeaa8750be79cfedec2de9a27ef8848ada837ddae03cc3387a9dddddddddddddddddddddddddddd3d3eac9f161075a5369588435abd0eb9b3a23c2f2f32e85d2420f1e76723894f22ff85ccd1e564f50a886a404159ef04f90e160494bb52a04a7bbafba7274b14dd078443f5d99420bacf53bf60b53e89f20fcee0319aebbdf465dbda5fd9a3160e62b97d398926ed1ac47223f5f76b58682615664a998460261567526918fca2a6c0b0e1ba0e9736dce538cc94c59642833759ca513916c9fd948ead4cab90ad0a11534d7e5fea4ba5a8981253584a0a02baf7f7c1fdf609983342b0e8dc8505b7e19b4cad0e4abbeae8f6cdab58ad8e5ab1337229a6ceb03ab08ca524916ff2677f030641fcd2c832f69e36412cc3702b7b474431f5a5549f48535fca079956d5971ad1ca69818c1f1d29b47210799221052e324fe6e8a5a5d85f49f346bf4b2f0a640acf8dbfb4919a15cfb634fdd47ea3266797e44f6e5c6aefbf3db86de0732f6e180c29bc15861873dcf61feefc825f881e2eabd5a161201dd6b82f6d2ac57ec34034ac84973192e6d50c0663ca1552acb13c8dd2e3f1a6c7e3f13c658358e98cc6cafd58cf84ab4675b8a23dfd885886ab70d5647b3c4db64bc43ef3783c285cd1faa5c75386abb26e91e96f2eb1f4208f6776909b994adfc714f5da869c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c2ab84a9bda198651c7a557690e5cd848d5a6fdd50b281cc9374f32a0f0a3851f8fa7f4726c23d524adb5c979eaadc761ba6f4a314a29562946fe64fa1c4771a5b4d45ab9eb679496f1935b636940b4bce920d8ebad130762a9e57ead48a3b046d56c9b31f3f378f2e4a1666c88c157022fbcf866f0c9c00b2fbcf0e28b81175e380e381d883f0849b3522c84a00500f2242308ad1cc660ce18204fd205562b093f446079e1c383dc243db943ffc95296e8dc99db0b204fc2e330deb6892289f437de6b514a29a5f4c37177f78fe5a5fe6d134512e95f4b79a97fdb449144fa27c914f6f24292ff2492687bbcd49f6d9b289248ff24f9f2b2c3b990e43f890482209038634e3fbfbd10bdf74eb72b5fa66fdc99bd96c388b64d1449a47f921cb74d1449a47f92ecd1b6892289f44f92aa942aa54aa952aad4cb0b49fe9348a2e8b36da24822fd936493bcbc90e43f89248a3c3bdb268a24d23f3943e20272bbbf71693e5d2241bca7e3e9783a9e8ea7e3e978add06b855e2bf45aa1d70abd56eeff703e9c0fe7c3f9703e964d7d1febfb58dfc7fa3ed6f7b1be8f254a8952a29428254a897a6cd0cb0b49fe9348a268836c900db24136c8ee80402f2f24f94f2289e21441a02982405304814020f14120f14b976d4604140a89804222a090082824020a8980425fbe6833e3eafb56dfea5b7dab6ff57d3633fe38ccb6892289247ad1d78bcd8c54e3a81a55a36a548daaf1ebad33239f6d134512e99f2447ef33a3578f5eafedabb76748781ca69fc4e5309dcb4bfd244ff2ee243c245f8a25c945bae49264dbc0121369394c13417ce3f8feb0c7619cf8feb0e5300f80c0f78b2b8779e2fbc51e8789c0f78b2d8791c0f78b2f8799c0f787560e4381ef0ff5380c14df1fea0fbd1ca602df2f5a394c14df2fea71180bbc105f92505f92305fbee430cd9f21be9cad9622be9c4146fcc806c5a1abd2d843d2968806d1d70f8dd32b1f787a7ae81f057c8825e8c543b8c2a5f758e07a14d72b70bbe63614b729707b0297ba247069042eddf1d2fc272e5579693e046e145e9aff809b8497e63b71492fcd6fe23acb4bf399b8f31d309f010b980ab809983d784c031460aa24717520318f18c0cc3c11c09d5e32e216319f883bbd34440e983bbd84bad34b42dce9251c777a29883b7ff37a37970381cb0d00b8145f70492a79175c7ec9dfc02559f2275cbae4b273996e39592dd7c62d459d52f42945a01cd2c9fd3e94e1aa0c018952b99f875b8a443eeeb3c3d5e1ae5c959b7251eec9052ab9545092325c511ed12d43a9dc1f2ac3151796e12ad4e3d33a93d53b1d0e579a4eca8e3532c5a5b69aa7a6b9bff0f79f1943718a12d91fe369b24331341d348743de9b58073a0e57160c62e93f59188611ea843e94d23572e99fa204fd9ca2040684e2bc025ab95641abd74a4bad34d5eac74b194f8f0feb67fc69a9825e2955a6526538aa6ca5ca747cbcd4b3f9882cd2cfb748201fd70b0fb9f33aa4d5e885e160aad18bb5fd882d125050eefa1daebcd4fe2f3e64cfebbc5415f9f224e94592e66561f0569be3d0f1476b8d54b97ba4ca5ac7473e1875d5d12b37a58d91f0f86bfa683ab9e9cdc210aeca70959b5e8fe338d059f3f43a19a6b108780128531f3db2ce32da199665d98f1ef4891e3e7ed0da3950150d310987994f9f346172e4c8340c4f10cbcd5d46829a24df96402cdde5f2a046cdcad3645569d193559eaaead9b6d25deeaa3d3c358c26bb791a55c3a8b5e2549ecab3ea09a35165dd1123f757344498ba9aa57e7701558c562fd82bec15f60a71f3f1a93c3c3a3af60a7b85cbf57ad12b6813bcc9527ea9ecdc975b2b8d4679ef15c95eebbb16d953bea9b2d76f1312ce74d157848109913c8567ed4947f8410b1e142db0f05aa4219fb020c3f420df14a091a7d0b2f62457e4ef0a22157821a7643fc950c19194ec4779eb54d9cb3e7ab3b9819b9079f2dfb09827ffbe36d33bc958410bb2165f4ae4bc5776cf95ddbf1ba720a0d6ae3e6ac501eddd1e7677c5e9ccb14ab78d6619a7d5be11b16e35b2ea5ee9ff0e9853af749636cdddab7b9def5edd2b56bf7fce39e7cc7cba6b9a0a324c8886bbf02fb72cc36a4a8b9c92276b8d346421ac3c7ddce0835c4e29e4fe963cc968b1328f19837dbf371a2d8f3ab250fa24252658499e98603fdfb921fccbadf3625c6ecc13754185d97d7451480c41fb791db7d5aa6119762a21ff4b52cc14934dbaa5a1a49335c4d9e4098aa6e18e83389b4449d13671731e88f4cb2dd3b2c7bc4ecc475e88d1bc66ffeee9d7dae176ffb9c3b10aaea4267ba22af58dbacb1ca3084a96a8dcefc38cb9314ffda6935c92792e8144042944ee271bcb5660ef55efc946e1d21fc33c4c4f18ce329f2539873a9f4eb2e1308d506d334436dc721061b68d884c676278da0762af65a75a33d7bcf0264b2976f1ed88f4b10d73ed23335789f4cb2fcf59e7acf3e7ada3d1a842f2ccb58d9cdce75988b431eda374fe6c927a5b2152b2c9e9984e968aabd7ea9faf40a4ef5fb7ba711f16c1fb26c997178a00df3651ec512ea955e977abc391a0f3347b08c1020b1d38f714482041bf7dd67931151d34e2ccd4223169cfae73e3c07e99f64ab333360fa8b1c0c28134ab634e92ecb70998b354dfcfb03a3c5b1df5c36c7d2c6b1ad969604f437b2fd35e6bfa3db9e770670dd384e4edcb2a44c355b57dd5826a7e0615754b81a1be0f0dab19d6d4bb3a56334ccbb69c9c9c9c9c1c6da62f98c3e570395c0e97c3e570395c0ed7f5f73b1804b1a9d5512d4d5b1af7ccd2d45a2d4d5090a5c9b22ccbb48fb3349aa6699ab67d9da5b1570405f5f46cdeb681ad2314c471cea1805f6cee5ebbbd76d7ee5a6b776dbfa65456031d33db2bec15a9544fcfce8ebd2228a8a787c5a29402c14382ae712713be1978e1c557824f06de1783adbb55e9b77dd5625896695a6bd3b66dcbb0ea7d72f0264bd9a572bd5710c56f198749a1380501596311601174e1a31fc322a0fff6c3db415e129fd69a8657cfa42fb0a76d8fa09f66394c7f88bd389c51968bdeb92076ae7d46a5b57259fdfa05d1a459fdd3e338243ffee8a74f8729f9d04f3fc1cdc223fc215c92b96c1609f7cdaabf6da24822fdcfccfcb4805c39a87bead7fab559d50b62f822a6ae265935c4f5c72f47a3f047cf237c20a3f1f64e93235c7e1ebf6edbe8e7a4235c8e0fbe37bac44b8dd427a8ab51e0d7a7461a257ecd5e8ba028e2e669b2864fb7107bfaa751e1572be41ad6300c550ed33bac59aa5f77a8507b2aedc9d50ce266a4c998a7daac79aa2fd3150d62495fafdaac6651213ef8d44e9112fa29449c12d2301ca7abfa3febab52c4eda688339ee8f61022c4fbec857ccfb1b66685700f0da7845efb9b99997df4a00304566a06c329a1d007f13ec3296208fbe01e7b0c07f99ecb5e7b1fd96bfd18cddf9c999626a5877bbf4cd34c53b93e165ef0d297c3745fb7175539cc873dd2d6e14ada5c4f6621d3a3f0521522e48797ea27e1a5fa19ae8fe11c5eaab54b512bfa66b362bba199c90ebcc9526a41b5d6ba4d87a974c670efda7f1f8446fec2ace06719e8b582b3aa1ca6ae6c96bf3b8515946614db1efb3a4bf55b472be240b354a7bb2600ead39b86034dd26dfdef4e61458aacdc56ebccd4c32c26e2d5ef622f15d3b2ac3a36a5fc56d3cb0b8ba95e93cabd9a8ec02c9fb7dc811cc6fbbaf25aab8e67f533af6a88757a896e1b8761db86611ba679e9f559a55886d9a8b5de787d0fda3ca4056fb294263fb3beb706d1554b71883824c46edda2c9bacaeac605f12663293bb8f738ee8a9cf7a238a4c98a55955b0484deab560c63a0aa569a8b767fb7df941dfe9f18dfaac9ead97f6234597f08a606b1fc86e4fa5ef60de1bc6d0ce2cb13d0339e8f97363188a5f70d51a351d9635f7e3e487d2a2d72c5c975a5c345ae5f18b962e52746aeeff9c679e2c8a502110897658ee33c5c9a54341cc6c6c8d5f3c9f55d4d56cf880371ec0579479aacdf0dc452737d5f764f5ea69fe34abcf7ccc31976e36e526996c6b1ebef615c764bde84612525d89794601c97795c9679f6df7703d155b923b9762acbb0b736dc97c19f22482adb703a299d54ca86b3e16c381b2e555335a5b3a54e74441bce862bc1a50d874b1baee4bf9ab2f16cc3a5746aca26cb5e4aa7a674c4d203291b8e4ba5529966c3657fcdbbae0a19bbeb3dc7bd17247bb8fc6e4dd9404cd9e18d5615cbb22ccb2acec5b85b85e4924b45cda509ee8c8daff1e530de1a5fde1a5fde1a5fde1a535548a3aae072f6345735beef314bf36599d5917dceb0bfa8b7c2321ac613a34bf58b1449230d2346fc483e92551c2f2b4ec5095fd85bae86bbcb5f4039e8f38b95b417345dda2bc31ecb4eed0e2c7f7d2da8515cd58ea8d128bf26a5e6d25cf354bd9f263d2b345983ac9c0da2bbee05dc95330cc42be27d1cc7711ec957ec3bb925cd273448f61ebbfe8e659c87e791e7d92bb924ace4b9c7426b31f758092e398ee334ee665f7247230ff3ae097649a42f2921914a9ef499a52195ecf032168e2f0fc3a5acffe4ce6c4245cde30f0a2e4737d15c4d7e3410d3c8ea0bab3abc225e2b7c99a491b3f76ae9aeec487845b0d7d25c8d72cfdcf57e3c2be45abfa47becfd621e8abbab44c165965d0e2bc9b2ac312568ee5cdefdcc5e8914eecae09f805ff2a941f3afaed4a7b9b4d7a6e28c682e4d8d5c5335675d6e186691f00f1fb33bfc6ac05d391cbd774728dd63d89350c4545d4179273d46f22a8fe132e5331cbeb0bbb2bf6320d867df3b2ea5706c033473d8e5de3e0148fec348302cbe3f764d4cca202b1e8e53bef7c7defbeca67c2537e5c3df10eeb12f79ee625e721fc2484c78903c868190fc8781901ebb52641857d2dbc7deed0e129e2b2a8ecb949393777cc27198639f7bcf3d76e2ce61ef7d8ef98e4ed59a0a3521a2ab31eadefb397a139393135cde9c5cf08b124cfa926bf2df2579ee659a747f88f88ddefe099ea39109f723aca4049752b8cbe4b91ffdf761931f711d6682cbce264ffa925b7edfc9975c100cd15df9049794fce84deeccdf2d4b5ef4a4ef3f5c05cddc9b4861b1f79e62ef7dcf71ffdd6f88c8718f4d92e7ae1445648fbb9ef7dcf5b05b06590d11b1a71689ef4bbe3badf88688a5077872691fc352b82bbb32c95b92d19d59c6bddbb1b27dd12d3dc0136495ed87af4665b88a388718869848771576070978edf59617547f7a101f04d9c9dc7bdcf55693f57b0962ca0e7feeb9cad3642dd264fdee653af3b21a86e7e3a5fa4df3774b07caa5e6d27cb2772b4ec509369d5bde84cb8a9d3090969fdf7d5b25260682ba7424b6e9dc82817c8f65b73cb0fc6120a8cbc4258e3c62d0e4365ea63daba37bce52c99b76e232887d8bc997e971fc79cb9b293ccf0fefe9edbfd021c2b738724b0b2e6d1a083ac4186220a84b0b2e6f72cb87d75a6bed6796c6ca7878edb75c129737d67af3362ee9e9c37f399d1e47a3c23f3d66694e388738d338dd70025173393e10f6c7395a0c44874f2d1256089dc1e0ed5ed4d1758f5747f7e07b1f08be4cdbdb7de28889880f5ed38bb767c207820e3173f89d7d938ddba6dbabee5ae66767f720de9a04dfdefef1cef0310fd0aef46d09717993f1afe067796a6978a0e10af9df25eddbb07fc20f825fb27fb26fc33ea95116d3d3db0f3fb306b0f1a51f4deff2232e6f7c8845f0c3f7ece4113ec8e3fb5bd63c4ebce3fbee3fdce1097edfb2fb952780e9bf038098656c692983f0b038a57bfb5f4af7f3c31ddd77f81d0e92ed8365f73d80a697e9f096e1b760f00b31c436cdf2d3f2303d888198fec3404a0fbe4d87d8a6b3e9475cad12f8c1776be35d70bd71faf0f4d6c6e9edc982e06847db3df8e3c97e68001077a1155fa64924f2adc5e17be115c74bb24f6a92da264923b3fbb10c92fb3dd37ba66b63c734b55c6a9198b8bcc9f3c79f8d6a397d0bde9a6c79f0f6cf5bfa697778cb4fcbe38467932de4af3c886793263cc9ff481bb7b4f13d7c4fb2236dbabf7bf2c1077169d3b99fecf07fdf8fa69f17fcd9a8d3832d2db8aca7132e6bcb254d36de87ef95eec3ff7da5ffc6efc6dc7ddf1d1383d422317e4b774b1bffc3b7dcd20ab05c791bb8f42b255cdee48f66f2bbf87fb8a54d5e791f6ee981bcf23ddc32485e79b151211e35cc9c61c139441e78c05304c93634e38c9fda995ba751f87ea8a242228d4636fcf253e92e8f31cf70bc40eccffc6fefca4f6bf1141aaea2f3c465906cd3598797e9d669d4d4e1c353b80e4fbf57ad736f69ff71caf73b7cef6d3aacdc9ac54675af63c4250d8068df8b882cd97e00c4f03f14e98f1f3e57734bc63d6a0d30aa8061f8d6daf1c32bc5479aec481c83387329daf1bb9b026225c6b73fe2cf3e7895e857495142e5ed5b0ca45fe567f639889fb7196222249f72475d4ad1caf8318472452d88e0185a1b7ee217061b7ef6c11fc710864c835c438849385284fe8ba32d1a45d5701911894dd256a95a0b5be424c4b455f6ea7387f1883b99267526e0ad02cb26bf591a12c9da9fd806d351524282532c16475da2df5d21ce1d5cde942f7af1cb2d348eb8b4a13bed7fdf71b80a2c776fbdef3a4e93d3c3f2463fab3e461899669e65cac553d72c51daa2d4d5ea14bf09312658de64b9799e6c3175c2fcfb6f9defcf93fb9f90feb78a4995cc94b2788af09334e530271be67c2826cc7c1fa0cf4fc2219a5c4401f93654144d3a76c549d6378003a9ce06b1e92d92eb27e139aa0a2be3141b2d63bf2981612222d0bebffe8ffe205d54cb807e2d8a0c9751e4fa540a52de9aa44195ab41bbcdf771d996b76b53b3a66519a76d1e11d5cfccee05b3a507f25727697f7befb634dd873f1b4531fd90c565f7e1530c44bc216669aced7ed66f5e22e077957e5bd76d5de7556cd206bd97697a73eaf0a4d970e5be3649491266db36b2bf8580b88bedb7ed3fdb6d3f710e71db92983b363cc255ec28d9d91d55b39626fb69b5cfbebbb3a95a15356fb8aab82591584af285f0f279b7041f5576c953094750237bd4592b18925df264a9a0368c902e6cb25c27c553d035d658e395b3d7dea325073c67b46a77d3b68cabb8a9d42a41d7d06897211bb5c0044cc8820932e0c2a81c0b10a00223002581c7c814c4e08631dc60e4e733c2e6031d8430810c31d4ed0424159c618c2abcb838630ea8318e8c91655996fa5c9d75aabb1b47b3c18431d018a500a2c1db828ec0093270820ee8499e4a30c30b1814b23600a1c21bdc70062f8660849d3698810d991ada50bbb12cbc90c3115c42f081834f13669c0d6bb8428dac339c2ccbb2d476c58991231f093ca0369c90fcdf9560c68b7f0e7f992326eb436373833781a065d01fd6b3bc53b47189758aba5473ced97d5b4893b4538d72eafd4d839aa4a94eb5aa512da45165a7cad6e2459f1ea194952906bf1069e37ce16620b1329ddf78873c595dac81d37ddddba799d81d16e725cdedf37e9b30fe1efebaee3fdcdd25cd2bd6ee47a40e93b028923cfb795f7edff79ff779dff7951eedfab7ae9b3807eb075d10c52647a4abf2f344bf3a67842347d6b00635a8210d69080a42031ace7006cd0c3e28e105571803280d42386286dac386585bf046f0c3186a308314f35482192a9c236ef06c1962397fbe877723018b31e68082cce5c99a430e9c704216803044a70464a8c18de41b9e277801a70561bc80094466ba0c4672f9d9e00a5b64799271052d32fdcf0c35cc0832032863799261c6192433cae82165ccd30d388e6b8e73ae721897691cc76d94e3a6379d1c883dc7052eab95db388dabb472185739e7b8e638ca7193cb9e534375cebdfae6eeeed5bd56cfdcabbbbb7b75afeeeeeeeeeeeed5bdbabbbbbbbbbbbbbbbbbb7b75afeeeeeeeeeeeeeeeeeeb5babbbbbbbb7b75afd5a97bfddcbde3e63c8929cfab5ebbbb2bedd97336e664e068dbe65e39318a289afc78e079d8cd72cd9e7f58bd14780228cbbe7e7decb3af3b1c37617f80d3d3aca5f9c45017862c0d86551f95f6108d1b27b3e5c8318eb04abdd188a492549e25147a83389b3c39f970bcbc90906825d893bcc4050a8a3591e4a5b9a4447b1316d294a76bbaa6cb02514cedd2ec61d7b3e79f46b34f49b134b58223cca3d56756c1ec4d48be91b86ed332ac7af638598b6bd05447058dbfddbef0929c88e8a521cc6c9f7ea58f622bcd8e59b06affb18cdac72c1534f5c1aff64b9567c17c304094471098a4cb6c4991b1a7784443ee713cc3054422911930100a858c644014c53268200c43324c0182e018a8b0d6ba36f07d9f186c3ccf0b0307baae0343151cc7a5d1816ddbbee0014dd3bcf0812ccbd0000116820a815a83f803dc45d04e74e7debc8919f363730dcc8064b672f6d2ac253177548c2b49d6ec69d63cebb4182c57addb42317c79e9b830d4362f4012db7f96a6fe67eba69227967bd044365b8e7f344944fce68c6916537e097d30c029039a98ad9235908ccc560886d9fa918119f80540fc1eb454d078cffd0f109736db348ff3ecf5c7798f01f11efb3cf0f3bc07ed0e0f7fa0dd9aec0f9b4eaf20d63477ae4fadc8feb6510d7e8e65dac675d877b6496500030c30c000030c4ac1c07ebcc9524eda5e2b8e971722dae6c851b1cc59fe4d2499692351857403cd6f5031cfdecff0bc0cab73f69cdddd1d7a3ff260c690a88041c464070401c63820081295ef8fc9d90141809a46a202f2505731d90141b8cfbcfb10598ddb1f43e0f86171e0f8311aa5d81f43cce0f881e3c797638fd6a394ef1f626606c70f9b65a3148b8798c1f1c3dd89f76b7222be77cc3f288810028a4f0821a01847940f0a229c10028a8f0821a01851be17114ebc9c10028a0fc34694efbe5e26229c10020a8e2be2b96be298a0ce792f4ca05e3c14ea45243af15e982802f5e231817a119d782e268a7015817af1dc4527debb5c26268a40bd18f1e2e560ba172f35bd4c7f380e43673e9c0fa7738159c2a55b6209975088d4b9c018b1844b07b3844b88d4b5608c6819b1844b67aa39bd2944ea7668b5381823a88b980091041a48a552a91901bc787d28bd2399662239fceba1a9631b584345dd54e34eee9d19c36523e8d69a673bf5c697a318d937eecc18cf234f1e77461e8c3d185ba34f16c09723eb47005f8e65e41e7b461f8c3b354fff74e98cd79a3135dfef9d3163c4eff7b2408730f97eaf880ecdf2d297f28204d03d60cf9543202f049a315ca65b6bd9330cabaa9f397d191e79a019e339040ad198313e7c7fe8053ac40fdf4fd28440938823befc3642f533477c290ac9bd9d1e284ca3513d7c7f083463e8dc7cb83fdc8ebad0efe1d2dc23ee03eee94e2f390b56aeb780650cc7a1df844c00a8ce4e8fcf4e9f314ff4556e6781bad0e7e16ad12a92af036e10b7ae567d8379a29f721b07d4853e1ee2ce5c1cb7552c151d03caa564b83d24d3c75c991ac9f489b84e5c212e14d75fbd7a512fe689fec9a55f5017fa7f9928e2bef8b85a40ae0fcc137dd2050175a1bfc335c15c23ee12d7e57a8beeb4f20c75a1648d8f002e00ee0d563b6bb67bad1896552ccb346ddb386de3b8aef3bcaff3becf5a100c2d1886a2180a89c63a8ede74144322d1388e46242425262624d2c9094a4a4d49f1a629a3afe6927c35b754c9355f627550afc4c4e4abb924ab83e69af7485fcd3da9a9b9e5b681350fc5750adcf752cd4fe0ca78a9e625709f88c0a54f5c0a814b1f70a913b79bb8cdc46d1f2fd5bc036e0379a9e697a8f91fd775bc54f30db835cf805bf30ba8791f35af805bf309a87904d47c8f9ae7716bfe00b7e60d50f305a879256ecd13a0e677d47c1235afa3a6e6696afe889a1f40cdcfd47cae79999a17c0ad79236abe889a27a2e687a8f9989a0f40cde7a879989a47d5bc10b7e671d47c10350f44cd03a0e6dbf2307dcdcd81f859318865edc9fdb567c6b03695c39cbe7fc37118977fd971180ab01c66029c8adbe1589ccb611ef0fd9daadb7198261c86896f077cbfa7729825bedfdb71981fdfaa161b251f4f2ae07ff08185077c7f071d565452504e8e78d24f8719c0cc9790c88c46bc28240ef121683fafc3f1db4f8709e2b59f19f62f57bcdb8d934c9beecc2db7246d5c558e39e79cb3a4a45b52935bd2572eb756354ed9abde699e9e66f54fab6c5750d92f95e3f8ca779c072b3755006e5abc8b30871b79927105501ebf6c9118e659865e499ea5493e59c9bed4e1bf79f21faf9d2efea21b4ef15217b024fb5b94ecffa5647fcfbfbb25ce6e2eafe97efe796af91d76b0b1830e3a94745859215754547e504949f1210505a5079493139613128907928909362929b92524244f321aed301a471d46916845140aa9844431450c439410044f406b49f6fb4c3ecf2bf1ba8ea4e3b811b76d63f6a75a7651f6cef344fb3711cbfde18ca9d9fb41cff3449fdace4edbf2f0dc985a1aecbf1983bdd3d9e09c278a89d4c736ec78e019c0f3be2cceb072b9c0e59e79c5e9aeaa1c917eedf66ef79a7ed5b3e8ee6e91e48d55afd857bbbbfb0b81ab52a1aef27c92bbbb7bbfb340f5ca7989ddb5bf21789b0b4ef0727777afd5dddd3d737777776f81f6c44f14401488a26659966559adb5f6d822ebf1e3c7c78f5ab32c7b0196653d56b5c78f1f1f3f5e35556badaf5796bd5e2f9aaaf5b56daa30b4408d1af0fcbc76aef032c9938c25749177f0842199bbab20bb832183ec3d7cfcf4f011851c6fb294283e6588a588bec8a75164cc98d053112b53511922faa5a82502ca148bae909217bda7e592db05c98b6e163fd3c5080665ee62221fcf6bcdc610a914da4f05e2cd3929a55e7fdddf87d164639aebc7a3f1d048f123566d47acb556add6aad5aabda8718169bce7221b432c350dd474e6a99f66afdb7c74bbd07ebcdbe661149b0e96379966f052d1d5c2e892c5be8f66effbb809dee94d2220adb5dad0b7750e6f17f5492e91f047a1f7b66de3de033f8f7b2ff49ea509bd28eaa0b9da1ed34b9a18a0a591a286af23f465adb556add6aad51a12bf20b1dc7b261f77ab0f1824e2ae97492e91d04be10987b2652fe5d332c99d4d8e3ef84257bbc13c915c22a29ed9428c22ac691a0d0a0c56437458282b1418e4feaa85d1a812063366f6578d470b23b78f8fd7799e177e13eceecca1d5d1656388a528c4229f790ab51f2468aee3f8dd12ebcb789542fb11591a94d53cf5731765a7517c70517858a29f469528221fd1182256198d5acd98a971a1ede47e6f056f2bdcd774aa80da835f4601c1103529642a68d69931dab7df8add096229f211f94c141fbbb12481fe203e098e2f3729c587a3491aaa3429800088ddaa87b0e4ce478f0224714493d4626babc5ad33446609e2f7d22429e6275aa7513f67f8bdbaad1386df43c2db3ad706cb6118625293e24f54d7755da7f2294fff88240ad0c3874ac3d09697e88884a3513c3c65c93447a6e33886dfab460db1427331b64f9791698791e98f21123a3cd9a81d5aec9832a5b3ad6d8bc4fdf0659c069d6c8ba52eeaeaba5e9d5a6c388ed4458db47cdfb794e10fdf780cc3ff79412f00a24b79e35f9ebeb46efccb97b475e381bc3ccacb34056ad4cbd3a7451a85f2f469eb433b5eb7e3489b52074bdfd676e338765d17d2d22d6f7209fcb04b191f479e69e417ea1286e3db1bfeb43c80a02ee1831ec0d16408fe0d8e26435bdee41eefcc3f2dcd4753da74ccb0457f2b975c59f99395ef61e559fc5b9975fe5c79f096e01b374e7a60b9f12eefb9dcb8419e90df03f92cfd91d7f425776545878d37992ef9e02d71015d4617ebe2f2d4d2b8984c0f9a7e34bd9dd9657af3fb5aae57bf92695b4c97ec3a9ca204f8ddeb00ff26dbee346ff2b5e97cc2405097ef65bce5f67f37345dd297842fd3e42d3f9b9e5a246cbce94d97f460497a0fb49f0282e3480dd4cc9e4a198e644a5f705690f118e1a1943e38da1d30123a782f77668c72516e0f01dffe67efb74ea35ede5a6b5f1ebf876faf8a88bdb2fff242adb516bc23ee82a05c9a5fecaa51f8e9f790396737270cfeb63458a473c4a4ff7049cadd8f17c465b5d779b82928bfc3a37ce8a6a0fc9c09fd0f37e5e4e4c59b72f27346345e8bb1ea189e47dc44d03ce271c4389ab42d36befbb1e5475ce200cbf9a63f91773639e2b2e692fcf14db7b4d1e900f27dcd1303992ba62f5b70a482a8f46bd92a7bd621a2110000000400d315000028140c88444291509265a2a6da0314800e87a04e72549d86619cc31032c8204200200040404004604666a40adaf5f96a76aa10ac6f9b558d290d6f65a8a94e3aae517745afc73fde87f5ac0941b814448bf247977d76463400f9691c28e4e727fea31d6da5007b2752c438678682cfb60d1fbfc5a5d1f7494289b71d3c2355c58123e768cdde99e82f43b8eb12ef03d44a2693eaa8c857f0dc32c987f92c492936ad8edd026677d24a937c7a2e64c051b631f2da1ae7ec7d8c110c1edabe3efc169206ef2300a7cf36af42ac80011c951cbe8a309779803f481ff6372554011ad0efb3cdd344a990a399ddc78e7ec84585a98a2a552e12ff16a9f8850788cbb8dfc7570269f53d6478fe37e2ad46083062f1d2d0b6583338cfbc83eec3a514e250c0741c4c758f87101bb6044c0c3946ac8e8a80a9a3d31660cdd24481a5a94b8ce8e6f10ac15cc6c4ebb307416939bc3270fa33f0b22288989151b910cb9819d867ce832c1f91c6b204e41c70c40279477b23ec7542e74ca43a8a8280775c90d857a8737c2e07ce3315e6322b9fbf995f4d20c4c7316f6017e9e38846385150ee611e23cf2b23c0823e1d9165ecec5caa4eee6a02d0ee599e8fd09326d69b0f5aaaec13c9890b6484afe2b492cceecec8423e5308946d7852c00af2cc8b0b0615ca761cacb105bc513c6edaf55dc043b6b9fa4f20d4c979d0289c35313767d55f06827c9f1be05208dde32a305d3bb783a3d97aa7e1092c2e7ab3711d6baf7cdce1a229db70dfe6461926696caee461fb5045921766d49ade2202c67ea6cecead8932d3cd0448604d0256fd678a37f5fed84f15550bca86d8a0351ea2ed241c2779eeba0d20e259ede1bf96962a6b7c8e80e9ca82859326d9382a44fd827a6a3ac4fd9ad808d84ba9c5b1b3df0df1504cb680c90050b5c24ae072d01ca53570b952744f24844260b9a9dcfcb3e938bde020663e6ce3b080b8db8ce9c6a2f268f444cf088d11fdaa4e01ac8254981a62e646231eb9f32010ea07dfd382af821c960e4bfe90982f89c46c03232cc5c7ee25e3be69f5760d5384ad02d9b6f587117f76292756c410aa5640a860d0d96f3b2c1e9d1ca10d5039a1bf7face80bd8b358c4a2afe7652056ebb96231c2d2921198222a82835811400e8cc035371fd71713c268e0481042b3fbb0af9056540abd8ab978d14ed117869c7a8c20ee14619345d0ed822be147085efc23e7d8fe184bde3f88111aa1f173525c18415f2c1b447229c21aa5222cec4580e41b0417c051755086898caec18864de79dd799a871fdab356fd2ec217922c2dd944a0f8d7894804070b11532baac8e8e3121f85915a6c32017a6681111859f9e0544711e0b8ee0145c707bf3014a8df1401ba55bb52189b1649836d412fef9bf7919d071304512f64c008263c16e1ad2088d863c919f7a1201620562bf3a1e9c970b01290acfcc70d0ecb3703c5f674eb382ac5f34498ef0b41cb9f1a77654cb1ae26268c4deaec57c56b316418bef924595276bebfc33730f3ccdf3ca4f62aab731f15cfcec8b37fe615197c0adc9339c9f44c4da2ad323bf35171af8c24c66b82713265115e604c721244fcc82126e6d0910642005ac8aa8a30b1e84cbe2a2bab0e58859cbcb84d628dc516b92e827eff8198167ac1beaffde3c6228e5f5ac8db598764492e065d87b5ffd31ffcef6922ebc25b1275e6da0fb0f3af33debe6965d69eaf4e1629642e5c140b3eb43286501d3187740c7382a05ab05402f3481d741e3cfc9c6fcfcbdf2377195eb639770a9a73f1fe96a74497f398af968d2d6819a7f9114842c672d603cb9b028fd3ffb795cf5cac8c04ae3865d4a99cd443e5bdc186d36dac2d47028453fd55700ab94439041e9457ae9beb48946f15f666746eada5b918bd3fd1b0645bbcbce74ff59e0cedefd3b1b9562d9050e310df4e4a3d388effde78d5b9718dfadad8a2df1aa3ec97dff4c06de5bc0cf1d862f7e3e6905dbb90df8f9061e5284c445fe200793cfed8924cf8f9c1d5f90993c79bbee33aa4ace6c34ae3c7ff389e62f95238153e98799f346b9ca9f6684c23d0d866519531992363878cf15787313804e370be7893a81f56fd42b09cc5bf29408612b84870f7211844e642308d00db5c183728ff7c1594e98481f2840a28d76701e5ebf34fa6f3fac9ab183f7f3d3908d8e9e847a042603f10cd335a6a2539a71e651202394b00a1a1381900143cdc330e71f2c43de2647f3de064561dc0c93264ceb0ec2b110f8ed7ffe9df4ec4936913ad573ee0137d1a8a6fd7e6a27947ed61d3ceb2d78d3b6336f728c27e6d148fd151f93a8bf086ea07ea4abf543df94668fd5634b46f80bac885e7def7efd3e470b9bb151985381cdc024cd889fafb18791320cbe84b2afa8d39d916f85466ae7d2b77898ac714f4803cf36e0017f5ea7b8cf9a3bb9ea6c0a351d38a94ede463d97e05e1cd448e81d543cb774db9cd44d24edb4e92fca14b1be52421f9643cdbc7da5eb7b3d38e01edd34f9081a9bf018ca8902a7a250e633eae3474a959562c13aae4b224542914cb5522b131a8d6ce89d6115d7a16154994aab92e19551ac57a95402d0c8bb543a21540979a45c502a14bac4b4285626c1d086d1592e7ed1f00af0ad02cbfeaef7948dc944d81ae0294e12f41ecfe031496dd9e3b768f0362ca655ef5fd5d549e8c2ffefd69ae1364d47cfa1d6b27be1eee7884f1b874e126e85432436181f4e8a7a91947e43081a1e8ab7ecce2740246344e2ea77f77232ac2ddb0f804646c81a20ae6212b6e1ff258adbb55a87de8593b6bd0468ca3a75a50a8989d074e4a57cd742a03840d7ea446ae7081a6b2d4e93c500e4e77452db15904c8cef5519d40844cdc22952f9b0929c58331402bb6e3a7123a60854079cbba520d70afca51e8a2b4c65c9930073a7ae8807ea58fed5f9d9b293d10d9ec17214cf2f032cf41494a70e72ca381977bb1c905f8b87e4e77d10bbd12afc77ebf0202245d9db008f08aff0d2599a427d1125047262292ef55202f875f62ba024153b9b12e6e16157640355495a0e451705a43f0dcf01bba93503504db873b9a95619fbd979f60bc7bf99e84a90c4a89fed1ef4326700e58f7e4d95bcc171aa3bce43aadeb0cb88bdf7340e1d86f68ad40222f8c9bee2b764374ec2ba68bb5cb21daf9f511a2bf606d2d1f7b230e09a957bb28feb1238038a457bd4fe0563d600e4e3455b0f6808eca2cc396a603a6da3cf63de29714d3222cb67c7bcd029b6a8ed81796c0ecf4c0bae7b37ea914916e7a0ce9f5f70bdeaa1755c9d57889c3bf4a62149bf8d98a7ba08c408e562fe23a4f9198e2f4ea5c1271a9ef79e8ff4f372128f58612f6a715138257cac55867fbdf6b0f50b8d127c8af070b95ce039e67b2128268f90a266915f079ea2403328ce10fb305062647c44e43fdff2c1282aa0ed177ab79eed339087185471566f01182c94dd571579760b277057114b2246cc4028f108cdb1c0a9391c85c0bb8bda2841a5348f0e93a8e31a63146b439ae955b298217b0d8527f3bc62b5461980400ae77108a0176c7340842d3f1809c81c58594ef6b71bac58c3bac047f5dc274514d7e50349045c837cfec8e6eb083b001aed2f8cf0c36550119ef38fce1571df510364b94f90e08e498d3c92c53228223acc0968d0fd78d00e2b660f634a52cdae3cea83b7e07de251f3e028e80773b4976b87c0500d76aca6a2d4c6e406e2a4e909fdde9e28e0106b8ced911d753db09539642512f4ec6245eb27450608814a14357d0ec540a9ce3da53b8eb1a4868578c19d32243594492f862511300e6d6d8694e11c69d87c9f92a54b5aad813a05f4158b147c89e64c1a1233399a95da959c8c0a1f677ed49a00187bccee5118747fd1dfb354a51069530d0928a9e2a57042e2cac4b3c5c079e2b40fb625cdddb3d6ddccb5051c9ba83a4358b420a6702949117eb563b7986ab31a32781bbfa1881b026b39136e95532c47e97a41df8e45221dcc5247a719b7b983401c2f3258196212046816ad02d8beec273d0da4343f28f74bdd3f56cd83460b1fdf7accea930b270fa5947e702edb682695649e24aef4ed4318563a14660be9147dfd11c0516a38be384f5992ae295587ea56257f8a937b3e039265b574d6f03f9e210b39f175baeef74c25a62217b4b4241d3aca661e307976b17fa72a6c51a95ae2d92c3eacb541bd1a5394f19da4aae52414ef41dbfcfda71d105bd2c371261aa11fbffae550096e78f83696fe11df38b8da08444b536e0cbc45f481024201c1a1fc5404882d87d12f92d477cbeee73c172a71de5b637aae18c83884d06dc6de4387b0f95fc3d79630f9866ed5b4a25b8d5054669166acdcc2f0a0d6494d55e92f5441340f05e2286ac8c434f9c3a25e9f7d1131adbd2cc4e41d3c1b0370cb22b1fc424e49ea0c025e4bf23cd4e6b39b9b494e57b778fd2cdd922f1a586cb042b689ee9971fd3db27f74af9cbae3987a969d1686ae25358e400caac510d2e4787597cc1e7b0bca07d287dfe7928e4e4c8a00223aaf90a7df7d2bd30c56416fa8a6aef8ea314f2b73ac4944b877625937e8c158368dd9856247590a4abe3af56cb05fbb8069b790cb945b79102c3b77af0620ab7e918036816fbec1d1822b2af263ca4029ed1243b34833ce673ae98a9e2754659e42d631e1a5c4c14953025ed9726b35ef52ab54b03a8f09940849220a3006e12fddf24823d08cd8eaea97874de84c697636ef11a855d864acd524369734a4361bf811e610ea93c523a66a4f5dfe0086ff7e724aa61128dd870d0232170a59dc717f17d6a6c9934e3fe8db2902ce2adeed1b809459cdb110f9810baf678f8f647ce01f528215db5baa8741f3dd188c8aac6e4d17a505cddf6df3c3312724f64b2a622092361576a8415faed860139981048621605817b498e8e73fce08b8bbdeed5b4a9d41769772cbcd949b4e37a82b716be147d172f7cd1ea2ee84452a3a7a5f8424118f430f1a397af23ab23d3c9daf3428ff231f25218fb33b7a834f430e81eb9037d3742a0742e2d1aca524569e4eb09c2a22e49aba91e7bee68de0264e643ee93b468ea229ab2b79848bc505432f15c7f42dbac2268c4c6dbb7480eb45183fecf14c63364cc5436a2af14b45155a14dfb200a62f72de647602e138b8951f82d6d9d02c79253edaf810f3e4324db0df58e1a6a611a57b06f83c4d25da19d7881de6a04e5ff5843d2846649f2fb0849cb40074fbed1305df45c933067968aa4ec002789d46317c7a989cb53ad657e81c8e9d38075fba30b90e1c4bc97ca32b5bcd088e33fcea3176c0f8f3263e4d935067b77fe1d821d8ca96c294dce81b47f801f278c0c986f19b848dd9e67dce0989540ff164590e79248fac30b27ed2f070ab15ba2fc761ed474c1781d506ee51693b91a0312f0f266cc52ed6d5f9307d41c4746011b22a004a348b597675894792908ed09a48e8ebad4139e8625d8206b93ae7bfbd0a39ccd07a558de34eed5eeedc860e63d5aea821a0c5b54006859456e027ebe55a7f2edbf05ff27f335f05397cf74e19c1de4b10c5d2d9feed9c9d937c898bb31ec3742291157aacafbf795c94aa27f37d9028c061518a2b5617dadc46ab0b80ffe59c92610c2fc40fd1d3749eddf470d88fa87680bf0f8f57ae4a523bd787866948c3de12d95a5d3a2a23ead2e01225c3bb4c220694153aedc3f6149771286f874029d8559c8f55c86cc4759cd0e4cf6c494b58a505c38c9bda3f6d01793152c12cce7aa5f953e5694bf647643bec25adc91416ecb6cc470332f3744a7852ee350abfc745a6b7a3bb6abf5b37883c8601727d44022f3f0996007d953c40df497c2027526f7ee13284effe55a192466b7ce04f89de28764293d59729dd7acfb00989e6ba66166841e8f4101ece94c5ed21a5bdd531e1c1dcd4ed8c0cf5ff7cc0e48416f4d3254cce0a11d0d6ae2ebee8e6c2fde40e4f67408a4e0cb2512a7af5adb7d2d03f04faed9bdcd902c27336826a258645901d8e5db2c6ffe994af4a5f2308bf75eb9f199c2e212732d484573a6d97186aa59d080fda1d9238b93d564bc00707e2a589e3b4b80578120c72bd87ce3ad62de932597b5264b7e1f49cb8d9daf032d98706a5943b45d1089707d7fbeea0687e4ee6261bc680df5077bcf1180a28b1b0058b98fcf671fd01897830e35b2a2a60d64f9dee037b1edcf4a91088de7d1769861b06c6d47986359b47366acdc73e6c6cfb8dd563646a17123008998f3260282c3dc0ba73d167c4d2056214c5737655398bbd30063fb9a90842fb86bdab1c98b902ca43bef9b2e67fb7ddaead1202bcdbb6088784b9f7cd5925e0a4ecd4ae1550cf77c8232ba0185edc8cadcd3ca75dc60ae74ac6a069f73e46a71d69f7fa63e5f04ae9b494a0c6f94a188b9890d6ea6c0a1ddb44c99ef6a2251508faad8e9ab0219ac01f05a6f31c759daf316fec2ddd81daa038d99b40e16d38b80c5cbcb2656d40992506350d46dc195f8b0f24db38dbf665a7c04d44e79215375becaecce0c38c9caec665b184041d080d21062fbbccb4c19c3995950fc9f14677e9189e5a9cbd6be4170603d0c5e9c444bd20981e6e251d48df5e60e89ea2e86e405618630723c5c621a63ed04f1e2985cdb1527f94ccdd850189d7099fea852002a1fa5dc37740d6bea8eb71e3e63fd7d9f39f522cda50a29921f224fe4eee54401ce483328f3df21a1bb43f0376128f1d036b4002345bc93f3e847671168145ec3d24f32b964403d4f510b6eaf68d332d19eeacb83603627a861c47f8b87f1136254cb621499f9feb8719d662ded0cc0728628b5ae4bfd669b1c2724a1f6f397c82789ca9f3f40586c7285ba757c1705cb1dce90c7b9a0681ba278a03187b1187c208a681c60d7449d15b748a6a1bb0246c9d5ac4b483aa7310860f38341df6e2611632dfe0b7b4e57d8087a0e2de0ff0e35a318f8dd9c858e6c648fc26483f716398f43d853fac3e8f935f7fae9dfb61abc80032724f5b44fee36a5f02abd7a96505bfd38d98bb32509f2f43f1c1499ee404d49f93d6d0527f65fdc5542ca5ffbc49effd49efe9b47c5b55fefab3a6db70313815ab1baa72bcc092586d75725cf3ce1f85f222b78736b4f0b1bba1134607cf17ef137febb7a2c851f6ca37ff0d5b061e465e24a505be8687aa49ca3a1719c9627bea06ae1dadae46d09ea288fb441617eab4e0d9e9d39d357518311bd7ebf81bb01235eff463b5ccc990a5f2dc66fa9b6f5f73b466bbe61fbe3c39880b29f5704d37da8e36b16b357c628d63a3a35200d85579621f57c8e0d0c4f5921df94ffc8f09192499b1123fd12e5da6f1900cd810c41c50234a2ef8c2d1a07762ceaee0fa8d5de326b883e4aef2f27c754470c467a7f1336d65cfb9bfdaf09ce7ac8e8605850d930735b4ddaa06a2361ad8006b80f8381bde6f4c8ac05c8abbda426135c1a5eed9b6ce363f453a1a3c3b3adcc1b08522b551c92ed7fddb96af0052e4548c1e83103704a8194f1611252095e8607b102271990a4c5183254b5cb240e21da70324255be24a66090f683023aabfe3e0018da97e2b6b5dbd707294d6cd392ffefd5dcf9eed6dbb27ff8fd0e942ecee78bc17067d612962eba5e7f29d7d14ab1963967b6fe8f652f507f005d6a04110a734589a2e514d9aca558dad4515efe3cb08f510ffbd19f00e06c5b6bf0e528fe971e234ca90fd8005283a5d2bd9ad4463811fcb36d0f51a1e4ac42f52c75da7e7f3b141c9bfb812b213acaed14479dd05398e69b6289b7d17d98917c6680d7f841a8d5681020d34b413938ab42bcf390359b06b10a090d3b0d5e5d6d27bb59a36c6a5d9c11fcef56db62b6c858b1fea79d6bd88a8d4c82dd438d9ec0982d1b5bd6f846515689a3184dfd448065caed77519ba0cad2079f4c7d8ceab888a2bc0bcadf2dda9c993aa892504b48583f971ad91fd92a14572f884c9ab48a02fe81bcb71016d5ead1ef15259e45397fd1419021919e82756c206effadbbd35e3c900c6ab09478d0b7375890e067460d5059f838b46dfb6991ac8383a239d924cb19d4dadb5e81afc50490b5d29244a91ec270ef214c9afc032921ed3b22c51d714ad9f910563dadc747b2a9a8fdddd5cfa81e330a6d82c286f6b9a74629962fd58557433a126c28cdd02e588f18637474e8c2a9d59388c5bc504109f3908d3f2600e173c3f9d8e95dd6eac95edb8d009223aa2fb102227a9812549a4f2b89204ea9f5f7441a468610417662ef844604968dff244a722917de669d9ae1820dbe229846a1ee7155b37b430a654fa23b77255c05ddc1811f8a4162d31d312f49e5ff280b13d4400ac2b0e2a2826f4d3c2772048f725a940bcdd1fbecb4f53f973202f8a75eb4768aaa5e8d0b74e5e0cbc8a119ea904a728b436f7b771e54075a4d9c9d2669b9ce69db2f3b630f5d9d4a0adf06ae13988af370518139796b7198f98021371cc582eb869512e1c97c44b05640b1acf55529b3acd83d6862d06fd5f7577b25a6de0550815ae05202b77f0b5a6cccd49abe910b7882142ba4e16d558c0fb5808e95be75fc27c803881aef4b31a6533f36340bad737098ab0a348557111e6d947a598f507978c2ebf83a25375062c324d9f0d59341333d8e9a730f10456153dd18bf7bd8bafaae043a02c120398e437587bcdfbca6197ba0c16e79fd7fe690fc33bb4fc76f3e42bb5bc5210b02d5b99e3fd96777b108fb7757e2039c1ff26907692a59fa7493301071923fdb683146369a156f9e5b7b1fe3082531af8f32e873812e3f31c294fd6f410709e075eeb6b7ed35492eea9f72e9dafad0e4dc777eb22c07960658fa103a323ab1752c6be91132a825d6c584496e2d8cdb0ee6070650f5f956b97886f61fe16fa198054e378981a393b490cc27782ab15ecd40ae9a2508a67093c9d943b0ed2d588aa2b30377e34b8cd277462d2c90f54d0c45c1b04ae9d47b5f88d015c5cdc8bc43e86246db46c54f959660fe3464885d442f03dbc24b49ed9dc11de0668f7296691b247380c2cede99c70144f6ec6d991d3ce4e66fc667da086e8ef76eac1193fa3d32255bdf58a02e7eee03dce9396777c58a10af6b6f7f7634a3c399a062f2869c9ab2a1f69ce3df407c2ab7f702909175fd8c545ecf8b7a82efe4d74af7f2ea1124f025186be39d1dbaf0c8187a8cf763e386b660b6c7a1e791cb6fa662de90aeeb073a7cfbec3da707b8a62d0bbe0155f393d6b0a336cb4f4788f8fa68fe0268bf44d3e17655a8dc5ddd38023a9b7ca96f0916d021b72c59519ce093645c7e8fd6114b35930500012c67cfe6396c417c141ed67149877bf8445703ecee2724484059d6dd0a8dfb1bcdddde30c712a421ccf4cf8dba98f9f1431298e5772ef3a5e581d757c299244edb1632e530df68a515e2520e5f3111ab5f6ad2232bdb6d6601bd77941ea1ac704455d5ee435e8ba829b9f1c361c25bf7d5023e70eef79634f3512390182145149a1a49df28597a747f34b6ad7800de0bf8d26140fc50f9012738593a6dbb3351ed9b8f154ae716b804aefb3aacd29f700e5c0eaba795b6ca3f2315b9f6e92df81b6c5699776c7446241de80a19135476b5bbb700add24945a082698424f43e47d922d4fa64d4210ae217a1b4422cc1266bfb4bffa4f93dc199e18915a684ab89df926722053eb3d944a680f420e1a09572f9bc60959d403934e371bd25edcc80244eeba44c8562a9ab1bf42ae38b179aa39ddf45b1ae4dd5be982e5e6411722300c73696bfb7513b91300d0e6d89aeb403daac14ea679431993968862645fb8492d1693e22e2df2b32bdb191ed5f9d005aa2459c65c11e39d1a7e0c6c8183dd17fd2828375450992d94ab04f8e69a28dc044c340b7662b521028775f20f37e16a3373739723a765536c789e46e4639b24c854c63fa229b41efe196ee84556ea5a4c0a694b10947498de7464d24fff128f01e6de52e1f723eb82abe0f9d3f22dbdc0c2c0a43ee7f550fdd2b8789fd57afbd8f2053b6df6bbc4b29490a8960ad55fb3da16b9306a86244aa484beaf0f63eda364949c6f21724032b9fd2a8e7c7964568102892cf21c98c7d70a3c13c7e1d0beff54884f2ef26e3584144a4299476ac4f341ac62f794c7798946732fae533f494b8f1e973571feb2e888b1ec63f550fe209136227279968f648d4733ceb6548b3004b7c803e916f37f5e0256414b78733013339c779b2a6e64e403a2cb12667f0196ca3b15669ab7579bda7d2915e0db535a8e4187ee1c489abcd63274de98b3e85d537c666f5b48f06a1b51c295a4d18345563e215f1753a9782413a42d0f44835b250265b137f7bf2237161b4ba2497d6baf30c36ab48c8e65b62f8ffed27ee90af28092fe0c281081f782eb19b8d634086c53addf098d87e6550e89c698dfca9c2cba8f89373b311698233244a34f19ca5b50c76cffa136c78e443a3573e2a810deb5b2601364cde317b613644ecef9b93179b96e9a8c5b481c397aaefee2639e4ee76f819a90763717dd97d6fb98a2dd8a9f875d1f843f89d2abd3496a75d6157f5da49f014e4b23824465a918e87fab35cd356de08df58938a7a640b77c2cfb1822de6d01ca74c89dacd197ff59826c4f57001a01b4b0520226104a28a0cb9231cdcf136db660b32ab725d2ce638874cde9e45d6c359090ab00864fd05744ca4eb18b8502985f7e72f8a49c65c3b81e3d64b64a77fd0c99e41ee6570250235ed0cf9977a1417dfc443134def190a240d146f8cfebdc1007fa831829016536f0f954943cddcb6d4c2cedf431a94f15867bb71278347855afbb54925c9e46f2bc617e825b23f3789c1ca871b16e99d93f40873d514d0524de62892401a012994bf663e0bcfc08865d61c2182081602472644702f2282241fc073810dc1588c291a4e5746d7899993dbf88697482671899ea86212a2c55e8821f7eb9a386944faa8c29f45236c012d51a26c5af585d68bcec5178f9b4391ec3e7f926b3d03feb24575ea12002cf342d70dfe018e9abc2a3f61ee2bf8e6cb09b2cceed3dfdeafbfec66c41451fdbefafb7efbfffdf55f6e66ff49a55a96c018000389dcc860448ae0b623f1fa05f0f7340c432a97a880f78727e6c9782971d84b6f3a81131e8482f159136e0160136177755f3b4a9fe582e96f12dd346595a762fc22f29b563b1e5ef208669d2771646da3d3a8201fcedb230ad09b74e992c19e851c0e9bda61b48d5445d62cf32645fa357eca80f8ef19deedcdd216214f2e80e82af9d3d0788b18567ac2b127b5ccaf5c337c5b22cf0f5a4996be3744bacb5cdf02bcb00b4952f9e5df5b70374524e6aff0665b20c95dfc01390a157824b52d40c44dea8f4d5bb00e07f400b7a24a0f23ba55170c9bb2a276fe5ae37f503c9d6280206acb063ef3fc2c33fa070606317e1b74d6fb6b2f2df522bbace474506844a0052e55e6ac4357de6953347ae5a23008f8a30b7b64940ad21913cf73fac15f13df941a21f756f11bf821b7ba4869aa443fc7e813c9eab2500c02dbafcd932b11253642e43839d581ec0f853c33ea29799d6edc597071a875b30ab5b85491fcb1bf0e0594368517c7c20ec904e6a67da36ae8c665f6bdbad011c1c743a122daaf16969ffc108c3f092d487d11c5532b015572f0514d0d7b94100cd413427814bd0063470f7c7123a76b8e93390cd6520726e57ad1113b71b8e344de0522b2c2275e265b0507c98d764342a2944bad47bf61f08a4ab225296b986c065187452f6990a660b9e63f82fb28f96a072d9318ec7f60755f192148a8b0d1470c5b2e59bdeeaefb3f0ed0bab8d207695d95a5b72928643465e9b36a893a147609821083c2f50ce9baff4f3944900dff0584b0a19610ff025392857e3044047d10aed759d64f8a6cf9ac36551ce0187e4683e61fd86ce0648d19005a10b752c5df26f30e07b26090b36906168689ddaaf79564288115235f99cef95a21293291e61f8221d38b1b90fb69736076725bdca525604bd915240083c0a045e5c0ac619c0c221decddca782e7c4d787fbc55287410f99b136d8d5b1cad50cf991be1914e414ba64b5f7da47369f7ec0b7888e3dbfefbafc0be6d8f0d43cd03977155ea8d60cf2eb5fe27a41db2296db4dd1444d5da910fc088c3ecbf68ed0fc1a57af881376acb9e64fd498186564b3e5050de96fd2e4d4acfc074654b247027e7a7904ba498ae2a2f7dae184a0345e61a4be4744ca823f2cf752fe67437d68eaf17da2afcd8f5ca7567516ff973a430f6d0343104605a38682e3b92208f7b4147986b596ea1865ea4b76b9b45a2470cdfed079c47cef2efd070322f71813ab77bce2133372d99de64456e4f0407eefb0783606c48ae43365251c7187bae635b3ee018ddc3f189bcc7d0e012e95a54a45cae50a8d212422b200ab257113bfa83fa5a22ae462297013f0fa8e8707a04c5131f63d6d94d7dd2f0017690489db60c9c28c4dce701a78c5314864082694af3f4d906fba210f2bf3c21bd7f703165da8e307e9d0c4c0e3fda14f0cae4707b23e7264eb9e28c28e9a94f0edf5edc0c9c265038f08545fe878f99896c828c92f83a93c2cf0d62f391e5127eb97ab8c7d866f4809a305f453488a77f17e3aba1aa28f8c3f0f9c4b00204f0755c2b15be41e07c32db2002f432a895c57f28383b186c9030be1aaa8a823f0c9f4f0c2b40005fc775910b4c3b9bfe51ce2f38de4df704ffb55723771380b3763699b26fcec881925afacf96480192769e8edf486314ff427e7b1d4bab725064ebd302b47d59f2ff53441816c48a0369508286e1cc32ad8782bb9c7d54710e1e373092745768851a270c50f0d724ee8339118a5cf53bcdf92f059091aa6e860adc23238082833533f72971a5ea13313d66cd18c7de3b3b03d5600ea8ed7f4384fbd7996e7ee356d4d3325703bc248f523042113a6be9af4da0164b63ba2f231dc5d1577020957fd20933921e22fdd4a0892940b7519f3a465d1d4d5d9d60ee2eb5046d7485d7eab422449f0b0e5b55e61c8d2980f41ac31263fe434e5aa6f70cf071fdf5621f063293d3654e6018bf0010b641527174f148db05441058aaa015f6830ee309342d8e1102129d75a86cdaccac3f2c5ea4e9ddf7570fec88b62f002d82dfd5b8fb2e40a080bda002483e15a95c0dc262c9285398c86f84f7460e7e44be8ac88021b64d201269349c4c9f478820f349c90b7b8f2a62cec48f81142e910b75ea22a2d6a6985bb630f532c5618abf94650220672d1f3771a9d26f6f3cdc0423315fc7d016422374e6e5f591f9ff62065ce77381c5d9204be98d9401cb946f5df1b2327597c4270e0412b0404b2fac84cea91e8a04ee660b6c2e2ed8be0a947efb2847d15e9b99130553b7fe423fb652fb4b29ec3b1fb82fdf485eb41af36aad04a76d117ab319a9ff0c0299b79fe7ed930f8ef8da4deb1fb2d0e3f37be46c61d1d8bb738fe7d70376c91817d2508a3286bd4b810aa1670ee3ccf6a895f4e63bc141bb0ba2bf3ed3521e7f780efd67d99c3ff771d9b96906522006c86c0ec68f3e902334e4fdeebe31bf1cdb07ab1f4a5171e6c531edf157c355c0246530dcd92b2ab5e5fe458ac3f3f1f442a83f080c8b32609bcaf2089936f8a1a68149f53d7b1b65844e8e4c3e4317b02daa0d1aea048daa32904ff6241bd8323ffe512d45417d9319043ef2511098db1f874b4e8d2cb29e02dafe0c64bcc1048bb74b4f6445e3dfc4fee594927bbcc89d9005f7efb841487e6be8d4a70fbec405a6ffaee8e9c37e3b214f836be84b3afe0548d5b044310986e6cabf5e5133180eb4b407a631be42f1a0a233e744c668fc27799fa8ce1dd2aa624096f3b24a3ac190a55f9c56cb3e94e90e4949f5f67046412d5a512db1f581d5af2d7404788595e25306d45c06285a6b823c7ffba8e9f3ddde7f21275b899c3ee885358845209ce970ffe4435ccec4e093eb167fd6ec2de749bdd88e871fae8475a35a037fe1991235bcb19774d9e56f5da87fa6430002d458c370c9398bf9d55cae85d5a90987b21d592fc18194a4d19ab190e2857a65de34ccfc47f972db1f56302369900d8e04bdfaf467316447205677aa76db7c5b0c39291a0820319a632517109c12f08887fe0043e0323601acbb609591b7400916d267e1d6c89d63e690b7cc94676f997b60270484b321d4cbb509d33df14a4a9fe358a11b007cf311978000f0bd74bafb82171d870e43c7a0e7e871743c3a8e5e35da3d163de6e80dd10d63de601683d22afa00dc7d96e89372af22aaad18780e3425217b52f0c5ee1c36493793f13061fdbe674ec27b5f960b794f3aeef18366a47ff4c3a6402ca3f579e661c51b7d5ef3143d945f76b9dbd0a1d20f067e192dbe6ba524370b66df75368e4a54a1c1aa0c061cdd8d6ef96a6ab615b814284d5cf8c6711aa8631d2d0541cde5714d01cc4b475d669d7d162c24fadb8f36193b28f21219fa2e809d40fc9efc7214d30177d8f6dc72413281658c094431b98cb0e4efc0f290e469de2b99ac89ebb05f1a5ad148dcad04a7a4ebf91f44b8434dba8af1d1c198f6046be13192fa8dfd8ee385cf1dc6aee9c2648219c157010a2d87eb0cfe6ca62e3295c9be73d2ceea80a310c74246309fbb83a03ba8e3cd1a248dec34554710305d71e6cbe6b751b638a6f47ffe3153c50190b07667b020433a5c267b502687804c9e957add3a816cf64e187b337a8fcc35966b1ad44f18586ed651a6a6e599a55c54d1e315bc5b8cd4cf4b9356d40b80cc71ceecf71c485a4c638ea8a5a0cd0a793b986d2c125dc919b01a9e14b2bbc8fbefc42d03aa55352afa79e4f3b7f5cfa9f1101f170132cd124e8d489ae3d1cb3515bab8890cec8f43d8f0d38ce6932abeb9e58c6f5cba3807b805f8cf126f8d16349b5fae043ec3d8c5df484bde36fc9d467a17fbe4ed19cc138f601319c9362aaeddf13d8c341f586daf1874cfd4a539444ddb58670a4a7733887892c154253f7bcdcae4f9f713df7219574496bd9ae97670aaad385102f5919c12c5a68f934093c73f37c3db1468c71b7990ba8ac6200768b501e78effe453bb11405dce2f7ee913631f10a554209a910a287d6ebf81540d7852fa538a12c2247779cb50fac12b1d26fcb4e4c442c5dc7c5c86992038ebc6dd1bcb70533a815125849267ed89b98a014ce4cb0e105c5706566e290c3544d51df28bc443625fd4d5282a546f8200cf92d83bf742b93ef1de69e901e5447c1f8e8f7b6f65dbf72db30d7e499a57057132d67b434c2fe7485cc814f46dab1bd9a62ec652f9e8731fd2f18427908d308ead6adb4b3a672909faa8b2fc3bb1043c1e003d38ac36473f56c6013ef7b4c27467a932dc5f360d62a53dc1aa66119bb8df573a85546507360d0d700c67bb54df912c867f5b990c54b1b200016f6d35b386a570547e3417c13aa208461b5a1a4ddacf2d4a41ff80fbf44568e9835d9e5bf277f2ff602adadedb6c72b4a024e170fcf79ac2e54923029da26920050e4c6a315ca4d86786e23f121f674717e0057321f601a8c7f5b19aafc40ac5b411eaa72464415d92d7c0e233a27ed21e36b4cfcdd3160e2ab86b4b64824349eac25bbfc26e73431d8e209ffee416bbc59899f8c48d94dfb6500b13ff7a3681edf629edaee5c7ec30389f67698d953faf6dafc7b7b4a7f914e9fd2e3853acee73892f5deec35e89ca682e4c9453cfcac66fce82074817d71a9fbc3efa3f60dc8735a2b7f9b3a9c5bce327301eaaab3fb56aa2323f569d6c5efb244029fb07230961bd282c905ee9dc421724e56754922d416b02693b4cc478067af08b6030f32a967191c1a96dc0da72fe69184c3b37ff9793bb888c04e4095b22738a8b612f171b22101968fc3d10debb604a47c91942cfcce970cb5d6a86dd8c56af82ae6e4bb7773ed768c92767a6aa0cd080d82a40255e410c403e23eb406f07d3810e04febfd7e3da42935fd65c82bfd77455e5f898f7e216cc42b67b77c55808cebdbed62484e15e5ca026046b7b3707adac23b87a47ed35e1c7492eda84824c0797532da698a1533fc67c604c4cd3090aac30137b4d73bb3a117986255a3d5897f8afb013a90eaed2d3f5bd029cc779ac9de4fc8fd5fdcea71bc439fe9ef7a6ee5448322161bd32a843c67a23e5ef04c239c1a6ad0790446f670636646018aff9647940e494943a1d0b8d0439fd73f23d56b2ad05e4240a4d4db47de45f500ec0a05da89eb0a3be3137f58fea4ba47a518f026562351ee8c7606335b190e04f24899f9cf8e1bf867a3544266404e5ec5166a12b1e2a89d65ead608d8dc4a709e2f1970b269e16f50afe14986ffd720d1fd84a9d59a2a09bf2917197a76867768da9e2221204dda6b1708b4c01e2a6778449adebddce44f079b2b6c5fabb186b3ef001c4f2bc920725297c446e13090fa91c942b5a3948efe4349ae4f5b5ac77552ebec559fc42633c69297206e0c021bbfcb9d9b342b08feea96f961567a8e49c0175c8ae43e56ae2dcc7816549608bb01545c3d254108d217a35fcd705d7a07f354ce23feb52e6611344bb292430ced131692e0e1b92dc5b7e42a1e3f79673dd233a768d4c28f824753fd1711886b944383342c7d01ae8c5f9ee70259fe30fabcaf3b0bdefe571480b7c7c9a1eebb6cba8d3cd58de4cda6bcc31e6bf8be12104717561b4c85972b822e511b1900c26c2870b901d2b27e82e9643f08fffcaff27c7dacd4965227fb016f061c71ff1b142a8725cbbaad9af2890d3e3e24fbdadce1bc41ff8dfa5a57fe18fde70090399e0cfdc6639fe6e7f3fe667e54921f0fde830c7f0d0e4fdcc2ee1b9e7d1eee7af77e46f7b6434e4dccfe86a78c681e57e9cc1fdf4476fbdded9a383fa95f4ce23f5313bb33f40d920ba421cd91418147e63d5a9c958f6a1960b7bc0036eae141ee5caf32e45a2909b325ef6f82e288be0bf36ad4b93d5590ad71f76d52410d42c3b90b0a5481244f6329bf940ee2b1ce4805dae10925f75d753f528f0fabe555cd3b092ce765164b81deb6bceb0d9378e82ab519e90dd87540cc3b60d2fbcf3aa59209f824b49058331cdab160d12c5037faeb426d969a70b6d980f71d0fb8e00a17ac9b2f10ba6309cc1e32a0270d05d0fc3ae5fdbb06cf1fc559ff2aa7506619ccb346c89327518164187234078d26ed81dc859aecd4067ab205889ec552c89c4ee78c7870b046b3a88878dc22efee38e1f8206a5e4e79cf661402de60cda7b36e7450c0d60b1fd62d99b72aa13d1220e85d9b70a10e45b8ad28edd8d75551d8d706a8c843283506c502cc2b0ca512c07bb14b38a7cb49f99819f00b026924849f5848f09ab062ca88efbd08e09204ae55e35de6a816b30e3143029710a42e6db05688757ce8bcfe0263a7650ac0af3fb05eb004e5d0eb67da9bffda1673d996736a92351b85d907699719e4bb9775539dac10adf0e8c362032d67a3a7659c77677bd2ee0b74b4dc10020ab4968c4eb9a6d568321c633b505aecd5eb2082d5cb730899fef096835c68063d97b8326faff289d9b272d4426ca5274fbdfaaacb276982ff04cfbab6b55aeb3f8743b0b3d2f240d655810cb9c3843a5b278696931f54a58f056f6677f5aab3f56055a9319c5eb6e8da7671a593d5195f0a86ece3ea1e98287ef5eceac46a856776925264899f6536484fb08cf178aad8e9b5e8aec375fcf98e06c96e8e4deb22752481cc67b32e7fd75dd126add64b97b3d79db37fd7dfa8aabe4d8ae27964ffaa5ccda2b0ba867de9bff66e0da4ef507cadff7e7c4a7639432f43b6cf779fe43d53de48363ff62f9edc2032f7566f3e1f9d6f7b7686afe866753cb5d35a78431c1cd5dc2bd0241c465e1e6d2e7f3b432f0176bf87fe712b749e3fd4db78482d12149b6c3f3551a3f434142ef1579b3195b0d8bbf4468d6d4a6fb0cc652794e78ebbc27d9014a0b2bca79621bfa59c1e6899bcbae0444dcf4a2ac65210c916578e843022734a13f1c3ab3a407a1861a1b9b0fa509ae62143f8b2db4a3dedc3fd34d4bc5fe110f595be5793dd3874ba215622b8c64c894cbb1122ef5d9f8afa67a02ec8724ad7d310c580c4281b26c36d8177a2716495fb4ce5406eec7e5dfaa7c652d51d793dd8aec4888071eba445f2506694e272a13ebf81b70f0ae6fe9aa8a30dda0264f2875554be6131bad4b7c5b9608a7e46daafa2d218ac77de4b522d80063bec14b9c7a88d2b0f8b65e07929b53bcfba8c2f26a073387a67932a7fc798db6137170b1680580bff0eed80f922ef38e8d807c509476b2588fa4c09b3bc6624ae064ea33d052ce36876ad4c1d46dc19410ec0484cdb56a21fef99a421db351d99fa72883476c1e82a2df6a628788457c310d9d0b0d9b5bf698802516809c9b88b62717a9056c5da59a38107735fb7b50300a64775d9ae8379518f3f8657b71ed6f2eb1d89000f59a1f82b1cc1ffc6e0afb7a70de66d033885a7dbe4f8de81f4f1f2e5b7ab9f7c15ee099c3242d69355ae458b15a8228d72921a8685f1c12984491027a1db561b67c138291b8fe810671b1959e3307dc87334ce6f4cbf35287007a812834023132a9f24ec87776c12cbe629294e19a48a35fed19731ebd1b0f7e1c0e6be3f25eef845d7665a364c47b7c5c3b2e3e5475507b3074fdd33d3e568a198eb5938337c15e6ba454fba370f7db44f4b25b7601462db707290446a344a61e031df87e6028a202a8c7ad073fcf23a119327e19d44df73770b008da71dd319796e10023d448ce290c84a73298fd70818fb4ed046872b851718b57791244ec6d3c4df9a26b5814adb2e46135d720652611a388380386f57df676a382338ab7e9fe5e508b3946e21d12217e0855ffebef8e9aa6f900daa30cd27458bf8653a4c7acb2ffa71f70eacfd85b8c82819a77abca22e5d0e5c7f74d37acc5ee2949a5d42711930d1da67320e49e055e587117f0d08c9c723d72863fb8aa54d6e3f8c80f8959417ad32edae4e3dd1f24936f3b9d7af16c35ed3c2fbc413731d3cf6fb52d765bb9f132f288177b20c88a1a4b24f5e4d193bd1b8711a70854a36d116d508e3ff0f1145fb42063575b5c913f483b66ecebeee214de2daba27902003032124c22fc6b0b55185f25eaa8d6ee44add413e94a1faf8d8de6f2a44be8547c8f5a7d242c210f60ffaafd0014f6b16c950a7220d96897c7a91fef6e5078941ba18144110766d2ed4795cc38254435d91444771e4249afc26b3a4df5863d0f4dfb266dfcf5bed725527fe24f202006342fd9e1dc516498aa88038fc44c76575fa62cbc606003821f8ae938f0de17075721876cf429c65ad724b8eaca625981a850af7910898294166fee388963b06d91ca7e93a8ca332ddacebc989aac4c68b8485ce1c33148a23a20dcb47585398029a0c4b0f07c67b2e0ed52b46858a022ac343229372103d1323224f147e496aec9d3856a4c25246d30b6e594d8d9790fd5434ad9417b4db03d3146521d4560c1b1bb21321887bc3f4ccc618c278850c80dbc266f12bfd16913c91ccd62b0ffa3c25abc540c3e89540cfd75d038a240cc50d3d073fa1948510c7ed0c7560a8c93ad0efde8f08ec4f23e44125ef88945e85f8e3097fb934870f2161cb5a5b09cdd9eb6b84cb82a34b95451b51b7fb5e310a1c8af51ea3564d73b85a63e68086682940a6a34ecd35c48ad72c8527e6316d476ad509e3219bf95a71cc289799413cda96590fc6509af485dbf49f470b7030fc6f2937cb7741f3997604c1f49d14ab9ce22739514ae42e40b9d2b0db63d4f724dada35d9ed962733773f5a27315551f89ed4c20a02538ea7c4f394cc142be2131f99108cf3d40007f5f9e243ac05d212d26512b691cff4525e5a4dc83022127b6a0ec9be4afa2a5f7cbe535a1a59d77cb48a8a914ad960b5b9388dca60a6190b386dab2ec8ddda0a2b889438e9c1a4835c1f3d6bc348a3ea871848737f95a24df38dca58765333965174d9fc1f6385ed6bd082b6a9c8b3c67ff254e98b461bdace66cf238a80172f2cdaeab23676c4671882d99693929b6958adeca520166a944e385f48d96789464b93813e92b194d81c430c5904b4b19bf6a696dd9d234794b2ea6bc75b6cfc758635e816ce2f045f772032e95184edca8a5391b5665b3b994bf7b5daae417af51bb9485f29ffae1a5cde8d8f563ac97fa30cb699fce920f65e7457e641c84b8b5879aabe1d28a0140fa5e42325f97cacf7c5d866e97be884695db75a0a7ebb0f2d2988f1b98c41ec2b298255fe2fdc56bcbdbee254b9e2423502dba2e1572b80cb7019c1e51ad8c858e7fcb50912db4a5b1a4a913fb2e57993af679baa4422257e0ecd5c90c456dca4904d1ed8753216d8378734f3836f277a74ae5b722f122478b552cc1f3044325d679bebe7ce5f68a409f26ca5b2a08f28ad5c3acdbae48ecb8a51fb5fd05fe11a4a923decbfed0cd4d8dcab5a889dea6feeac5dba0219a86fcbe2247c4e6c928f44822674320124514fdc96160a4f77a20e291d82607691798fccc87d8f477e3f2f32155d02c0d7cc56053ef9bb7fd1694b2432b151eba889e2c05522894147e20da9cf78828f30421c3f6680216bc32c0de93d10f46d68e0b5bcfb7ffe89570ec46314ec9c37ebe22d529fa898a83742daec28278506e0e239eb10471fa760196fbf4bc41fb73b68b5e57c215589931e71978d3b5bc8c6d92ec569226b4c20928f151f5d1fb083e47d48387f13a32170e2200a1b598ce012a3d01445f32c1a736d298cc561c411fe13220b06f712098bdb75dcb5e0186a11c86bed606b7ae6aa4c4e7fe2006880fcabb9bdc23878ef16d0c57db11768a24ff477a89b881bcf85f66560c60530ad29445f363370c3153000dbb2aa399078e50813c69c6631d91528c4d397538e0c3bf18da6d2022c34d1d6023d57cdcce3c19f382c9d30fb6817a075608f2e16c377e94a1226d629360ed2abbca2dc5dfec46d83cdcfbeca2a10283d814accb21284785a5e001e9c59efa3eed4858389ba78509f2f7cd83d818d44f0175a7d96a2505366a7ce37bfda980b3504698a0944fb496d9a66213125b4d98d9ae02d1cf18b0ad984173ad6a4ede12372e7fd7a7fa64ca89f0b0f1a691b5a9cbcd22c2c561062c0c6b06b14b880c7be3eb375005022bf9351e89de642e5c2feff13e94c5b2168d7149e62406e6dd27572924a981b5dc824bd163bb5050f70b2b1f349a46d718f64855654449f2ff2c74e0c39321f0dc749f5df440d74ac240107bf465ef529c61c03b5d321799043d0920cb6fe9cee276042e64e46bf45177a398e757304a1a938cc7adc5c93eae52c3e72b0a51480dc1702e82dd4046243a4ca8f6283fc49208c1a5f7401f591b4b0fd73fcc85600928843b4fc4d0cb04d7c69e41fd8bfe8ae0313480478a58c7b4370efc98e9d9551c3dbb176a645f7b01c8ff238d04a4844d94470c43c666f37834e045913980811093f77321f61e64848bdd66e0d26acc8b117b187da5b681689f66e30b91ba3c1c243f82c336a85caa062b01404a003d577cd8bb31afa12520728c44f31baf87977b7cdf03d9b2069cd316b83730929bf3febcd178a8dca5b11c31191a20e958cd7608a81958099bd683afde2228ca295ca9bd813eb5a7d7bfe50553b825dbfa6341823c759f260f066e7d5bb87b038870744434a1c50913d91b505ddda6a4ce7f46fcdbdb950ae1bee351d64370e106545a206cc4ed86092dd3632d1998a4e140e7c5be7c9ad30b88e1402a8a1c5243736fb9e441ff2acf671ef01c4105082076bcf7d5a3380ec08c1e0949c004d41698907d9638c80265200e15610f7d02e894e0bbd222707592985b9d744b47e938c097bb651c1f9fec27e74e7c40c9f72c4f157ed7216b7dd816eeefaff34c806e886d1c0770223e90d0b6310d0f8abfd81fe88363809ad60dfdb91b0fff0cf8190a36f80d202781aa89e371cad16906548dbd9dcf7e56c78173c654390e1cedcbad91eb5d45597a3e79d0243024d11fa0f88939bd8da6ecc82ee1547d472174340532ebcc9ce242501f6a221929b893429e71f452f8f01fa49d562201b4502719b6a349a142967f455fefe1dfb97a7340d35a0aa317ccc7649ec166dd1ce8e404f178d5c44045cb6ea0c9726f0e04c7505d40cdfb326dec5ff2d42b3de142e63ac12389109a783ba106aa1f50213c8ce482cede1c00fc3fdc8fbc8106921e7b80ff148724a459863607d2ea5342c6f46af379360bac559aa0d9fc95b210b93db00488c11b1443868f62e4cba76032b488126935203d985cf854ea5c1db8f15ae6aa51045e87c573dcbc0f628755078c26a33702e5fde858b2138b1b22b0ecce27189a1769b00efe0a2b79bc8b955c6cad0d237da3b0ce34cfb1088c1c6643cc91ac3ca82f2172cf79deb286ae8aafd75a4680502851bd7f9b31cd3982e951ed7061f7bebad3c0be96d658bc235be3c8ca440a18d91180a7b547a9d0c314891f3cca6080fc503333df1d2bafd949c69f86626340509bf60fceef6f28eb06f2d065541a6279f8ad6642d00082ee7c40fcbfbd767f7fd80e7f4fa906b64a493ff4ba2a895c551faad2edf28104de5d5ad576dd59bf78909c61d2e6a1086cec3404685a1e377552edeccb8b9a4e26e1597a579f08d79786e50dbe44dbe4826f522bf9345873f480e417937d21f0e9ce3a6305ae66b20154095fbbf5ba8337638fb6c76b851e1120a6df22ee79b8eb9d8cb46a2b4be49298ffa2967cf858a00fe0617fb63f0bbf6189c5e12c60345adf3e82d50c6ea94f9d1f2c3702a947a7a46f8b069234273a2d60850c06d22a000b683ea3480c958b6b80b60b36f844a0a0fe23a689609c9e260552fe1a3822487741c0a7b39d1c8226a603ea19ea76a85110f16a113cf966439d78bd9a36eea6b62ec2a22b5349df364330977ad2dd228de45def3f6765368c9bc45820886a42418d55bbd9fc5f1dc79b98682858650bf0f1253a758f75743c3a83e1359297935dc3d57f428014b842324fe5f246da80bd7a1b956f153dd15dbee2f0b9052ace0d194cc8973245e920e8ae0e436920a602e24e916f09fdc60dde822c6e50d461d0b344d0997c3529713cacc9ac2ae5c96bf13ec515f4d6bae6cda5b014c06afecec80874a80b9c5b938d248dd70f50b755414883e317736831629c0b97d619d7402ee23defeca0205a8581d3312a139ce4a4a27532584784c4ea130ad41a217323ac8701ab764c25d2e6962b40f305afc53609a1bf17432b519f06e5c0e3cacda6aa3ac0b28b5e11bffad72df6bc0edb9e1188dba78e621abda51f05f00f0af236da9d2253fe77285ec49ea62e95aa00eee46205dc74f41df14e11cd0db92568d717f424fdf94ba2b727f109ea95d4a8772d1e9c5fe045db278e3f29f3d8aaaef35d8267b681fa17a045273370b719adcc7d13cb0c655e90884557c4923656ad88e303ba2794c63334ab795ea150f56eb5d60939ec8d510d07e12c6e4266a0b38610a84ef6dc28bbd63c511617c20d99b4e64704e1d433da446e0ea3ba0ee223d9597948846395cd4802112962f2bf9a03a59e9b6e887c56f6e20a993f9fe8dc3e63d7b77d7a9b5b96e60728832ffcfb3011c4bb2cd879e183ef79d22c8849b943fd10bce0479e5394cd73e3af55722ce43d2db905b4b4af5687905b11c2d073658bf63d56a684a69d8a91a1ac36b7bd080c608995eb6bf294af783a236515fc8a2dadbd9e62875a84d9651a023579dcb8ccb17ca720de0bcb7247c62e0b25257f30440e9703bc13db70eeacda9193759fbbaf053ada2e3534c7143889a030b4026421b2fc4d25aa16fee510b3dd297edb555576845bb02a3ff79a62980d6eb92b6ef7a96b1f0b4304cd46a0210cf168c8b88312ee4ddc01fb8ee0c53adb5d62ab3a463accc4d1ca702e05e2e1e0a8d0c1e04fa654d58563ecade79795d614d9b494f84d3c4732fc1783badc376bf0c6c3a768ef5157cc591c61805f70924addf816db583d4e3557fa090eb8307b02949d4a846b4a368125096d0366bb09432b6e7aed4a0772a86b8f663283728640bd031b113f3eccbca3d04a3093dfae25620390448fa71d36803da55ef1afb3bba567811818de304748414826e4d0ef9d39e77b83815f75eb1cf606327e18e6bcbc7e247c1693c8d43642e401557a60ebb85d93cff19c2a80965001e1bb420499b31008c0f3b7c09c7703051441030528c1454ea36963d2d0d4c0234d8f9d46d3c624c5aab1fcb788669509485ae1d86deff95896c8d2087560d40d4a271294c604fbdced1f855a9d2a74dd0cdf2139e2bddf84f4982ad72e90dba9dd8b97b86f86a391804657b2e41970ac646ed5802c3fd38f6e631b6f330970a23cc8a007caf80d969e82ceec128b2fa4dd018ad412d2bfdc5d96e36e6b2a497f6ac46b2caa300b6894bb8ca1ba53642a13f4f719f903d691d57cb511a967f77864b0aade9666e3282691a1f5361c0b47582645f192c43ef213f6db7adb532417cebb4df6557b35cbd2ffec0f53b950046cf968a5f3e5b374a5f43e318746f64e8860767c18c98ee64a577173d3ea986b9c6d3c2925da5f2e87e25ce37110f6948b8b2c9f630a404c3cd21b5fd92ceeab5c87e47fb1c6c884095b07324e119b4ec61544f5a59468c35dc3ad4cb5cae6060da75678e5c8e320228f1460d6c6cda65b0bd6f47952ba2d2dd3a5c6e97c26aa1392f3e29911839f6b2d76e4b7d2abc05df02b4557560102494df01343e4d7edec9e7e0de3981f012b27db65e20071b78e94bab92e07b37d34b5421371f31db99f5133f06112ef1adbec509bb18db773bc8d5a77c69c18714f78197563d35db60d76a925eca568583ff21bdb97cb78e54a77bc7efec4c1b1f61d7ee4e2231759a4455e6f37705c6aa41e99c22299a2fe4f326febfa2364add3cad5948a146b458ff9b2476208dd5d5083c41e7404b71d790406ba6c7ecc664db6b4cbb41ae8fbb6b192ea3e9cf8d177f125eab9bfd0dbd6ad1b42acb3b4ba0d9e58ebfd6d70ce3b626c1d721adc82148284ae0e26436a1904f8cac568ef31b2bfce39a68ec04b04322820d5bec03e3cde7cc6846dff847d8b5d40f7a88dd61bc7c2aadaa7a36e77c9f99c1ecec4b4e9b4b9572d1e9fc9b361fc281763db7842bf2a4c9539da8b45301f10a189756d8c77acbf640379f55182b42b754d7a4a01979681ce773332d5aa96bb7e4087963a8c81c29aa2197fe5ee49a8f83b0fb5ca184bee3f24e0c6f8e17d17976590c24a889581fdd264446e1ee75682f2fd4ed7b445c2650ff6d84cad95e0681d98f6eb7815f31d21536e147fa4394af8a71d9811701085ee1c9bb1bdcdf9d92a9bf968e1d65e67c22aa63ad797f5bffa14aa66add1bbfbc0522172576db168238c94f72d4cb8a9a093a9e856b96c0bce65dc27cca7e54b787e706de99ad3d3887a86a7a9406c0a451191ba42033c558af011c500648445161b253906fcc8aa422cd596653842847223c3b867117fcbfaf9d01bb116731a6d01031283acebf291d45ac00fb5c802e99ab6af751f98e1887f94f5875323289483e9aa156bd856385546cca50306b197b65e3588ce872f195de218084c37609e600e0aac1d19057ac16943b8657fafb2d549b0916ce4107b73d3e900df0265dcca1f2bd7e8558e905b60842ae7dce8452e3c639cab2a1d5cf8104fe5c0334dee8a38287b1a1832e3c8476319fa7eaab8458820c03507a55e2825a21e30147488c5989eb79265584cad3e38573a5951c683b858a6b4d6062fc56390b9aa6539dfaabf1bade190ffc0d004a85f80dea9dcf6bd102668ffad5914bd4f1c61b400f186007d2debf002e580165ffec522460e9953c9b73906d8c061fd084c0d5043317f5079cd95c61a77dfad4b06efad230375b2c6edba32aa138bb8d441e6ba32fd7e5d32a953a6fac8f87efd65ae4f06f5ca649d561fb2e75546e238d0872d2a4976f1655f5467a2f72fc39ac82bfd40f0317f6ad0d74e8f5ad86807a83ceced6f0192f69a97d8f12497dd90243d33150764b7f51c7427d32372b60514e8c8b9ad175062a3f73f5f3bed15464cb80910cd9750ee03e4ede3436ce00549df2a857df4ec6947bdea4b08e19b61fa78155adf04468a183c101772bdc6429a6cee5cc438049163523063e15a476dd2727dddac0f634d9dba0c1136cec40035bc94ddb7ddc6c953097420bf624eab0526c1ef874222eab9873196bfb56958d7c06b92ade21084cabfe6095a5c810be5129727a4b865ee3d226daba6730b22f4e3ee74e6a4236c7293cdd003c14d5cf52268bd08632ba7d121d92cb4f1cea61390a37829171607e4fb8966bb7522f67e1b8e2db5fefa1ec5864d858afc7fe1a1ccb0cbd6a46fcf8e9a6f819a873cf1a7510ddfbc9671775703bef0a72de18fdc9cb27f4496d1ac100ac6b251d42d18912974f19e3832a0495142073799cb63609407adb0d6315d536828dd932c78082dd0af3c947ec9a2cd8084e5866f14820f7ebda82bd7f08aac4cdd38ad07b486d8903a49c6979aaf8d77e4b255274eac9376abdb5b263e59efebdecdca2ebdd4aa66b5e006385767dc589477808492a98c7b4a8508f2bdcb25e2bbd80e0ba2978ea950ad4b448dfd7e4242ae1cef5a00147d571e145bd1c38352571d1c48939fb12ed00386b224775a97ce99edeb97d33be67440e1755fca138e51db86b230c7c438f9693f9cc640225b8f36297d11828d42dcbedf440076c30b5f90bb53972ec6dc98f72f7639c83cdf62835e5b79283d73ce5bd9c57645010976e8600d09c9f671e119f8c41d48e9dc31dd451b11c2c20268a62283c63ffdfd22f2159365415a7ce0744dff0462211147b9fbd561d19b530e8ec3681b2cbe490937605d1f3459014e1fcf5d5b11d57658d243c57612e1132c05dfb2cbba3250e29317c228cd790b806e409fa3050660a1caa75916e2b055c96414f8954e790999d8e3c4c91cf569d51bac1f90bf384eb038171137a15509023a06bf16de3e77497200590f910ec7fe345c3b48b51ce1284b2eeca5574ccc9475b54fd50cca19e0b846a74bd2268f153c4476a217f4f85e1d1e0a045342363d3e26efb137ecc0e18e78fd31ba8317cb3686ef2ed3350875d2a06a3caa9bfffb98835208f59dfb7f3748f35f9a3e299de01e58a98d6266bfb0418b4d34ac0c8d676de0fe9f47b2aec224f37cee84af2f5187f9ed55641868240706c152c4c93c87590a2a31b18ab65d276630aabedf381cb4aa9a3af52d9cab52017fac2f4ba7803db0bcc5cadf2c94298ee90946a1e3a79a75bfe57a29f57546eab3467950ce3ef215395955307c0a09892627a792a4f18c40f6b8df6ecafcde060172324132ce336bddb231319f830f929b452f2187cfe0e8088911edd8d20fcbbdf629f89a854e6ce8aaab16be44a521c87b3f0f08922a9b29b880610ec6bdbec83d068b36fac720868114c5cdb809e0aa003d38b49c0c81d6861e69d91a0e7274d06812a977a32d3f2d342dd825587923486b734cb4ef37f6ec3f1a76e0c136c3feaf8118d88e5d1a2f110b58786f00204bb709c9e50dd822b2bd869c709c20148f31a822a3afc7af0477a64ac6a5b424398f5c7e530bbb964b4e0f1e44d78e70cd8366031512885fc0bd1c4e8a430df8d8f5057407715359758183be7f8c2ee6fbc34d2b30e3a39184bce2cc818157d0babffddcdf7c10d34843ed9690e72ec5fa276950759c9934ba43eb50d3f59b090fbea86bb3491866f3fff946051efe4f13f018834c822b393d7aae242231539a085e492ae7c83b9e7b22599c214e4faa81481fefa26b99a9547690004a760c423a20bbc6199c97fe0656dcc922ea2340986b3d7dfa3a986f3ebca157c44949f563932ee1569ece5c83c9910bb0bfaa2633fafcccb897e9fa5171ae886b2cf3c8c335760a71cd9a24370a6b0537e5a23de367b5dcdac243b1a993239a619310c45bb0f5dbdb6eebdb309cfd43e3e0681ba6a5bdee6dc1cc8e2a39b3f66d58489fecdb02cfee8be45c58da309666b2b405223b5ce4acec364ca43dbb2dc0ec9fdd16d05ab694406ea21ee438711b86d298b82d5000206e53646eaba56e3370f83e75db03fe3500d1402a866fed6e924ef8ca0548d531635873907668a48af651f936ea4434d712c2ed9d8a19e79ad3fab76d3cbbd5e0b5470058590137c4fb36858c7c37654eddc06dcecbcdd395ed7f624ea9e0362299f385e7dd4c7ed3e130de851f095b97b3b270c36237e9e5f494d30656a311cfc36dc9003197bc01bf57c87d47429f5198b80de5cf2748b9f0f9eaf7e35a8d9dd7efddd8b2775e7f57aefcddbaf67b3fb7fa70492c1e1832794cff940853b49da09750a913f4aa8843d07bb081e967dea66d7cc6e0d48be03cebdc6417c635528be3c3bdad5d66dfda59f05957cd5ee450ab765a08d2b88daf8edb2815ee6a4044edb8e1ee15f5ddcdbd13c088f7099cf71a24ef74ea3d1366a76439565e31c999a441d388b5ac723b8e313a0a6b16263f5b184f7b4479ef47fb084e55479687c891536a52a67a27a6e076efdfca39a29ed90e40bb2d11ed32a16d47bb8f0f9ec4120a90d4a5775df797e92ce3d7794a270f1001602103026a59735e8b78f801aec2e1fd660be8e105ab4cd20757f647748e6915ca705a39ed13355fe926a010b9a79cefd23e6d52d586dd5d59a8206fc7213502b5798bc5086dd96ccae9d35e38630a764067574dff2a490dfb69ccd9f5868bca78e96c1ae0f93bf136025691dec53b2aa4a1de92e36e9a6714c547167e65fc75917b4915fc982ba56c7f5ca7cf40b8b8d58d3734c0b6482985a3ec891765be28a3365aa90a3cb9bcf92500413405671fcafae4506e297bf6f4b16167e5f4acef5d50c9367806117cbe8240a1dabc0d232de2301384c0dcef304513f8b5f78d0a45c30e758be959a37839072f02e8d9901f7229886d271117bddef5c10f98ed9c57545cbc6844d820db76e64d9ae9f4d4480da5d476e1ae7666942dd067591a011907d9c472cbe4c528d81759e94eaa900117834d409f503e38ff112b073e4e9e370f7b0b273432aada6ead95d95e0bd594feb692a2cebc5058417375771e13884cfc12ec4f7f7dc4fbb89bc12b9e18cdcfe1055b3d29b768b3ff24984a400b3f5f11a7072d4445ddcd1c424730c130b2f44034aa9ce929481207cc19d4209ce1d9b4f26e580a5a31f14d43c0a88b4209455320750d8cdab79e91e24956631a8a260dc2404d113cfe237cce6d041ec33e9856ccccedfe37caf37c3ef4ee8b2269e09cf4f66d2f1503e86a05c3e0df31e49cf2c375d9a381960aeeff5d59d98d53fd4742c4b2fb93e35e5fa2584d938a28ad6ba260af2ef2a14c92c1a006190ad6cee82b85bc467409a1fbd132aac2d9de642614dedffbda21089609a002cefb4a151e44454f07992372ecda9981a4893f0ccd8d5e75af5e7d458a9d2acb5a1773e5022cc7993f8c2b9f4cee16bb9e3e81fc3d7f711f993c1427dadade9bb0d7347d6e8f19bbb3233c277b4ff5b0379feeb2ba0dacb0cb1e7fbfb25eeb29407ffb2964068d3afd6219b7c89648263e487376cd7fd4d4bac668689a62f9c5d659bd2e2c357cd03f3fbe22d73d20611887462ad622ba90f55dfea1e6dd822218083e4b96200a41c36b46c5232d8fc648f7616fa67e29160382e86cceb3c8d39b98492d7aabfb9f0665f97c3ebc607c1da06d3a12f591d082030875390af6942450d46e837f4bbf7f8191ac74670eb2a3cb9aa68b4e9e3989c7e127fa2ff6e39983932268bb30ccbd32a467b56f934aeeadc9de814a397307becaee81f6fe2c36730c16e313f4e8dbb97faf3dc73273d8cccc69d2b59cb1748f4b0a92170d88039982e3b60f0e2e489a718223a4ddb6ccedfe1342bbc26c4968eec50a67421544b3782487fc4a8eed85c708b7621e23b1d16d4301186efc06bccff2881282e93a0421c3c24924ca20f1b986e68c21bbb405f3dd9482405de7a34f0970fd14c561944890e6f6de7a883ec390043350fb316a2b4ee6ee63a1cb9feb9005e360cb7431723128e8cf397ad0ffcfc03465b4908bc5d5b450cf161a8e0bdbd1413e4e7d8aaa6b414c2c368b7fd9f81e3e6ab2af799ea9e8b2eab527fe24d7f297b78b9c962aec7183a4b8facab2116fcd44f98153ed4af1c8d00d68e0d9432fa176434c3123b67e464062a3ee9805f7b912157056d64f637bfa653300cc8142dc4003da7f12845c20d4996d0e2a5ea43e88a0048e7a0c7ed70d5a1eddc21cfe2665785ddf439975b517f951dd7d1520d6a31504322e3ce0d8891dfe6a840102f2b11193e761806a5a66567c64d0f71d4edc46c8cf01fb88b136325a5ab2724b2965923283080308fd07da63eed53e037053546a01c78df1571b010bf629c3752dbdf4a6c4471f57cad55c664a4b7f4ca9bdb26bdd81dc31bdd48f72cd4d2e977575e589f3dbfc5873d9a54b6d5733bbda417ead0b61df76a40e0a7b1432b69fc4b66faf8dd11f977116ace25ae05ae0d22e2d4b962363c657eebdf7de7bf3ad66690349d080090e1409c2ecda2bf6bd441881827df1bd362528b87bef0d4a30040f4f4d6428427362850feebdf7de7baf151e00020b13445842a284152ab05c9a0c2e45860ec800e5f37ce034e46c3510a586199cfcd0b2a993d30c367c60150fdc3c81000647f8800f46b8928422945860adcb67cab6597012eebdf73220cb00040d3160c7b513baf1d0d73ad9f716410307f6cdf8de7ceffdab4b19eebd38cc3095710b9789241061fb8167249c20d9a09c439233121648613775b24ded974d9d6c41c020f8c020f8d0411154a480d682243c54a18023d840021ac000091ba0f4b083111c408841ca082600c20824481082064c237082019387d9c44ad8b4081958b1bd4d8b9081144b1fa53f377ec001bda1fbb440377eb001c5a1dbb7cfcebba96a07f951ad06d0f8a9836e22756593fab73ef7177ba8a36a90bbbac67fd40eab0edbee2868a26f53e8ab8ebbd6bc998cf7a37487b1be05f7cd4ff5e8da4ed29a2b0629dd99446a62c1c7245293fb41591757da29ce3665b38152767db250ee95505d79c9bac93c727eabbde229814fe91e59cbf97056eee62f5252953b62d73f5dd0ac3bd592aa07d5926a090d77bb6d7cef2da98ae9e68009d692ed1da57fb6b8ec62777badb5bb233d295b63b3dd12a7c44d4e279db6070f8bf7f863b2669dc74b735d7bf1bd17e3715f2558c9768c95b65f4ae9fd926cff8e386cb5394ec94dce97962ce961997298abbc1b9454495c96bf969faf8d0a37979473ce4ba6dc9cc5a81de267a59890dab8b5ad14f8259149fb2ed97964ed3c1545b35249764a69df4bbb65144eb55b9cb607aba9759c2b77a916554b2c0cf5a8de16149f5db24aeabfb05582f2277b2fc6397338678ed33a839cd65de779dfed3ceffb4030fc40300c4591da6a20188a5237ea06429e96f65a35d97cc99738cd95a4a26c4f4d95a92ad525953655fdc95a100879d2a817065202791ad65081a34ed2492b50c9be4df4a7db553b6773d3bd519ae88fddf736dd1fe88fcdfb5f206ed36d6afa7ddea63be5d6ee13970179ffdb646381e0c460aca852c5f91a7b4b6a9bb724f71548b5b9c18171630303c68db5d8e6062706e3c60607c68dc5ef8f138bc1b8b1a1402cb6c9df93c68971ad268e68478888131222d2bae38876748488b81d2122dd713b3a3a42449cee6023ce3638311837dfc76a09e97c25b30d908a6108c560e0580c06c7751886904e0c06168ac1e03a2ca4a313838141a56dc375f8cb423a164625fabaf3990cc1af403eab5067f68608e7c6e2e0dce4aced0dd10ece8d25c2b9c9fafd897676706e6cd6d653a22424da016fc01c598f1cb0478f9c3014c11c594f8f1c50d623271441594f4f8f1c301441594f8f1caefbb0904e0c46d69e25dac1b951a2a4d5d283e73389b3cd5cacc74e8cdbd989795ec8c57af0ecc4b81e3b312fe47af0f0ecc4386bbd901b710f9e9d98cee9794d621b9d71728470b290104ed7811927a7470827e708e17460cee9e911c2c936361d985538a74708476bd96b92a575f06b7205a462183a44303011110cad3f0c4347460403eb10c1d0dffbebc86444587f5864e9c856ab1843aba12116abb58ae133b48a31c46aad62f8f80cad58ad550c9f212f1cb91e3c3b1da8ca393d42fa13b18e8ca8c58527679c3b229e1ca22e2787280c571d118f9943d4f1e41085ab8ec73473883a8cc355e7c263e610e52ff7f87cce36d6138b81e018ebf189f5c4c0b1c7c7c782638b4d8f4fccf362bc47664fe6d9781c8e6c0787dbd9c1f93e1587238bb18323dbe1fc53c962c4d8e13e15d7cab2183b9e37f41e09e3f5205fbcdc43280b09799e987b0c09e51e429e98a77a0c4d0d09654fccaca929981e432f2f327cbcf8f00103e37a9101e4e345860f18d78b0c20201f2f30ae1719403ec2954bc763e680638beef1d1f9542d4e1663c71359b9c790d0d494cb8bcff7f3e54fc84726f4c96442e3e8f209f9fcc8843e1f99d0e8f2f9fcfcc884be9c4797af85cf8f4c288607e461a21844442a550b510c20a21844aa9618404058d5c2220610c7c9788eb4e186388e8b0dc562a2d88a0dc9880dc5c4d6900c19566cb96c8664c440d0c7832407f280a0e6d1d13a3a61c8d23c3e74348f4ec8d2533c3ea67ce8e890a561a6a6381e1f3a20683e48ca803d201903723d3bdcce0e08aeb81e7387ebd901575c548f1965ee70e08a7b898a92e931636268fc88f9f14346662686c68c1f31347ec8ccc4d09831e3478ccc4c0c8d193f4697169fcf8f4cd5c2c28b01d4436cb9ba211939210b46f3f8d001572f5c8fb91315f50223233c21e4c21d193c3b210fcf4eabc522dc917102cf4e288367a7c5229471c2093c3b21c7b5588434324ee0d9f161499bfc3d813e7ac09e1e16cb05fa98d103fae8e19ce59a31a34708ccd905bae811b2d69236d65a4c641211ad563044260d2293680563d2a0418475125ec1cc9834b4fef19ab4d13e5a6b9f717cf1f9e133be4cf9fc98fa61c71799a9291b9f1f3151fc7991d4620c51ec62e47439392a954b17e327a78b91a372e9a262fc44fde4742a972e262a4ac7f8c91145a01749521cd22f922fea211dada3238a2d7a0848470fe9882dfa6908e80948478b2dbac5d3133904f43f5be157588124cb9fed157eb60259fe6cef159e2c7fb65768b1a009659cc0b3e47201fa98d1b38299f94c1ab21719cfe7470f954b4c17e327476c69a18780749cc978824a1b54a2353cc48fa0c7a4553d266d74c5ada5db646b6638f77275fe545d514571fe32f3fea3926a2ae8cf91362605fd3922a9a054522aad9380e87f9951bdfe6c4d59bab63c5bb71f2d5b0984acdbfe3c10b2aab02d28be25eb0321ebe63ec8eb069580902ad499b8f333b4230e0dedb878513ed5f7df47d20daa708cff91a10d55f97de8ffe918cb1dc01f1de6b9a9bdc67bcf7b1aead00ef338f155df4b6077dd876f75795660734fa94ee12b77109f3a4cabca1386cd71e07b4fdd14cbb0a4df75e549df863584d4adbbb28635ccff9136ea739cf79afc70d01387ceae2f01066cfaeee1bb848ad25a6f1d52b7bffdfc45e1ce6fadbeb70c1283a33e2e85702591059c47bbfed1cee50bf88bf0c6e50bf889ac362e5fa85f14ba4371ef63d5f7ddffbeea4e3dbb8efbee8e71e956767d5bc413a45b4cab8efaf8e9e3bf7ecba2ba6d791e11a9f56d7d17466abb010bc565ddd4a664c51412f4e537f8be6aa3d2ff6018eb830ee340a67fa997daab5beb6ead7d4b3af5235caf1448ec0684e0900394066a70e508258c441161730ccc18010da4e001135756d07463200209226ec0198a11d7d61d30a11b0f3dc301841085d40d0a087c0083d94582f2040a941e3775823235850f5c0d3ef8c0d57004ae0857a44a952ae015ae8827ea0bc4f0e07ef5abd22886c7ca288607cb08c8063ed466ac3f9aad4a23a3d51bb51e061c1dd08036336a32f34dc03f9a71fe2cf2a332d2b74a8c74ff7661d2a8d8e60de612168b34aa459492a8cd564853c6bb228d56531c565954581ed61062b37840e85bf72fef87f1ef53d3885f976612f6fed45abf964afab4d6da4c326966edbe3369269299a4a56825cd0c3f2957065c647ccf87f13b1a12fefb571c561f7f7771694e39ec25c594f2fec418fff9bae1bf26ad9632efbba7d7ed258566dfeef3bdb9acee7b4f73ca4cba5225fcf94b5c9a14cdd737a5a4a4642eccf2bfd2a459917219fdcf526cc2536ac2c98a621905d9f053950ff362f9bae5afb5966b5ae34b67269043f07e91259052d7be6eaf2bbbfe0b32c646b5ed17df05c6d3547a2925b961c965b7c8ae6ff6407fe8396e8da94ccbb04c46330790ec5326654abda0e2301368bbbe696552592665cac610e095feb3c86210bc34bc2c080601ff5e0d8254e37ba3080196698bbf0fcf7cf6765ef97aaa334bb26eaca7193449c31a4576cf0499f9fbf76766fe9b21f5cc0cd5f8e2224c6164040305820a9068b3d5c3b02a9bd07c0df25076dbabffafffad4824233f6b927ff53441689efc205fadfe2b3925eea9378cf8fa108731bf79339fa688af1794cb5e7cce9875634939c1784d307e973c4d78f03fbb4df81a26801fd6a078e2fdeabe95d7ed25c5c916a55e53f55fd05e20b9899499e4b0ebbf38e226857af1a0875dff0555f195dd0bec1089ed34eb966f7a2c4f17fe7ba337f5718942d0d3f81edaf0e80b32bff81e79165913c820218e30855c82b93cdf841bfe0d8b2c58be9e5e902f28f225e5b5c1125e75c3b7aa7c4de174309a4f0e83714a8c5ff95f02890389a9217597e499ff8b6c2d094b9b7c9aa7610ae4d3fc4743dedf349fc91caea73424ddf78bec26cb98fc74f692e235f5f3e7ed224ffa2f1cedfc610d2375f194baf8165154d9a749b3a58049870ddf2f5ed882bce5823cc73d239341595326554b59d4ae313229d9cda4c9a476b5d56065ef6c6aabc105fbab208b5559745fd6940d7a9fcb8fc5623db1b0b468d6647d7585cfbacd30ae9e65af8cee0485d22ef22d84c67ee1b77dd5bfd47489cb97927a4df51aaff19a6c7976f6d93bd8f53d570d9799c461aeafffb9c8d35b242bf3d89caf9d654c93a965c66a64f1f94d265bdf8ce233585fef7df9faf58582acb9fa222eb4de3e8b64e1b36df7630c85971d2eb6a50c5addb00056a3b063f6dabaa4f4e6c41fc23cf82e3248f8e7f97df830ff55d054e2fa4c25a6920ea399c465b98480cfce4a2e031dccab550983cfacc9f74b74a0214151a90db1c461b5ea404362c161b5d6fc7dbea4f4a55c92504cd43683a62d05e6b535592b265b53bbb2f474199660d4ef99de9b4c4e5ca635d77ad60bb54aa3263c58bf7aa35569c42a73f735a7d6ba16e5dd95e611f466064b9bda7830c43ecddb0c3eb0cd9bcba88d0355b6acdbf56d3390da7ae3b7e6ea2f4cf8dd6f458224f82e970b24bd181558bf7a215679bd5288daa2bccd23e88d8dbacd5b0e237e5b9ef5346f99145287c084abfca335599ff56797ada9bf2287dc9df1df77a411ffea59cfd5cdcabfca45f84fd60d97f9833c070d202f7159ce50f9c8d20e6bd219a582a4c310950ad2aed54e5a5352c2546b9ddab5329daf67ddec14a89b148755152c1246977f79d6cd9a2daf59ff42b668b6a6be0b496d4d4bf9df72b95825adadce5612eb666b2c309ee6cdbc9952bcbe39c58c7219b5523b6d4d5367f3663367f366732e6d2bc8c0b89adab89c22fa60ace6ad96ac70697cd19f70d7536717ee538c49dc7406523df0b9c28794dd1c564f70cb6428d02089c2e8468106345a43b72e5f3729e0b641ece3d296b14d6a29b7deaf7c3dbd6eac8e75736d7bb335769c55d6cd9aaf23684dfd1decfa4becda04eb06c58a7add48604a89333069b98cc191df3eed5c1e6d26512c4fb3b66b114230a1cdbe18a34ef27a7258f52378268b36ab5f59b4ad4d26d389a944ebeffbd3540af27df7411e922693c3bef0fbbeaf3c43d254622a99494c25fd416e2a99494c252ea3de755d6936994ca692ec662a994ab29bece632ad3b5a63d1f6f97add9646efdf2bcfa37d9a50bb7224cc134bd0662f290eab328cdd7be5ebc66249e91efc330cbb0fff7cdd8284efb16eafa7dfa079336fe07fff81e4ebc93df225e5f5bab9ecf3aa7b57b29e928cb4f6e4b2971497d5a6ecfa4126d42d6a57f3b62bd392ab83ade9eb32087dddbe2348d566993cf5b656bc6ebbbe59b3a629454d266b9a345a531f9bb67d6926932965d26a494b380ab9230d433dca5c023270dd0435d488ff0c6edf15d3a2c54c0b162c6458b85c302e189816302fdbfef7b77eccedbfb8b4d8776969b55e5a2c960bcb5b56e3d8aa1ff3bff5636ebf2586212b044115f87de2e76dfbabbff56360a7ad0dbdebf6f16ffd98db57fdad1f731bc3bbbe497f2ebdb177fbddf565d67e8fdbbf210ffdc1ef37ac813fe6324a673231e44973f0fb8cd1ec33e6629fb1989718cc3e632dfb8c9dab7dc6ce709f316f9fb14e8c7dfb8cb1f61963b15f3597d197fb8c86ba3ef7e76f8e5b7298f730d6cb1a5935568d55a3353eb262cfaabda458c0508f38dc3285ca4e1bd06b6eeea40311fbdbd4490720f60983a2a2a5a5e5d6ba6372e86d5f6f5bc6e478f70bf8f8f8dc985bdaa87900a4b562ac9fcb208b43bd94fb5bd33177e3cd79deb6e49294f0f76eb87299a4613cbdf76e9e14efc965545c62ad0d28adf506c5885a3d4a6fea0405ca02e123c058ffba3841f936752202cb574573195feb958a21f8799d6e69b156a38a850be6c5654626a6c5d3b828c99f1236fd12c21bdcf6ff5e5e5d3c27b0fdbf17195f2b9e14d8fe9f099fd7e92b9e00588d2a31c4e25981edffc15c302f2e2dad2c9e306cffafe6695cccc8c4b4e0c42f0035300098f0e25542a945ff4f0062fd33c8ed2505a73ee81cd69f724aeebdefe478a42d3e811ff9e8cb97628cdf7fa12f7d4fdf7b7019f8cee44ebcc99f78cd87d8949e5ef32528903331e1543c8aba27b1e9bb0fa8cce301057227ae047524289037e160d318dc60d3a715c89f541cffd3a3680a5b8167d1162f5d51d8ea699882dde36a2c4fa32d5e2bf85a21415bd48d72980f6375266c818d8b306d2250d89d62fb7b566c7f8d91b093f356d154af143b06f4e746e14f2ad0b55271fcb138d97e8fb0bd69fb8df2b8baa4ff467d37ca6a8ebc6f29cc56238729adaa0e8165f225ab649358250eb36f95ec1257ada755da4bac0e56c9e5b5247bc4ba8c5eebc3475f67a56dcb420b0c60e1a452ff3272d949a15c2862a105adc7d1e5fa87c13c16db4e3fbcd2943055319e162a6381aad4ec688dbfd6fade300ea94c25b83dcfb68f82b5d6c625d3e2a60b85553bd2faf4735829ac82fb0c32ee93021b3fc51fc5b5e5cd4f79e40b7a0d066dd7ce705b4619d7eb4d2c0374aab55ed7cbb2c0da586bad8dcd14a3db7a449375c70e87dd52a3d0a1400037d271f769a4df9f002ee33ee7bb6bc895f5a57c764fe0a33a75d45346eaeeb55677f7f25a5ba9c3aacd3e22b5c3c652873c8cf463b8de22b61544d954000426255430438562f33608e7d95a5bad2d0532d028c840066ed24d82011615c93dd900f8fa3ef9c0e568f4bd452ef724042eb8fc84c99b61e109109d0c0b308ee39e4889c95cce393f69e2a50597398ee39e640959642ee79c833802bab8cc711c178412164ce672ce39081e542f5ce6388e0be207ce257339e71c44add5c2658ee3b82090105b99cb39e7209670617199e3382e8829f42a7339e71d5d1057b0eeb87708dd7874da08c6f8041be71828b960cc95c04504a20b8510c1235a7c317862e5c5000b8bae032c740a5c1c1497dc0315968113ad1b731827032b5a0c806a81859a5208c5420d07cd421ee2d6953643a83675aaf1b0f1a64eb512bcb881058c31c616b780ef0c98888db3131695ef8012baf15882042910fc9085034ab820698631b031121b7319638c31c6185f8cf1c518638cb96c8493f274c06be30b05b399a251402dbd19057eedad9ee426b9467a6975b70eb053ee2db656ed30ead65a6bafc3dc3abdf1ea5ee90d758c7159918c55853ad3b6c62bb56298830f67eb310640b5d079124d76be39e79c73cef948ce1e7032023fa2e4a403ab4d9d6c56d83086b4a3376e6d514953b7108996447feadf0c70539ed4787e51519fa64e8ce7a5dd6dbf96e75549d166f782b4926293ca7bbaac5a2beb1ce94d0d6b6b359b9474efadd530c639e75ce3721cc75dd22eb14ba29cc999a6a66a49de938d72d8d3256d5087794f1e94c3f0f61f82f7e93d595aad78e34eb171a70c71efe946f576406f84d85dbf7a4ff4068ada0a44b77f93cb58ef2f3e71d94a3cc5116cff535cf229f992ec4f09a9e5c5272b0595893d50954fdbb3529e9e9477c59bda1e96edff21cdc07f7a4b0801ffe90d61bbd7c4f69e104f91a3595384b257d06646f4acf546c6990ba7646b9e5cc62d71b10754c631f198ac8b3c82caac9495c24a6961a7b43569279c2edb9fb666b4de9fde3f63b63f0b0a74df693edbfdb573aeb391dc01ffc50f92426a964d446fb0d5faa49fb97c11556e911e149ae3df428a564429af0614e61f922216292810f8fee294cfe04aa4225c962c59664dee1b71cd9a44d1f2fea2950ad452121189e041a92612f7fede0de8cf88a59ed08488be82ca6842c425661162b364d9e0b7c8d617697d6d79174ec99a5e11b46689cbc49ac3985099280485f93b0b4eacd91a7f98d29664929eb55eac69bd4fb1b66bd27ea1b390f45d49bd31596796dcc1e55bc81d308bc562b15e3b8cf534ac48dc6387b19ef59f832da4b74823ae59eb3199a46748455459b25c419bb9ecd02a937ed6fa20c7a4113dc3ef4226b966b82c42b308d9a1555a284b85145dffb22952b3cc9ae492d21b4a734ed5ce19f6dc16ceb9daf5bd9a75daf549758457dbfeb46ea60537dc63b1d7cbdad15a97ab00747683ee7a63c88d1b3768ad953a7d365436be57911fc943f561a95f53fadafb4fe5c2eef27ba40bdbb3feaa72b4359feabf4fdb9a4f7ffdd305f1eff7aaa1b0ecca130655f85f2996f43dcfeb6a089636ea6bfdf571541ed4d67c65903d71a74f09ecb33e76615318743e8c99586bb50d7964cc95fed449cae1bf435c496dcdcd25b5353ca8adb13550b81bc818c9c501b45c467202d0612dd04e4882e0900ca18d7c1f2d6f000988037802242de082c855089f13921bd4704032c561b4014e46a66899c3570b6f23cce564844a7d551088af6e7a9d8ce8f0aa7f7da094de2db589b054bbb689e4b06e90fe907687443208b5898022fd1952695b088d5d755c1a0dc748c3e1ee02ad6be9221bf0d1a72f3206da18ca70051278601245951c90706546f50a74d8bd3134c9a8fbc8f607752d6b312ced5bbaa8a5e1c3f82bc6d833d55467a4212e7dc68b77752c945ecff6de5b8295884f8f4ec91e6aadf64629af8801a6574cb9c2ca65f2b9643e4b57a0c336ad61608aeda2375cc6d77acd42b333f8e87941afa97f944405471cf1821e5c8982c38ce68a8ec94c14362b84b0f3a6b62b624822e9841000d1e4871e2c1145c4cc373085153a506d6ac322040c9af8800b6ab83921b1c04c03fb1c956a36904a3e3beed3e5d65aa7af6ac3b7040b34eb42919bf9ab750cb8536143144692e020044398f96b2ab62458b142861cd89240438cd3a71d4698d92174e3b1c3564515f076dbc1c3564512553819f9a84ef508dc7d8219e7528fb6c6c7bfe57f5b8ffe2e6bbd06dcd79174669bc2cab6afb9d7464d78748f4b23fc5d69d4bdb882510885dafae98c7acfc97dfe3b238d36279bd9d44645944dffc3209dd5d0d2761126e2597f7df23bbfcec66aa1b8cf9f75ec20fe7756914cfa99487d86581a35d16fd424e33005fadc7f3accf17d2a5519c45f7fce219274e694cc71ffebbcfc94149d8c99fae69eda981cd65a193cf1a7a2874d6d4738b24f7d45caee9ee2d77f03154736b55dc1a2a25f8db4adb1d42b0ac3147019c48d8e66dad6849496430c8044bdc7d6586a00557972e518e4e49e3aacc561f4f107e14a8a4b5d6d2d838cd61665e7a7f95d7cd5144ff6bd2058fa8cd59ffa73a8233f3dedd3905b91493f5bbd1b9546d47be81bad1e06ea3de353efc129f8e7c7610aaa1749ef31f9adc61454e5f9c2d1bd1f92a7de5f916ffb5ef75df08876610af49f62fd46964891ef9c6397a2df187c9a7b1ab5edaf9e369671198dc2b6edc7e410dfbe08b6e0e75a5cf67dfab950877d0b1e7d3af083cf85368eb6064ffda33eb96f8d6490981cf8bdc7efbde7bd7f489ededf6f711927d32f92e7f85cb87a4a6f58af5f3cf573e073e4b97afdf7c15087fd5519eac0af75a8436bd2d3e458c6e450bdf7aa5246244fee1d3f57a4ce9228cd39f5fb7f1fe441bca71b2483748f75791eed133f57b6686c03c10db610b15bcb6cb054a9b44aff058bec0d8e2b73c6bb92d4bafb9158dd8907784fbbff1e931f3e5fe3f8dff7bdb676406c7f65479e0e78edf1f1483ee0b53f5a4f70d7fbdadfcbf3dc1bcbf3f5fb38e833768f82cb46d58fef3f00979de3af4815f9bd487edfc3bef7d725fe7bb6e0528f15e7f0519d718754f7416e4b128cf59dea4a864e88b8876bad11f08d9f46e05687b24317ab3b76fe7bbe1c10dbb96692b3cf91f63fef2fe995676c5f8e3c63a668aade1f974c46f077688fcc2418df8a25b5f7c2f6f967cc3b8b3047d66fd99ef4b3ee3f8f64c1989fd6af25114c4b8ff338afa9afc9b188c603621b97414028ee62269552289ea038e2daa0a84111b55d0eb3c0475b18a92d8aa9cdbdc52719c4caf2dfc751071004ba487feaae372c009d15a1596a345af899d431382e8d66370d718ca4d3b60d3a048dc69136ff10fc438450291a6d17b1f6f7451904c1fd7d27b5f190a2ec914268ecf7bc2145797f392a10362e85d42c1f298466e3ff3a52088d5de94db73b21350b01a84dc77121018e64b029b539ed57faf3420db220bda91fee5ac32723cd473c3234ad81e3f3fcc4e572b9db2c3e028ceb17e15dcb254f303d511bb57577b2729d98b0d61ed14e4e586c58c3daabc3cd37e0eb042f51297532c2c66dea6444ad1af1e43a54b7379343d09dd643c8c1ddbdeb963cf980f779de942859889be4032b691b8206b6cb61396710bc92456badc3f0ca55493131aa543a34a1442909c98a71358e9c2d0ba19568b0082bd66a759d8c4bb05a2cd6a5629b1a6136b55131a2d5d26a45e190c0c1762a41b4b8b4b45c2797e6a2c283cb8b8b8b54131e0f6e134d9a4a0e2f302f2f514cbb5aa8eb648956a29f60c05658a3d56ac1c0d89ca055a981dbaad4b68b450b162c3a11641bb4122b052d625ab4b0392182d6a6b62a2188918989019b76059b7062493741c5091b586c6aab720199199950489d012bbd7102cb9de23a01b5ad13372786d8ba8a1917333357ae936fa9e282c6858b282adfa6b626ae44c942dc1dd0804f4313d6c0f4867e252fbda1a5a743ec89244fd8a296d8a294ec28df8333333333ff2f2e20411a1a1a1a9274d9d426841194204992645946451142121ad3c12802a539236a3bb0d02de24164cee69c8d78da39e79c6fb71d3c8c58a286afba645c56b7d78eb8b2dd65a26c7f90c66a06c21eb010580867e24c42143893afd54d4da3d168b5d9795d2ead6b931d7c125016638c2dbe18637b31b618c764c0841e7f2d7d82827c647c501954faf8b876e2a3aff325b59da31de9b3d8f6a0a6985967eeffb2e232979d2ed6137fd692cb7a7093ce54b0333b7b9fbdbe23ed8c65dbfe24ab666bbc863a5efb5563d16a325fc9fb22ff84bdbe843f7d6ce4ae25ec3a13a5c5ae323217f575b3b299af402f292f25e88dff29ee5af5cb56815e4f512ad06bcaad02bda0a454a0171525e8cfab0abdf137c1569651eaec0549922f688dfd126e7a7254a057d4940af4b2025581584d15a70afd61f140a502b1962a8e7ff9243365bb8f1301bbfe2bcacbf27492dc41d2903528ccdf0539a39a14e6cfe2e165050cdf9fb524fe76f0655e56b6878f594d5fc2d3d0c4d0b87041ba98d9f65bccc86cfb2cfed68f059fa2a8646b5c6a6acbd0cc0800108000d316000018100a08430241142461206bf20114000c6d90545c54508f8563518ec2208cc318649031c618638831446a684623005a3410303686d8400db2fd832a9bc0ebdd4dbbe5c73e83a3579d4c0ba699f2642d7956e25b6287e3c2bf0924ed5cabf55be08c0477deb2e85ac7cd192c548bd1d7a65ab32c438443214f677a4af1fdcac478e5a3ab22b1db45603c59b8306107f954cff3e654e169ca722c324b10c78ed260afcb48561a8ff8adc3a4b18123c1c34ca017227457079063e9844bc586ccde7cf491a0a9668a5735e2014fa853ae06b77fd4a6e101eba8610ddb4b67adec5987ff73952164429c00d4eb552daaae49f672cb39d2f8ab28088ae14d05bbdb4ad6625739ed24f62595d4e2fcb0c44793a1e436ea257e6f7d0e16e98572b0ae4a22e185f0e4937f1fc79d8a2a16c827f0b314c567695721d0a6c01c56fd56057481a564a56a3475159306b2a98b007a25c53b8c91a4233063f56656de5a5d22868afef1b8db5698c2a0b688ccaeb7e8b719859a1bf7f227db2a8fc08987186037c8be710671d641bc7b55cd5ec9cb52024a050e763b1e13a2407d17b9b30242bb78100536afb0ab7f344e5b12b9bade5b74b5e805134ae76018bfae2189a7c3aac194d969640479b8635cf21dd372f16a56c43cc556157197b61220accd790e5faca7e49195a3768f3cb965b684f6e939a62daed51c18dec3bb48dc5307d72102f719304b33809af301eef52436615e51a0b48d3c0a83efa81e596d10a250cac3ab7661348186c997547fb26630281ebade827eb0c2815056c8e671edd4449884863fdb8b6e19ed1fb972c60631f16e10d764fa8a8d899b6543d8db0f24f0a4546dbb81396ece25f949a10e8da9363e512f69220dced833ccaa349951e658c1ded661c235d313334c2a616955e5c0cc48e1b82bd2d17cb6b1a10226dc6208bd537f7ab774ce96a2de42e660f84e745787eea013c32cc3f5e83d26fe192b73b17d03d17139085b4b08e62cc7c5de20db06bc3e34c3d9007f19ec2f5c877036af5fb67aca1010fd7a297bab87b3a80b47582ace2d54a8e00acb6f8e39e798d3286bb6d1502d4f1308230512e0ffcb8b7bae41c280cc74412a063c3f678d35a5dee66012a0de491eb2acf7c292d63b14ac772196f5f60bb74787c663e33f27d5c67634e4ac4868574b4db1c0d4783d9b94a918217f745983b72a33c31fa25b6fd01adc368fb659a45f83b2f006bb6f45bba23d935625e8eb2df4c9fe7b667f5ddcd839905a1f6adbe217a79c7524a7070e2b4fa5b7f3bd88003ffe7844fc63072327a6f245efeb1488d41390a6ceb1b78b7618f3c80701e06bf5b3b0a0207db8ed749205eef33ee3988dcde0bd8a80d25abde1d54a330f3386b9d092591d11f5f7f0e748c2171bd5d3f9589d409bf4381dd3678cbd4641b017c353cdaee79c084efc1bf05e0487c59055b9a681a9b58b682a833979f7b9841c3b6e1c1bc899877361bac6394d72b0a2d787e60e8779219563d7bebd275d01406e68250a9937daaba4523da030861a571f3add7781b6803e1f172b84f8ffc863e9b2e9e2180308c34d2592867133eab4dd98f4ad6c6c710e133b5cb4243d00fbf66e6d3a341bf2edb2145171c59411850a427d0339588c5af0aa0bbd4ea144b39bf318f9ec703e5cc9ba4b1a63b60f425f94a1915c11f2b0def17a8f53c3ed0d9e1f50084d4d4c07edfc242b5cc3ae03fc2ae08751f1b314e7e8c8b5ea56a81f9bab9e48104feafe93e0c035072caaa37695905d65f1218aafc8c1c7de51c66389e2a0eefa4a1a291f80d11a3296fe7983abf2a020b60460c996a134b6ed79d3577d3b3138bce9b08122675c813914f0b21d6e4bab99dd73ac6a1b3729c76675ce4a2f34ac61e5f0c13e2710c5aa8fe25994401c369d462646e6ad7e1c42b6eef764cdd3a3cf06cd31d196e348c2b663190028e3038fe707110b341e3225c4fa182a312c968b043e3ea293bdfe9a83b0e36895f1ef74ce39714c21d4fab9f7cf098699b93604cdbfc7884baa1af7f7ea59b4b66ab89c2c9e58e5810fb11e7662387822d2db79476608cc8b51885e7ade851db8074de8ce344782bf4997cab547615d05be254283e7df0ce7881d3787bbf0ba79605a860a00d3be7c3199ec991a9554268216fbb3ddb8c3ec7c20e45d29ab0b97dd1fe0f474a3f320b0cc7a66d277dfd78047c800b4f4d4423ab59479450444e1952a18c0f47275041a2736cb3a7c1553ade11ae751066be0ca91477afd4deb530fbd144e229c734b1cd7040648c26c0382f715bf951aa9dfd5a6619dad93246b16d10cbaf370918f029f71c08c36056422b498e8cde3ed03db91392cc7b885b3e6d91ea726ec0006bd8371775c05ad8dc08703a996c574a00b5ce538fa05ca6b80c931ce23789ada345169f9654da1b3bab8b456c3a7894ac635d01a9d0efbfd37f22f2349f0d8fd15cbe443fa89925c3dd410a4f503708653ed542c4b07a339493c01ded0bbe5f92c949737075f8ed55c79f9e54ef3e987c8ec69aea349b94e18db15147395c7e82c1a9fe53036b505e20771505bd218851d8c457eb70554c100dbb5b1acad1a4f1c68b982dd9a37c24d206fcb10e89d541483ccf315480120dd21d2031c3f9510457e580933a3fe428b920d5bdf13d4406517ea8038a504253210f8fb3c80f20a94391f2a66b7e417ba782487a5ac2a0b08572c033572d539d3c5b852e395a0856de4c0098884d76ee80c32ab348e123a03003bece55ab8f21d74b41574327ced55854451b38f12e7b0a1b9d5aa4ccd95f4751e48d4ae2619ff976bb6240ac0bebfb21202d82cba4be354cb9388592267237e5906c0e5f2f5cf86f9daf730a1820797a130808464ef6cee4cabf672f935e11cc0d3c7d898de24c4e42e48edfffab2ef9acd8ec0cc51fd98c42cdc3ceadbad0b317c8e882ddca8614f22e15df7ca07ae6185e265d1fbe9742cc89c402fa10b37a296d684ac057109a71671fc7f235421d40d2820680981f17d05263553e8ba6f2b554537c71bd31485d10bd651c141d146386375b70319255738b1f1de3da9debcfd47da5ff947a2f1060f19485ed58be25b2e3bd0318560dd8b7dc4fdaf77024079a9349b98d663e17b1623540b47e67937e3243a8b86e608fb60941b32d20b4c4142a12f1a1172b48a663bc34137311145a0e9961802394e16a45c918fb1ccc7a1cf0cb2f9da9748612b2f5c04dddefacf9ec8253b1770a4e8d7cdf67e4e6d2baf7ff1de64bacc88aa960dca96a65c3c94ccff882013cf3587f8410d3ab516e9ad2076777fa6c5f39c07170182ee5b2c1c88211ec2f04d8fa765a50624546dad635ec47962d668797aa84a90cea6549bc6ff99befa9a33f3d701f1535a6834fd754a1c44e3fe2266eb28b9c827abb4d1f131c0244e647a674175b7734f4664a439cf466b45b6d351b8ea6e3bed676ecde204111f13689b9a18073a5a4e1c35a30042a8e83b621e3f721bf4e3d5588fcad547caaa8249b3ad5e6623695e985f587a1a4a1e67e245d3ea5b908d4b66cd5e481979734f2a803d9d7d20338db851c0832088cc146a352255f789c9bc6f8b21b579a2a1aa61d4f63da27df3f832e78ea866b27f561ff229c68aec99b7bb2b547b7c631b528f491832558c0d11436c090d349f511dc48af3debfad4bd5f8bcea10a0554447cda068749c1f48fd30aba0407ba90e6676c6fa8ff32a5a39e3fa41ee47b9bb56551c3fceb239fd78876789f5f708b938aa58eb4e378b3b1adeb0fa0f032cdace71f7dd9a872b0ee7ae6fedec0bf18510734c6e5adf3b1549a83ff8785da1ed4e34a47047f22920e10211d32b97cae9fc3803b0429d07a4ee6e73f4f121158b9541cd99c37c9acaa9d21692b79c3b52102f29dc3913670b3c6f82c753a22e292cda6c3968e27e93e9521d40509ed3e8f645f7cc17b870fb289dec03ef71847c26aa02f422d0f879adfcff343d77438bcff830e2b473fc14203f01ae8d728d28151f2820275e027425aab1192b9a532740dd60f88f4e2b2f51fdcbc86c1b2cae9c14dac982c1b4ad1a017634bb954a73ee9f7be3b655af5ae2d998568cb09dcdf785da1661c9efb188f23bef0cb784bc4ffe95992de20755493c3b8b7380184d66313b23791d9dfe635f354f93dd979cfedf08c6b551cd0bc8afb3ed476104c2702b816d4e586adf15f11f50865bb885237d7b33ce12cdb4a2fcb953696d5b15a56330c93a723a15f4160eb892d04a2a0a30bcb3cd99289c901dbed9da1d440f5d93a919627ce7e999ef48b340ae5b1b7bf55b6ac3273804f7dc50d41602ff49c3d9c95ea9f0b94766b672abcc621233d7cee13de8df03af7445eca459040b523109a234b670f15ad89c20b7a1a09238fa93c532ce13ba3094e0e44c766709b92353905323708484f2886411dce5f4a234d68c25eb749891b521ec89d07528256550ed185f19c44fc3ae0986a178589614336256f1f6e5635ca26824d333da9933054aa64a329d95cfc46f17c6a917c5e22b2bae65534e9356c0ebf7461d2ff5d286f8a7b19bf05bc4f6fe1c03dd2813a0f3bb7a55219e4cc7360a7a6b83a71e91b7fba14908cbcac018bbabdddcff2144618aa3ab7e3648c25119c946b7e9e57cb0e50b1facfd62804841545f26a869e87e49579466fb8c53c424e59eb6ae59ab96105be11fe11c2148f67519e006ee125c4bcecf8f8148061b8647cc79166afba5096ee1bae6f0b5b0232d8e5858542334e9f1e32888a95b0f867932693391bb728165215d3b63ed2c50b020dc8c1b0bed6c3248fb1293e1b0b424e0c08bf9cfa6c69c9d72de15445d8101e17f84bcf422bedbe56fd19b07abe26c3171489dd1342a61f4872d0c6a4cf9c560a9090e7c97529a1f1a0e68a9e62ac68b0ccabba30f45aa3050bdfc93a0b70e67b9c62abf00a1f8ff07cede9ce01a9caaeb276b3362769f71afd8d187d46d531a84e55376fd316ab945c6163b108d7737c40b69068c01f5a2a7d6f5c7a89d394961e02ba6155fffdf4849510b12144b34af142fdc3d01f29fe048b58c1d5835a908eb2df8f594dd3b478de11731788c3d632c5f115db309cb5b05d64205fce329cb53d0e9c67031487efeea7ab1b7201e3e8e76b6ff90b346acf79afae0c6e4cfc0eeda492dd5e7bf8523631159b2d7925803a7eeb643d4f21e28e418956aeb71a47b27aac72761a13b00c80ce48c8cd7c4bde54fe10c23ae9699a67dad2acdb0dde59bc780c965573f78dc9d8940dab215a56cf7d2ec3068503246d376bb972b463f097957c9720d5378110c8fae6098fac20e52708ea3dd73f45a17d6e00d8e59a8e5488bbfeca598bb4ea8a95e5f4451f0465a1d12809fc65ec690b3ce13e596e376eb346d4e543a31260667dca906cdb068935c3077904365e68d1aad9c4e6f702b87cd832b2aba1ad00574008d456b65231c3df676f1bd88bb5068f27ef1f28fb20cf28ca7041e4ce5c24ab5f51a928a5de7930fccb1f5309c4637ce7833d3cbc2652c684c6f9b874c19c3ea34c9c994e214a4eb13ebd4eb9ecdc9e9cde0309eb40385a9a7125a6638f0efa7349f680e80f4bdd32c8a40d4ed12d0db863f07c882d8897cbd74ff5706d5ce68a8851128e28f2ec038cd647b36f36069bb53bf1bba81901ed1f1bbc7143b03ba56878f02e15bb99cb0f66dc36e96371579bd31a480e782dd77ddc1ac194e1cc307fa45bc13951a743320c14a60046beb0382852312acb4b61fb0528d14bca1f1f122560afcdcc3caead7c9cba888c95886cd9b9b452569dadb9974c1f708540d0443c0dd32d1f23c0b75bebed11f1e0067081c0c0df56d60c76c848d5c2863f57e9a103611310dbc7b01de6aea081185b58354422b8640373c13377c54e7a3c6ebc0d00e83d828316c1b71849b5593ccff99fe8d67b27c4bd44b6269ba78347a64316ef2e66b478817eafaf016e290b1be59a8efdae99601367d4795d3f26109c62d0d81249c73722d754946a71539815a7129985c84d093b9b1291f9d64328e4ce4a1ef360a4f620d83fbc29447401aa5e28c9dee0ab05144888132974c3a5d097751ad35dcd550a71c279e667683f92247141d124b7b15789ceded78dac93991bb2faa636a1f0353c617815e0412a8a319dc62a9e50862a0b05433ba2375b0c95e8c2bddad3d7f9a928e1c587954fff913142a7251b9ad819f13946c38188c9d0070e6ed31b827887c5889bfbabe10fbccc5fabfa6c2504387860cc34d9a7892834cbd6399234c8ffa093aef278ae7c7d15134ca88deb92f33495380199a8e26698be084e2a89180c5efb9b268c0917ef74ee189f770b400a8ca9622a94224f2f5f6b5410bdc06e29e72ecb43d8bf4bddfd81579a511329034ab9fc17f037fa4b324c3cff945b0635a9aa37b16baf9843cd312a255e71304338ba156cafadb101d06a9bcdee7a452f1c17752f454c86a53c36af40921b678a6569aba174161b05a13fe00581a0ac1f84e9fed4400d02d9a79ef53b013506aa5e95ab8f0437f47b595c2872d833795ca5c8cde04e50bb3ea33ec134c58a417d5382e330a0edc1e246b8d0121f4d94ff1a38574a6c9fee446e3b9d2773266ed4a751ffa071ced191d03d994d5bec28f56f9f642cd95d669527a297e2e562da69d6a4a694bb36053ee76dee28353ee6c0692f552d1d45920a133d9158f46a88d363c119fc998f804bd159f28179f2e87d6180d549c8d4f34ebf8f4c15eba0f4ddd9f853954be5a9739259fe0934f0c5643428ef7ad7c9e0643dad1bf7ca6a045fafc125d9117f6d9c092e3d28679fd1dcf202c84b68ba555a4b1058885610600d01fae99f7b819b386b1b13a4cdd9dcb4277a6b73bd05b1197db777d2ed316ba19afc71dbc56b037035e827b3b6ea51a844deb4bdf4ed0d09d41904e61fd1a8f05b2f7b5cf3fa9882667eaa85d1cf06a05211008f1c0d055519d2e644423fde27c2e1e5aa78c452ad388b7b3b64b143837fdd61947dec77dd4c3280190984c4fd435a50fc4977765909dcf064dcbd85a02e85bcbf4acefc838486ccb30676f61347e5f9e44a3dee26b51e5e4ad8437b399780bcee02a53a5398ddbab71e02c648e88088246c4a02b1a8d53ebec2d9d70ef0d9b5c3663b9e86630d193ee5462cb0758e66ca3b46a8f7cd025068434caaa286f864bfdebf88816f2380b9f0c92d3023ea4d34d46bd39f843bb42ba85013ee6019ea8b767b2c0f3e922038161689edc0d223631fe54a4a2ce1641395f5c88c9edd2bd0d31c5edd0e33301ee9d218eeceb1fbd96803ad0a94e19f6533e509e710586bfd32db132331af217267d5723aa61a1d4d629dc64cd98ead2ed49fc64d8f29da7118f5a2f32b114affa65a95a2650517d1d38a65b1013f731cae484717fa8f953988f0fab2d2912190bc397f16643db821595cad3f435e98e9e1ce4b31c5383e5222d682694005a9cc6f3dd3941cd62d988a20a3acd931f51e15966112f9df4ac61c3a57dede45c98a244a97ebdfd4de9eebdd8a5b9390765debf5803357cc00f6fc1cb1d5064c79080408fee511f07263e9076f6c21ec7c957bfc31c70a97fcf2326e2d04b8c7d2016aabcbddcf85bb7091ee48c235d7683dde73dde54b90dab3faf78a972b76c7cdef1a4cbdbb2f57dc1492d67cb56fae7fe8c0a2d18fa7b7069ff9d27f47d7bdcd0b6a1baaf43f5688d5242c8e4efcc1600500cd8e8ddb5dec750c453b11e02048a540ef2b616b55ea41f905237db743a5ad053b4cef1ac087de77f7109ff373ad383eecace912da004bd0ef621593a72e79982f2c0bc09658ea15a60e05be5b6261a9ac61d0c1b33384ea1e9cfe01d961ab9e75339c72b96a321a703780184e98ac1639c7cf7a8b41c7976cc13ecb0a1a437b0506865f39d928028f0a60299be50791663c1bde11c081c481ee18359306f63d111c6dffdcf269f450ffa30f0c154c69fa1ae8b9e85d02f603dfadd17ae16ab16c4dd5a6684ea59485506bcc324d0ccd4e301ab5e5a98253060bae231584a67de363de61403cc56c6ead6f8ae59381ce9fac4ede882d200dc091f3d13747a6569343c82ca19e10ee99e1b86d23b16209cecd9a5c38177669a24779121b5ad6b017f2f7d7106e0397b6b97de2e291330529cf116416c3881160c752ea091eae8048a71b2b975616f9cc68123f4d604e121b31d142814f7bbceaa004a7d6c09b435ab52ed666d829da5c47ec6d377d735f39a4669c4f199c18aafa832282c5a510e6c5c0f05f05d8dbf7ab414009214888251fe300e63fbf5dc783f334ab8c4619c991fc03a9e52286535e0b63245a353bca890457f837e981bd0138c33d7e2568bc42cca9db2058829a4021327b27bcc0af30c9707873d42a639b9ff82e53afc99f8e7cf79a36336bceff81480f42473a73ff77e2388b5d747babf737dbdc92aef600bcd585adc3c677e9dc9af68993efac833148686b522cdead54e7580b5a3e95e58c65dbc330b5ead7376866843cfa6ced671f86199da7c66c541dd49df47ac2e2fe066a9be6e2aa0a749e561f050976c5513b8560484d10a862e63a9a6fb417c09250f4a5a2c130f2a8a6104b039deb7e316a5b2b734954a7e70037858b5b8c2c69fbd796a96d9ec3c59f06749f1e1f070ba1ba504df29f2dd591b2e787256e8ebbd7fa462337aa100ba9a9b80f6e8039e1715fc95336804437f56776ca5d963758d07b699504e90db262e1227a9a99e92be9f13bd9784b73f802129cd6370ca7c1623e1d80656d6368276dbd72671033905031ec6b66f73d870e163a95ff89824750f5a2fd0b416625d04e5b21afb20279fe576cd3c5819115d7e8c497de0b6fbc923080d0914954b241f1142a72db60014859675b0d6cd861a9b543c203c0de93aabb9a2a891b58ccb7b6cb072837b4afc04db844b59fbb22f92f2a68ac1c8a316cecdb86ebf696d6324b693d017a169bbf557e0af51c49789cd1cff1187e50e7ea25c01a47b158b8d18c83347063864a66fa6d0e290dc4c5bce2ee96610fd32fc0a160c92cd7005d26680c955800da61d1f953a25c89f59b4a4fc99ed590aeb5420f5d07c87d3108f79c3d3b0845ca0810a26faee94258c1c3a235c5c548833680efebc4f64399b74e273fda40551ec31161d2f6efac947fa68bfc87c73e49afbeaf763d2d24dd2f3ee13e8f2e7ddad835494637f8c3a8fd9ece6c8de8d9516fb266572ed499a8fadd964eba4fa636370cb66d353a6129c28b71ee5f919ece2a153e45d6b3bf4b768067f610493c31860342c4e43465c1a84bc176e153febe34c9a3d0c2b8328c286317a411763028591d12de5bf704dbd3f98a56090f5144930096051b7d5cba20f65ed4e2e7805b65c58a999421976092f48904eb4a69737201608bdaa6a6e0a6f79050a21b8c846ebe72a7e1eea103103d60923d5d995c8a65638876cf216ad3f4fb651aa84ab2a16e32e5ec9c7e495c64a3dc16f410083a7a93f56a669ac3510431b6e1e9763f76a6365269982a70916d215763175338d2e9d588e22b61bc592d6ca3c1bfd5c46103992dc324fd3b45ea19b6a76b4ad9cfb1eeb25f0a84cc6f35e2be0d5440c0b6e10feffe365dc30713b40cf4a4e3224040b2343e92637034e63563e11d7cc3237718f1f1fecb1921d1bb8f92e23a88e50ed48f56c78b1246a00d1705295ee00c2c103730929a7e5508c9e33275bc54194725a9e70ac8df0fca1d21e518eb4c94b104cc075c76c0568e2f7eb8aaf63b20d650a871323cb00122e2e3c99e3c2f8405a68940a586a38540c448a6f28e5102ad22e9c7c3ffda12d50cf4fe8c8f3622206b12508166dc0ea97483107fa018b0144b812eec6f2fba1cdfe3e560277783b9cb4e9caa8ed41954e6eb2099c88cf48ef58503e991b71b9169b5f9a2e99da16171e02477e821373b926861f5a5d99da1e173e027f6e921bf19936965f1b5dd9ca16233e02977c821b73793d86dfb55dd9ca162f8cdb300d25398f9b672665a4fde750fe081208b2078883c820ad6666706a85f13750f0743819c6a3429dc3ab8d83816600f8963230811460d877e2cc5ac3e865e439b4629fd40d4c0150709ea63b40491904129283ecf52f77f3f917778161ba2e2025352840491904329283f4b56f78c700c10a834169f152cb6e5c40499ee25196ba89fc95f62f9c5eabb3469953500cab25032b78bb95eaee6a695d4d9a53d106b4255484c77be54e5b2023387a1b97c0291ce42bfc5aa1a6056e730744634b19bd40c94058f74fa30156da880f83739e6cb16088694602b31cd8974a76a732b798fee0f7971cf306603131a0b18c01eb77f0aaddf8086223f7b10d14f0633c03c7a15bd0c7e9fb9c46aa16def22cb0b4ce91bd096ef1bd653a187809a8cf5bfd86e3861c0e3d4f1c3bde3c9a086b3b326d09256432b3ef60bc9388b99396585ea72d40137c9db47a6fb6b3af6bda5c2d636526ae5f1757ff2d7c92df2f959e3625ae3bdb3ae341775d1e8015aa4b0d6373275daa3c9808f2c078734ca8434fbc30b6067b185c305f21966247fd058eb46cd5744baa18cbe1496eeffe24d076fc645c71a3638810f70a3abedf1eacd7db19508b0983853c6cc814d7f8bce0fdc1a7c384f3c1f0ccd8c31266a333ff081a4843c42f41de0445270605c04b5c791edc6694c68428bb92a2bc3e9751b957ccb81f285c8a718cf3d7c5345495cf79fac4cabf590469b5282627d3a73100d68d7945457161f02e9300257d46ff2c0f483f3a7f5322977cf6cf4ee7356f6444e619cfc924e6effc43708566492e1ec3ae1e08ba74a591806ec985b58f58ef61c18c2bf5c7d44b88798043133117f111e14e20706fab3b98cc1bbdccf124e89a34c674d994cc3a079423b6432b6f58d1162547db415b442081de8f4c82bbdfbce9bdf9162e2368b5d5d366fb70de2347eaf026344dbf99377cae641a33922dc9e20517f0c2543cb379c3bb85e29807d19a570abf72f471179fab4d70db119698fac76d13a61b64ae1823bd968e1def857bb9f3ea057d302d383812095121d1c50f261070282fa0b9d57292beab560ce255fda9bf54387d0ef14cdbc6305d84113f0eaa02bfcd4df071b02ecf373801d61cb81d80b92168c7c1ce941732865b6d1b7c9b6c57b8d271e6da8c2de7bb130a7532ac1a0216a8b1230846d6de92416a8bb4064cd6b6837b931b80300f86901380e040a2e519765efc49e3b081b46ec0643764ab7463fa872bc21c74451663b38a41b8a2bb1d27265fe6edc9b9b4a8da0784ef009868b1a1b8dc54cf68722b715f5b46a5b215b0b20177acbc158edc86cb796e7aa980f30b9404bc6055ad9285a6299c1349ca74228caa3727463cb996c441fa2c5f9366045b2f38d8d8ba2cc8e5602088b388a8ac0dca18a6cf96859f68cc26f5892ec0e892ca395825008692a4142981cc08246c5274cbcc80720bed36a41eb8e63ab92e2c22f8167e8945faca823eb14856b03a586e4c194a29436a70fc2a3d64046eee3c5ac493ce983a2b6fdc69419098ad5a641b5aea7a095dbf97f79254e4bdd65280130861b6df90f39a880467583310cfe3330eff3f40cfe5ace65d0ea8fd425b2008e340a4d49a2fb902d5f4e5b4ee73b262f7c980e44b61671b186006a0bdcfaa3dc41db1230a37438f4b60c9a7c4d1d97d56fdb12a79c99e04c3e72ba96a7c53321a8c722385ecbb2e51398d52e2918b20052db0b04f288a917645da8f888f46b6a54539fa5a7cd7216afa4585ffa992e3553dda506e4cbea83906ac0c9ab852fda9957629423abddda7d8bba8e9a0cd4a71ffcb27a1dc0353ac7a8fb01489064303d85ec7ecfc2940e93704c8f760979347ea3e9468fc585c4549057d660e81547621bd4f2421ac31398bd62be76d9d6a081b1dc22e0822af60f70a4fba9ce1165d5dd705bb4e1b4adce4b2d76e7e25d3f249ebf44687dd153ecdbfc469351709f9ce7d8425c97777b25d1eef7406a93a413366433704122d794e13c485175f502f8447d2d454ef1c2f3a2937094e163ba083b18b332919d9e8eb61f173a4db0f247dbfc10ed47c1020c8d78d6fc18345df7e71c88a93ae7a9545ae61d185138d91e0cebd74998228a160c99931dcb286c3d307706a0410e2db6928d2ab38bdf962a8f5f7197a2005900b6790f51cad646dbbfd45cc4b21d126bc0ce73ad972887b565205a595b0a3f7a65ec1140690303b41ba647db5a353171562515c493bdf7dc313d38bb72db83180897a66f0bf14891d74155c03c981e2c6a4cfefeb19011aa2e52427b7e0cadd52e206ff33c30772754124770dd2be79532a450e28f4e1a4f667dd6dcc700e6b8d5b3edf3a9b521008fe25ced69dc304440e49ae3774cc898c65c5c189b6e11095ac7764ba938f6ae6340f7b2cf3c99e7fbbdb7caad4956d34a3bfc6e2bf223f37e94da5aeaa75d5fc068a81561dca4b5d3a5089452ffe0bb80ed5f139894026d764444bbc2dc3396f063cd31daeaceb46ae2f80a686270809068d218ca311538c1890e0a1dcb10b6003526d1d292c85f2d4aa3dd8170c23990722043898fdacc1737b59731487378f68ebfc4f8aa78bb008bc0b3ea4a3f43a4b19d8e472bb8554d19a02340c1cb54d245b405a67f60bcdd44d8f88f2e8082833ae74743018a40dd1b013e9787cd18c33a3a759936cf77b1322fc2a997f41e7c30f010ad4d5d136cc166659e3402850216c5471c65730e96081e5b08d4712e505884922e9609d7b65b6c11cf984e51800edf0e7cb19412338dc80d211cbd87e1d271d429c0053594c3ae25631900db0f59d6412c4a8bc63f1e297fe6ea045614b308cb1c44c3a949345549c276056213860938990002e9008dd5e19edccd6a857875da94f808834887c6ef6cb011dbcab16b2c58c3f1d873ffbb4cb408c042a5d384b4fc86b5ccc1b5b86fd3e04bb2c8fd634820d8460ea713eab46d7a7547012b1a5d29f16a37233e5a9b424d92b95744efc2470f2e9899dcae0409473d92ca0b72e5d8c06d9654d0a3bae2dd5b9eca67a64065b8a00fc88bdfabae3a18201d9a4a023d6a30c0b131c78547b6bedc6da453fadb3cc158255ac44b5761d99e3e7f154b9d9d47158881b0595e5d93c354f7a2871a05229c16a43636862368270361c88b4ea5e7f8e1ed08fd272c013404ee9c4d603ec1d69d6598f1d6955c34490662604a65c67c1e423d71981681d6c56d56f0141733adb6b16fe37be34aaeadb311a169d01dcc5485f2b850fc1eceaec9b369aef86c0fa8a5d097cbf8c4ff9b46bf7bec00a48a077ab232de5cf3a633ca76c2dec752a39621adc39f5ccd406797e94e32d2af972bf936040f44f83af3d42df12e55d03a8e88b8e2df66dd10acc2c2988e056528bcaaa782ec4ca5c38ca81b05eef2e354d83d567650e175fd914c04845bef5dfc61182923130ec1ccbea4bffbe3a582b13ddcc2a21b0db80b3c94bbf42391be13250a0cb2ef82fb711e2fb956736cb59de1d304206e8e992cf3174bf7cdc2d5b0e6c54740991180a68cec0755c57fb527319a5bb7cd8d8e65ae30ee5e077f557922efef5a3e5571baf21492102759d0c0c35c6d270171206327846600432810a5f8f1cd8d3e5fb4077708336faf23f15dbb211b23a461ca6558c7288b82ba671b379ce709d2cce3fd1c235409668879f006800931ab1061fda6ff892b90900432fdb4316e0abfbdbabad84453a8340a63b1dae6618dcc123189e2a2b026de9cdad747e26ba83291c859a15235747468b4dc839b8864d2473732adceb74fba66723238150f4ce68b38ffb8d03f1b9285f985263dd83571a445a702f38575c25c8399e0dae1afa50d62ffe91992925f3f1a4d0d30bd9de09a40366d428c1eb3aeb6ccff7257ada57763562248e999bbe0e4484caf096778bb0efc88211be11fad08c7eb57af5a8c8c35ee508e733ce5f99c69db212aa5bb50ab557fac50f11bd5193fa61029d2f73a4643a1af6a4c6d9d9aad6a1e4475dd94081f708994e6393a6cc52547cb60dee41e40f950eaf77e946cc7102c5a5b061a41d6704bce3e63c95e4d52ee04858d6ee54e06f8604a432a8758ff52c03ebb48fd8929070a7e850ef8a239bb2c2b6a6db23a1edc84159f16bf1b83f1dbc75ceac0a14f1ae4511d7359c39e97989b8069f78a0d6c41cb9fd4dd836a9df0ed38994e821dfb7276aec403aa30dc071bcf70b50739d49f80bd2ebe0186aca4ac0248f904d7af6af96453ad10b64c38814e492b5d5dace5390e000cf16577a48e3333ad64d57f5eb39ae4661a087c68ebbf199eac0f09354994143d575224cd68962435c062597b9dc0b2c19cc85229a938b92908ae0ff7d44b535a704ed65fc2ffdc3dbcabde6d1fe006df8065df84bf4eb808065501e735f1e0e55435bf7e5c6219d9bde9937667b41d02e74c6fa6cb48421adc8d91b8b887f342b95dfec9fc2a76765205cc5bfb966e50f46a3b25da23160a7b823781199f2949566b24893fcd0728deece5a1817c45ce1b7239ff9fe2ab5cbfac48eaf759106d17bc3e73fe75769ac33d53907853a1fcc1ba206723c3dab34ce54e9adf461ccaf0c3db30f476f725b20f9d05cf7ff91f4906e7946bd595204e0eaebbd58dfac7425bd61b14752123b5ade98596247ef2fc6ee2e950f5264168521f8d4b0579194aa8d83fcc1e741a3f670e53a939ef1446362e2028438943ba2d4e11f25c94314fdd69baa0f2e0dad49a772d28f7430173c10f8cf901136a5dd0b9ed887f1cf245d55f4bd27e85b1ce91684933cebaf7b22a59af5a759c5d8008766c6231da7cdb30b90bba2ed7d2a2a9967b14d291040d797bf3fb4c62c03fbcfca61e8f037dc99e74827590daf0df48c2ca9c4e67f5a59f3f319ee8ae818c8738fc3af456d6b2bd6d258fd4c4a555133009f6eba87a58a48cceca175cba8bba9b8914ea3d8cae89b00b33c89c751125773737a8b713fd6a71ac867dc4bf4dccd78d75ac999507b5319fee255644ac99b0ef2f6fb13d58ce5fe1d9efaa9da4f4c635358b92424c6c33db0c5cc201ab058c3212501ea0b5b4ee18a8505f68d2caa2c09bc1195239f8fe61bc10940de965893aff34e3a7a0c48921783856e1b28c1b9f8fe9cf5c534a5b88defe87ce2c37fec7bc3e12277c4bd60ed9156e37e8f0775d1e569b123a1e5f3636d7ab2f0ef1a3189eb4de2992f043a0afb2b802a2bd63343a052c79673cb13a4039871ca96d6b43da7f2996b34f358c3391d348762228f3700cecfe5fb53b46355c760094dd96c42e0980e3b67b9b740711b5342834e3ac58d0171d64bda4dd43bcdda71d3f1a23cd776c3d39989bd96f22c65fc0baa51c110aaad316a79ee20da8e0458f63592147b824e54ea3351de0cb5a69b5fdec09967546ed872e87b4336fa51b4c6a90e1da4fe645ea31e4340116512e4c4048dd5e3a86b530ed7a5e91273cc940f730d119043cdfacf23dd0212b5775bcefc892bd3d836b64ec6987f9255cd75dd139c1ff7716c9cee60c1707e39e8ef07f5012cebcd8523c851b5055e9700d10f0354a4286788a629f7c775a66935760652d9007507995003c6b95ce3fcaf5ac952d4b633d2230ffa66401ae6865166f43e611eaedc915b3d705b43689ba6122473fbe7dbd485b9510c327fd124dd00ca62b92c17adb28a8da10257e4aa6226fce1b5443de0885dc652320ada13e0f78d35abb7a5735ce61b9520cc3c84ea49208187a42af6bfbd0be67a0c2b050d88e6a85868d6386a1bd4712c126a1581f4486c7d7b7ecf55eb80ac6164f2e9741ed11d346653c916fc38dfc476a2eb2eb2f1cba5ba4e49bd3502b5cb1375a436a6e7879aa1d043d4535d2855c6c42c16235ce40be2ea8ef9a713b012740bee8aea8eaaeeb9fadb5b3dba8d672b125c77249dc82937fb9dd90642dc3fa363a952b9b5eb5e5bb795a283255d021c008eda2cb39afc1199fb1c65444f23fb1ee5caf4338fb081a655f60ba3756c258199f34613b3cc80cefebffdeb08f49bec61d918c731acf61817aaec494cedd03613369a2efa579b9e73b43eabea846dbd6e072f16a34987e22fcae3455e7f0445fb1e37351bbe60adec3e6c566867c84b59ee877ce466362a95d48ddd0b0aedb29c8b2ffbd4bba96e042e9ca86457ab631cc72fa66c333559ebd930b31477c07e000199dcf3e45ce14b0b3d697dad17ba8ace41dfda2655b3f88500c7c4d60a973837ac9dcae406b6148dd34ff73570ec488aab5a2c577f4603242839fe45f9cd1a361774dc484621b9b572537adf344075894b3e8f52c83097946b7882cc52f22b8664e0ec1985fcb52c66c97b50a0fa6faeb2d02f3c876e85845134022b75f11865081520f39e05ea0797cfbe40512f2a7e04f9c9b02cec2a5e3642b7bac78c0c4cdba8af050c852045c259a61e6da3f97827a553abd25af66c2d5ddf9702429f2998cbb81a56a4dec2ab2eda538f429c8f2fc721eb9ed19bdab8c17c083ca6174014db6fcb2c07d116962c48c266225bafa11f18d34785a505f7cd5900f772f758c4be932ddba7e36e136c41e7d775f0a708af37f97c9b2cd647306d8ba31ad7e7dc836bf2b2bdc6058c44ab905dab0c84f1eb3808a6fe9e88d9ed2edc221b4341a20d8bdc96b5907530a3e180339ea33cc5ecc4d15c90239003ede24a622921f0d905935651ef195a210a2424397ff290d4b5bc45b3ac084ab389b7a9b9dfb56b039907e03435c4ecb23601968a87482a695c5ac9c53c6e69e284a7e7460d71316831b191c562937a8a11ca9604625eae4386d3dea909eb90f0ba61ade22018ec0b418a24caf3ccf8a90d73d4537d3e2fcc0829e34d60094798cfef49392fe8edef3d76a9178223fb9d4aecd5ddefec9258f1d262fe2e5747df3c1e47f1cd94d5c9378e6040166a3d632c4f545985bcfd8a05d4ba2f58de3d591caa9916c5c14e3ef4881f7ceb67c9a0b33fe416476840f059ab5fa82237960104565a937131b8acdb211294a46ee0e4cf54e5cd66579539932876f417babe310e0d054097246e981bae0fe465b3144a20ab8375e8935aef1a6e071ee161ebec9bc7c42107f040dc67271466e9accfc486b5c8a3f43c4c65e86b5d998be8ff04451ff5bc9321d00d5116a12a03deb96a553293bf3c55cf96d8fe3197e48284f71cf1776a23179e295b5d7345b9942fdd491b9f86582fc0d002509f2617722f3c77cf32c25a351b61aa2ab9c6d7826d91119865bace1c3189e196cd001985f3cdc05dfba3d9a9c548b9ba14d11da564f66d83825745f1993bb52f7b74c250998f1e618303bfb26ad7530347e8dc6121e5f1dc18423e700612676cc35d920e1d53c91b4785d055b2161a9e9226e617126599a206d8166298c78f44ee1f2365563c496a10e521be2b4f2735f06489a79d3311cad04b8d64c607c6f4d0df270ce0e0d7c4251ab13dbeac5894c8c0ba8914588c341b61efb630b08fd584e0bd1df85d5adfc69e4da144a0b01f015a51de269b66c2d0d7f25a55d2cb4a949e7d2a1f898343b7391c8ad1a58c500fe2da5e53b6d1fd5d51dc7b42c220f6c5aed43ce8e04e16096d90589e1ad5f3169d34fb6030f97089c3149aba1bb8534614a5c84d98dd86cc6bcc7109cd717d8e8735e736f0a312ed2b49affe8694fdddcebc9deb12244daebe3c22a6a8d7bee091be0a8df3f8d7d3e275cd4ab30f6499f3054d6faff237a972945b7849d476913f42b664d810297e26f8b71e30f817fbd8fbd01370a262ce4f6a942c42ea1d0131a8bb2da1c796253ba907992115671948b16dca45cec3dd73a4a8865569dbb4872288292249f00829614142286ee6ce3c87d6640c8091a39eca1625d0cc3b4881b9b0f5b432e7465b47110d714042b457062328ff6808ee8c5875207f0cb05c3b96167c242da2682f3cff8ec99846c719f379436c828f79d9c1e084d81e959fa834c3c036c3f96714986c7a04c969aa5594207d82a577b1e30be4224b4775908f441b278616b236cf3eedd4f4aed98e92e1cbc6c017a2c87080cb53a76d01f9d943d5c9ee69286d04b10337550231b0e080007a1bf53c00f03dc97e4227898514d7468fec936c07dfac131af1c22f23d194aa92f8a49074ba9639922b399058d42bd061b43ca83dd606a11b5e98bb6e454b08a9488dc01302fb09b23f2c600c7e05ce971e4a3b2379d1c3da4a30acc6ded0e5742aeb463ab46239a49069f5c93174937395a51060f6bea272b45de6a2986f566e0478a1e03d04848118160e32d8358ca06abe9325cc87324a7dadba10fd8b8fc81561ccb58da59b017b70f1434a3d25743fd04e1fc1fc2428d7335cd625ec558bf6b99dd555c1416a164210c8f0b1be9ec120e04809d1e503daa505027415ed8aee8bdea3f3503a6a2280b5fa19f54d3e70b4ce12dff9de6eef47a4889bdf6e0ed0daa78439ee756260c8e9abe5f455bb6120b15ba19c64f53078c5d5394f10e40e9e39136e6cdcd4342c87ff285386dc144edb080b43c1adf7b685bd63d7da9b338a5432e76dfeb816320e3640704f5742b0ac3c79a23d94e68aab54270449d48d17fb941f844ba20146eedbaced7a989a87c3053a9e0a58262c92e91f63248c0587fc48cddb8230f6ac928dc13a3ffbe8f930677b2509f6828a16f449b1512ff02f992695a54c1743c178af565430fcf37b701ce2788921d5657fe945c5f716d503d516510db6ff6f964dbf16d088b8200e172297d02ca279d1bd3ee85a04863230c550f6f528b4da29d2e12534f1e585cfcc1d82c93c630452c3307c429a121598cd274b6dc0f00ec686bc04e25e462c0d8904351631a4bbee2482d2721830daad8861fd72b4947554802265146165490d3d1da5087c43ceca58d4cd42f73d90149f3e884425c85cd10cc472236e9a52c9f1938dc1da54122bb407d5938e58ddfb71584fe2028802c551b7afe3c2efeba4ef313fd0d877e7d03905a9ff35baa604bd6256ea86371ed0fecdc6bcb089d89ca95ac444325e04e6516954edfa988162d114c7dee50035c4cc9771076ae2d52a846cce894a42863aee3411470240b947735446a7fab09bbfeeee574576534b15a7445eab40b324702fbe3743145d602caf4a490a143969e4a212ded674ff11aaf0208c89d103059798327a2f22e8708c6021432ae5ac8823b1ac1650752bd04ff916d63017638970eff9a847e266553eecffbb581fca2911356ab69f76095ef6ff410b3e4c4f0089a1e9a1e904fb9554e9fc7b49c5bb8628d8faca2c35ded6be9d784c5c9ecb3b5bacca684e819cb682d5e5aa7dfee8044a25b87b57879ec6aa363329eb9befa7e5bba779047c79ed8e28f8cb3440da329c5da923be342e9c48f99da92484086508e358622fa3884001e03b9def89c5f37dd97e7bf6bea338cc4ecff765d2303adea3f59fe003f55c994df484168d80e2af3457aa8a3a181aa48f20d691e13d0d4704f2f2891e693ae4b5d2ba3579058c1c751b34ea06cbb3a201486b6fb87193dbdbe31af5d63401ee09745a5177221d0bc85b1be72cd110a2db2b31e1d48878164bc451b23804e1de6897f56b2a1ef5370a1dc7693d5d63c2e909ddb30c7f44d5c4b824deb4249497872a2e109a285e80b33389e334c0fe2d555e4edd32d830941c48cfdcb939132584cc440de687216b6ec51acc3b5b323c1e4f2d8119e9764187b81dc0d7124ceb2168ee67209fdc0cc4252d3ead84e1847dfb030ad8a72f7ae2b01b35b120c56cf0d912acc455120b323ce3c2190de9ffc31e78811aa1a8ab1832e5ec9f1bf4ed00ef0a27cb210eeb2be193df71dcc8489540b6832c8d6cf436ead0e3de0d5868ec5e0fb1730e6abcdf329a71be45f602e776838ae301f075af2dfb5699d4eb98779d8c8701eb1b95f2bede358915dae2f7c7c2773d9e858c69ebdda488a38e59bd6118bffe2f51451d37d974f2a4205001951784381b0ca281582f1bc438f0104673d5a73958d5ea345cced6072b5ae7d999b7604228b95a04ca0be1c2d0cc7c9d80334ee6ffa82760a3fb7564b0019d48ebc62029c19da032ea27e9ef0069bcfb3e8f4f8167eee00579d1e8a1fc640b4a9c4228fa05bb164d4f7e3ad0300b9cdc7007b00d93865d91999845dd73737b75070aa8decf6733b30f140fabdcd597e83e856bde81ebc97b73f8689d88d98bb6c37c89d544ada8d66aea9af9307776f819f06b51c0100e5fc34ef21f5268d7b4ecf183cde8ad24b5ec91f437e0b22f93273d06bc0d639485e3dc8e3ec202c79ee11296292eb39b5254a0ee26aab4060f80d38470f915cea014173648f86553b972ad0525206ae117391f89cb7a1a2127088503a7808fa9bf5b8ef33d08bdd45530f03c0ea29dcd091416b70120d736b7949ff03c11a549ba72e2f258aa3e02b603028b7ff997ecde832164a496d4d8252ac6247d7ec4964cc1ea2857aec72fdfd1f73d7ab34be3036b78f8f5d1461e1f9ada3e89b0fbca87056cb82301adb87239587103001d0e327614cf422597053ba92d076b158c7d80c16a132c15b00f3521cf07bd4967e3b672dc81bae1fbe07b2c0773872d70fdee3cc86f8b3b8551d7aa866181a5334c47b221e2336a3462b4b05ba0cdbed0e7fe539307b0359555a6203d3880dad3c0cfd0bea024cb190b22be1ed7594bbaa90102291537399b1c0aa24db8cae75f635f7ebf3ab2557e4059fd97aa51461ce17a0a23b2c72fe37b9f491f33ad1b82c00c7de1e50ab0cc7fc2e17c572e19a80c9ec492fe564c30f5bbe5190f9963945cca0425a0135a30b3cba6549d6b9d878aafc130a38490d42714913fe87030903c811d46a6e251a0ce36da72e03590067e5f4127960c6e56714ae755a1009f8721c9671f4dded49f236a97081a30f8b36db6fe47fd4dc72b15b1207919e46436ece615150924d82891b4f5b315c6cb6b964c89b598421e6aaad03bf23dc152959137ca2eb4bb1484dbdf4fe1a91a3ab9b5b2f2cadec65ee018e373c519ce53ac1a48d7d070291457ffaa6c2dfa2394a7d78741ce7e26adf5e727bd9430eecb1b8ec2750c9620706db72f484c7efa970180ee6baf112261900a16654461a1644aad9130ca4e48497d8d0b7b90d38619a35bc40f348bba31e0bc6ba57ba960b70a2ac84e2c727020397df708f7e3fb98c5d12965045d262735c537714990895c73203e054e9e47d4e65ef2728898f84851ad217eb5add47fc44bf4cdd857c1268b279392f3049151bc5e3b8545c243030147293b4759d04b2809b5eaa319c5d8247b4771fdaa018154c2eedaa300a358ae1b727d4637e6adc463c943083d5ac96c8b26e978c055462bd3402c0a18bb4a708dd08a2b77c8b3ce6a08362431b437d67943039c639cb8a8afd306ddac74c2c1005ad3e988aa4ab34e4e07adad568f0db16169d7b35261f184554ee15616fc5a79d6811dbdbea80bcabf25c0ca7d975a4b634429f445434f6cc598288e2e59767e8de4cd450ffee6a4f9af8f1daa2430757d2d2ef7d233caaee0435601efb844be59e53d765f0cf7c434912f40def84e52682db40a95252a80d6582eadc461e1189c2302b8e93858fcf7759905ef7829ba2c90028238a9257da3ca82a3773194ba41a19ebe8705df43d24ed042836ba837c64546a1d1c437238cee6a7b9f2b2ab63dc6ecc3a080572622c33d96d1a43f6984b27e27f04e71fa0ac47ca853d615d8cb0d4f088f9a207146a1c0100953ec7d8aa7681aee18f030dea227a06ebdc61e2ee66246476beda482fef0bdc851892fa670e9b92cc181d0f99c96507933b7e427b46aa0b79550dd8964533a67a86c9ed0e426716a8d2d3a65e3ed62835596cee7bf1313dd88c0d9f6194d28ed829665c1c56aa5a1e55674c1330e00fc2923670ef106a9e6299b45f3f5d3bbf7bc28eac39f79c6e6e602a5e248fb66241ee2cf55b224b3d49bc01f50e690b2c232e5b15dca76dc11595b421c3449e9502e50152647d0bfac762aa13ab34f7cb0d78a9439f3482b05d56e57b200369c2029e8587301cf9f274cd8af39f869c19067f46835b3db63e4e2e2b81ea40eb749ff7dfad7a9e372d55d6d4e0d0195bbf4ae4236e035927c9fb92c6f23b742da6f815649b594169331136ac437beb34e9bcb56e1408cf2041143b9d7d972b92b4b3d04d12fcc982ed3f0ed931ea310c2d7ede085e9cff3a7c72b3e6588e6d823d4bbe05a6904775c14c8ccc106008e26450cdce8dc76db2d408111657dd1f9ae9c4d5ed51b7f1f87444ab232449c3a86ee7a2332ba058709a2b873a320b786dac7e6030b0dc7f273332e240ba7dbda5db8f6ac5a0493c00ea7b7c39d95afa25420ffb2518be5252629197262d57c9a3725b6ed0e533ee4fc10254ee8daaf60908c7b834cc07f6f26641dc1f977080457c834aee7aa973ffdc81484646a9ac4f0cffc30b74e72839dd6671ed86d9290be3ee87405307814d253533223632cfecd0b419d754a2fcdb7b0c596415271e7cd0ab5cd561d23d47615b75ea1a16b36e2f242ed79cdf91c036aa0bd44007cdf00f7683559204a3237f6f3bef5d3e7780919069044435afab0b5c990d49c4bea61e8558a3897953c6451a63a1aa8fdbd821b3bf49dfc0b04c992e1464cdf5f675b0628b58063fefc6c8c6fcd31ea48cccab5b6e185bab7f5bb6854cce5445923f964c3e9f55c10599969bee4a1e2fbae97ec081af902f8d565f553872c0a8dc07e775312315492508b756298a93a63334016c8ab06d6eac167101adc535ebecd670b9dc6702d227e09789fdf5039c9ae7a3a25cbd63d6a13fbcf51e99e4a3f0f4daa10ac34673b13f9514cf2917c7f2a2cbcd0ec114714c43e6890f097dbb823851c316c06eba86c704f7db0920e4fec07495b5ddf9d59f5bc65087e38e1d2e8766a4ae04fc072ba48a5cf2683560bbbee04ea68adbfa4065acdb691fd79d570854c781e0a74246d0af60c3a0c78b2998dfa907e66a5c19aafae89f7552718353910f6fe60fd6f3e5bc44330a0ab9f5d427563fda55640374e2c6559f711c1b00fd50a3853ca248e3f8696969ce1989deca9bbd6afd0f051c8e622f7bd4a58fcc0d90385945855cbd8ee9ba5506a34a20dd926afee37edcf299745adb76f33427eb14bf16a23f005a3113c1e427df9eb734b3e352d713825f3d092f53f94add1f0e955f1dc1380b118aa120f2af8ae17305f495e6296db50bff44f2bb4b01299c24a7d1cdfdaf19d4ff72ec32613db5cf0601f5aaca7aa9671eade0ee1eda7c658035b01a19467136d4a7c7eaa2d5815398ad23ab1ff480b95034ea4a6e0fd4186849e6c65b3e38fb904638070afd6bb08f58ecd08bb97b8985e1477008dc4a55a8c902543969512a0034d1f5d3a89370dea8f67cadc5bbc89dc426dd9fe8cdcc14a652a5416c4eac1bbb14baa9d9a05f5524c583455eaca3e18bb06aabce0e0d48fe669e56fa7c5e1315d9979839b93daa86ffb8f131b50a94cc4caa2583d78377ea1b25338cb2620038f1cbc4353a32e77409cf57d3c0712c93eb78543e6912d251471cbe0e7c85caebfc0c7720f5fc257407322fd3d3a525ff0ac130514c7563d46d177deca23853c716e86aa08382409994227c52a008c5b7b5e993cafb437f8e39e8ab91ee10a7aebfd1cb1ce471c3abfc1a7f993dcd0e1e3d4cb6b6e061c6324a0fb79827b5390bc8731fab618e1831ac98d08758c000f1190b6019fa19673ee5f3dd6a985abe83649ae6a0c937c0b3c8b70842675cf1a32e76dd234b351bbe81f2f6c036591002a8b43f5916ef8054aa76661ed2e12961afa06fce317e2d95d68670e59504939545502daf023de9ba3b2226990226255ecd56530b156b549d3a54ad1e35761f44e2fa953764f28a9970f8882cc546d55565971a47d3489ef254f1ca64d7b850cbfb76e901d1ae7f8c4258b093f9206f4a1c3bf97c43eeb51a1adf589596a416dd53fbdd4c1a1fc1728eaf8ec52b3291fd92db35740d7a9517ac797d4969ead38c88ddd42ef348962034f04c05af50319acfc1f4e5f475a98932550f083701f10664561928f305d0e7427127c3aaf3749cd3bba691b889a0cfee2ea5383b5e25e4c5c48b88c6d6e34c65e506af7d791653e93f17c09bf1a3fe5800f31de461fe786c0591509eec1a5ccdb16793c568583b8d31cfea5467aaf5535db42c44735a69b228c55011e46026a239bb7867c6f455572e44e68f1476b183033c92da8d9daa7177a58894c40e586491dbc1bee82daa9b3b136ea004b8dba29de5b3645abb2d25bf7966cab13b45e7e8f2c5470efbbb3d2a0620ad877d2d3d5f5c71602eadc26a20ef3458324c44d96b1cbe1e9fc6e5023be8e2e1b537a8086817791c6cff37f08240f6497cdc45cd7224acfa8058fbd96d9b944a14eddbda0a05e7c2216345337485a45cd99f7119efe1706759877ed15337cd6be4576489c238d97b08f9ccb80981585e97ce47439ac3999b0e9bcbd492aefec4adf5054dc5d2d52eb0f48e94f4a82a1cff3646b406ae031820c7c12f711624f44a6f215c27288fe04eaa6ff72d214fc83eb66c35188e0a95c7fe84c6384f5d485ccc5988d4de3f6047d6b7e0f58e74f1c9dcfe8d1f4837ce8f0f1d5da3316032e4826c1fd3cc37a6b10de0b925d2c579233df3624e105c90ece8d4af8172d42791cd85e2bc45c886672dbc32219e04324a037b0d966e8f7565c658efc04646557d324409719103599db50d31baf1337b19244429446519dc8eedca28a93330a636c1f5dac8a0ccd0cbe93a6d610f884662fef18a7a2006b358c441e40937268b29b1bd4e76d672c4b14198016086c6dc139811cdbf6b7092ee52ad5adce33a53089441f71ab3ba11040adbd6df121696f883f79fd4b17efc9d058eab1d53aed32596c04bc77433603cc831ddf001ece2a1b7729b0ac7d4506a6edba76310daa2a7ee47526ef1ca53acafe1132f5f223672590e55be0b9f74f5d8cb643630373a937421e30fc1f47e79a01aa18b7066e52ae3eee5361a91642be299fd64c34e91c5c77044f6ccbfb3331b091bad5f93ed51db44b86370fa700971facdbca808a73ce004bda27731f11c488608a4f315b02374e266e3a7f2f45dd7176691b1855ee164fcafa0b53db9308d0fcf3be951aa93d8532f1c7d52abb5342392ffa1f23b8e4a774cfd985a2d5a13e05c10e0974a0cc14b74ece62412530d0f71b15e63cc201f4d2ff75689b8f38663ea357738f7980c3c78b77efb40658754619faf09aa33258fe9c9684ca0f6b16d50fc5ff53dfa1ea3c2a5b9763ed275e9dd733a4a36e6aecb8cee51fbb4e85d4390242c8506f5864ec2d3bef527b752cfe66d4adf50ad9b993e870804ccf617af9d12d63117766d5a0558500f2c205b7eefdfc4ad52584d921b2b25fb5d895158edf3ef7eb526b097b9c7476eb9e83843244c63fbef7cffa6c92fdca8a34091ed03470e290dcd062adc018594d1106bf164d3f9bbfe2b630495be1b04a8eab12964795f450144cdaa92f04bdf319d1bf23fcb2132fe4c8e3c228dfa0439e52db1fdaa1eb00aaad78d5cad0640f7956b9e749a366b10cb159a962c7920b8021192d2304d342387d742fa6e8afdda5bb41c1446da403761d5ad704d728e38fc1e9bf13bf82a2cf128c11e7e3b50513364db69b6b86a972c51b7461270517493d7c095f11cf1769d040932c46049e6dc4b10e56106068351de85218655390b24d97d2b1b9f8cce162a1a0667741a134bc319e1afdcb31062d91926ccbeee24b372277b7d0b8e52bdf5a8e72b526472e1c6a9f9d61a9357fa66a15cc5a2aa9d0847513b2bbedbda54c01990f7c0fa90d312b47a56288c0d749b852dfc5744e3857c9957a245c20eabf0da8885ea6b8c029a014f4250585aae5e7775d4b0c51f75f8c2909172a86e689ab8b71d7e9f3fe8be1b8d594d40431d0c2711c97a2947b17ef5d6829f5d4c5c5e5699eb8cc37514a53f4534eb817ea924a79cfb5b850fa344cd03041c3040d13d465964cd025b954305dd7d14401d3751f0c8d131d0d141a265ebe8381a14982799a2730ddd344f1d2cde83a9aa4ee5f689c8081791fe88c0e26d5d140316d530c26986e45345f5e15f3f2344cd03041c3040d132fb32405905381dccfd2f4e9ee3ffd274dd213ff491385cf49f3c489e9a7d3cf96140d2ae3e0369d56444980a00d55490c500b17f75dd229a50053ca648a499938a022eaa28053c0295d14704a17858aaae8f49e8b089c92fa29a014e014e007c02a6009402ba84e0ae4deb4a27982a2493aad689800a300a38052c0286014a09489f240290a9832850d6a753a4dd14599828a6a4691d24da093a29b32050d13344e9cba285487089c024e01a5e8a274517452d030715ad13ca149eaa2d03061025744db049ee6e90af4344b2f314544df778f84f7792ddeb7705dea03bfd2c9b47a317d8be95b5a4cdf52847a77995c5a5a66c678e14c2ea647a55afee5e55ddee5a5e5e5c5a5e43dd7b222d249107129137590ca802ba2afe471d4857e5238e1cac1e5566e80c575832bae0985cbadd8200b171657c7bdc9537d6afecbfc97d4cbfc974f155344547af09170cdd2a752df34fdfc7e53d74b09fc1351e7321d99335b983b1025915acdf8971822952b09239070a57e668cd4ab5ede07ee657e4c91cbbb2bf592c49c19e3e567ac7ce05231d309e7521121e12a4abdcb7b0b12977f791fa86ac68c39c3051a0fb3229af1a95e6838373303667e0c44dfa77af979faef5d623a077f40b94e2ba2d29b64a00f72585ee837041b7ce08a115c392eb772a58acb731cc7ad3a9a02b9f7529113235cee8473f9e7229aabee933082fecc1833643825cac189a218f7d5cc183364cc1d887278d239e15cf348f75e7afaa00d26e09271b9952b6280600ce8420255e9f4255a445744d3d4f274d5b98c1c6a452473c5857a97877141b93c4ab532b9a05a52dfaac8c6a903a340390ea22fcb6c820b8ca97251d42a05a69c48b9a4625c400da888be2bdc0cf720a8bac2b5b82b03574c54a7e5c1d40fb07c46f8c2a03a2ee0730fa6563364d09612387fe85ca6b9fab6e8623e2d623e2f3e2dbe2da88ee705d5f9668bf7799172a2c573c2955146c9450ad5f7fe699101d50ce3b926806270644c1751e979546e65065a107d57be2b4f5cdc7f5f589981152eeeb9267064cc6c61da9466c89836483c97136eae8892e8e67c13b822d24984313fd4160318c38a155f745074e0d4e5022e1770b90035b99cea10cdf0755dc9eb606cccf038401c36b80ea42e9349d5994c2e97a1b999f44fb3a31c0e6f4da2eed4cdcf041cc7712100eabc2ea87cf3c6f33cef09cf2babc89202025001011d2481c793e2f23cefe3380ec6ed943ccff33cef8603f2e20aee8a8bcbad74914516cf0b2c9ee7815d4881c23541052e3280627265a85412c1163cd0a284f202688b2b805c8949a954e2420930012e98f2b9dc0a17130072c1169d570262726588eb388ee34a1e181eec0a0d8b28e3822c5f072589133cc00016a0a20a094c808407a4000a07bb42c3227a0e38c157da624ac9000d088177c5f33cf0fb3ccf3361d982072e2219172f6cd8e06668d0a0325850dc7c4a6f6e646470e008b2c1712a150852ba7231818a46d7c2adba128e1956fef489f82a0997e9c1d537299d143475ef7d1228944fcaf98b0c4568d0efded4e243bf3bb570f4bbef563e89b4f87465b8501ced502feefa5a864c7ae23a6f7e6e32b9d0a7a626a0bce7660a00be785eca542ad1e73af09b9d8b68ba4cdfe7fd675a955e0620e8733f04d25501c055e7a2efada874315c0c07468b93590691169f16aff4df7f2597057034e5c5701cd7751de7799ec7954aa55289fbbeeffb3e2ec6f33ccff3bc95cb0282401eee51272adc6abab72252f2bc20e729c345639ca7739e2466d7f284ba8c03317d66fef41957bd785e0b91928bafe89c5b4039912e3ed00515ee8a49e7dce20a5c380172a1c49c2577cff382765bcc394b1f1630388ee33ed005637c593ccff340531428dff77da6d316536c31c56432994ea70f05657251858b0cb86c50993927a55b68c171a18563995c34818b30c0e0028c3927a5940b034805f2402502cff34aa512d8a53e5f813c5011a940104cd93071595cf3411ea888c0167781a2ea56df398d179f3e552a1818181faa6e86775dd775d3e7fc15fd6f05c258f1e2d292429d4ce057f23a28a60d35d030830c31dcb001c30b3568b8300346f5e2d292429d4c9f088ca86ca0800c2f8b2628a5a512d83d4002595429954a2593a9336191c51756b250422a8b325a524e484941075270054c0ab49891021ca4600829a8820b2eb8e0428d1a28680298822dd4a851a3c60b2f64b14514186a68c086098b1b2e2e8821061bc800c384195440060d371a50830d10d850a38b7ff141cc1256a9196365055a00404b141ca91973436ac66c712566e5f2e20094cb12597c40e51f78da00195841c10f408e072ecc8051bdb8b4a450271378052c594a1e0aa8701d47298d02a44169c9ebb0cc25ac4cd18504a6642104275081278a520c6060bc075d50210b0d90c00a1660010f950114eee9a493d249e9a474524a29a594524a29a594524a29a594524a29a594524a29a594524a29a594524a29a594524a29a574d249e9a474523a29a594524a29a594524a29a594524a29a594524a29a594524a29a594524a29a5944e3a299d944e4a27a594524a29a594524a29a594524a29a594524a29a594524a29a574d249e9a474523a29a594524a29a594524a29a594524a29a594524ae9a493d249e9a474524a29a594524a29a594524a29a574d249e9a474523a29a594524a29a5944e3a299d944e4a27a574d249e9a474523a29a594524a29a594524a29a594524a29a594524a29a594524a29a594524a29a594524a29a594524a29a594524ae97c1fe8d875506a688042f9503937868b524a33c0711cc7711c4733c0d10c701cc771ff7d1950812008a25ce8cf775757e3c670d155d15c25d14dfa8339e79c73ce39e79c5ed75d518249e38a29515cb105a5945e0186952b66f07d573c01af0803044d5618e10a314ea613161fc0620a1ba92550a7931562d8c0220b540a95c2020c2e7030ad602185fe8c992e1c58c0008542a152292cc4706111864b16a896315252545240d4cce2a5886ca45ccf5db9c2ed805fe5fb548c29e5a202e5793e2a26940be476b82bfe55415d31b99ee34e555c445d1205575c185f155447a5f4a7980e0be8fab8aeb4e2c0982930e54a723900baaed40494e320a291e442c59c54dcca1f1543795450b81d2f41812203aaba29288f531e148a8be992b81d104ca253ac88c0120726b9e8278153509ed3ea058c1ea868a782625a812b95d7ad52349240ea1581c6d7996ebaef3b7da70ffcbeeffb4c5ef77d26effb3aaffb4a5ed7759fd77d9ed775ddd77d5e77fabaeef3b8ef3b3de1ebbeee3b7d27130d4a37b0f8382b9698d175dcc77d1cf74d008603c2c2e4ca10938e8be2ebbacf0a2a408f964aa5ef014c78efebbeeefbb8284ca01526f8be899465835664c184d20a167859ace8c2650855b00084954aa52aaca0bcaed4755d57c517a6aed4954aa552154030715da9ebba0efcb6b0c22b512657863ccff3bc2ac6f0b0608189649ca4a84289120754850140ee0a9009ace209ef9b401e081a01fcaa9082bb42730568a88a2a2e2a584a0e98ee339698744e9809508ed20770518054741c9785152ce8bc6f4a154a1880524a63aa90823e61ce39e79c200b389495ee8b2a80e0b24165baaeeb4aa530b6b0e2fbbe5945145d154f5431c61349b02ba230711cc741b139000a9c50022be000085f740cb8a28a155d984a6ec71484840b5040081e28811274c0c32dc0c57164b838aec47532576c61e23e99ae3b7d333879a55d3a75a5120e9d1746ca8365a16111b520c0e75d21864bd795bb042ef14202254a6e0786c512a98f8381ab2c342c228deba0c0628a2b0065e14281b030b932c4c4cb010faa50ea4a9e050b18a026ec0a0d8b48eba88cab543a4012570c81021a88420515337082278aabf42a05b84a56aaa0e22aadc0b2844518a6aec4928500a5528d92d7d12c9c151438e1025d6e05054f40cec60a402d7c8c2a338c29140c222e4a10782b6200461c818427316787800c809c8dae7b8f7e2617f71afa393540b9531b949371b94b41390e4ea787ed6df6d7e8d721ff8c93c7d1513e11e8d2f1cee127025d2df28954ae1690d5e378e776723c0e32e31ba97d008abc0351f4424f93b89d989f36d020c3d3c9f3ae203d3fb5e07662f869e3051a3fb1703b447e1281ae9ff79ffb442a17ed89405792f724b317650f4e01bc0b3f5f5afeb99dd409e47684f8d98408d85311a826a852d920bad141a232f407e032d4be4fd0684504aa6c2b22958dbd22b2f17a45f432794524e3a2f49dac7a70e58a9b02e21511484e714db0b62202c71591ca45a314ad9256547557442a9a6ab62252d197adbe1d1f39374f9303158346e1ca95128f8da1d2c3d3b81d8a8586c1cdd009404026c70d0f0028138bc76363a8f8f0306e874be2a6e066a470990bcc31386a055785bb32c79863743c36868a0f7785b3c2c920e6a98d1a9ee8a38c11c5c5f1d8182a415fa4e47688c4f0f455307051e0c4983285f2d8182a413c4df5f481b89d1913e820e032555c20b251a5cae4b13154847818b7d32571339dcbccefa2c8d850a9e897b23154625f84a307f001b8ce74c265b89dd453930b95ee6d8cc945b1703b3b9ef278fa340bb7b3f3f4e918dc8e8fa7cf25713b3bfc8fe7e1e97352b89d1ede079e17f2f4392bb89d214f9fd382db21f2f4392fb81d9fffe1e991a7489e3e1706b703f4f4b92cdc4ed0d3e7c6e076869e7e97c4ed2879fa1d146e67c95326dc4e104fdf41958d9934a1cc28538ab822b211c6a8b899f9b118909b99b0159183e19a44ac88fc8a6b365911b917025811f9189ec5c348b222722c422ba26905102ba259e5674534a718590560556445044bcf8a885a1164e55a01591151307e78d15a11512d5cb3c74a6745c445d9b122e2927056372b226e4acd8a889bc2359f66662593634544c370713338560058c5c4383763c38a8842716e8686d50cab186ec4383763634534bd7071332fac6ac44c305e564433ca942273d363764e60ae222e86ae1c0049b8c04d3a270562056592e1eeeeeeeeeeeeeeeeeeeeeef3fba2cc392708523016c0711c6732d12951789ee79d4e6138e0fbbe0f859a55a4984c26532a354604502814aaa565022db365b6b4b8b4cc7717b772022350975b7141054e20068d0ba05a8a3035a082e2099e8eae40074be0c00a29b460e50a0fed9e7051fa34e80eaad3a528e89a62032eae092e2e2e1fa80fd40506060e851a541142166cf00515b6a0002702554fd0c085fec004c51192502557348a248133294989a453927b5292d324e792fc0049de4413ee2737b93b14770424b929294989a42692dc939210e0494bf82ca38c32cac032d2c78a35cfca245b5723775fd2a7883b56f20ee9b98d65e99a91376fa156eb55ea1dd6b28683b45aa115710844eb3a86af6c4ba45a2b0af1181bebc6fb85546b407e90f8ee120952ad855793376f24fbb2bac680e4e8b0fdc81608a9d6b205d2add6ec80bb13e12a9829ee3bb439e3f03726dfe6fafae8f3cbee8b7687b644b2afefbfa50dfd0eb057c62fd8d3f63d7ad1d2f425afec797466e97d6b77acd9ad6fee1407779f4e6f589b8784fad65a2d4dda22bc5b2dad6dbb6e211b9275ac3c9b36bb76494c88addd4dda826e19ef2a92f5c858b32d918cb596f18fd6750c420b772df515a26f15485b01e01f9d59345d6936363776472cb6e3c60627a7deece80877883a74ece87163776aecae79eb984ddbe86dc345a1a58536fbce6cf02cd7906563494cdae86c75121b9aaeb4566b675c9636fdb2b59a65aabc33a6e9c778d374a57dcbea6c8d6c7ebb6f3e12abcdd6ca5efa564bcf9204f3aff679e79f7b30f3f397e9bd305d2698d3ed38174557c34741d0ebb8399dfa04a2eb61fab783e7d4e79c1c2d32e7572a824e3a3ffa42d09ca5f9399d2d2c8e964a32a79f1da55d94d9cd494f930a749adc9b1de5ec9c44744e0a26a132d0494b1d9d4ca07396e80462c2302747411778dce7325f98b306c8cd29b344e7a4dc6bd2ee64da41531308383d1c5c0fa51d0ed7e34567564141807ae75403b3e3643a8f4ecebd064c224ca7ae52a97cfaec269d4f9820cd614eea51cacda963da4c70a628a5b41464e6a0b4a3f38663a16e8038cc961931d0074c8fde98dde4a65320faa7d939bd257fd84c00e7312e98eecd5617949ba5d97db365725228055bdcecc14d4abba72993ccf4e6fc6eba1e606e263d95403ae79cdf9cad49a90fb8d234d18e339a2b7ac4d54c138a4ef09bd4075a03a581a38173cee7cb2c513a5b3a15d7d11b94d2599a9d6c9a704c9447a7375d76e69c73ca4003504299e88c81a98f4e202638274767378b4c1aa80f3a0345d18f7a939b745214fdbac9799c8fc94d99699aa939e70eb3067ae2be097693ced99ab3f402a5313b3a3dd4e4680d93e328ed68377d503a63a0a7699a6047e79cad49033d7ddcecc06eceb9f3f3e588d3c19bdc34cdcec634995a282164a86102a09b9496e867a7aac60daac89c74d239678d7f5e7a9215cc2c4958fe434308e3cad00588d004a13a841b208680c581627ae0488660038b24260b0afc5c0023f9a944590270811aa630a4ce70e323c6864d8f21b87860a7b6e0d0b9c069ead4a9051e58caa8008f295bf01a2c59a88106cb149406b601acc3949b1c74781a28d480e553354c8161864f716108877950f8770470e7dcdd81b87b902f71ffc1dd655c95f281ebccaabb8aafd293d30d31489af95a38d3f7dd307d1ec7d5480d29f1b302654a27b04797a291fa0490da5c0bd7028241800824955ce867ea685a68e80182a4939294d8d1b8284177c8e025e966e9470b92783022048600b43b7546667690e405985eab5482763170353948d201a800355e780ac01151c20049374c4b5234229034040612d4a72a24c118a0fa4c5c8b57d41dc00925c00e86c3b141092b60c094830e9e80633cc085a23c1f603e1fdd0f56882a4bb8e0c99c869c7080d12e87cfc712575c80c8123678c2e6491608d8220965934980002d392fb38aa41b3a4a9c3e1fa513e8c2edf810e168380df994f04183105844869e212753919490f8438b245547a373fa7cb8d0523aa17a56446c20e90416a921d64492c7a9bc5902a274f27628e5e0ea016533e5008b944edf0d97202f35743f261868cca0240750e6270807254e20ebd3d1a263c707e84b755f0c5e8bd331a5ba1cefc367fa4e9d8df743d7c387e9c9c0c5782fdc98c090f32125093cbd60da51224ad244ed00653a1c1d8e5207927270e984783a783598707433bce070342c91c4b2999c8cabe9386f002b2218804919dc4200822b5a54094107a44040124720e922990d61443409828992244240460250a4d543870c0e3700e0bb2eb8e801c80dab186e7c536620032a1b00a2a787160d3552a8d216596041c51454a4c8c005a65020894c0e0944201604149ef0c20b78e2ca80ec70faa68022ca8e89076070608a960f1d1868a04ee037830c559ca0891591fc04c067484f0514700003ccc0c22305210041079258a26447c7068dce0657a6a004080f3aa6af64810a54e009243f4076c8919a59a058a057a0637459fe09340c3a040fcbec01dd01d5812907a92fa80d6816b488239a38401abc195a6e5018688d4903c6056f068599aace85a2bc13358120ed263767c95b5e3819381524750948ea8c9472904152d59480d14092e7a53e1c7aa04477019c0e8694141e282120a933627ae134830d02249904d005c1d580daa5143804ec513a713d728841126845128d264a9876b8043ce15a9e90124292574692978a410749a95d438224930d17faede0d9785140a981baf180253a27925e6254cfd5c0d8803660ca58c2d301ecf1fde05eb81fe0e66a3a233dc4944ea50f2471a8520c1d0d0a879b5daaa3390df174f804508aa1742a11a568a468986040d5f804c0696189520c5c95253c2f926e20ea6affba8186ae957a29c17493abe18274402d353efa2df9545ee983e15a5e0d975942715e97e2388e721f0772a6d30c1df725f966bc009d60bed237b9afdbd1d97413bcc1614942c9f0f04092cb079480297532804296e884b0c4eaf55ec61692c003306c70c58a17b69950195b80224a0f4f0f3cec60120a4fb0c9a17a013f218240f253060d58a0850d4fdc4879800f1110c20e6af082155411022a362c1c5e360eb0ed2774a64214b2fc20075f706182249020a249104c90fc101962430d30bc80852c501002102071c48b86193069c38b8b1082e0a4d69254c616ac50852642c0f002cc0e5ed0050b5650c50944f084020ef02242004b90fcf8d480065dcc2005528af8a00735a0c10bb858810a3620451305204014b2ec20072b50411623789264459f1e98962c47308210ac7081022c4ac001281260c5253e3d33302d35a081150a48008a27562422003e437a7668b9b4747e0423d4800630e80205589440041c5880029e0c11001f1e7668edecc0999901d37919473042106060a50b2e5080850838b00028149080274430c16b88263dd8b0c8c882911f5e5c8040c30c519c6882c9921b0c24a0891b1215a632b82d745af0b240b1007aa0eb00e500a53273280e773359a81a4ac3e9c0fd0b364c1ae80c5f0cdc0d6ac38361be607261c60c4ed5bdb4b8a85a68a46ea06638c19840b0f471a592e771d3dd5dc7dd63f093bbdfe0aacf88db31563779736963451c5ed25672d55783bb83aefa5e70771c5c55ca32f3daee5b4ce6df8a5793f7f5fd7d7f875baeb9d2c2afbf31f9fa7e4905aa1216eeeee2aad207dc613f232f6969473ff33cfc78191e7e3c7967366684bba35c5572e20e7b197e7d7fdf6243b0582c21dc1dc67dc2b83b005c55eae13ab3b44ddeaa520ca5ce45d2eefa5ae52acf08226957aef246e04d79da9e91767c19fecf5896ebd66f6764cd1e8457eacccab4b0666b3636bca37630887b0deee00f6f87d31bdc290e770a8089041f380fe473b68539f8f0d1c3c78e0f1d1f3c7cecf0a1c3478e0f1c1f373e7cf4e8d163a7874e0f1e3d76f4d0d123a7074e8f9b1e3e767aececece8ecf0d8d9b1a36327670767e766c7874e0f9d1d1d1d1d1e3a3b7474e8e4e8e0e8dce8f8e0d183c70e0f1d1e3c78ece0a183470e0f1c1e373c7cece8b1636787ce0e1e3b76ecd0b1236707ce8e9b1d3e74f4d0b1a34347070f1d3b74e8d091a30347c78d0e1f393d727672747278e4ecc8d191939383937393e303a707ce0e8e0e0e0f9c1d383a70727070706e707cdcf4b8d9b9d1b9e171b3e346c74dce0dcecdcd4decc6ddbabb0caee2ace0ae33ab66238738d1c89c648ef8237e00ff34279ad300defdc6dd63dcdd8693426796ce561caf2d6663330e9daedc698c3b7d77ef9cde80192308aec7dd53aee27c7039dcfd86ab38976fc160df3ad1c060dfda323bfe9f60339b36bbf97fcbec2803fb9668c75b65baf2c0030dc3dddf55d40bf7d777db62fffa5adafe9616491b8ebd0cffb6e147b222e72a6a82123c4d8e1cbfeb8bb628bc642ddda90df48819437cc0bdb56d478e70ce98c7dda9abe8127767b16ebbacf5904836c641db12d9a4ddfa6a1287a48f3bad21e39c7b6cc65b48b4bbb4e58c83686b54ad11f18ed588f4c978880ce30c445a227897b71cb65ada1add7d6b3797af9bccdad8b7a486abe614df772cf5c37685cd70d5dcee63d581c1557387bbd370d57ce7215b4d5e776f71f75cc4d09925e29a4d688d54471075e1ee2fb8caab9076fc1f6f632f8e364cd33ff3faca3c9215c9fbd608d76c7e95f548bbbbe74e6d54fe446756688d5e4735bbfb0cee9488bbdb70950be13ab3764d6613666d13e271ac36b75c73ec8e19e76c9fac2f5a32dbb6cd4fe2bbeb266dcd8e65edfebe35ef9f9177ef5acb58f6d59dd2e0eed3e90d773a833b95c19dc6e09d3bbd61824214946b9194e4726a82820750540c7d7f7a239e40791eaff4de1b610412f4b947627ef748981e7c37c208244c2b28cfb342a2f4e00acaf370ffad9028adbc15f7fe48942649a140e99e40e9564c1479df51ea75ded243b9190022f726e53aaff4b990be6f5a512a9538cff33cae6444e7ea3a6f4544bfb422a2fea51822235cf327f725cf09c721a15f44c54039c775dffdf4388eba265df9c07574a20005723b9489c944f7040a154e7a701531d1ada870d283cbb570713f9780fe312a10a8bae79e3e0eef07ca7110fde93d15431f35274fea0824e8975649f4e7cf18e741a11e447da6ee4d943ee91ef533e608f027057950314980314cf4c0c3bd29e60994c9c33d133df074ef2d431cea4f31ce934abde9f450268fe9511408e70167cc11a69fe0ea082a864c3fff88d353554a86ef7b7015714fe546bf948a719e53cc93d343791ed397629ea4666a95c4fdfcb97a720412dc9b5649dc9bdeb47a02e57952cfb504c17d2ae60824b83fad92b86f01821be29e42993ca60763a04c1ef04f314f98e881c7f45026cfe951b4a5470620ba4f7d10dc137049123ca9d511540c9d7efe11a6a7479c7ebe0fdcc91403c6304185931e5cdf4f1e1711a89c7819ae6f5544e5469fcaadfbf75a6400a27bfa432d4014355b80baf71620eedf4b62964cd08309f4c08928a0dcddfd9d87775ee9ebbc52e9fb40d054fa40d0643a9d50ee296f717949b5b8b8bcbca8543093725cd7795ea9f34aa5ef0341d3079a4ca7130a953aa152a9961617979716979717950a0666862a35615273c67481068dd4ace13144343c8688c663886cf88d186abcf0020c30d8b071e306a8ee1dc77fcf715f13be2c5f185e4389ba284e03c56be84749a552a8962ea6fb4d5d2da8185a90b47c8ae6098a2629958ac245bf058c426568479404ed022cbdad8ed9b458edd6e4d556ac38c7bee661da057bbcc91b5e9b71684924cfd2faa683481c8447b4da6eacc4d66a85375bd2ce444b2681e205455efebb8ae3a57d2b08495050cfeb25da20d18ee3fde1c8fe686dc3d02644440b221270ff8c73ee01eac1434888455af1d6df45b5f678ff9317c7ea1f61b248df27b1ae36e859a12df58b36d731b4e2df76b625cee5af7af0d07a95f57d1e3d84845eb45ae7b0449e658bb01179ebae227e9aae45444bda72f95b5b71c4325f5a5b54fb2346585aeb1afb96c6e1bf452b9fc49706b336d3f66b19e9e3225f767f469479abc73ae459b01c1d36d8ebfb30d863fda22d0f6d5d65f861b656c957684b0d7bd6d6787c1bb3d1f68b366ff23192dd240e6597b4b4fd30988dc81ebdecbed5b61adad8c366688a423cf2b45a4332309bb65986b7beba864fde9abe64a585b6f6796b6b64c7c7fb8e61cda6cdeef8fa088f63b5e26b3c7e78b7bee4ad65bbada8c7d1f5c3eed01a7d9da1e95aa4d51a2a6d96f9f09678ffd1b6b19f91b72ceb91676d7dc7870119fa01d396b6c56af3db9848da4ddecfd6c8926f43f2ea172d69fbdb58b3fbb67a8690fc3c2b5bb15a5aaee5633dd6a77996b6e16b6473c982d96d857e465e1b9bd9f7f1d639ca5a9379fdb4b21ea1c996b6ed0cefdfb672ac339abc32e15bdad663dd78e859427c721d6de1dde41d479bacac96d6b2b5fa13da5248579b43d2070f69d1dad0964261cd1ba9070fd91a0eb2475b95592124fed9a40d0791d9209c6d1024fef124e01e03dc5d089fe1420ea7d5aad6367ddf8af8c78a386cc114a106640897f95dbf358e57a6edac96afb25ada6b5bad5fdb86ad88c3d7b6fa656fde2fbdad46ba329bcbd738dea2176ddfa35751ae359bdd1d877ba90aee6ec4553c34b191c52a4e8f588df5c091ede8d811db91d51d310cabd5f1b1a3474c87ace2e4e8b076c7c70e9b706b5bb6a135f020c312497b1b73b58ff1d0167e18c19d95b1ecd625cffa5d7fb4e087155fdddd86ab7e48a13d39bbfa07927b5188c70feb0f2077a785dbca7ed0ecdfb716b3e9c7fb87b8531fb407ddd15982f250a283ab7680b9d3244e7bb0463856df9258fc5bb63627af2f6dcf2caa96145a44686d0006fbaf2fc36fdbb672dbf03fe12a1f64780f96c4b686354d48deb4cdd5740a425657ebd56af5bcedf1c6a5d6fbc69ebcd5bef6198445847bed0e899587e6d66a38bcc53e56c75b8df4cdd7d2f6df62395b99cd4f13fbadedaea32de20a89365b316332494622844c626d1e527305b219cb2ccf8cc47949b662462243b26d48c48d64378983903e1bff0411477b65fbf2903efbf26032099215499fd28633912b93d934e963c9d9150ab2f14fdd55c858c96c7711d247df2345b9d6b2dd7549916d43a26b112be2204af43d22565ba4e60ae45870f71d3e03a602dad6ee5058c7d206d56d8fe80a54730552e984ced29935de6db319efb6b55a3cb6f01989f3d1b65a676c8d8a301ebae2a275f23bd0742d82b7153730a3a5c5456bf78d275ba05d85b06cc65b7fb6a59017c9aaafb6a49d691c5ab13e69cbb7e20d13616f6d96cdb0f07e1b9295ccd608cf1eef2f6daf73ecfb347bcb5c32cf12edb6b7df3948d97dac1f8bb75aabbb8a758c5d4de252dbfcfabe109f0f2b2be3b1e2b7b44d0bab25f18ba3a5fd266db8e67a96c65fd6230df4a2cdf626569b47979de56a04e3212be220423626c91a44b44521366294adb6411bff6059b6b62459e4dbd8df6a6d6b1b91583f743d6b7663afefbf0cbf6dcdc84be6ba64571bdbb9da22da6a6db328bab228baee1e6d47f6ad5d2333f28a38247b449f6c2d90dd750b15657cb4ed8f15491be6610d01db56bf60423cde6f69610d5f577dff963769b5d5bf912c39debaad90cfb5dab6421bc9fe1c20bc91c167fc57880a740bafec666bf457781bb3c2c638bf9dd58cb7d08c8290a9049b26eed6e8dad8e0ee2cb1f65bdb6a5bdbd9157f5e2f961ec71abe685f8649acc7b106b991f508c6433566d3b7721471add57abd7466d9d8bc6aaf564b93f86ad26e249bad15cb7aa48b423cbe6c98b14c67567ee99a6b49e25a0d873636736643f759dd27cc7dd6dbbe63dd191fa9c9b55a8d8d6cc74db8e3c687cd4ead3e72421d3931bb43e766e766a766db995867357626de1cab99e9cc8addb1d5b259a3bbabd1cd567ce93a8ef5450b778d8d36246b101d9ab803e0091d8ae8c0e3ee730a0c7000c8051478b1e3eeb38705088124ca01289085bb4f2635b841151b42c80114ee3eaba4103024430896e0e3eeb30926d83093bd1f1e70f7d9022e091c04e08b2268ee4e0d00001a1628c20d308881bb735470021123f80017107082bb4f1e6a4030f0004a130277a7467a7a384213399ab082bb73359eb8f2840748c9e206eeee45a00163cc2f5a5bf0c1dda711a8008511643ca0083beece4900f6418016032221b8f760e118d5d4dcf6cdb504aa854c6e483803ddf61def4e6263357bc41add1dda71c441b29d55b21e91556b24d78edc64d6f2e4da112cda84b22dcb9a9760d126a4371e85c88a47f108e720dae6ca354827296b42b2cd3557a04dda6c69a48fb68d21e96373a509e99a2b906d7665240e42ded9cd48806a29923513196b7833defa16d1e5a5e94ddadaad0269b2e621ad6d7845d2a7acd5ad639547c89deec8d9e14e75b8d31c1c777a63c372a73534ee94c6dd7188439cf5cdfe20b33676455b2567bad65c4b12d7ae8dd51859f36c66876f208908a06b5bdef64b86078e7423ba44bbf18f586d9123fb2324565b24891571908c45f2fe9071b645bc0c7fc6fa1a5df16bb6a2ada32d1c6b58d6ecde3500eedec355b72edcfd06773a02982040c951e6d021870dcf7696ebf88f24da54386851b3fb0e71150e31a45ad3b57cf208e75959b3bda5edb2968b94b54cd3d6e6c4068d96b42592b2968bdc0086bbcbfcec6fb17d6bd9964f56daceb8c683ab6e80e2ee97b4c968d50d4537147177203548f6494c7e7dbc7f9356bfbe8f430a2a1c60c8d46cb58b546b7866491c4f5ce6ff67bc2ce1ee38aec2a103078cccff6ddfb09635fcd19264a58577df19b6e451053a1254e42d6d6b5188ec4112a4b5add2907a96f424196237aed9a0b186d88816653224e411163223ef8cbc62ae384622b163780badec1aa9b902a95656b8dfbcbeb75dd62c104784ac9e5839f9db48e2d7f7e5a426d23c0faf57b6b7d5d241b295c96c3c315450c564899980b609d164acb61dd61aceb217e2ee39b82ac61523c377e13caefa27b017ed5bdab663acc2b235c22f1b5ea36cb5b6fd6d1cab8dacb5176db6bb8e6f634fd69035569b788dae48de27456b4324bbed4cb4c5be89bbfbe0aa9fc18768f2b688ab9fe6696aaea5d636c4b97c1bfb71bc472f1a5d1bda6c8d2acdd6b090bbd3e02a1b9a604315771fa2c98b365f9b139b9f66465ef2d69acda2a585d5e6d7f5e835798445b2d29e36a4b2e1091b604334791af1be104d58b686c36dc335aeb2e1dd5d86dfe83569fb4201aa1aa4c03a1284c9d75eccf5a84c22fad859d5da1e4112efabb4e13c13c95bf4da48960402c48fd02ab15a26c32f9b7178cb9bec71f71faeaa01c85dd79f9157246df976db428b641fefafb996ef52d56003934796dc71150d608c36d1d2426d73497177b15a9a0e57d120843b4cbcaf9a6b097b56cd15e86b154b9b1571285a9bb539d9a4bde50d6d0642d3b588582ded153ad9a40d87af99aed922ae7ebdb21549abedacbe445bcb5746e2b02c6bab8583d4b36f78c7b2e6a3eddeaedbbedb0a595a90b11ae15c962e2b9238b44233f21685954724ef0f3be3984bac96e6c2443669b5cd4024be3bbc796b1b8465a48f686f690b432436e320b55bc72062b599b66bae4065595f4665595f19ef3a8e386cb56e8c80ccd86cdb959c5da1a7d9b6525f2132bb6e4dd395f6b2bb8a57246ba86dc6e18b0402246325a1550244f4d9a4ad91b3ab750522fa08b9fd08ad127db345af5bb64638d457d4f6e66d73ab45de4a0b6baee56b63b1168db80cad88830001d2c3f623b44adca90e7307e28844245d7adb59ae43379ded95dd8d7fac90b5b3ba8566f70889afce5649cd6e1f3188dda40f1157dd8055dad7276fcdeefb769c9157bfcbdd735c75e39d8549d18613dc3d89ab6c4819a2098d104d9e358ef648d7a7999177eb7c652fc33ecfba8da34df676dbb1ace150bce26b2bbe0c3f2ddc956793f686a40b4789b6badad106d9195983441b41dc3dc8553044c19db5b59dcd6cfa376d766b6fcbdbae9f6dac6623dfd236cd104d8468f296b66bb659aeb4fd76e39f67fd91fd113ab23f48609001cb96b7fd7a93d6a8c7dd5d70150c1570f723ae820108771f72d50b5a7077d6104d361e358d48de22219ab0b4a5e93aeab7bb86772c6da268f7d5b8b4e226ad917d7d6943cfda78d43f135ed90d6da96b44f216c988647dd88bc4576bab61b62c2bed6122798b604f5aa33b93e117edceb8b4f96d485a990c3f595fdfb7d9d286361e856ced0e599b935a2211c9fbc3ab2c6babe50387078f9cac5b2d4bde91c4afda0dd2f6ba8eec8fbbe770d50b49ce126dcda66d7e01c89d255a6dabe5266dceb620eecec3552fccf0219a6cab5f4234799668ef5896f5496b63af2bedb7d57fdb3763dab6d53fb23fb9567bbdb61dc75ababb0daeaa1103f7989bfd21bc63cc06f40218d2d3c373f3ba79e528b979ddbc709484fa1eb176883bcd010ae7ee9dbbd7c0a961c31fefd7b33aca5eb433b2d2c212bfb5917793387cbc5fb437efb76101b81be1b497bb9bdc95b88a4699c3ba61e118f5f020091a12824d9f534c9d593686f3d637ac1b564e0d79c76c6b363a727a84d6474cf4e12347270c2d4e4d0d87ac988db6efec96b7be339b67dca98c3bcde1aa2269cb97e1a1a02038db206c1157486f6d6d4e5cb77a94ad482629e29249b4c5428290b644b2432b93cddcc8fab22b6374951cd91f16796f160b79168c07160bf67646d6232c92f768c4f95958465e0b83d1ec980d8b4f5e6d6f0e4be29a5bac4626c339c87dedae46d707c8f5fafe6c6222c01d06baa8daf2352dcf6accbdbac34a5cba7b0ff7e9c3dd65aef2800b5eabe960ddd4d490b7d6d8b128db5a4dac28acbb0ad919eff2e6505b21bb5472dbe2aea50db2d9cab6c646b6b60911ed1116c91e1fa47a843482548fb0487cc5bf8d6f4bfc479634b2b5faf32c91a4b11a0bd5b01eff46ba9ef5bad6d1a6f57dbd2f697b7ddb57bc3627d78835baa3abb4f6871979b7b64a66e4ad5688b63888b5435e2fd26e9b8d7029564b0b49d9ebf5da56bf6c48d6ad7159aba57e21d5da6bdbf0cbd6ee7edd622f1cbe5edbead711a6e917265fdb6ada16efd1cbd2c2176de36c8ba82ffdc2a34dc4b5972c1bbd5edb6aa45a7b9535dbeb8554c7bd5f2f5bc4d51abf6a36f2955f48b5f62a6b97bca42db1d578cc2fd296f8855bad19798bead6af521bddb1be4a6b8bc6b1beb29591361d6b69d2a7e51c70f726aeb280075c67964dde65b6e368b35ae64e8bb890931c239b30eb5a88f47277dacc119922b0af212f0fec6b9e65c98c9fd682c1be860636337344a6c8d3f03c8d91cda50cec5bb522f28e418038f2fa499f899a11c3142e1ed91f96b64678bc358f333b8e97bcb8dc75246f0d892f267758656f492b92b8acb131525f7d73d8f696c357d192d98624d6b7ca5ed79f116dc632d9926fed1dcbdafd19b2e24b5a9b139beb9067bd48e2f046d6dff5261bf5be4fe21f5fb433b2bfc9e88d7f6aae402cd8112661309cd7e1356cac56b447bf6bb5b55dda30acfaf5db3124b715a2cd6e118c87c4110914aa275a9c95ad7e2c628d6b9bbc220d4c866daeae5a77cdb666237b762dbad9a2d762c6a13862dadf72c577937794c970aba6761d9083fbb732795fb510a901581a8085eb6c2bad6e408f06dce0ee95b4c9be96b5f6351b696961ed61693bc6aa68757898e8637f80d92224fbc3d242581af622312cb3f4cdfe90c36abde4c54b7b6defd60b30c08cf409b1d62efc73b33f88fa667fc03ff8070a2fa0a0020a0de497cdb7446ba36d63996dfaa533cba6a61622d9d442a48c6b21927db55ab510294a16a238c1dd510e5386922835f8d6bea2cde1eb5b48b5f634df6a657b73aeb1d7ba963ab3ca9a686353d6c4d76b1c2b7ee9cc7ae2c8fd5b376d7b6dab7566e98cb328ba82f0104bb434a2cd77dbfcda092e5876b489b8f6fa8a3eb5a31a24563c7a3d269713aa269a08e37900f2df6a4204eedae6c4bed6b71207d199656363536bb5105002168ed1e35dc792b46119e92392b6213603656b647f5e4644518868958856e352c7ea35aa341b7bbbb1d1eb72b43422513f6b465e3c23f1d33c6b5f9aae34d7b3f4570340c1002590d1463f23c3fa231bffccc8abf53db2b192db986b0fc6439a89223061022630e0eeac199919993fb23fac11e7ad6d6f479bedd1eb9db12c871cded2b6101fd7b35e867fb5ad5ecd687bf71d6f786b98c4a11d45b2d6b2a56d1c93b1e50d7b969d9147ac199a5d65bef5da5681b010c643486ef6871601b0b0c86b33d6108faf45570f1d184dd722b0a781c19eacac191d9cf096b72df3a2857d1d31ad9236d75b1dad58636b770321d523acbaab0c6947d68c8c157148da970e9fa303f64575c332de611d425a1b6da8c6e6f22bcc96b721d8cbf0d6e4b58de5e7e81045b1fe2ddbd2eacac3126fb608362323c3b688ab31ed2863d90dc91a657c0b676eb648e66f48b556696cae7a66472bbeaeb41b598fd8f0908d7f36feb163ac92496e2d5b20fc23924964a315c23fafd7eb55737bddf60de2aa239eb8d1ad46e2113f7c46e66b6e757c7d8d20c38830c83a5a2cfe8ccc1fd9708d2c1b91b746968d860429a1e95a64489012bbb191d5780ccb9735d2577c85fa6537266fa2586ff622e15c6a1baedd484cd64ddada0e2d91cd627d1521451152401616a434e1673c8014a61eab190be05c71e10602585ca985e0e881084a013200e280883b1de24e7b668f4f57162b1e6f1568ac36a8d5c2316ab5b49022e5a5e99add3e3224a435a2c7d125cb4a74129aae4568ba16d91807e95ac8c4caaa9068457db33f5c21d96a9bb18cf4a1edbb44246d386823d99f7cc4da211bc9fe588d476daf9e9197b465209f6dadae34a01e3d568dcb30e321e41116478c83e0d1675ba1aded1d73edd978142292a32349b6da9276572347f8a776ebb8856ced6620242bdab1bc79080f89b616d1f6dab4f6d9b96e21d1c7e621760cc924db0a8957c846b23f5adfec0f5656359944dfec0f5b5f23dade3cb491ec8fee11b5bd2496592137249ccb5748da3049baec8cac63696b77a8873573db0f0bbfe67160320f0b619fedb6b59a6ba96becc836bbb2c7fbc77a8d6ede319ccbd7f76dac87c7c513ab42c4a2f0e6984b579a486a5cdeadeb4823c3d66a58515863e35865367c93791a6d63e268ef6ddbf02d5b1b10cf22f197b6172d59ed18bebef8ea5ad6b2f647b8c8b374697b4bdef1566b34a22dcb5ba469f4c6a326afcc8a42cf9ad1595796655d99172dd295dd4a9c3739625c56bb04f68353f303a311adedd2c0604fdedf334382947cdd39482cca905693b78ee5df72d5a4ed67e42d71f93636d6b0d26ab22df59d91b90d3deb568bf0cc6e21580d13244b869e45de90d9b62d89b7bef56d48227916acc810919f1e23afa19f9e23447a845e3f487c868224091a12fa4112e415d423e427096c666bb6ae3219b662cdfbab5df2acbc3589435bd0cfb3f4b5319696e19968c7234c16d590178735f569a14ddf72ad4f9256635a18561a3b96b53ae459e54c0d89dfead1fe8cbcb46d8bee2863b3ae3f23f1f8583f4db646f608d39e468f38c41be7f2c34b2b6b9e915700ae23bf7d9e55cb767f78c75afb1a92d636cac8bbefeb3ac66a75f619cb8690fcfc90509223b6d00a3d009e95c326add696ac6191ac79bc9bb4fdcdeb6b6fa3a5ed5d91ec735c8a7697b4ed6ac5d8efd02122e7e90854342568234b63718c557dc5d7f79550170d69addd1dfe38d6a37af4e4b579e3513b1dba0f1bc75b04fb8c1f668bea86d9a3df8116e2b2c76911d66d5b59d5345d7338b361d2eed0b1bdecfe0e96c43924efad1e8d75878eed35d7c3dd05e02a9b72d8c6a310acc7c62a0f67f31957c988f0dfd516fdcd16b55a2a190df7199a9b2d92f1cec7dd4557d90ab8dfe4e4e838aa41556b1bab311babacfc22598f9e465f9f67691f20578e9e23aea02136f137596fae46fbd2366cc43806fbfab7d11a5d203332b0b7b425afb3e511471b0eb2352e8287f0be62cf1e6dda068997c78ae3e8126dd06d1cebddb9021dd925a21583dcec0fac9b2d9261a47ae48fb06063bd3db0dfbadaf1771dc95b77b6e158859e552b796b332b91b4c9429b5bb98ae52013ee7a738973595698e8037b3bdaa2b0e6a167e52a7bacbffccfb7de58c6565f1abe7f45b1be58695a246d32127fbe43b6ae46b6ae40a48f48f6d86cdbb621a44fae43301e12c99e71ac35218c877aca1a04df6c81acaed6484622de1edb104de21b04ff08c14337b1e29a3d62f5ad4147f687f4d1dae619ce40a4cfad8e56882c2bd11e84104cf05bb646f6452bda9816aba5dd6a359b906db50dd247423a48b4a2e86269d97d9ad02a79d18a9686889a2176e0ac2184a85d91b4d1b0bee696b7b62159ff85b8d320f6e6ed4e79dca9cb9dfa4081b86a081ad5104f7970a73f60ee740777cf7693d6ddabab9a80c0ff439b8873a95f319cc59a26372ee486a48535eb56ebf5b2bbda1cda6d8bddbc491c1ed52cd2f63d12499bcc666b3462adafb8af68b12d0a6d68ad9628569b673797b9da3144000188104018da8e627dd16ed9a5e925ee1eba8a09961b1d44e43ca9ed7823eb6b5bcb15a8a6332bcc61e5d4d4d8b1869ac916ee2ebeac9531a9e28e65e47d4971771b92987c314172d7da8e2f26e28d891177263bdc7d5bcdc4c69231dc5ddf6cd11223a8965c41b2a415eebe6402fea285b8b44b9eb8fb12980ce35cbec823fcbad9a297dd75898cbb93b657888daecd897dbd96a8dcc5fbda56bf9488e1dade2ffc16fb80bb1e2d59d632ed75a5bc9cd444254fb04cc9a89508717fbd60ca202533f82b63d92b0919af2460b83b89af986d99240b77fd4a22c50bc68b2b4f3cdba28c8f5e32194e427b5920d7af243b5c2799c1dddd5f5c95a4f3db589675488cbaab58b7ad0dfd60680b77ef9ccce0893204c51f6f9ccbdfb692bc2f569e212377cf38e72aabe2ee2c570dd5a8362716e76b44f68cd50a699b26ad2671109b8136c641f6e6219f7bc625a984dcdd67645efab26eb6e835236f8cceac6dabc574583939ac9b9a9858636fde9e0582a4e0b06e72583735a135da371614f49af15d71f7cf55414c9cc43756f3f5dd5d49cbdd27bd417186e0f38b4d6e8d6b76933557dbcc1edd626f5936568cf900b9bed6c7e48bb66563db16ab09f2acaadf1e3d2dbc3447781cb12c86432b93598dcb6cdbdab6c38a64dfd2d859ddfa6532a4ada47d91aca21d2b39bba34dc4b58d84f3dfc85afb234cfb24cf126dce47433f23af4856b23e7e4be26cd3a47dbc5dcf82d98c5f2fa45a63c1740effdfc247fbada6ed6b5f866b348dcd38dc78b4b1df39ee5bdad0b6c55eac6121d8dfc69b6bc665cdee20cffadb88439825f10f8ceca937373c9e87bfe1f139fc8589d5d26a11c6e36b46ded717efb2acb59ba5eda785977654bb750c7f46de1a0e4bdbcbb0eb59453738a40d97b6b7b2aabf25c35f65bfc94ade1abeb9b9c1a9b9b9c1799adb18ab3a5b243b96778fb6dad76cfa6deb03a158a8a46d33959118754c219a111800000002f31400303820148c4583e1541694545a0f1400096da45a6c541fc983a228456114a510310a186008180032322332a30d081d7c8cc71e1782eeb30611580ade55d402e2f5a70b7d0d74e0268412b29cd1e85c732da9f4cf2f81d2708a9a21fc61fca7385d7f43400786a4609daac4e078e4c9d2f350d5deec15ac8cd9f5b467430891e835e15160227a7033e5f23c0284ae30c11565ed22116dd7d119fe61b76ca7a314a10a423a1dcd2a63918300af4042efe6686ae11fbbc70887d01825b9d04daf82b4b70fb674b0ca54dd6e43e98e406642704c37a53c6163087e5cfe3e5f1d21a5acc807089d85676531b39368130ded91244e4ae1b19d9fa6dae4b0e011540fae7d9c93bd995f9e38e7da79141216bdd836add33838f4d6d8c068795c49b5002120f46f2d75b2955c03bdf191698138e7521a5886764a018918cefc69ef7527d07f5ab3baabfb6d5ce13fb1992e465b0c4d0e55af2e5b04dcd17eb1c64262748afb595d168d90d696bf238302e610d9a143f747babed83a008549fc18228608440ea83e441c1520442826d8872b8fe3a9a089c87374670e48460db6a203ba1df55838eceaa5a353ecdf8a2dd25b3dccbb8801b1a2ea3ff899856f3be2aa82d027812e743df11b82f12232d78015bd0a13baeec1444fb5dac6d6a86606c43ee21c921df8d93bab9935c18e14a49be7b72ff071dab46afa157762cf2117786b508d9c465a4fe6edbc8926964f4f20b4b281254acf278f0b38491e836e46ade5aea98aa59660140ae012340a82076aee6a9f22b711269dc997369095699904899e6c2c50206c861ca233249dd43d44fa7ff6dc7510e280c630d18529212b5d78ea0ba760c7f90003aa56513827f6ddbb9e40f74f1fd40ced48de570659b3210054ef3ab23a208c5328fac1d01705fd60b403432e28a3c0b4d09b6f64f0a7340f819b0e396fe4c344db685a8fe23d1866acb50a520c13a54f06270499dcb93f1f03f2e416f9ab8430f3ca59b83ab08a8d6e070b51874b8000e58c006d553ce353b33c9b3cad5e3b9b4bf577ca627e655404d8dc6a535ffb716c7f1403cebd9ea5db4ec62558014ff6ed187baa2d9cc0460e1140c246bbf9d9f064d7a2c80220d0be62c731dd1e6e1790e5a81bf2d8dc25b2ff0f0278b1e451f3f402c57bb63906696fc1de0d6ee8c259392f7f86f040e8dd9bda005fffe59b8152f3250943c460fbb8df44026b322a80c139736fa756d2c675ed82300d4b98353d65ca9df94db06d8e1c2c37fd27944597beced87a9587fa5412343b375832351c6aa2611780ec3b042c39b3404c7dceff1b94ee2d4139884533d434f66602a1201bb3865b114c3e16a68a3903c59513abf0932243af05ea0e6a2b67274ed21fe74ecabd51d7cf8be9379562780decfcb0d3187258ecf883ef15cfc500101ed8820069bd23b9be2d07fd4be0cf4860697914b2f96e8cd80f0561b3bb6536ce376ecbaf1a2ebfe748340e9489bcf294cdaa20f104ca5a1efd7e499fce8827475c664660733939b695ba59a84d27caf3b1900cb17034e56fe1dfbebefbd0396f167f803e982c7a4366d1f894b2ba8c40db258049551ad2cce0d1ecf210406bb60ec6e9f45501a6a1965d374000f7db7d24585fd5a5736494cfe4eba3449cf60c90543c9a642f336521f864af95cd919e7d10bff817d8738a61c7c824518d39a1f8f87cd7e932ad3f1e380b1e646792437d89f98c09730b99282d9a9e5a591fb3fd016afa0ef4d33e4bdf9dd695fe0aaecee15ac3b279431c84498ef02d152398c94615d341b64907004c55f3a6d51d1e0a701fec5dc6f008280c310b0b025a050195587aea5dc84ab7f871a61c4bcb667413639ce7650e062060a0fd060df2ac8758ad7669798bd0815a75e5d49aafbcc5eb198ed57cbbda3250122aa25226d2481b1a5fc1729f25f60a1c497981d4683f1a31fb300073ce00615251c4e78808227c121ed27b1f96ee39edde489403888d29c36ba06fa1779d075fa4fa7ab890e09b8c6d216b82de96e9ac2105f55c49299b93df3c0db9912fe5fda9d8e48df58d0f6004a3b28d24c67339fc06b0c3e646dba19cc05ba8555aaff0c2ee6cb3b90e77934a0631e57d9879a3a60dc94e9d389b0834c22b49b9fa2f3a80579deeeef9aafc0de480ba9fd2d10775fb093ae4556674ec79c3ff706ce97dff4c87325299e594d853ac6bc29a2a9cdbd41bf94ae6e0b034df4a6fc8ebff175ba84ab949d9fddc561256bf2132e82fdcc8fe00e63040e8cad82b0d12f0fd33889d7709a12ab76b6f10fb0f154b73252418c4f387b6f348266485579480dfef59bb3a102523c3cc5aa75f396f2064441495a02743aa3521288e0317f93e39985a8dea1de6cff684236296a42dcda0c7f155eb61189ba49bd061eda72001fa03b54cbe41dfdfa6e5c93298166df883a4f2bd0002cf1327b29f702b510de32f82737a278fa8523fb1ef5d8b86c1af78ee1254ad9d644c97fdad5770f7723d1969385540e5fef0d776cee2096ea3a04de8a8d65a76ee0fcb39ac51c431c865df4e5a87e609ed788b8b583507b4c88391288b698944bb08452337983262cfc984cf30efd0c6a6a30b7c183310481da54f6771e92c44f5abfc4344e428a435607eeba919c00eee5bcb765646e223c258c0ed5d84358285cf2a93fb773e9e3db83524613cd12ce683485bc6f18205245d8d55de943b863855207f51d73e0394c4623630e812270c85b24fd20869afd1e1316f7c49eca0e7214730193cce25c17f97537bbc0834dcba9a75a06a488b22f1c41852dce5cf255f861822af08e5c329a946799708ce550f25f31ce9609c5c4fbb54be235f9279352e99655f749e811720732f14caf6f7d6876a0657fd3b499c289b7bf886f7da786d40378867c4b58002cb9b12275e6ebcc78115a8fcf5f2e75b7a2c097898cde99cc78cae1d3f9835314e5d76d83a42fbab87814dc81c061fe1610060922df24448f93fa1ee16e27f090d04fd84a3d330e67d56b553e4a5c0ad2de1c274d6b1094e6aa6b419fbfaa8de2017864205ea24dcda7702c05c2bff1d8dd1afe02f3fc1bd55c795d995768b0961465ef5a79f7b986d86dfeac3ca576ec467c65094913e25b9d341837464d24db8e2430b444feedff7ebc71cdbd1e54e00170157238cef3e8bc7845f81b72ab8a97fa066fe0f516631319338b42230f632e767b4d33dd15f30a86d338b5f808d40c1800ad0e4da75813a4d71184117f5b928f721831a4982830629c2844a588524de062aa63037bd663efe392fefaafcb0ba1a59b59699223db42c0a99ac8612518873ad19c1f19c4e559b8cf4197b5af241a0f0bd3c0ad4313385687aedcf280c2e95d176198a6b918addfe1279f39a095cd025df26d0306e7f24d814fd194218c1564c188cf748833a0bd98513edc4779b89a217a57ad378a0c3992ca64e191f214ae7254e7e39ab09f56fffcdfd0be16c650d2e78fe11f3785bb5f0939b60f62b74f5caf2d10573f5c14ba615d6842e2ca6015fe9b0be5b2ad5f9ba46a637f0120273401a9cce32fc06dbe5f457b4da9b1294f343bb272430b018af370c63c151c8364099c900272a0c1092ba804bb4f26a684e110a8d21087e6f5bf05eb345e441a35cdb38d24fbebc2bca72c9341f1adb6745e477a4e2e0763153840a81fc5b506f8e68125d71afa845aa5c7de0af5779521c0fbf41777e08a2309f1792b1741a87a8d54b4d49b996d5c307403f169c5666a6b4c2bffc9a4d3120508ad0b9a46fd69f71177a8d20ec052032d857c1708317b93ac7a430bd8dcad22e5afac394f0d72df52e54439970aea3273c0e71748d589ce679e8b19baa29de956162631763b3491180d47288058da9d9a54c8a3a486b0f8c9bd35383b9c7485bbbf3bff43c9f583913ea6ca6daeabb81b267477824328d3e69a3c875712d0d4520321473c2ffdd90cf0e4ab9798f3ee798f892abb4fce7d665b4ec0f0c6d432a2988ca8393f69f0d2dc07ebc82a12269a2d2fd175c7ddccfbcb27a310714705350b27c70e28aab98f6dbced80950049c2d061a53db425dd629a7debf9a66d11efb4223d9883889e46bb61658c13971351f811fb36ccbd909342610a6feeca01d09a293cb4ce236f8b54452ffcf52d3180ab08d8c1c3581b0847e8c318115ff7345d09922f86614014be5c7942b35c5342cef0881d30789dd35e6c1aec3667d7a74c2ec94a2cb435f0a982b04330628e4d695ffc525b5f0ce4d1ed6c694b36bb6ba64fbba772789986a09af263aafe80c001959e884441873f7592a8bc48041f0ed68bcfa48a6acd1c917471dc374fb224f9ab8d0449d575aa52aa62c22280484328d3a170a7a140e9d3e44f33e0459ea1e8c1307eaf969b618f4958820923a2fdfde5243f79a1c9a45dc5b65f27889a51b04b53826386a77d5456127b81584ef0004e829d6281e430e855cd7e9c2a1cf290d3c901faf216a2731a8595f58cda25e85fe21980e49601343d3caeb76a1843239e6726e17535876bbeb04efe10358316cf0b2a3a8b9c8fc916a68532a1a0e354604d75772068f0850a6ad0a9550e7ef6f3ef0fb571675c8d846a554c7a52c1a664f1d2305a8ad8adac642dda4e7a70f6826d00c65c53d8ae42930def13193466f16a126b36c89e5dc1ccd4d6c521573b1433196545b982f700c64523f7ff9bba8377fbcdb6618f731e02fcd8d1acc9f3de6eadc93a666386a16986edcf5586265e478f4e267ecb2d9693a45a349cedc89c99786905d8961ce25b454092abf1f1510f5b22b01f4ea8a6cda44cdcb7ded7009247cc24566690cc52d847f664544de88a5f37aa751782661b396d9cb92aaeb9c44dcd81809cf91332f40d24e646e9fb2d7d07fec637d72bc454b3cf423bfa56b64ceb33836aeba41d2d38c141a5b496716a0758725d74fa28963362d1840e8b59aa09c77986b8c57c81007b42631b432c5a824848ff8f047ee41af1980888b675bbc360b38a00bd1930eaca6ea48ace7d6527565b55cdf4895ed2ebeccd048d0b27212119fc285e4b2cd5b4d6de5b311ed87849e0cbe2c70600697f4dc9a6be2c30eb468fa3f77205fbacc3c2ab1f8e4e760ffb87b5c8b9a033f94a12a888249d977c411bd8823c7337ac3208ae45198c8925b399c270194cff08cae66d15786dcbeb8ed9cffe6befdc55b0109b01a295686cce1be3c928109880daaf830246303b68f407fd424f5ee7098ede43a00944ea8d19ccc898e26d9a8ed5c59f73cf8ac5600589bb240d228040b740249b9bbc5924754f63d4a1584e980116fe1c7bc613e0a53317802fb1e88e2421aec24b9411c4930ed308354b16dc44d1ea1b29e5f8dcd6444727ff0ab9976d8c4ec1d05221caa89b4294b26789a24522b36b26e8697087986b4ddf8f5d12077637bf6514fa83c743d183d068a75aba2542b6c76b1e99ad8b247d5c90fb9d2bdcd905ababef1faabd6e8b932c085c5105ea01ac1a730ae7b10279251dd68927c1c48476ef45c13080cde529457e13234456885616463a3e195a0e97adb787a988d3ccf6ee20a046bf7d3e2b2e3ee9278c63cbf0f7865cf780e8a7eebba842b67c2eda070d7cbbebd42b64b5f12361f16fcb5205481308aa86eb428a15f82091eb914b0572ed2f47ddfb1cd94aab8910d0dc130ff16257cc3a0921a04469bb21c039a3146e2671022c92927fa14602842363362fac2f111da0b4967090c32a94519f30b4421df87272dd4780357f566a98873d81e7726df8cfd9105ef7361a2c26b3d743a12d8c02ade393e89a2306fa9a3bc3f9da7748ef8aea441258197159b1c51767fbd90a18dfb0d8599b5248022050b13cd3222c9841982d1927946f49329304c424efb7f5d243696cd5d94632648e4027ee382cfba1897b96e61103807a89f4a767614cce3cb128357cf195662786245431718f407268bfa056d1ef1d95b823177b9d8af2d66ded651efdebb1f73037ae1ae56707178b10a48cabdcd87aa9ab7fc6c8e442f29410796c9d056ace2743d5d5f47044a6a0900618a9ef84f0d01ddb56dd99c683970989547092bfb09d59552800d4ebee991354424f7b7df5ce8229a1eb2d3da69ea20d00ee60695f197ca75a22583abe10742fa3a305e76870f2ec49dcd39261d0e576887db4289fc77238cb995ea1c55470634db4f224a46996eb10f823379a6e0b5870c166fc39f83cf537c17c0b3192d2eb6188917c796ade67f10b780719a6d532620322e3030c58a8e4f3a13ad39a24e283ca23b55dedf404a0aa771c9f904938111608c7aaae95f4ac58399bd3f620c23b91ceb52258236aff61e3ae005314405303ec7dc5e415052e7ef13b46f9874c69a1355fd43c73501b9ac27dc206d83ec14d604e87270e6cce5026f5d0b4f1136870fd1b1a65c07e267804b2786b6a8d3f410b76af56aa265a841dcfba1c539338ef898d45dd540a4524721a5e173bc649e89262a1d2ce884ef6793fcfd374fc411710c2a9b16595299c502f550d3ca3883ca04d338449b70e8b95c911f200a241ac1df1aefd83f1509525b7bb53ef6039fa430c9f1d5277289cf922177def00747f396bea7c8b49215d3e76c0295618f8f16013369366feafd5769e08414c560e50bc28c003ae0f03445020f2637418dd8b37c2fe06404a7f36bbfc21b94e8906e448de0533713fa1a6d4dc43ac70b72a20d7d75dbd82229f6a0456532759ff59c589b6775416c766d07fc5758edf26b1ecf7f21a09ade464447d09a41bf5571622d49bee8f4a65ce701bf9e62b44364f2017eed02fc195c7360d146b0a96f8a84cd11f82d5b9a49448e41c399467c73fbcf4a8abb593c02667decad1afa584b7cf51046f3d25cdc2d21cf3fc22181f39a86c407628e22bd30f3dac814e2650076cd93c7b6257627e60598c1f714001cebf75d0f657db835b88c5ee56cb1abf7f26b375b49a333283382b76927bbd644de6c65256eca2e0ce22a704effe0712e1bad1fc0f955720616cb774c66eedd7258c13aa456b9a2f81977be81e812140b1c2e9dbb1592c83b9de624fbfc1eeae31b212b3f1c50e6e26f023bc21fd34b5c0aa3de23757450b1d3bdf7345fc9a69af8c2f9911d32ca9f0491197f07db8d1c87a174bdabec38eed3ab7559c0c7d755908d2c560bc4bd2ead0ff37ad85c3735ecd69fdf135b558947671b150129ab8c6b52211923eac6ef464cf8bf7e6d1467e9a5682e5320f082757630b4ece2c40d707db6a3d42b759322e211bcccbc29a7c67d5394914e7d9046ed2d8a9ffcf4eb091632da6dbe67e80b0d55a3166e6cc6fe9cbd29ca961d417b91d1d4ac8a8a509d445af97113ada376cd83a263904590ee29e007479098c84837ed35e14ef7c88684d3890c796f9b01498ba9f34124089a8367b3ba2280aa81c0f28046996b31085e9ef215da562be89d836aba9fad5cb23b2076d315ca518e6f9cd01e096d2f93f5eddc772558edcb58b1be01ee79851f98cfbafe9785b1c0100ca379e301ce58aa175329e19bbd5c74c4efb76d0fb1ae88e70fa5350469de3b68c987287043c41a46ab86b4101b2245b9fc2ec443d91be1524767fa948390ee7470646327d79ae10f8bd18354efe1cdf548ceeadca42d6d43b3b424db10aeb5467d48e565d9d68932b2690fb10668ea5383525ffa21fafd75260c7b2911e56169cd7741ccf228d44fa78b3bef8425ad1b62d4596b3737e15d23e003a591a863db771788e54a798c2b9656d52cab1b3684d99315c6d5c55ead2a32c2e4e8b0b71f0782de832d0381bdbe33e39be7c3390f9c1e606f7df90d47b12b1f29db18ca9e52cbf91b1c72c905361e008b9366e109bf44f8cc572c9420dc70406bc67483b67da9cdee26c13f46f3fff1897267a4647597db2d0bbba3a29e89acaeaa818f9a2c786fb867f91516439e92641e3c6a1777ef2446c46a388db420cde4936e0dc62882b705c80329783b62b4a96bce76db927aee11b7123fc461243565a13d2a1e04ccf8a6cae6147c2e7e42acb8742e8dc4494488cf04b46148cd1f9163240c90eb8656321ec09ec957e777628f7f3856155b5ee569584c547f80e740d87a9719e39f27acfd18fb9f749884abff9ee99a24173f38875aa110c1b7acb0807b37be3d567b6b4f0ca181d03edea2872e5bddb4333af5230ec3009e91bdf0f38c38c5c66935715371440921116223993cfb42809b7aedc3eee7368c6d0d0f172a36ae53ca77ad3f6f386efcb9eab5d66b3bd5b519fd534af9f3cfb284dfae2f65fd9ee5ea4b1a5a5b7e75a1d259d43a3ddfd6b055efef5698e2563dfafed059e2ff5a7a0621e9d56f8f26d8f448aa3f441b3a11a07bdc95b37c32b00c4da2a42018655249d1aec8545280194a1edce46b01a8d9034629e412e3f69b0376cf1801e41e651830ce35b7618998ce39afffeb895182c8e4c9747e02f87eaa04cd03f5f2fce99d4866eab182e378bb601aba4221877e709279ec90561f926efbd23092c41c317882deeca17d316da52d8c433203d0b38e2577180ed67c1eff95817f3e73c6a4d0c9f8fcb100e099e6832f8c5e38b62470ceb28d373c619fd7ac801b76b5d5a1804b1a9402485f841458f1e77f46ac351e7a5b08d916337a3c5437c61bbb50408a0374f126498b28f25d20fc6b243b31ec59a3f32f29460dc7ffdb13daf8ea094a12036a2d6f36cd2e75471b6503c564bacbc3701d94ace6d2978322b92b7bca59d512967436e4193ce93a28ab244de9f6b0d66e7156ffa85a3f94911fe2036b40e8842a9ddcae22b40a1b70247918b42f84c081016febcb2b9159a0faeae75de6854ef2eb202a1735191c96c2c05af5d43351ba457b14dc5cc6bad738d1f11103b4c8bf1b738a40ff444610fa98156f098b97b0b36d63cdc249001f135b3fe56682e5dde74a3e9739bfcb9e899ae1d47a340708d7081f6029a4447930642afefdb5a8e52a3ec46d8174240cd51b1d85ff6145e3468778a8c73bfaa9ebee49c48ea510064f5d30e62c2c9cfccb5fbd2f5e93d9cc6a60a3d934bb1f4f4c99351b69a1eccfd3bb0c6f32a9f7ba30b421ee2363e1f428a85239ac2bbfe50fb1980b429d2862a5de6c43d8621fd94165997558025ff66b0d5eb535c3369bbb86d471b5b4f1c9af7e4ad1489130f1073c7d2ba744ce0e994cbe49908141647ee5089b3aa545a273916774b2a71346705a69c1ac147dd18a97cdd9fe296bcf836ff84ffc03d389d7e89cd2c8a33dc726dd1ce587a3fb479ce689312a1913f8594db138415d916e10297d9c83d2a38a5c6c572f235270f954de7273d8d711a9cfb84232cbc67cb7725a01778f6ca8cf1c1eeca62bc96b499fcc9edbb37222f20276f835181122050d51854ca0d0263d8eac9bb5d113eef3c570a642aac90e6ec9d7354152c43b3dde0d2c0917b59c3e593c8f81e9471ac29074c5068b4595811126babb4d8d6961e5b2be1b97886d5ba04266910a487079c1de0d531ea240168f0fe9d1dfdd807518c686f483356952b20256f766e9a328ba5d908cdd6dba6ed9ea98630b2c9fb20cc115d27601ac8673e347393ac5cce19d4066acf7a60611e8996f9ce3fba97ba333cc2001b5e66d4d00b1e51375b77945f7b972e875581b5cbbb4e63cfef6d310aabe338fdd841c52fa3162164fa68421ca3adeb0cf866696a64f3546f2ec71a0b284fafbd1cdc5cafb308a2d3b20d285cdc5f14bb90a5549004f4654e5ad85a2b2acaa0b96cade944105332e54f37acf313cf2ac75fd8e8a0be019b95d4f9dcac124d52008abd2e438a8a7fadec82bc3ef58a460f99823e22136d64d680f1c894823e6841b57eb556a10b1dd9531a619ff68845d1e18f64a75c69aac6a7bec829a73bf4248eb3c6e4d7b9cedd45bae428a75471358e39a31870fa682301f1bb9a529f953ec1df7f4b303b25c7ff6940a8af461bcb64bebf132469dda42026c8311770808ab013c7989d0e6796a0906d19320dd063f42e42e352a8324a349f2201925202081c7d3e3e47222cf8335a6295ac022401d8c07151beff613d02ab3d335bd8eea7f374c66ab154d064f4596145c586e845748ea1cd0f237e7145578d4265eca768842d587960aac12d1b9c69b71caf028be7d287909725362517b3c00f9152ec13466147b7c15b9059211310ef8c445799a2fe7fb150a3da7de43ab73a8d2c79a398cba2a13fb587ac985f117dfac8111a781fe5b2a1d04008f52cc95066f9a89cfe30c04eb42fc4cf014694bc841f101cf0dcca9868abc3a90811c2c3e242230f0d20a865a86f84dfdd359844e93367d02fc31ad263a4cd988a32c4b5fd4dea26a7a2b1c49cd365d2aa56c3bbf5edff294ac5a88c7b6d2d3a61e9c6f44a31ad10621008b4ea223d8f93752b898c7ee4722c3f4c6ce48294a846c81999eab240de73560a2749c5ac60ebebf424ba33233107f75569dd7251921615d15c463251f637cdbed5bb15e026df35965146fce1a207e625a69d419eaca869e715f71252f5a2adc6ab38eeeb8438f95d176931ba4e9012f18b2ac3b426e87650bff6662415e0233cfdcb37ab5c8883559736fad676295561676c3c09e650901b3222dbd24bb68565ce569946886241a3a2e1fb2695631bfd8620a4b08dd94758af9a17e2d2351ba9d419821130dbc9c0c401e0cc93f178c762ca4fc504c27d8edfb306a2d1a130781ea91f9ad38f82b1dacea4d79b5f484ebb59285a9ae3aa16e9e57c77fdf3594991e3137defefa9633bbaa87f10b0aab8ff2b72021ed288914087bc15a5aafc22b7030c1ef9982f18119ebdb7f1e16df5b12563d01dd3edcbc2a79a11e4fd2356787a8d7de89194ebbb5f617ee8c55927a0321b7e28459c82ca4cd4871e837cc84c85964f4ef3c8dc9f8f008b8e7c4bd7008b570c9e4b7abd263fa1fb3a8c2d0806aa555ea6d95e0dae4f12b0c233d3ac7916de605682268c03017302238c71b71034c497be72f0d10bd832b05b781bfc84c308fe1abe1d5bbf5ab1e3d878bcce08d000fa16a4d73898737dbc9573f965ec02047b17c50b0c4e8f401bc8e6dea4a0b967142315363f780d55a9d565a606a0fca179993739913c2283f5f943a78fecfb7fe77e17cff95cfd941443eab9f58e31473bbb6166ee87cdfb545a60b40e42b6f9adfdd216f6563487154884b1df62347431b6c5ad5c6381bbb4465b0561588f904315f20308388d1cd5f60dfed1e0fe3ea6dc80e4426f6aafa4da04eb068b5eea793c969c3142b023f284f22321246072bb11a2121c9a8212392218f45c408a4c7240dc8ef26e9a11d777eb9f626cd4a48ef1ba66984184497156dfdc2191852c48d91da0071e9c6efa0f28aae7683906512019a4555167041b40d373d8d290184e90757ba9518ae919d33ae2a32fccd22c5a82118413a08192108bef9ee84799f4921cdd245644a4396c7387fc8ca37b5d109427e8b01c115962d2a7a899514b2d21475d77e2aeb1d4a35425ef8e89abaabf32e7facabf63dc4d2a92bf043e31f1ea57c7f7ad0a334abdec9e57a432ba50ff668848257359e6c0165f2bcf875bfec9299efec407b9ca8f8fe9e8fba8c20d89210bf31e7cfd5091094d25137eace490928bb3dd44c69d234aa11f47a243075237e5ef60345069ddf6f6a7b9d8bf75fd9eed5bb84b88942d7cad55f6d8dad4174a0988dd531ead834ffcb95d7d734c7425333bdaa203e278c8513abf1c24829ae66747f615f6eb9026679bf8f78bdd6e4e4ea5433ed3902209be5423edd398bed1b2f31f5b5be3ea47977dc6ab57d9aab94a919df205c3c0ca164d2be8f84b7fd5b57f12b6ced6f66207dac49467c307800e3eb004917625fdce1c6e44137ad1364857ba673d7501bbbac69678bf885fcd1588891fc514fb3560c98ca84978cfee917a689694e160b447598f2ce603ecc944d91f59ac8e26fed73fa9ff003900fc8302732172c5fb8e90b0dc00481cca92089fe751766da3771db812fea1fef8dbaf77c8e289ca45eb38893ec32c5eaf082a16547d07b3a594d51c0027ed664322cf3e7374254c4206b6766e4b3be5dac1586a7a578b7f0e700de649ef7f5027f3fada4dcb22e8cc91194db6f71c7645fc7ac40f9894d1121b06590d428e94454c52c318f66cede75584add66a909b0cbe8e7be9a2e533f8107c4d863b65c17c606e09b923c0e3c6ac8ced6c751d4f878fef225e53e0534782fea7512aa821f26e02b615f16ad4b97a9996fb8e6d3111839e3be4eb2128ab3e200be0aef3599097af6ddfa7f776daf2218d131103592e2ea7fa5b4f94a6c6c8233aba40f390d799f05de00951e6381b124af7018091980d60cc110708c76732ec7af3d549b279740061ee94f489d81f3861dd76421e4614cea3532b4c683b3e82f3aaebfadc25a337ae936762074463a4bed102df8888c15b771d687ef14564fdc03db869fe1e54a99567e1d6a48cda34eb8bc4c1d3bfb6be39d1a85383f83732272c816a51a150abe3dce542d08cb4906f0cfd612010406bc969186cab516cd3683ff999b5f7dd438b0f8528410263c66e777853127c4e8202a16d749e93258b401f45d887b4c2b5bd08f6981175c64647aeffa224cd0b84b76baa2312808c0d5c4aea11e96c31b6eb47b27a9b27ca210e7767752f4bd7d10d21ea69708da4af0126161e5bb81d1aa1b0444aac6e80a926f5dc05d56269383fc550862e5897aa85cda79a0db3faf2784e4ea56879bff44f7c10c71e6b9ec6d283b0b541fe04af3a384acade270c5e618b2b2f50e82fdb818de0900dc2ca807d4e68b959e9f67eca6ca2a1dfee146ee58d75bd9b19590432f4b13fd6707d2807c6f4e575de4c5e660832a7d270fff0c90e3bb4cc321485b304893237d8c18ba00019c25c3d2479bbee17374f5de2a2663dda093d6db186d33f14552768dee5c4a9846eea053e908e9d764dcf8a51b4838c1ef3ac89cb0a2744b76caca1516c9178a5c4ba5eafa13e74d2b7136ff85d2e9c783ba0a6622a89e8a69a408b7c23c298986b405c593353f203fd77f85c88525683454dc7e1b2f67f20c616a6078bf5b04fa718ac6d427bd5b2a778a8a68b814d0e262e8d33a746c7f647a84583f684264c2e5a2e0c3d429b29980543db93dc11c582e7a0359699d22da1af7a36824e31c801064d01816e8f057f03c16f71d9a2259782968cc257480f22da1cf6cb1f637a44b1607b663b62a3f2fe9a30fc9f2097be3deb7c4d175e6f0ea59bd73cb6aae39b970b514343048ecfb21ef7e3942d01261a8b748a44f0d5aa08803e2dc8cff982165ef03061b89ab4061d21bc434b1d8f1c28858c503fe2a14f05702a112c8319b52bcc5f23f574d3c827423141342db81fe78e9b5c61fcc9d2f9183957b808c87a43f1ab7f6d6383fbd1c26ef66bed3fa93ca0fb8c27b9a56e26900eafa9f8deaf9dbc010a70383f91bcb92da7b882038c7c9c085e8867d9529b830b2c45454259c88aad09be42afd1a79a8ed9cb21d1fc2453a6b44ddfc2e9b8e945320c10948c39aa02cb6022bedc7bcdd0732e3077f094ece87bf0c88879cf0530a3dd56b80ab4d01f4fab735ef0a992fdff590cc656f32ca231c0e138e7b4a159b1364c4f25f90ffe11277551156fdd25ef66fd195f2d5f51bcb99a7bf8ae4fd12ce7bfc0be5e907f4fe2fa0f08745d9d6672882d43b13bdbe46f8cb3f956ec7c07c9e618d69e6a358444836a67f4790217d5440db70a40377c48a952c2fb614fcc63681b05c91d9bf333c0cefad48f054e24fb0949c6e4f5283b999d79e52680b875e9311b66a89c059c6e916b0796a13c29c6ab2b663c34ec375cc2835c0fed9d1391ca2a1069b7e852e359b80de0f5eb3bfa2e52fe8214dc4e1c33f4221a03c89be6988e6ef09fd46a5f9fd617d508e0bf54f0358ffaddf5f79ab98ef8165ed5dca7f962cce039bdd9f345d86d6a3407aa4fbf00cf4229ae6f8d9e93fbb9573d8cc640a4df3ab73669df81b242d6bc1e72eac91b3c8d60a53a398f3a5a5f5568c3f64e8b7c3f6abd5b14442e6e5270f9542d53857723af348b9e72ebe4ac6389d08cc974f89849f5aa3e70fff38616c92516a9fffffffb7bf67eed92b21bd4f17d050ac23d58376ad738aa6a1fb8456e5dc8f936f50423519508e51e15de18028dc6b1c626566f2fd3a768bb78c81cd444f9e3ca18c5488d3fc0f3ef54dd6947889c21954730ca55f75414c051c8be988d0d738336de506095b5b0fab62a7683d7a73bbb1c10cf48ed1643eae24641eb354ddab48cda968de14b91bcf92bcfd3c72f9f18a5f900bedb6de28dd726a5b0d01cae8beca82abb2bfbbf2b84eaa07914baf49598e8bfe2a863e489a992a4b3323f22205852ee24dc4958b8fc0ce574a71a9f91297c520335dfb0a120067102b73c70a16d921b133f0c4eb33c925f99c67724572703db3d9de4c1c67387fca5cfa733a51afc163a463759c02c63d10091ea6c9204866d5c8c9c505e003b1761b4ba75ca8b39880ed575586f73fec77f8e4c7c1659177000f910272066ac5694d541bf0005fc1b1090982b645b88e167f9294a32b49a0873e912d311fd138efd97d23c8fdcfe56025eb3b020ae534d512fd4d8e948389ec4739bcc88bed18b12ff67b42836fe8f559d62dcb737a9fa1f6b108880e5f67a6acc6527254457aa4838687618b0017e4b12852e19b837b80bfb4b691ce5d4aa56e7093c7665da198aac4bc1a347ce9d48108a14fcddb108e0895c376b8c1994f28ef6ac128e9b305fb565b4dc211b9f2cb181e4930ca318df94d685f31e6f59b252844eea0561714150123865ad2f74687dc92ee5d832f9d2794d1380c2f2c692d4b2f194517c7686049967afd883bf4bb2a724f28bf89105cebadb32c963ed45df181a7531bade62ae730b41bdec5d21a550b78e46b30a6c09f0d9fa83e0a5177e225237fe0f23c57b0aaed3cbf8744ef9c520b277a99ba108f3b367ff822dd5c655342d5fa2f201cbd8159644e555fb7db17266f6994b4810c418426f41390e5ce6330357664cbc7759f76045c1a978471723675c27871a7b0c1eca8b164091ced8e43c5b4c92e09aeeed4298f25aa21097d74d8e8fdae529efb2fa45d29c12c74e94ce373c0744b47714d020f41ee2b267f452ed3f03425f40e88eae4626faa4dd8c7fece0000263140384e6505cc3ac824d487487f1dca5055c7100b1bb1d8899739e9a7a693915b122e97b8085a3894fbb280f54ec6c330b8559acdb74094590cd1fb830e238b272951b90201a80819be291025cda7e96bf6317c38338ccf134b27f72a7794bb4a6a10ee8be48db5cb75f83bf61f08c3cf748f4175545159a956aaee3d374c4c177d2ebbc44a7a934a90a02949c8e1e54373d787dd37652840407dbe3584d094d261a38bc4c110cd6dcdf8b1b9a7d2b01b0102cd372043d3100f38d7078d06ef9a6bb7d4ad7c3b7936b41584681a32c8903efa7dfea450340d02089a436f94c4e00a2403ea7bb419dad219b8d22f7eca4353b7779982afe48390aadbba819ccae8e61b34999dcd4d3d2a74bb60ca75ad697c9d7174a740470e1a9933b65334c5c59703870722c9c4db2e5298824d38664b8b539ae6eae2f21143f04de9684bb339ab368a8a397c02b47fa5b4579984971c0ae70edd478bfcd7d8510b7548b80ead8816bd07e05eb943db5dc9a48ced18a53347ada4c772292eeac52e9b60cbb151d3b3f33041923919aa677a7862977c92f34d069d5da9671610664c0b2e8b5bc415d01ad2b6d66d423056e40f698290a2fc83ed1687d46565f10da4e5864c6f9d97e864d7781f4e89af9b941cac39e20860aa2216a6fa7575da2f363014b535faf16f10cb712b27796323fc768b40fd085a2f26805460795dcf06c2a607ea4b4f90e4baad8549498aed72bc953c647a6bcf70f71875af15b3f15064c546aff4724a14556abfd350df8aab938f0960c83ef22af3365b5a6e2ced8bbaee9f4fff29ff6740ac6f356a6262d360aa5be04b302891d8ed2b8659a4fc98b1709c5cd38d7f3e943be87e9edc67b4c2e33c0dbcf08c91604df402f0e574b1a9f1d616617cde43a85c6210b78d914c1ae8f3353d539358fd84cc6c2b8e2959d75bb16a10808733a2e9e3eda44c2fccc9a22490523bfd85e6c07c9d0d03142ff25d17438df2ab19a32719a12b1df7717b777e71596a2383bc84a4f642a1d8ba31916dad9ee3f1b477fe2f654448483042d492e394b253dffee81e81cfef6b947180515bdb3a1fab77f5b3f4da5d37a34f53dc55079802d15a09fa0debefebe100c77fc36770402c90078a825d5c8bb88029388881fc832ecc6c6e46883b3e592531dfee090b2bca21f7a087107be816e6ff5c30bcec0321167e05dae78291cef641bd7525aab464715bb7fa20b9b35a188fa1de69753763ec0346938148cbc0b07959abee523681662f8db1657860eafae084a00913190fb3496dff29b18ed6a17f893716fac05a7db894b4638486d003c6778f7ff0076bec83b3b2dcec0f24ccea0586714980d51f728e824058b4038cc09378105788a00dbfe3c203960b8b0186cfbb25f78b98340c182c8614f4cf0d9869c7eb88948b8a3a4220be1b2b4f406f9d1b2e25c345ae901b38c2c4f4637af31aee378019041ea840280070f7a0f784ff97b2b4801030c1b6acf92b0aaf629800e331a57b7a9fcf66f701c537edbe512085069808b1971850ab7074997ca28757915c2c9614daf788861473cd82093cfe4582d1952841554e5c3c11aa69487104818900c35c65eddc28d11b667d98f8692e9d310f99c660a2c5fb8489e0467bacdc1ca6ece4af134e2527f5a487e80a13e9a9cda34d88afb7761855ba0daa77e3f8234298254c6c88800e591225a6406213568067eb55624916a0f2a764be4489970d0156224c2023d93b60cc84915303d62d9af8b3505a72e9b51ca2fc878e66d99e59d304952ba10494b2c24c266cfd723ec88820cc2365537c735194689c0b00d4a3632fa7d1d38321aaf0f56bdae722f5f86f61800a859226d385d1193a2207a542d19c71eaca4a9301e68b67162b6a80d3c8f7bba112fdd9dad8a395a9aabd5ff431f11e748afea2ee222e012a626b03f3a22b6f7e0c8bfa19c740456e00b8cf2094e0ddf74989d8e14a22b1eff33af66916f013462a1d232eff8eec9c6fb0e857fee351f09ddbb2e75baba1e1437bf45063840a19d96349ac54f3b30df79c37d43beb73f38a417631a88d7310962219cae82c0a2525fa23638c91210c67d9cfdecee5e30112492ec8fac299c69d13faec643bbffa86866ac9ce44d6d18ada66abb81ce8bda50276d0ba8c5952c21e12cece69d45e2f40b29fdda435eb0650e1943f741ce0f569b197672a2d1060c191197347329c4d8996fd02ab96f87939acb2c78d15ed421a816ab8cb46fe758fa1b646309cbbea83b6d15f52bc9748a88fd98da29685720640a041c6e1431521949534f4b4f709964edd342bdf0d40b15f7d8f6c2d8d8ae29b03704a969305a52defab847c50247f48824a11a24cae5a5ea2591ac30ecb401b84437cbc8164733fece21976a0d46cd54448d71248f78a567a91de75f15345e2a976a47ed0a75ceb22983f0283b0b06e1e1134db1fceb6606170041513fbfdeea785edb1aca21dfd932739888d22627f630896081b06ad416a0684d40c47b81421f967f653100bf4983ae97a47e414d2ff205639f51ee1b26c64825600629ac72ddc4a1a326a64bf9cfd86c5b476277e5cf56f468d1e315980273fa2edf28bc68c5d0a7bd33350c553a1244000911269c0a0f6f86396d76cdf21fc933d59e00ea1f429cbd0b45121e6d566b2d2631b467752bd803e4ee820891eedab8f343ea6b2b010b4046e9467c4f7aa3b6152ce318c2ce7020b140e0f2e9e8356b7cc37237ff7a2057a6f9d6ec9947abbf8a0e127740b42539b375d6b4d26848b2b8dd1541bc0258358099c051929581b95ed9fd58e49714a9c732a7e0bea1f00df6637bc90ba7ca4054fb51ccbdbe8b62cb28f5e52201786b2d44bfb7b1a87bab0c86d017d2b30eac46d710b59446b65f8ea808516717b4fcb868ce1667952b0e716113e194ab7f02f2b154640b2f6f8c73c072437fd2025f47e203014b42a3910eaccc23a117f7d337e3a147a195e13a1966504578cb0e90a46ae7f30bee003bfc38871defca6b7776dcd11ca0ef41c2a658ce5df55041e706afcb357941d2cfb4466b0263ecf3fafdb640abd9727b084a19c8c76ee5119bc30eb102f08f526cd7411e98665cc85be52352953f9b92903ac59cf29867420a276fa284e28d1cb6dc010e7e2eba3ccdb9ab4e10a650ed850588572c2836d63652186c932c8f83b8134ba3cc52dd24db5ac345b82f62a43eb23559899ab57d238d1ef2cb6897ac67b760247e5f079f980ac636223137b880fe8d312ea33ea0b8c26baaf62331124273716b39b7b7a0a6ba62c60971f40f0f963bbb74526c2135247c3ebc5b85e5e7214b3a45d048ad69fda44cdfcbd2e393729eb6933c633c30ba39e716f1c5216e3b9588107a7f336e3725ee8e742cc2b2edb01e101f6094d652136b3278180c1388ecc05a2e83f78546c0aa6cb0f6dcf1dc068faec31859a779732661a23aea2c2bc12a104c3e2cd6161b08687a8055ecc224c9207b415df814d6c9a9934219805f5c635c92e9a69282a01edb12d7fe2ee4b41c4c283c25f7f23f1fd858cf796fa0e49fcde3cc0eb17efa56708f8e961e23d6355ccb722ec50121277aaf7dd0bdd5c26947cd3b08af7512970fbf185ed6334359b094dd833aec2c2db510508272a85c9cd07c86d1b540712335391e71a72f36144d9ca31ccc7f9868a368570d22444672936b2d6a3b6b87a70e6da71cfefc1b530baab04abfdebd98100235d73fb91f50fb3ad7996ffadeb6c556ec9d7bedd21f223ebd2132ad7d7ebe7b13f87360adfdc33e34021e27029e99b89db9d70a5c563a06b87b154f5fde94e6754c9f8241668514155332c58db982ffed701fa0fe6877fae6ebf1f4de88043b2ad08c971c264085a211326fe850ea722e3bde8ab33555ac56241398c66599f14740864cf2b66e74fe8f6ce88939641aecdab50f2b887ddbb3fd372688ea4d3c165b3bdb1626664bea0ac692ba7ff142a4a71cfb0989c50d9b2990f170a8f190095884b09cedfae9a016d40b6f2429735ddaba6d3df4fcf55c784fd74e96b65e2c3a03f16add8ba42cb1a62107632e9bf22681df737b14333545625a3a47e2c99475ad43246ec0f7691a9aa3de64281bf9bbb55a2b02a85ff15dbb9208f9434ce706b72707cab8b26733d76b483bb131a1861a6fa3870e6ab7358249055668eccc5bc613554d4a73569ad51c531d2daf3796acdfafdb2c39b3580c31c06d06883bea0d1bc018aa7bb176e0d6eb9668bbe3cf7a44318b77f35238909e0e4ea200c0911cbb20874a8310060e79bedfa2f0174ed476f93aa28c6e439aa0ec4a063e670b49a63236acdb6bc66bf5e1e19e77c86889d6a065c77adabfe37212e00c57065457b14c697cf2abd430ae8934c38918b5a280c1d9015fbd1dabc7e1be1c4e69b021aec83cdef861825cace078a7966bfaed28ea18fb3d23e6a37a72f1ba5610afcd7c2cf1fda3955aef3d26ff3aa8d2e98ff9f5626d61f010f401ea87c3e6340b14b83eb3b94424f9e64960e55a20cc93507dc32b1f989a9e00740f83d344fd177bea42c9f453873f13300c08712538ef9c724bf9c5acc177f28ccb4cee4a7ecd51abb471389a7a19fef56da4ca04b93847da922017e574174efa3c8f33b2274e9f16176be2ff32adc7e9c63312b300c515b00b7f469e336f2fe00e0b0875bc8c8d48cdcc271ef59da5035bcbdf8ca4e285ce356b2b449dc12c6ba01e40ebc1619ed1c95ebd57c587bda4c7f2aad2cccd0b2924374530cee19eacfe2c5a5bc4afdeddebfaa6029cf87883dad183bd2c2629a9de2088b2936e1c255595f96badf7f690e4301dae0a77fa677d0cf11aae0636819268d5214a1b890b1da73dfdc6d6a458b08e4f4b6c26b275c1ab32e1ff03336f1b567901a94f20d4736619d9095af2f301cac5bf47d8307ed21979c4c714dee377141169fc8f5501fae2451b257d9b517f0f5d96465e65ee080e46896eaebd3655fc12751d3ab70af2bb2edfb1abe05c385bbbda23da264d13480c15748b345a9371f3ddc9f660d05a834e3760220aa6a85b972f662fd7ffa9fa9fe62d6eac610be6c4de593b0ff6e3903aacca5aeff0bd4d4316422d0d72775e3ff1770432302bbb3b7b0b6e80c020ed10455e00ae6c28bd4f5a032705e7047f919cb8ce577119887f760f02dce6ea64c87998979b118603c0776a2e67707d6d61ed9df19c84239206934d092e29c61b152b1ad2f74ff5ef9ec2a4e38e07b50c0da6040794e0ef8db11e51bbe0e5a27648339e0e3a88f6d0e2d0d02c53b020ef80a763236012925af177d10841cf00f86656d01744a5e97721d1319c401ffe419199ba0a54629bd5e0aeef6c220077c8af95801c45176cd945d5728d1e5133fa9e1eff2e89dcea7a12c34cc2a6a7ff2611c13531b34dbee85324f0ee758e3fd6f59f2fc3ed51a46525b6491a55eebd528c0dfc4b74568d0ef9b6278dbee2a195215820b142b48ea137cfa14603b6fc88bd6131153e35c5e5d2309159627e5f9a3acc4e709b90414f279de9e88f83c7efc9d34b577854f46ec989fd8c9d9cce7ba18f2d3b5e16c040068c133fbc7fd47b46e6767b14399aa69ce27db390167d584ea072b8ae76dc76a91bb9fbf29a6e5456bc68dce5d4a98b92de0b9a8b02abecaa297cda46cec43d53d2fc9289976584f7137a17abda87832b61f1e085d84463aeb4e5a456339909ba2772215f8013551c59d786351c75dd986ae70348bc62a6fc6d49d1ea909fc26ba40254af076d3a4b9a8819810afa222ecf70e8a2e0770888a71da54c67f94bda11fe8302a245608d253a9fb7b574bc31880235624eb5261f7b7244c39c7c9eee646824c0908110f6ae12e0d76c0bedbb07a75b2c5389bb4fb223c194cfca67ff88817a2514edaef9a8583680a558405252ec47f1514fa7b200d7576a4612bc3433ae5945edd2fe26895e84bb8895763ed054780426c0f3ed27f80707132e12e9c07244c247e39d68c9c8e2a023997c6042fcb52a8ca58206ab9245dd1aa28db4cd0cc97deb5f8ee1a81e38c98a82edc92589e660bf938d4f9f228fa0d1c0b0d2adad9ffd8a13a8be7bdd098af77ae8e40dda2800e80a0fdbd7bf6b4e1cb0e9768ede83edb0b2ba9cd125a35a0b886250db590dffa692377020840452c4d65bc6ea0dd3fd3221d4ef8d25d60889fb00392356f368aef3444d0f6581495cce0b592c3504885d2497cf324bfb149308952bcb1097de14bd3bc7ac9d335a1e76433fa243d1d8e83de925c66185c6e536a026eac8afffbd900e09c6b9507c25547a887292110716416ae65508c6676ad75232f3facd60453ac6a0f0e467fed8e44bc3e0846ecc39e9e2779c68b42cc6c81326734d904539b6292894d3399e932d17946c600265c38a202bdedf5528977d8bf364fe72855f1ee3d6f7cfbd6b7befbe65bdf7ce3bbefbff1cd37dffbcef7ef7de3bcf5db1ab6f80a5021a8ffe75b7ff980c5a4f3768c5f398fdf13b2bc27825a2a8012e4b89720274c90aab8bbfdd5053b725bbca8ae434118cec58fe23ee4225294abb8bb80d535d80cdc23981b0c57328d42d034d78b52881149cfbec65bb7fbde9151bd991a349e3a2a0328c3d05d91b88da7b1a56d403afd023c3c22976f3eb8eac7525d49500d83449c8ea73937e4b9c17eb32718aceeed021580b020a9f62ea3e8268980ddd834daf88b839991517d04bafd4751d859b2ca7e6fd35d14366e1965c150ecfd5584a0e4c16315cb01cf9f76f5549422058b0a99402c64f449c87b0df3ca6da8701e1c82aa5dd3fd612bd0b13a00253a1edb33ccf22a10e3f94f9bd4862edd52a5884da25a7ad0a6ccd5466fd8ad43d77c11751830770529801875e887c9af978943a693aeb4d3485fdad3a529dd69d2971767a115a6f3201dfba9c3460f56458ecc89cbad8f59a6a2fd337954926806284b9a02952aedcd1c4790d71be4ac22d13bd657219a5baa31d0b21ad457211ddb393edff5ed6dfa836228f501260ed6657f0763a5a6858b922b4214fe9b7e58182d3c25849492dde6fd4b74b027c0a72994205f843d7ebfc3c08d3b59742285926db9d227c44ee76eea913858eb4f592081949ea7c728cedd231b75a1ff05381b7918656ffa7ff00c9dfa2f94c557b4360477ac352d0a2cc61fccf5007e6feb71298c2e5c45c19ee438704ba8c4b321fa88a85d92eb7ff65e2d103dca4033759315381bbf684e16e42cf8378dd5ee170fc4c25d44df0748b5ffce1071c09df46f0eb9c6af1a270939177c9ae36af4db01e3aa4b7e8e9f6b30cf0561179ee499a661308e3ad135f9176ad4214dea064b70f67ed19820ceb5f46f18a9d9af9e10853b08fdcf906afe8539d2913be1cf187a2dbf0d7ca0a8dce7e87d01bb5c133ed9230dd719c20788725a937e59410fbaa567780163fb6f8c88071cc9ff86d035fcae69529c63e1db38a6a6df1e30a85ee6e4fcb807eb5c1c66f1269d680d0783e81951d3bfa0471b6aa76c580367e797c60982dc659fc688dafdeed0b8e2829bf3cf15cc7380f09d2769a06f348d230e644dff0d15754023bdd912988ddf0f7a5457d871f67e0353ce0126ef27096b8ca3477461a269bffd23c4bed0d46eeb84740ee46043c9094642138e09251c1192f0f32660e14f36e91b0cc3c81352d37f41891ed6486db007cdee770d13c29c4bbec61135faed19a1b083dcef09afc6bf18231e7112ff18c2d7f68bc60471aea57fc348cd7ef58428dc41e87f8654f36f821b5d957376bc5d87a53966e6c92ac0b875fbf154b2c7d04c456c8dafa5d0a4923a60981b8c08c3d1a9d4c31182934c009f6d6df8fa013dda6f3f3489c84fd67a8d3e42fb8e879cb9d6f7bd7851723b566268cc3a46e1c333f0147a8c736b9de311a6fd498966df8045a145deb32295f4f6ebbe79a224963e872e90389386ff7b7637b46297694292dc3999cfcb1d8bbf4c606a30636ff140cf8def8a9c409e25e0218350bf88b959a2c3b53462d444e200b9b9d5d65ba3b29c85c40cdcd02ae73c75ffc80a6a1654c76bb7227f66ff5fed4a149f03e39f956ee88a233e0f7f4644b1492a584e2624abbdbb3aeeea10ae97510170ad90538512544f994e77fb4484c0affa36e1c3f175bef26ae4641afec0ab0c338be745bc8e855569b80290b54a5e50d72216d47b07058a7c1c8e96fd4b9bc4a0ec19d5cef3785856ea9387858b4a998879cf04759499a54205a33bb8402cc27f3cfd4491db73042b74a0b7e696a942e8ce53c044316662c1b03238c96321f8b9764b9d4537db042e59accd1de93befd3a86456bfef61e56f87fd50714fb98b6a19ced3c5524af3ea27f31899eda28b4081b7bc705750382e3d0c26022ac52425b8006c28698a05e5fb7b86382172acf2f118a7dc320b4ee894e6933fc8a2b0ac1f3301c3a0a2ecf2f7f23f58f5bbda912bfb55a0d18b3c517ffaef6d2c0091d5eee11e170e94edb3d5aef48bdb58a80d9187b206db6aa42484b18a86e3616900e48e1251a7144b43621b69c0820694d2d9ca4dede29f526324a8846cba9df20cc921bdff927669a04da1ef713635f1eaf8f9e972ade9fa8f004d1307bbfe1709a711f57ee776e57ec7ce5f6163224a4b7616a4a05b443f9926fe8411da79957d0094d021541ee2f83ebdd34278a2136ed45863d0a5e1b677161ac6a080fc8dd4a3e11163ce7b771d1cb7d37becb2483670775cf5fd90eef83e9d5b54a429e467afc0f166bbfda44c8fc022a117a7e01784701ccbf797e03fbb70ce0a07eb439cebe06e41fa161df401a813b819a4e46a920a073524b6c142f4b0642e0aa45e029868f651411ff3fede65a8b966b011ddbc0da85f2cc35b77d15415842c301b6a4f5e1cc3c1c2c77295c80f059ffa2c385618ea5d1b0d27f82982d3f818d0beb5bbbd5e4c9aba784c3ef8d0eafdbdd15cb4af5fb03f7164d64375023edcbf042cd449db25643ff26f31c603a0abbdce4719d3dbb16558a46df042e2c95fda9ed71cd26296339820d1068160dbe80a4d10fd2104931efd8d15fc46bc78381469fa726221aeb8a1de4437607f3fee0f9002ee6883183a4572e133605add887ecc78d72a9a9ed3ccce6660fdee19c3d3d84fd87ef88b1969ee0103e59f4f12333f982dad7d304bf2b3a431f317330cbd50253725594718c54bdc5dd4aa1d9b05abdae970235b770543101b1e7b3eee62dd808844a2354a43cbe1e6b738961124c66e5cc906b93d8bc81ad3abd3883964aa6aa10c87a0c76c0547c7d87d113e6164d691a530350ec241d7dcb84c73390ca1f48326359bc5652c3d0d442bf7e13cd57f6baeb0e36846c6f5c759b59f5154b0628b802e6df193cf3838afbc978ac459d69cfb0d92fb175219f0a49ff03996d6dd2631ca52d562509165eb2a81eb23156aa9b120e4c01375483fc76c3392e2d6008084423e262df9808bb2d023d77babcbcda680d0c48f9a7cc410b02e8cf0d63e039044b50b55e4374bef31b2ce765da7a9993336d05c5b438bde5eb8baaed96d6dc0d2dd1512860a84959625f64b0de679a29af7927264bbd92af110804c1271ac94382bc4867f3caaaeb7ef0fab223b80cc0d2650e5e8fdd77dc654195a6c481d167393d9403272b9568a0d4e64a39ac747ec481d60ee362c7412001cfa5017117889c70733a8c887879dd20ef97f19789800b045a05ab00ca815bd3d947f8bec599d32b793ea1f219c0306af8d12e933180f50ae48578492ff0ec4c81a35885d45f947048b9c464c5b94fdf884b84f303303169d3dff9632fa7a0e97cd007488de834de7d3730d1eba0ca002f9fc5c3a68b7f62bbcb8cc550d4f25f0e8cd483d716dd6804f519c4c7527ce21d245b70d0637d1a169a724eba7b3d5ee25f205169d4bf18d26cca7c586e78c25d703128a476acb3b4974195b9486be18c8043604248840e7de08d6c4063abb77d9d49cea79c932bc732aba40d001b966de5812399de85392b860a6fe0e47c9dcae60eff2c1101f5137d419f6c8de0ff62dec4bb594b8274e0fa76e1101b4a0ec094dd7e11130b020cf38c08313a6ba92d4403826627df3f62ff84391f243ab8651018cc1b467a88725f5dd80c66ca133b54c9a8746a0be2a1341bbad4f9c34e89b8b6fa87cb904720a5660ce39b66570b33c2a18deea6a49409dae63038a3855df1b093572582e1364e5ca8378a35c969252bd172ecfa1b4af181cc2033f2113db7ec3923396035530886c69cf4817389894daefba59c6385d1d04bf0ceeb1b55f345b46b9cca2082cbb048a3fd273603132a0ecfe26f01f10ed90e3a3153d283c4fd5e7e8861385575098b5497a6bc44fc1ecbd75e935b1f8cd85dd0c99d5b0088cb9a71b86995d6740e154ef2454712347cfe170efd0463171e7ea2fe6b94cce95c3ef7a6f1afc1de4445e639ba485ca3e894f2be5ef5a57c07555e3c723d20190ef87ad66ab41c896990f071ab62a62299e981922d038b0d3df2ccaf602921c739e451150098b3fda7617e8cb6bc2062dc4a074644e2f81c411b222003b301c7f80220c558d702e913e707075bf68996bd31e36290e751e97adbe557b3ef5087e1f8021ae2ea665207b80f1ae975cd1803e9b66f430015bca278be568fc6f2f7b2198b9d61d60decd708beb3129d601918be13323f4d7c7b56ed75818a85670a0daa9114dd64075240b19a87363f70b7401cd9f058a607d3b054a8b716a028dee601c8116f3b3f1781d50e7b5d57747bd642da40ae9d47851f0e78971d8fc8852f0843a8b8ed25d84e3dbd0908acd55bd67bea60c2cc1dde6b9c79703ac5f90ca71010d64615871482e8973cb3dcfd35fce3a060d419d3af084cb81e58da725140dc4d347b82ed0bfc818f22e3e94c70b2f82f76ae715b250e9250e15470a057e90c231a9f2ab226bf7a9f58caa63571edd03427a35b23c265fe587a624885775f99efed961a436eda71423bbef811f45573eff276c8f44182a09b73f697016a867d0c84b34becfce2cc01659332640df82cae00f977c6aec2534045fc4bf03fb3462d7869b411c3267995a22887c0213f8fd748bf5511bba63e91da02c1462d7af656bfb624ccd515c1a94691f4f09fe0511c813b660c71b909b2c2f344ae10519d97898ef213578af870f8539f69e62b49e1d972288eb4355c93bdd0066e1cff171040b5bead94448d89ac8097cc53dd3f10a38d9af1366faa27324c7da68ab22b893c233d67862a4fd5f3e7a459bc98634e2b565451aee32ef47caac9de605c5a22341ed24cd21ad37c2d88e2d1b6b92cf102536c3b3279f597450ca8a583bb5c71419582f6f7bf186e84f57c59da9b34da8ea1b1eea511ec70ed3f5c52e8cf92bb6154456bba23dd297b40ddc34429b2d4dcd0a3b21c54d9ecc667aa8bba02246375e869b3546e12a417d0a42a290e7120efb1ac55c5bd9d96461cc3252cb25721de96f41a393d410ae753559e75fa9f8f10a2a436a4c8f5a7f7a4f56e1a820283bc44ff4848a1c89f38385d6225058c058578ab3d58970a5e4c417aa38587a13a233c65ca29fd35ee64174a43d80c17149abe36a0cab234dd505b03c38755cb3ed7065a15c8ddf9bb2103e1ae074f9e9faa3897d7070662bfc5a5ee1fd94a4bed34ffafb0fb5fa4061c42a298f7d01746710a32d422c824d1498fe491a34aba29c31e1c0e239b1ab3ea2d43316f248701fbf54d6e551e92b7ea038e4f5fb88f908423cf2ce38feccc6071e7ebaf4930a1b1004cc8f7b100a43b4aa62898a1a270a8b83d51e32d7e99629f564308267d92f537aee97f856383e60f620f7f8eddf5bb9e50e5c24ba054072db9f23b7f859ad46f3fcf6368c49d7b52ea32f4898b492d871d3f2335d0209b5c587ed2798520511c83b57ca9218502e1074a3daa02d24fa0a65dbc5a2c58b0e32e3fe42d9860850978f0e90f0c134e62311f8ad6f3e367c4e6cf80461c3b3f26b78d4cadfabcbf97b42740dbf863626d3654fd05a72f1beb7e43218975cd9b3be93cdfda134b3e4b238bfb01069cb999bb705d1dedbdaf24be58c4ee4680b663ddb9ac008343a99ffdb7440cc72f31f3e640aabb638ad9f622b6fc5be4ec965472f2d4b91d0cbf8a3ff0a941a84313c044794159bfe96373346fd27bd50b10f58fddf63f7e50f85071852876b9eddb4c340ee601b76b8f213da2c70bbc3c55134b5688c655c94f26a8ee644c506b2c365c90629da43412d72872bd78d0cf0c778e00b9ff96613399065392186e10c504e443f0c34a356102562caad0fe83eec69f495d8d2cfbe38250c4e35fdcdbe7a8f5ce1e33c6b2ccca3a3a51d8a4a74ceb9480cb06a7aeae179917997093b8320e97aa47a587cadeed72733796ffb34a03f2ba7e4351fc6fbfffe0f73b8664c57d143ef8d2665ed7897eb7546d83e14d00f37eb265e611d913ac0dd75afaf3331c45fa6794ea62d104b87faf8539056e112e55f85248a45b5d16c7c442143971862354813049345208857d5fbacb0229c3a37ee335734a14c5648d88bb06550f4c361697264551d38543a62eba0e0baad44b9de442446b06054ffaedb8d847e440fa7884d96b06848fd6e708720baf68f8025704412120655bc7b7d9ba073a5106d08a94a70d4ffc1a2517aad8b06f2804a9f363f841b2ee4414e8900377a708f6cfe9872df66b2b095d83ddef1e81cd2ae29089e7753b2f4e58439d9a40f3d82407fbd481901343042710aba41158b38738c95998f1c8ef110675b38dc39f754bfd321ee17f864d06cf29eef05cd72772dc437e9f54611557122505bb33b248a6e8587efc76a4232d4f6c0914933b317ee2a6781cb84711b949c577db3fba8b5bd4951386994d5122be7558bd84aaf8ee58be8e34702ef86ad914b3e802956557af98ee962cbd4f2a1ca494abdacd51055197d47275efd72ecd35257a33ea9d20d10f30e8b45eaabc791553fef975c02c7dee0d553cbb76093f8461786f20ba08037d402335ea16bde6f3f6aff9fdfc010e6bbe626a6d4ae9da452059e0404250d4f107846b43acc40cb025745b02cf053d222214f17be49fc94b42c70d5d9e4eb23222587d21f60ff93c8a6e4c4676245a84028aec444aa628911b5442bb7dce2fa3f610d67a25fffd50d9cce21e89f026e0d7e0dac0c200dd2f953a7453fa3294e81ac4953f38ba093b09efae6b41a7c53b460d5fbfce04f91cfc8dd8d70cfc7727703b8e7a3001d6cd031051d493c3aac8e241e0086076cf10034c4265408baae6acbea5706d1425842e5b64a8485eeeb3354851be37c12fe787e2aa84461b3661c869f5a56fff947681f608403c870800f1c90e300200e4880c7014430f1458e93fc38b89ee5a76e7d69d5b599667983da37add45095c33c6d53557d294e39c0f3aa1b9b3034f2273bc344063c4c4451d1c0c0c89c76a5fa51b443b4ce2d37231632eaf28400f7e4e8c3f84472e858a20d189b50a737ed13de7609271ae0860670e1ee42dcd30021f50e9e4a044fcd40ad3c4aa0a1040794b851428887613553323f8a6ca97fed0914866fdae5692b88a656fa948eb9bc8109eb4afdbcf281314dbbf2daaa7c5f582d9a12f5a756ba245baa935a7e6af8edd36ebdf1993aad161960030f03b2f03040f32ce00ccf023ce059c0910504208932aa504c35785fdbd0a2b06b478d29953abcc06b629306b53d09e55b539c1aedd678d73da63875e2508a53956ca9a7ad3eff489df8a6afd17aff6792e0e22509f46f9288a974b82789ea2c2df545015370d7a9bfa9a7f2714a737f10ad802d017a48401512c0027707e947536799801bee5edd83841a4888e141220348581e2492f01ca186e7882f8ea0e288ceddbf2bb2d45018565048c2dc165028b2d4505556d3587ef42dc1d4df7c9f0ef5d678ace1c9b5f2e27e5275a23fa9bf99f11c81802e585a1010fac9a7a2692521a0f320e006ea0064b89b76d407c8c2dd1de59ea73de5470f50754993f3f7f418400b8f015c0a808702c0c0538009b8fb7f264f143e49685afff38f23dc43802b780860020f0124e02140e7eeafd37a9637ac5f75a626312604f078eae0f1d0c03381cb3d9e201e0f8e30dc33e80bc9b0864e429f3fe0c65846e7543c95a9d39a6ff20c200dcf00703080110ce03480031841058f112ff01801c44f3e9fbef665fe84b9ff280e7d3554853ee7d3568c3d456ce129c20245a49e22a2f01491798ad8e129e24613ee1140183c025882004c8f00ae47000538d115e5da97a957a83af1902b3dfd08abdee5c947553e129cc9d0894f5b2ab146f29f7fb8fb897b88f08287082edcab93fb38a5e9212274ac2bd64424e15e99b66788348670817b7582539a9ff2330904c1ad5f1c8d8408430bb1c373030deefe847b6ebcc0738388e7060ef76a639c6b4a344f98eab515abb6f5566d59d655ca38744dfb949a789b4aa52965cd6db535d55a49312c2f249927ea9bb627006704c0059e00d80028e1ee6fda35ffc63832a39752486a97e5b6e068330992e4e3b1f4e77f2efdc5a7bb8fdc0380230fcad8c8915a790000f204b1062fdc6d8e80206c4255d02e517f0611e35e4120d37eee09e28657638ae4b18106c9632389fb8cc74668ee13e30d324d1b38aa7affb345c23d40a8e1a4f9bade6bab07082ebcf466895366f4b735eda8dfae788040dd4f0f100c70d73ade14cb7d9624ee4a47df4733a24921614cda02314dbbe2294980bb0f714fa7099e0e17d525cb9a122b364d8f87e1483cfe0733fe10867bb5ff0f04f04314fc90c4abfbe7903ebca10f3ee883a90f38f8600677afbea64ec2f0a37379723f757f29dbed52f121007ba8c21ebad803cd1e58f4e0063da4400f55e8e193072de4a1087940920790fb554b67e9523f1816189a8a2c41e5ebd4a2529caa9f75a43835a45627e19fac0695396f928fa3f1e390d8b4ebeb1265d29fc96aeb89b2e80c1ea2c043860705dc810b7700c11d9eb843107650821d72ecd0803ac4d450f5916ae823b1d656a56abb4fa50ed1d2a44f1cd275d0e870061d5240074c87910e38aa1743f7b47bb4393f43e2135bd37ed69fd45985a12ec3395c63900308e4308a831f7210879a38546b98b18614d648ad21c4ddad290c7fe47c5843da9aea9b684c610d59614d99a2152d6ad352299eac2e6f88770ef1ae202b53bd2996677996f74cc91d3bf49376eca8df132f2d2f32a42255ea4459546b1ac021091c5ce060c41ba2f08624bce1ac4e623ef97585f323b1a646c3fca91cfc695dea1c6c324d3b9af63326cf9637b87b457243195e4119e7fc468e543778e161e8861c4c92dc10e3eea8cd112347ea4972030e23476a75c2b401086dc871f72aac19af8476f4d106264e16471b9c0d5e54af2f1b6a2ace8f24c4064f35864e7c566d4db71ccb7426f54152c627324a7d90d4075983b88622d4b00635cca0aeacdc8c6fda2956c3136a4051230e6a68c15d9455270ea2537f13a4458d540d21eed54d16c55d9e5e8d1bee55fd1beb9286541a1e908624d2200034b0010d6270f708380e3480000d24347cbcfabc53f971aa2ecb6ae5e4714a7d561d7e1f2e4154879f1a9ecc7c60c2fa85e069c730279cf98bc79599da445db97844fd19ac70862fce90e40c2138438cfb5543333e9e20c58031241f402adef5da2cadba2a5487787aad49e217a966e882198c6006339cccc080329451860fb85fb58998baa36a59a7ff86c2308c89f96d733a8ef9ef998aa94e2bde1b63991d3b76eca84cb30c5206ab0c0548c30e38d2c0421a5fb87b5977d48edb2aeb5375280c2b89c3961055c393969f49c34492c8f00632a441862890c1046498820c22197838e8cb4cb3523ffdbbcc456aa8d6aac252435a084ba8dd8555a2fad5d0c9f58109ab7e3da47e61099be05543d5c9a7fecef8aaa1f0e4fac0843554a1fe9c19d18c258af76b6b4275fe53aa4f3ceaacedb6f7fb68be8f068d24ee6ee448ad6e30de10701c68d478aaaf8979a47689d23647f2e39bd2a071d537ed991cac824da81f738a67be6f3496db6e34bdc158c8f7d1a4a0fe1cc301c4f00731c0410c2cf0cab22c9075d52642d3b463588bd45075f2a9bfcb8c12c311616883bb07711c6180411868bcca1faa52648937bee9cc9b40a669c770632c13daaaff8c3b9c918633ac7006196720e10c0f9cb181332c7794949a43852554e96b3fdfafa1eae4fac0d4d028a5e6a84090a64afd0dea4f42d49fe1a73ebea9d6fb7cd34ecd2081c192c060e97234fa3e9a94941cacf27d345fb0c0179af04217bc70857bb53f55cfb7a6f3b4268a56272e8515ef13df8c4733068717b838b8bb0fc761860e4a336ccc4880bb931c4717bcd0051478a5cbd234a6fa241cf2613dcb4fdd65d529f3c47b143fdb4a92fa2c6dc9d69afa1b6cdaafcb13ca99ffe6bfa3fcf937c619d4a39da2a312366fcedf93db30202398ef3b8d35b7850b375c38c016c4f06aa7b8de9c7105d9d2595abb052c706c41660b36ea586e7bc23bb5e79b68b4f0042d90b470c46ac1882c7c9185eb5578225341b7e5136a1c6be2119aa65d09532cd4c1731c5808030b26160ae036472a08b4cd54a7cc9d4b5597d74cf115ae708509b8699719c7151e700522ca184219a1bbcd11d089d114ef6cb11265b815aa608524364740468e54a8cd7ac60a272b30b1cdf47c7d927054010e55b0421572dc34ed884f30756d151050051c5400830a252a20600a634c01b539526f59412913c7a556299de2fca5d3de13bc6bc665463fd52965eaf2b7cdf8d62980a65022051db8db1c31eda8ada9e2e09314342085236e5152c811053b442189db1ca92c2d202347aaeab25293e28a37aef7abb628521472dcab2824611a4f1bfabc020534dcbdc67140210b7771b4e8cd68cd6a356a4df9636a85afb62828c47875cf14936fa2818208071968b83bce95c4f8ac1bf4a668cfb46a8bba9fc9f82293a185bbc7380e329ca84e2e5a56a5ea3f4f5843a7e813c4f02aff364bf2c44fb802639a2774ee3b3fce59862110c7e10435aafbfb339a7f9fa52986344ef8815757c76874f249398d3523d3b42bdf372ae9d44cd5b6d2a4a49cc61a3d1a09b94f242507abb87b8be3684235461ac67882bbdf388e318e8c718457a115d5a65a5155555490155555452a55a946eaa7415584f5c43ba5c247fdc2175d6a6a747716c7c1041930e1c404093041005ee9b086aaabcb7ca6a7131ef1cef1b184122c815c020e77aff07659a9398d39610d5527270a9f37678abee8b252f3b175ff8c1254f0e2389420a4d2f7b4fb4693c49083bbc3380e3164204607c44022c6a7fa5ceabf2897951ab1cc63cacc16ef1ad650b53196d12e2b353575da6c4b9fab4eab4c127a908423497841821b90a00577171d0712321292384211701c011f0147187dc0110617ee95fe272bdea7df2508fe93610d55ff64b5e819aa422c237125d52f4c655b8e25f9e78b610d559fab06b46b787252559f0afa6035617db19a6659a4562cf50bb7fe1bd650e934c577a95f18d65015ea509768fdff51b9acd4547bb345654c96b7547e7e1cacf57ead7184418411bc30c20a8ce0038c358081060e304080038c28dcab1d7fc27a078f13972933b563e37347355332d59554fdb5a71397e7f8a67dbf0c43fc52a119d7941996f42944d5d279cff224552090695d566aea69ebe8a44b2ba84b53e08b297b323116415de6df76a7f84fe576773fe1fc43c67c9ad79ae4251dd85feaf0120e983440007eab9a12eba8ad2ef3ef148ff29f6759ada948fd4e5c3e4a9fb6e27ddaaa4beb52ab9bc52f54abd2692faef8dc3e2a28c647159ec45450cb27acdad65a431db684614c18aa9fae27e2a756fa2ceb89fdd4eaab965afd2d757d54e7fcf7bce7a39c2d162dc772db6d6fcc4797dfa7495d6eab6d1813d650ad72aab14996199324d0a779876178525341e0274485356178025650cd270c7558bfb325256aabc712a7deb3866ab5cb73b45b9f8fe2d25906953d31a909478cb186bb57637c31468eddd64433c6c76b2915ffa2a793096a30e10baf98c004b4620210f76a096d488935e39ad24ba882670926f7eac37009dd49e8c4e7a72e215b25a0a1042daacf78ac66b5550935ee4ab0dc89e01831ccd8252a460dbc02a273e92c6f462b9ab435ed5265631c30e395cf783c4b0b9ab405222409484802063cb439928495249420210948b8c22b153c45aa9160193952ab23cce1086284a023618549d311b2f023004989f5084784b186576174e1f5c4619870189de3306eb8bb11ca70374212af8c3053e51457d49fa83fc130c3dd53d63cc1d0020c163014500431142149954b27c6baa67414a9d29822c06c0b6e0b8e462f2929e313b97fa6f98b2f7ca14595dad9a2295b3ee90b9a5b82a09448043e10010d0f6daa246e24ac8fc2102174c7315f9f88605556d525116ef810c8a886c0850f01f5216cbc3d4230c32b2178e1952e8570855742b08260c61804340861102c209801841cafceb3a6442034c0b422364be7a3b7e596e00f3cf083ff018e7adf94df9667ea032cf880043e80c2073664728a53fa9471acc90b1878bcc871f762d40335787a20831e08f1ea7e4bd5186ffbe339f2400e3c7081870752f0e0c60e7eb0031bec80c6ddab53d6e34f21a6baea37d1541faae1ef161df041076260f47560ea60870edcabf2fee954bec6baaca02a0765e400a54b1c98210c3820010e8ce080060745dc200b3790c10d72bc3a61ea17deb086be4aa7f97160c21aaad221d5dfd85d53f6a42bfef0065dbdc102ba20a32271b53affb5bfbb808157765b16ddc5a79e3e6ca006ea4f8f0dba2002135373ecc90626af36b0dc3d3528c3bd3a7199bf862e3f648884b8065ca4b8fea9ac418d579a0678a0419212cdf97ad200488ad619e061065ccca0f31954199021033475dace4f16d532f81c0331dcab1868516b8d41e8952706384e3b7ee15eed14dd6505c1200baff49b461858ee1589751233dc9324f12461adb526096d2eaa784119ee95469d2f48f282cedd0566b80b522ea8eede82325a90c4b620c659b0c6696b09b3808bd19e766481c9ddab5a59f0f115a4e1eefa9194fa91941accb1a7ea1a61590ae20da2290a888082110506f0eabea84dd39af6686bca14cb3163b22c9d5f53ad5b4afab42db8cfd7a3ef1b1fe7fbee09b8c8f80426ff71828f09d0d8e57d8b4d1394c0044036f966f5555941d7044790b630630b2edc1d54495bc4b87bb52b89b7c0e11eda9c296924acd53d2d36ab69924ae085fb970088bb5738a656d792600dcfeaf92fd290a00b77af2c096232ae3a48b03f556eadcb1108190117ee150a9be4084277ff2143e465049d57f8f4a711f8f9fa7c2dcad0a20b7c6a91851635ee67a945a7858be00bf730ac201a116421022022b8e15e85000cf72accfe4f7cfad328044eb87b653d201803041300018b7ba573a84dd3a62c88a5ba7f716a9a96f48131783e3003f76ae6c4a569713d3f30e4035d75c3f06f708c07da5095d7870792e8001a9e0e78a10314e840d6011b1cb8030766c0012b38000177bf714f165a984116dbbd3a4395de654b156a1df74cc98c2b8ff09e1ff2f84c82f54dbb9238c463eb34f495ac49ee38cb1de48f13a8acfec419a36c1638361086c5dbb4ba6ec0021bd8a18132dcb705a53855f1c666a9b4e8c966fc65dea39cbf44ed785f97368f52d00ce021b4a99569926a067090811aafd52dc50cd8702361ad1e034cc000053000720f6d40164df3b5291578d71a7381395c800aee6ee39e0ba08ecd722c51db9cb94085051fdc3db4a9a00a02dd32ac5096848514b040dd431bd04858a1b6086a4f58c4b8dff76081c375792da0865b408c6a6b8b5aa00baf5e2c9085bb058878cedf2b6cae20a20246a840aa023a2a500405c0a0800b28d0e2b1420f56ccc063850aac00e215aade527cd30e6bc856d04e4dac45fba6bd752ec3294e8c77584327e43dede7d1131e412c2d2131d562aac31aaaee677d4b955a9d3c4ecea7a7fad9a2d6bca5b5b7146ff9a7dd667a2a3536d1bf9f52b4c28809ac115a99409ec049155ba8428cea7e4e311986617d11ada7cd556c51d91809ab5802891d90d000494d6803aaa0fcfa96a091b0d23a6cb6288a6daad21685e4e38e537ea8463429244c4e5daf744ab664fbe64a6a087797c23d395e6cb33c1f45b145ed148361dde39f271eabcd59c9f9a0be80e200ca09f7ea4f9c3a3fbfe9649e76d4a45a992969abce34a84f85a3068e18385c54687ada37716870bc140d2f75b0a462a42c70af7429936cb631a3d358f37d382507aba4476c33b8ef17b87b14eed93f7675afc2aaf4483ea31b9f2e2b357a0d9d44dbe81b990cf72a0cdfb4d9daadbfa64c332533175edd969d335af30df74aa7272ecbd39ea850c3dd668b5241469545a62274a7a25e2adcab4752a266b87b8572816e77af363edf4463b3454734292a44c054e0152c0077af74b62c2d554c41f7ffc656a708ceefc486d316a7918906b306265a814eb28ed49b36905a2db14435ed894ff977a87462b39e76ac58a3a83d65106a4f55a316a55fdca0472d0ab5a83a7393879b2f2ad27cbdcb1c6e8c65b209ba416f724c81867bc6d5b495c4750a6f0a203ca50bca21a501dc3d887b4c5130a9c074c4bd0a6bca4c9da41ad6508552c31aaa6e19d690a73482521625274a9604dc43628174828724dd1d740f19800fc28ba07a9db2b490f8df445373e4a8c24a62fdff0345e7c851b1a0fc098faf522b52cd91a32a89a021b53a71498352b5d4214039a682bed14b050149b92de07edd828e46322c405252c6277292610192ffdacf9804f5b6e0fd6bb765b9f6818cfee215d49f7a34ba2d2929e313014dbb4f8ca4ccd8b431ce1607a3266d4db7051c0149b9232029a32ead204bd442beeffb52c627b24b15fde3084ced32bfad71771d30f6c636856278c8c509efd39a62c29a7bc323dc2bfcaf2b0f8ca201f1e001cf78b9d76ab003a0792f09d401da70f7fd2136a124308604864800091b33e09dfa1b1b940d8c4d75aff66977ce87f7c6a0163513de6bc3b0ee740c47bcb0474a475c8ce0a10abf8fc625ac5aa3a5a974962b46b6703fb1111a23265250418a0f688bcfffd46757fb660549619242f34821441441709b23f8ac20fd2954efb224459145144eb8bb912355c6393f8f9a38d4a451a385bbcd91ea240c4f52e2a7de3ff9e0534d8c7bcd8dca53440c0f3589ed582449912c8a840db8453abf8fc26691239c081edc4b652502867b45331a8d5a52d021590cc119620ed968de40330500b887c60934a89330a01d7a87ceb1a798980f4cb5a3aa480cda6505813c33e1ccc90c0364c890c980cc11991d324578222086290260040210e3454c8d276600478009014cca4b1a3c2f5be82c74125e31e1a786a5d32c4da85055c96a28aca0f0c4a57ee107aba1ea4bf6547e466b4e43adf6e8514f3edf476230bcf6f3f785b6c459096b13d5059ba8324cad40a635b7b6a33ef189454bb654d8acda9a6e05ddb7d525756142881a8488414807845c21a0207440230817415882a0045100144d80020450a478a048e24f5c517f5e135f1be3903a3c89a9f577993f3061058531a83f6bf81286ae896be812bed4266a4ca973ac4b58f3906bea3f95651dcbb3be4aad4eb434e968c16909d222840df7b40401c4071e2020901420eef24fdafaa56c4de34cad52a74555a6d53865cf94ade71349fc70c30f307e58e047901f0bf001061f3ef091fa00e2ee41b8c7c78a0f1b2c4f6039010bc8a263850f2b695841c10a8e67a57317222a24cc7582c5e81e323057c607109a161fdf5fa9bf01bf8f840975198658ed31c2ae182dba8435549f0c7daa0a7672d526aa4ae92c37c641d38c4f42aca6d44fd5615895b7de17ef25754125062a275021a9741e15234858b854586a13f5243c71f954586a28aca5b38c09ef87423a74a94d54971c39aa2aacd6def375ca9ea394cd2f9ede8584ba571e12102f3da4233c4eace184199576e20b77f7387185bb573acc91667c22a83f9d50b1312397efa341e113025440c0424088d11146598c72469f1e73e8e1024f0f0eb857553e09eb597e5f5849fca92f86fb6760c24ae24f0dc3fa62e812a6c4fa227ab2fb41afad091defdf609cb31c8d6852de44539a94f189f438c2e6c82dc330c50c7ca65cf1468e9c18444a09dd3da5c74bcaccf78d461425b57c1f4d0a0f0cf03879d4af0e5f16be167c3e3e1dd60a0a35280c75c6a10f141f41c22f3c09f28109c19caf7c549f2035888fda440df281094d3b25a5f69ba0fe9cbfa3212a6854415d3aaa20951bfb454e662a88c8e7b66493b6a6f3cddf368f1b6319978d71eebae0e9b2d01a9b3bc5a09d8a9d06822a92280e2223884cee364734f8a223dce60867c67f26495c17bb824e3893468e54aee65ad40ce7787faa6733634bb2855ec2a9a4adba9bb66a6ba0685d6839aea23de1eeff9904517f7e1f0d88fad3938d414556ca0ae0d536f768737c782e3878ae225ce505e4f280618d96e54141034a093c281640d1283a504a2a1c78aaafbc501d423c089d3ca1ceab930a4bc5672ae3d39fea59c2d4d009e8537199edf9a3de3a635405695c95896aaddad69445e99b8c51150cef999a76eb94e5fb68c21044fd099ef8fb4e985af5aea15a2b5b53113ced08863554eb2753d59cb3ded39e2d3554fdcfd44ad7fc282e7799c793a586aa8cc310a423fcff11ee16500c4034a025a6d044aa891c3bf6b0430a9e1d46d831c50e029c18e1e44f9870afb5da3a975a47de3a85a29e7c9af7c7d68a77cd39796d5af253ed5841da9aaa695ab09ef64d8c4355558dfb6b14e860719d659099fc3acd8fa633a7b14663442c221791374d2bdebd6402d72c8b5441c29826e99a6511f71224ee25a93325dd4b726ee95e8212cbd299fe38f1cb752fc1f9fd793cf1ca1e49e710f7922672fea6daf64e73178a65299bb3884d95ab06abc96ab49aad86ab11d574356230b1303a57a055f2d816f528c68f626ceafa12fa53c6a425cdd7a17be709279fb305c3b97f1a6bf6f824e9e31c1243c29cb8f491f73904c634d31f6f55f4fdc734e335cb22a63175c1b874962f6f8a2b1bbfa8bc29da8d5fae8981f8b832e9f832ee25e3ce18c5f91c72519b693a5d10e5122a72f67103e383c6bd8345098a6557e372feba97e01bf792d3c252ff638b7bc914a90ff2c4354bd34aca3c61dc4b4ed94cedd2b43935636e6276b631a98b557e2c71feb149277cfe3de1d39a683e6397db92ba586597e710f70e163e4c3b96a7697c1a5d965e8869cbb1bc291453dc96d449722f9922c69eac4e8340f1f94bf71222baa332f302d342b3f232040ab086e482cf9a71d93191e204e536d313ca8583a24b4cee7ea3a4e47a94323e11ecc2b12e9cefb3704627202c4b3f1574f249f93e1beeeab451caf844b4b6e6d86157daa53616a671a90d9661591a86494d1e4cfb011ad040083c04be01df000e54e03750b8073129b22fbe22e0ee2070070110d8a8a27604517f0601eec18488e9ce5557687c1cd3b427ed62529344187a8cc1b93871f713b8c360ee3ec4099321392fbe450946e03e8272e47e53847bd8c38466f43745b13c7960d501f57cd3aa3d1a50cf37517805d5e313d1254ad2256a4ba7899e4a7b7a8b3b01fec56799f738ea52f0cbbc35b7611845f337d654b1f96df6b16ddbb66d9ba6699aa6699aa66559966559966519866118866118865dd7755dd7755d97855998855998855998855998855998e7799ee7799ee7755dd7755dd7759d4824128944229148c4711cc7711cc771dbb66ddbb66ddba6699aa6699aa669599665599665598661188661188661d7755dd7755d9665599665599675799ee7799ee7795ed7755dd7755dd78944229148241289441cc7711cc7711cb76ddbb66ddbb66d9aa6699aa6699a966559966559966518866118866118765dd7755dd7755997d789b84dcbb0cbe5d4e251b87be92640e8901f652cc7ac87e0fc52a454f0cb972cd74c711114365fe5c739c4bd642c21dd4b76c8acc4e017f7923fff06d3b8975c527eabefe863c6c7cab52aa5b3cc2b3abf9c24528953b2fcf8f28ad6f467793e129cddddcdf30485cf96b29a762ec56a4de336536d5fb426a9d2cfa364fc139e114d5652c251fd5450773751a971771d262435e85c895236672b926af5b5f304ef78174ea0e13a572911d4daa2fbb467792af3a8cb5b4fe9f9559fb445550cc4dd89b815dcfde4264e2461a2a772b464a8840aee6edd04025ad42f72f1b863eb32c7bd049440e92cef6ffb23c6bbb60dbb56dff1f14653791c9560fe476db48db3c9b2caa34b8d68f371de342d0ee882bfeff3673df34386c8595a3366e69ea454b6a732c7dcf7a14252d9399fc29c2d3f6488bc6855f489c6a515a471e967d420aa73fe0545edf7a1bac3ae21f773ca1f65b8bbe9263cd4e0ae7305ea4e9ea2ec54e13648c10682987c2cd0b9da6799964ad1c64b8eecf4745fac226f0d9dabbb997815f013ccbf4bf0843389323e8e699662fe180f0028269d16be0f44b5ce9506f3a31d31a0b8c3aeb424b1480738e5ad242e4f9f75ae762976d805eafca8f9a6b1dc7f32ed32db0e14dc12b51020b2d0000f0226881513ee0e67febd2d8a92b776ef609132e1ae287105709d2bd3b6284a6a5f214c9e65e84d3beaad53996adadfe75e62e4861466944451639a76dc1a9fc06dc1228fa63698f12e21e2dec122c79e1ea72cb9970c29a171efa841cbecbf19cbed5e3293634fee9d2edcb244260268e87486c88ca3d2a5ee3e240725ed9fc93f33f32cd9beb9b2723e0a83fa17f49481dcbf0f24c7078b85639a7605c84bae34687215c0c4ca43fdee59dee051e70ac5c4ba9613f5513cea0aded847d5bbcb98929818f71218ed5ef252e29222ff43262133b87bcd98c467cd000bd2f032bac0831bd1bd03423099c9e15e22a4240814fc46c808123401cdc01d749636a1495b20a1119bd04805d984a1116dda657596baac55ce5bab736975d5279ff3f759da5349aad56873b5254e4d899f3f0565adcb6b43b8546d0db705c3da6364595a6cb6e8cd3a3f5ab3dd38a6ad20d4bd18458b94da3eaaee543ca54eab754cad763ade1264d2d6260c8de07c99f74ae8da37b1b4d4d334ad59d52a9bbc640cef5371d526ea1461e5119635a54e117a8914333131426a4a2d43986d477d5f63f3be891254104208218638d1fb7c1c23f54d34420821c410ee8edd4489181742082186a884104288214e5e5b11e57c143de28b82f3b742f934bab7e963a38dd413de3a5d11420821863061c01e4e5be68dcd99fc317ae54ba795d9d89cd124ae397ad450084a0dc35ae18dc3ab86aa55753923862c1da8b5ae939098eacf12f7fcba04aac455a7a5729ff8c45597a096baf10b7ed929ccf58ee9ee47b8776e74ae5012902a91d6040931bc9ad1b9fa442b9a2071c3bd7ef72c83a454b4bef681d86d597c5cfca2cd4752ced8fd2e248cdefa098dda4c835ad40c7aca406834f932266d81a454fee29508e87dea934567b45e414f599f7825ff3d8768776fc24d0ca00213a3f6f47d2606f8e1a9bff91eb527948cb71d757972770448e126055871f7139e2995537cae3cac3aaa3cee9b748a12600c130260e16eff9a987c21bd286c92f52b4b58888cdd96059327085e3c82fb2d588aa0ce150a107737c1a10594cd58755d95153a513857131c1070074b6799bf93b6a8948e124d9430a17355a216a50d26031080c900aebbd751ad9f127ff8c31f888476a9e2871e29f596a712285a766cc06facc9dd74e17cdf85f37d256a43db4d8a80719dab0b07c5444f2558a2b6d24fdafaa5fb6fde33b4a45a7d7d1aadcb546bf24ffb4ba169e3fd3ad4a772a3f9c73eede96790786ecaf4b4d9c6acec13bf5871e7533e9d4c6e50e086155ebf8c737e1b23390644b50f9dabfce069cc31094045edb52010930088c6c7017729f64849abb64ed07a949212eb18953eb109b23925d58c7fd4ea2663544e7114b5d2296aeb8e1d16f52ab5d210d85fba24eec2c4c60df7baadce150a050504d1143c8d3920be69ce1e4f7c9e984593f04d676eea83dcf2a6269d26d8d4df80f8a61adf5457379df9f1c42f37e3e7d098a5fd314373fe8da579fd178f9fba76c83e7f86a4f73d5fa7ae7d99fce569cc01eff9fa0f31ee5ebffa6dfd57ebb0dbe607d50a85cf9b475524aea74755adb54e71992d4e55ea138fda65a586a55627a679e9f453efcea54589d42a9716ad27210eb76115fb1b6b8a416aa5519b772df3a7540cf99c9aa5fd71cf9fb9ffe34dd19e43f2e3bc8c55b9566506bfcc905ee39b6a71cc09a19cc61c3ca4dc610f77a08387214e0d43985a9decd8a16b15c1177048a28234c270c61ce47087905ba8ddfa546ec7311940173ab89183d51d15b5a81d8db0431229157fc1f1715074e7d4e1dee1031996bb37c14bd6f09236d4c1dc196b94cd4b3413192eb8a318bf5c38e0958103f1f96c1d0825c660037d96322bbfd3fd1a544b50adce4782b3feb3dca745921243d493f81442f7f8297aff4553677c62ad4f169da9426d6d5579a70df7a9a83c421e5fe271f38f96f4699f389360589d6cfd286ca6a61d9e65ae3eeb300ccf3fb1d9a21fb2a5866a659a5f7a24e54cdd3bd4e16df950b6d8c4638971f4c6d8fc9dfafda5b22dcd32477ff488a63bd46f1aed4aadf44cad607eb4fca86759abaa54f9a8d55896b05975ad70ca5c9ef0993231fa3f7ea754301aca8fde3c79962649c2fc09cf5c8c9f304dd2286f9d92dae5dd2589cb4caad58826e5b684a394fc61a8a392d88658c65aad7ffcb3d6f4e28ce6bfa5796f794a991545e24aaad50dae5ac7be6510cba05286af7e27f5fbd4fac9549bfa194109a576992d9a860ad208bdbc9971305cc6c58508ee3e857bc0c007af747e9c54e78a0c336478a94a6709baf566c4765b96f391e0cf3f58aa93b4f1cbc62faf879c2df8e5e29442b6dde3e380f73f107c81699991f14104f4f1044906866606043f9d2b8d82f27d2098a2a0a4df173a7109ae542a2c952461eadfd37e645c5c4e2ce3e2f2179f279f2ae3e222e3e222a4e6d3a92a2b129724fe4ce29bce64204358f4cacc8b56a582523236453bc4f7812078febda5092c510ba2fafb48f335be6936a1a7141ca5a4a4a4e49413e6d492225a959417ad886998a8daa640a1025008ff42810832dce05e61b5897b49a3db8293840c5dedd7f7be8c6e4bc6dbde161fa39632e3728b7fc7279271ce0f9e18dca635dd7f534c31cb6874f2198d5272b0caf7ddcfc1e2f75d184eca69acf93e0be7fc9149db8d3ea13a010d2774e1a14d0585b5223981c479eb386f799d80c3dd330659f1d30435ccd36774a5095d34a1c60353b0c8eeeac84ca489c6cebadefa92a540470a99286aff76c3ac8b145ddece3666029d28889f91e4258edad54452ebb09a941f1d2870a2f17af2224791a759e3b621e990b13df698e8b2ae6cb4bcb73ab2f304911bedf69bf59908134791e8048e242f9127765a365a0ef3de029d268c4f7624a68d22aedb3a8fb3c8ce182251f4bc51c45df25a6266654c1047517c92db30ee769e27d2723a4bd8ba4ecc46f1b237b3b4ccba663a4ae0460b2345f67a1e6975db5b31c8cee22ceeda4891cd32ee922950749220ba441c8991deb88dd83692dcd941c2e6bd4864dd2b1a3171d4b24b059d235c91468e9bb76d64d6d92be26e3a615c6bb34cbbd7653d6b3791d74141c708ddbfbdbc9b71a3a8b3b6cb56d101e3da44d8edba31b3b28dec8ae08dd8468a96f62fc2b8ed8a703a5f601a2766dda66dd6a57998683b5101913e443a44e03672d4ae96715bc659e3888df03e5bbe0fefb3ec60a033046ddbecff35628f695a678d634708db288aa21fade5dd9b4e10c6edc7ed62e393d9ddfe5e537480c0597fb1ab69a275695713655f3adf34ad6954e9fc40bba2cf329138769c7675de9b7a747c8091186659967dd1f3b4cb59a68fd4f142bc5ac691a2d74411b334aea3f9be93ebf4e07a1c478ee4f53fde6bc330d3f75d1d1e74f6d236cf76a2c58998e65d9d1d6056e43cafcb385177655ca699becfa45393e43a3af030edbb8bebc6ee7a1a29b226ad9383ce6677dbbcce1a3d4dd4699ee9fbee9ba22d6121df67b11014bf7c5f099b295d070757f45d366a6f8944d7fd2c53a16fc079192662d7ed445c26de6b347d1f7896a0999e9ce874315ed6fec8893c0fbb9e7b0b077c24e5f789a549ead860d3388b596fdb38511b33f14ddf6759dc457e5fedd4a013af6c138d9b7559a3c85a614515557cdfdfd4fc8cd220b36427e22ee961a3dd2c5167fabe94ce0cbc8e7c51b76956f41be69163d5b66a30a7d88e0c32eb65e368478c1469deb5ec1e2d7acae9c4409475e49665dacd3491ddba4b7760a08d63f658b6719ac87bef7a622789665da4f8dddbbbddbfb6f1059ed869de8bc89b6dbf69b77381d65d1e478a36b3326f14ef98eab460146998a7691a897557b430ced46181155d4efcd1c34871fb2b9a406705a477adb589b48edb2c269296e97654f0db1dc50be348cb5df7eabc0e063a291091b7ebc66bc74bcb464bde9c0e175cf72291b67564e78de2bd5ee392a683820ec32e9b799e1d31d26e5666f35279d01829d23901877556ebae78c5edb2f77aa58e09c4ee37cfeaecf6f6b3cd7a13882625ff6e39e1fc637c74e6fb52c6ce169bc5d991d448afd3441c672d179d126057375e1ed6751d895d64d675aee89080c33a4de4ae25b2dad53c516a833a23b0f712af87618f5da326d22cf259be2fb5573a5a58a2d1bbda655def715977695c4ad31181356e966814ada813919cc8c23079b658d109c1e891a41dafc8d33652cc44515b7385021d108c9888cb3ccd7b0fbb77b448d3f77d23d3b6315b8b9d0ffc5f16466e9d266e97bc96e50191249fecc4cc1a459e25ca30d3f7e9991452a7035de6599ab769d9cd44762437934ed998b4c381abe3464eb3b6df44f6bad8f57d29369d2cae88f36c265a97e86277fb0ddc6d1491248689df5d1b668d8fa668d28e06c6cdf2340cb3acdb79a348d48d68525cb40be7fb3a1ce864a0c34811d6659b25ea386beb6040c4dd8b2449d172228bbc9d7681cdca2ecfb21de989de762216da25be98bd68895b976d9c55752cd071967d8bbbc4dfb891b43a576496bca2bdeffd28facb55c08aa37d91f42c8db397286ee0f78dbe6ffcc0d42e6d688ca400a14027ea6cc6bd763391e8761c894f3b82279cc999efcb2d5678ff9ec7fdc675d6b5659f99be2f631c6b9260a934cdffbe7d963846e6fbf0de9fb72ef3043631b3ac355e4c74592c23c5ef3b52854876d7dbaca8896e7679d665fabe120477a6425300c9a8919b76adf1afb113eda699beef064361b448ca1a339123338eb4fe1a370b337d5f0e16c19bd19a2213392469b94da46d9ed7799c8579a6ef03f1fe3e295096475ab1d3eed6dd2eb3ac68fa3e2a1edce3f78daecdc735bffcf17ddf774f2a7cd8ef7b738ba9be79d3dec7c9e9d821010e8789e4d861d65ed9e5919d364a47b21b452229ca9ebb2e6bbb65b667a9f2c41eb5cdd32ed16a97d5349175692fc3deca3cf25e9bd579d9357d1fde67096a5c0abece16bd72a691af5d97b39be8b236db3aec82820a4f746517e65dd6a589982895f7f9dfb75f84629eb546d15edadf4cc3fef125ea36edeaace875a39889ee296ed89689361113c7f74422cb74b2c8eb12c72b6edaf87f893a536572a47531cd8e1db9715bc6dd9b4ccb2e3b6659673beb71226ee69b82cbae4adcaee569a2e73cbb759de53d9252bb9417c344a28bbcb2ee72f7fa6bf24c2f5ed626ba3cd16bda5bee4ddff77df7fcd39b509b4bdff744e992a31589e46f5d9669e2765330b2b3ecb691dc66afa691a2774739b725e5fb348aa1f891fc8cbca2385e6286dd6cbb22f2b21b773b4eb32c767123e9da9899f1b237e3bebb9ee66956c665e226f22e8bbcdee579224bb323107b695de679dc386aa475652f7e9f69fee823f4442c1b2d11e689dbd661e4f700b9bf7f2f6deb3cec8aae4b23a5b048a0eb324eb41b66c91fed652dcce68a1d67498e13799e386ae3117b9f1475d735fecdbceb5dd3f7812223ff23e6592ffb17afc85dd7f47d202934ccf35e245af28e646675db43208ad18e9e47769bf5b2f15e91347ddff926f87da49a4eb39ca66ddd485ed8bddc68fabe952277d3b0ed337124c9d1f336d1f47da6cda5bb7f6c44fe5e9798611ab769e278696ffabe9b3a49df973a6dca35e49e25ea4c410f8d68b3444b245ed94892d9c859d3f7695c0aee138932236662c66997266edb465acdc95c4b2345a2f73c4cecee783913febe1f4f98f3c7f77d9ff622f016bbdedac7ecc665628c27d244bb8d9a665dccf334d1f47dfac63e0aee2f7d1f04603af2fee546d18e9d75bdce9abeeffb747eef4534be48ec441c47921b772df1fbbe0f3c4b0b82e2cd9832c44564314d7cbb5d6fafc8d9316f9d7209c9464fa4795694892e12d3acad948acf42f380142b08475e6cdbee1539ceea6ed67d1f14de466adc93ddb679a3c75d64a945b48936fbe4b5a3b5f7ca2c20e3388a5b67b5cb7524c7a1fe8cf93ed3ded813193676a2d5b6311b33abd32c139ada688ae6fb40f0fbaaf8619156f6d6356622d2b33cce23490ceed244493eacc8b2a24cf3ae31bb16295e161167474c845918e689d965b3d1cab8791829769b486a9965c52ba4c259db96599a481b3bcde238cf34c2b2d49aa82e594cf454a67c1f7a2abfef949e2fa4df468b715bb7596f3972bb76fe152744a26c14c951b4986779dca89920403ee789c84bbcbcd1669bb799be2f5bd3c863644951dc9ef3ba0ddbc4ee62a6efcb5b83a322b548dde9e901295f0fcfda3ee334cdcaacb76de266fa3eb04ad93631dbacf16616a65d32078f6cb319b7691a7939addbba377ddff7ed13f97d0ef8445877b13113b5d7b62bb29ce9fbfe33e9c3c3aeab13596ebc17375e32139dbe4f835b631378e627ba4e24caac2b22ef86892c27224ddf87c2b95489445d76352c13619ef5c851bca6ef03ef69417cbfeffb462410cacabc70d8a58d58672f2e135dde968da6ef2b9de5cdc98665de78c5edea3acd1a33ed9abe0ffc3e4d3b617c231335cdf2eed54496cc46aff34cdff77d1976c2182c6510bc71813acd209800eb3ec86d18ca05eaa890082500b4a38904ec60c009129f4bebf83c005bc2010a6002e3bc440e3089254e1a70bd0697a84c28a13f0cf82ce09e16d492d039147062400232de16896b8923c89d22e002df042671008d5b800172306a33a00037761cff8600dc869974d80582a5b334696baa9eb354ea06e0b8c0cf008cc04e78043f5f37dc86a1e36b51110e10009883081d43e4d89312425c2036416c2271a30620070040417c6c5ce0ce7603b1bfa4a3e4cad72c4de3cef9930e06a6c8323f0e08823be773b8115f0cc1072c74fe644f1b43f0010c5a001d21b8e328008d9bd8e8e006110e05386841f2206c005112734a8313ee9d2bdc008aeaa714541316726e709c20e23482180500c02a7730840fb62040280ff503392062077db8c2dd4b6eb803c0dd8328f1121493131d4c4e68b8d7af7edfc6253e747e989c40d7b942f18e1a86083189b0ad06cd922b6ee4ec230c4f3ea8cda833fdbe356e82e09ec4b7f842e712c776a1840a6c43dbc8364c1ba50d930dd046046c6cee6e43015ed221dd30d1016de801f567104e58711e01817a8c7ad4939c5b7e36f9423e990cb3c917526bade7912a6ace2dc12fdd07c5c0831d04e102dc6344be19c4d923a53651cf3741f09a18881774c0864b10ee008882beb5478f31eb1f561dd970c20e37213fe05ebfcf8444fd2f3e2f5081ab867a545fba9f5f08ff798b51d0b4ac9062482b35a5e6dc152b984ce1df85fba699beb8975811ada8a844d3c7b64d0c95322400c07000d310000030241a0cc76332b174beb30f14800164ae5cac5ea08ae430c921858c21c68000000000000048128200e13f56f7645aceece8a6fb95ba6e46f18047d9f866c9063b63d4dc0a71cb00da24490fe9011bdd4c0f8f8e9a5db1142e8b486d92b05e302bd8ff738da601e98b283fa26504b5652acef2e07aa36709aeebc4fe75bac0fd9efbbe487bed6e3141cf2c770a3dcb3770ee7f563f267d13d54c84122bd2d468a46fae882d22527c31daf0308232a9348c6303aa28b90acf87c8736fe19dc7be6972bf5eab96f6062e443533ade8f3b0f4e3dbeae7b1c589616d2164d8deb873dde2e34187ceac356d88c8e5d9cc36977e08c13ef148fda25d14377e6c4c6e1fddfcacbdc88e14d1af7c2c803bbfd00f37d40beefc9622b3da6c25947ed1b87199e3f1c5683da1b9de8e05da20e8b9e6d86b07f7efbf8c29356db92bf9593525a885cb0fdc6ff5399114043b3ae56eb8fd442e8137d00a37a3745e5998afc82dbf8994b0c66da05ca68484d431162a412eced7709c7394d5c7d47dda9dd003715a3dc7472d713fbd6eff0d11f5e2d7a76d120649dc7ea693b88c2b2393eb32be3bd7a6350cba479a0689880f210e2b87ce9bf7b2a4df00320aec1f807fdc18562908f5c6f756a00d471fc17812188d9eb04685354f80991f4ec5606467efddb72934b7ef6b53f6ae6f3071a41c054c562c70a4ff6cd81fce9eb1faaf1a5451681f0b17370a55fcc250536db1a117f1fc87ce7b89852cd2734bb1784ffd48ea28742aaddb163d554484846f92bf7319c33b71e533dcb40c615f51b3db829296aed670121f27970e2a069cecca87782537ad41bdcda58fb3cb0ff742450d5a7c6931f3247c9c556d23c356746097654a6a96c1010bae8c27a2d324669926c2c3443a4ef626777773fd5f5e1945946bea03da1c7a946e89c92066443cf1af44272aa17c71bc2ea9423fe1283827f5cf2529768c81172314f601c267b41a51a70946ea1ffc982f5bfe22ea65890f15b5b4de7f5e0d189f27dd14999666978d19b8a201e78fa7b9096e80352cc0e23f7fa1e2458b9c2037c78a5945bf4a128a37bbd002b2833a63ca9740ef0c8d658e9d61db293eafea2404fa410ceabf59b8df2c7d8a6250fe84daf1320743d7166594b2f80a7f1fa8fd579a9485eb4369595fa4654155e15f85d013b5a2e7e905795fba83d826cddbdad941c8715054acf01d92a52792e6b61db8561d0e86c83409c10af97d9a74a82494c461e9203c376295323756baa03b67b800044dc42e753756b689f834405758a4a4aedceca2b4cf96ee3f73c2bb895bfa031153adad579e77aba4cd2a7ae7519534c4a0f6df7ef49f77102ca203dba35f16b977e929aafd6ac90506e420d3a5dc1cd02f0bf8fc54c2f590062da2cbea781e7dd0779a0609aaa8bfef6a6477eed311359c3159da243f776021a4d65c13749497a098bb4c8e6b3fd33393ecda55090714bc80b75222da271297c9b3481244e8bc9133dea174237d28401857ea09d42a31fad0b42336267f45d70305e144aa780dba982514c302b8e5b2ae72bc6b8366b8b4a35465df1211c67c6dbae148b61d12a59e321452a5d8136b74daeb22a5d07bc226a63da1ee0c335cc724f05fe7e5d16398b370fa9f95906e84409a2f1196c3c3684da81fd208212e3b38479bdb05d044a4810a3e536604d1230c7bf6e2b3aec1c068fe20f06c373545fb9a013d10755e8b4210376ab090a545fc500717a2d172802e554a22657095ee84693aa80535f96e2257cd060422d69285a10305dd0d7779190c9cc00543b8824f3d90f8d03d36042174402f62a21ba9b6a9b7c1f2455d9074d9f0896f45234067ba8217e930532deb48abe310f6e0f86070d08ff694d34007c12f6b4a18fee36a432d899017dc553194441ab8c045598a55d14ec33666e5b5fc14ed6e4a379b84dee7ec9d49295b7789453612d91256f2acafa9cdbe433b15bb3ca34af876a39d2529d5e74dc70dec678df760e92faf8ee93703134002c50f8d9abd35c01f572d68f5f4653151e745eca5473e765e14bb1567802c9089bbcbf9bf0fa4f7e3d387fe5ed0118e1e704856356b12d4e64665e629a57d37433bb03a9a5202b942776062c2f09f0742d0823fbe3dd504c18f04db1da2c6fa6818e627f77e7d59699669ecb8953e9fe8f4185d5b4f5269a0de5b9c0ef85b5f7fff9bae14fa88f1198e7ba8258797545238d123460da44813ec3a094d5e06f5e8368a580ceda86fa6eb96aa3c5f21213133996f8788db43db992b5dd3c5745ad0ca38bc03a0066df9ca74538e71d291dace144235b37670ef7040baff913f1ad72e72c869fc6ac1b7c4932f09ceda876c1f7b084de76721391a6c0bde5d56fbe3c51ed6e7422502490e03fd761b9795851e4791f4d7d64a05a0819afb88610f49008bd61432001e20da322c2dcfdc7d6ca3020c5bacb7058028863209938093316046420f0fc880d5e1123f3494c48ac120e811c06632380a8f472a233f00921eedbe319f06d36ae47ffb616cb6902f34a992c1b3dc524c3e94bf6b7ee5d1002060006b9abba0fff9b9fc8b4cbf473156c8851d6b46f814b586cd2458828522f919c58221a93dbfbe230591f8d76ee843f9426a80031be58551d15104af9830eac4407a488a717776b5c84a6b189a0279c64e014567401ebace335fc5bb296d478e70e823f8cb7319a73e173b9ac2181c01599c93fda2ad27d3979ea0207e321019aad28892651e87f6e0a21fb81c7f80ba4d68fb510786f6e0b653ce0998bd3c0c70f65c15281c8d49ee5bce526dfe2e1b0a58e7d9ae6489b039bd846650d53efc00b454406526f6b8b001009dfbae96f2338c35c3c27798ae0bad9372bf3a04944d1c209e110be1eae8869ad5726bba625268ad34f5ab948d8e7929ed17fb0ec3fd377a9c1d3a3665b97ff65bcb0333290d7393eb97b99ff7e96c9e067a6b3c9a97ca573d9e2aece5aac2a66d9b53fe5b5b0d2cff7aa9cd7f3d55af71db586b7944ca7f659c846bdc71fce0a9666f6895c903f8d38a0730d0f4695ddfc3fea632671fa68bc8327f1dccd0bdff65e8fc9245757b024309f1c955e25037df4d6677de87a592710a2972749316666391e9a8752fe2c9d5a07ff6105280e979c207fe62ea758e53e0ba6343ae99d9a12a1d8dd3e91fbf95ef01843e172ce310604e8d4e3d053c734aff972519a316a17057db8eaf2d6cb45a5edf099b8787cb24e4b4803795a7427f8782a037fff061b0522badf8b00aab394d29eb01e4d217b679d96d0b3b97ad940b087df8edfcac5077ec98c361287dfa27453ab7217239877da166750b726729f8f19788a4cd52701fc17c34225d693afbcd5e65f6125dda23cfe7faf4392dfb3cc25d6f44b0f422bf9f7e8f4956e38071741177276a9be6d64c784c796d18a076609707cf41b03c56e99a0a4debcf63cb5cf7366663bddf9244cac5d95e0071052a136f083615ffd89611aa5a073279a089307e3ff07f269040a624b8413c9bd7b43ad05e98f47eae47097d0b3800cd588507f871f0f7b0af12283daec62ad5b6ea4e42ac0b152252f8b2c6cf4c3c7c6ace06c037327f5c96bdd9c4ff488060228878dedfafdc248cfbbcbb3391c2464a67ae59594d899a022d285f9054eab3c395cebd8334f7189f2b4777d02574fd5d11e11b88cf5ebebfc7de124fb21ce76b9ec324c6b48acbe868adf8a4fa195aa106639e00ce1e7b236662f760cf5854e1a3fd28faaba97c5a220f02c608636d0918cdece4533e5d0fe5ef887d48aebac8dd7765537aa882e8a78a6b2389864ce7e0b0e76c8e6a32437745507d1b58b60c2792df838495e9dbc1be9e9048f9c9d2860c722651b363aeb696c1b70aebdb945bff15631bb1d2bdb21d3d710cfb9130189bae76ce1fea613133fc20d163eadd509f3fdb5d93f734570c83921f59c3d408701f4fb99bf359113cfbab4ee208f58ccdb30881f059d20105b9112c6cfaf3f8c6aefa83ff9463009df08743f57d818f61f4cd4ea15df2fae33ba593c580a5ea874fb1e0af09e47707eafb73d024a8317525bf63d949d063665f9cd0d8532e984ad72a2d55557ed2ecc8f5af6a44339e1660fb9cbe29c79f3c61a1a7c1eb5b65ab717ce811c1c4e2d019a9f6fcf0bfbc466e89c89e8488428095b1761a29326662831443b7c59d012e62022e65fb65662b6358444cce607de51dea3146533cad50166ed40db2a578676a8700a82d0bf775ede9b560e3097d9d7dcb9cf9e6174a755a91b343b3665215e95d264d3daf5e36a19e066f66961c6c636002ccedb277efcfdf622d58de17192293e827f1eae09960801344bb3b1833cfca4397cb51f920850f12a8e8f4d50c252df973e4dc76100e46f57c8806872b41f1abdfcc434af1c1283cd6acd3649ce15604e24a2a05c21775f6f874892c8cf014847ae23105c9bce6b4abc36d76383a6f61d8a3a32f68d117e493a2945641d45a6f5c8e8516fd7a686b4c6a53be19efc2305bf357fb11b37de7d3ffcb99020f04903a2cea5228de8f4e443e9aa8ce43a7e873e25965a1244c0226642cb4c501df0f94a8df5d987f9fe53e5b5cdec5f9c78459197dc7367e24fae06fe5e0107903d8576719abc6bf7067f4f23d140044c01df1623602eb0cd33982d01a1cdfacb27870f7dbb7edca49a05f4c6303141aaac5a0bf97beb0daa0874f1f2e78849791aef6f54c5e2f5c56e444ad6c84a0fc1e5a70765f1eae47ccc7a4c6761152589efb76fabc02e484f0af2bee5dffc57bee25cab3e882b80df8fe16f497765afe4984ce42fc23a7bc663f22436ef170df922b24b9bf62e0c986d58bc6bbdcc86cbee7f756139ecffcdbd16eb3ab44dfdcbe1825486167cbabd5f01fc5dbdcf7259c19f259fff607264e9eb0f15554968b204073aadf2ae2aa7c403b08e49f7ad29f73194a117c4480d0d0365e5a8dcbbbeb7ca6ea77e8a55dd9da7f889fc963bea8f69fb019df4f879f324174dc9cee02eaed77475eb23c6018d78b7972fffd593a6d1a1876ffebebd61c123d87832fc7d8ffd85ff882b56d014ae43cbfaed34d53b65c9aabd6f277310ba08de893986738c32dfa9559ccf59d90dbdb1cf611db78d2e2129939bb9745858699737805a5a909fa40d0ab081285b84792b8074437ed1131cfb5437c05a8763034d705296a8ea47ee985584695fb6056661305e21b6d371dc79d732b581305016630b97a95bd1adb0f53ea18722eeeb45cc41cd54d0e178ef0c21b7a3fa88125d81777d92462c7caa2f1ff0d54346b7a74e0882d0f3bb475430b66d788819934420cec8f208001830f6fff80015a1c6484f68614c4bc910469c1086198187de8c6c719d1c02146b46d6ca365c1308fcc0c230d1b4b8621a289238667d238811919c808468c2086e983876fe180115a1c6638ab8612cc9e510660c20831d81f7970030719d2ce0103b33498c8ec0c6500334610c0f2d1c33739ca100d8e339a41438966cb382330308020cc8f3fb881230669e198a1191a4e644646328219434461fae0f11d944bc92defc1cd06dbfc6bab20db046c625cbbde9af5d55ca7562c3b4266a791c4c972e31e811d461077cbc73d423b8e308e168e5b447619595c2c390e11d8610471b77cdc23b4e308e368e1b845649791c5c592e310811d461077cbc73d423b8e308e168e5b447619595c2c390e11d8610471b77cdc23b4e308e368e1b845649791c5c592e310c10407690551dea19e3f7a772e6cd891c970e9e7a0d4813d046e630031581fdde5dfe337d536683d9b9d9c74c889115d3c0a71501809f764e2d0ba395c24bd3408ff9e2ebac35710974814f82ae301d64ff685db056a0e22dc089192c8b5bec10c2dfa3821e69a878f301892c530929910fabf0539eec2d9c34a9383fa1d1dad7e00cbc53c26ec33210fd38b099a6579c311507da2cca5cfe75992b29416b7bc508f392bdec43e09d998e2f71552742c0e5a75bf106b4260bd90bd131ed606c991f54db8ea22bd253b89ee7fe8055c1d7145b712c91a3829993664f098c376ec252e9846cf162c991da5ab3fc3c55df45bbd770c170e63833d99846cfbf4532462f3decf3ea851bd1dffa9034ee836c4fe4fddd24a842c826a4111a6826e7a50a38e0f9e5b7780c6ec5494570956ce0e8f774ddf98e3ea4dba4b3c42f66ce00d28c8af5a412e4fd2d1af49d42401c619cd00b0633802beb4ed065a271ff25e741092988f485402c68c3c4a874faccecd5aa94d3897a08aa30f42d2ec0b89020a267082d48696ae441d6c5f9e7eebcc1f3a7ac14fc2a29c087f59e12c07c0a7e9613a775e941b757e993cedf63a0eff1f616a73fe13249870db4de8697907e9ae462a8ffffa845284efcda6e5d868b991e5c954d6dfbb68d3c5f6639be43c0bd1327245a77503e89847483bc342f9fffb9d86692e40b6604280459b5a83b767b7f75d64412efb012a5f9c6c8747427b6380a4116bd6a9200db5233792544fe3391f69a37ffa9a5d613db859bd9399b8a479d06d7c7a1171c14393f8e17f0ddfd7ef18c03477608335d41ab0373325331ebb3ee7d75ed5b991bb4edced20de8c23ff91e2f4c740199512cf30c0d7724100ab6fc47f7a341e8af3f78284546f07a39a984fbc742977894fbd7c6e781ee7390e50425e2dac93b9b0f26f9fddf3730f7cf008102b4b157a5d5357f3fb0e70444b0564faf7f05526d707944ed6385042066cb3114f5bbe0345a7dbc0f2a19a6d4cd8a945833cd0bb4db617ed01ae0cede71203dddabc0c343b8067f3a14bdb952151ade9197bdfe0f4041953dfdf27063d0b32f54a19e9ae904ea34ea2a6ce051c54b88204aed14f96409275cf4647a180425c4ea8755f004c0f80605d13db26e963418b7fd08831469efb5b981e33f98087cfa29ee2293ec2ec5dc5c939a6bfb8a28e5a384e2cfb993296f7305b4e47bf531fff3538d7d105b6632329ce4f0d18ba2ca2542194e963a7bc8bcbf11c9b92822d230ed41e0cf9a8d1b607a0b37232def93d9156c441a321039e11151b331dfba3ef7b87f9d03acb9f96dd4df18e23f65f4cf4bdbdd8e3fe1b16e93ea415687304efdfd01401ac4fd3e55ed5d67f1503a4577b25ccfc8d3af0a06c9e1447f4231cb3c1dabedb1089c043a48b74b353fe4f5ea5d437f464ccafd00d4f10fba99a8c373de275c4ff3120fcaecc813e6ef71658e941d299fb38611f314ce654af52484384279d3412a44f5ec0d1b31b41d6ce9c624e0e7a9f2189b56ac9b67012eb7b3f49c30ce4366e7ffcefe0f5653806ab02dd35a408be2cd69db02b22d3548278bd4ce826d71d34033d1e5e983b67df3c22defff04322964b703154bce17f3584ec6ce15c3c8fc0df00b93d6424fc22182e32ff86d124beb260bc01f79b31b1f60e1af7ce97beefcf431bd12ede81647d23c89a0c0eb0ed3b6caacf5fb8fa127e7cd26ec06b7a7c827276a5bf6b5fb49b54ef61d68c863aedcfaadb9f823127a0daf93c8378873f22d455c49746852efe2899c35e19974ecb63aeb62fe254e80e2705a55722a419f4a7754cb941c11371fd053817af6057ba6e17cce985502e1b3d6754ba137448c3afdb508912f49fa5ed8b0a052017eb6da89cafc308206be75399e54861ad806315736e4b5596a10401bd2e7198949a1fa99e0b9ce9e2aeb57250823cc649e1f954a900c4b431d87e55f3f271a7cd5d85e829a07ea02dbc70b8342f98c116a294890f305b3fdb9c71f6b2ea692fe4a925dcae4b54bdad10f7c21910dc8fbdcb51b3cfb9ffcf292c3d5ead00c281b80150bcc292580fa61f196fbe3e5816ab80beadbadc0e79c66deada30ac0e0afb838a9b085fbb0cf98e814e91ddf8d9e7abbab2329674f2aef9004cc3c3258a40f1d5548f7ab26ffad85796b573581c89266572df40bba3645de80429d718f33fa5f5c34e841511603d6add8ae434668136b39f75f9b2c3db436f4ab916dfb7788318fab87e7cd9cda05aa820ed1e48b65b4be30dbb79387d8f955d7aec525db62df85e0ce612a0fb816402943e5d415e52b311ae2ca0713c9713d3a73ecb42017f49d0bbc5d96ded0085c120b80bc1c5b711f279777f6efbb4a3f12b8c4d43ce7ee3fbb3779e392c97d8a5a97bda98cdfa733c9997db1e1fbfd26ab2697bf23b62b1df0c9b547b9c584f294be28e0775228ad4e9e057a503ffee640e27bc3075134a5c69120edc26ce9873d0195230e1eb018a7347c3646aed5ffa2905eb69755b2b4346cb73143075195faf2cd19520e89dde3976bac0b23858a08e4c88cd14ddb90c655bdba0b1dbb07e437992147916b25477cf65dfb00c02724037a4f722300dc7f63736c857a687d1a0f12165b0b6d935bdf594d01cfe76eaa28c8e00dccd35f3671019cd710ea46cf35092e98f6b2209080c0656178725d6e3ebbf9fe04e1ad69735d47140966fee2b866060a0606afed5651db5b37accb934f0bed7bf58efeca3de073e18a09d392e6539eccc27f4452e70ec2bb21077e9d47aa7ff38db568b4dfe5cdc454fb97620e36081272df8c630be6c8bef8cf8aeca6557d16db05aef2dec1bbe904e245f401dd55d04d201c05953bc14b67c2098060f0b9ff4cb1333766a611ce8564087ab0b3034a38febb82e7d7b0b28d6de97e7bbf551c365bcf65796e335ea22eeae1896cd3ac92cc7300a60f684466fa63451a9dc2d0daed89edecfd599b238d03f81090d39274a151b18e472877cddd77cb0f244246a23986083c1daf02465e77c4374ee0decacec2c7de499980a6ae45afb659f7aaceaafa6927d7f55bed81bccfb1e691de8e5157d8335a33cc3654c9b04d74d1ffe78f09d3eab3214ae4b23dae01cb85cba54f944c5a848e2026f840f5dc1788de32649f24981ae4948d1134fb9f4e867acec5d8fea2f518840118c7fcc7d3c8b8aa88b7a7021782798e275de9a3fa3789fee4e43b5ab20d4f5851ca20b392238966e01ab34c125cfe13ec6ef49d3ec79e040f8a0073fb56ef8d8e85eaf30bbff67ba36b57f49b58ac88af2b8b897b286e2258201a5116dba5e768c3201676a0e320c7a9ac14bd71290f1fccba80541e6f376526b39dde707ed3904d52bdc859c2b065943a3d22c26a8cb32008a88893ce0fb1c95ad64868779da278535333615783efc2cf408c9d3c706705bb8da829e1952050120949ac6d1613a8b7c31b3756442982a324c9d732de62aaad93643e518aa9734ce7a261a9446eda8c76dce3e1faa9fa9b5abc0edd68b0963669d021a85a5c92957a594e2399fa16691a6b2ee16e5a03133b8c3d9eff563918b33dea419e56661601271a3a5315f8d4f3ac60d2773cae5fb2649eedf3e8f4cc2997af24485382f3678f6f18a34a7d1d94dd1fd81d718c907a5b40e7086ff32700d08305193b1d0d8730b51c84adc67d99944f19567acb90726aa0d39f7066f1bf1840c0512edc05ff56bff556a04c1f0d8b5e15730c0220313e97756c80d7c7dab874127d41a9a3d79a2bff06ced88237a699ec3fdd39c875e0e0eca8d1be7dffa867f287ffe7ca3479c3b7b197f52074d729b09bfc5f53797b37120fdf50e3a18c10af18b309f24fb93a2c24f50d5b223ee56ad09a5175b1efd45846cbeedf450b66d5eb946a3edcf5efcfd4207f6647c9a29b51e058c4816c9d890afe7506e3bc5565b07007f4f607fcc262d1250d864527e9d260a85aad52b2f5e2be7ba5ac0c2ffdbf7cca3b659679c7f963fbe8da50adc2f6fc8ac27aeca05a7b4c842df56c2966d74b31dc2d2bc09e1d7939f31ae9dfd6f1fd2dd6152f75d3c98494d482bbcbdc4d4b499bd44a27b96dc051966472dc7a048b2914a760a3bb0842d291354f6e2e3493a1c920930bb12186c82a8f6b434404a1e23b46beca86805722c9e2f0d9fad0304cb3a117ac4de1cce56c923381ea14d39e3be1361e57dc25c04c90e40678708959e3d58d09af59614852e22fda0635c56ea77db143474c7aef4b090601f46df192873bc3f465689b26b9773fd880324240b0be34d240ace60fbeddb53361280d2dc2c0d58db54688ed6cfe3a40889b894f7fc72169ee77ead5cc70d3afb6e28e678b839df43c187e9e388adeb44972ada6abe44a06349ab9f17e4b214478ee8e747050bbd3d1ddfd09f2ffc4a58bf1b16d94cc49e84169c74ad81301688503d569095965c9a5d7227e7672f502aa15c6a0f4371f19d1db864e8b3cbe626b0455be39fa24ca4177de9d1f0b60abc28643d1024dc29c83678e6015b033ffb7f165f463fc28b175bcd0ef00f5dddfdf076cbc6bf9f82debd6cd596c69b1cfa4eaf65f29487322cec0b0cb1cad2e992e0a54896fd89f1bba234d2a5e69a7284076d97dabcd1749b6584db3b836bad0cf2d6c7a453e7d55778bd4ac42663e1d0dfc2fd7b92be7b603e15de6098bf3a686e28c938dc15169beabc346c57617cfde93ccf5a4628ba1a526fcd3314ce5ff1e1e9afc27a2e77d95caf565e77644f99fc4db1d7fe63ec6c7c8a6ed30ba69fb748cfebb4320e43151c5c769882a690f3867d488026bc8d8b1a1dc47da03e64f523fc27c900c60b52f17cc40fc0d5a67fef35c34db24d7881938d01e853196feb64c59e4c46917a3c57ad143d81587483ac9d1978e8ad2c4c15fb27832fc00d7d4cebefc3a0ccdb6fe07609aba4045b0c3f065ad2e63061a06ade30382078231ab4608b5bd16971eb775d65bc02c2693bfb849406eb53776687ed590da2dd10f61b14f1b6b0524be5a0fe65b2691ca2a18eabf5b604034536dab6b65c3be46da7ee85eb22123717b6e119a8ecf9b10ba041bc7d6d2dc64fe45ad8abf285d81ccf73b57da39486abd314fea34728cc955fe5ff5fce3407dcc536cb51386d9e1bd15038eecaabb92c134540d090da1b70d6dcd340c83f5732c1f28fab8751c187258d1f92f5970b5810ddabe485fd8eb77d08fb8b027c03b16ba9fa2185e0e3577931b125c83ccc595a638dabe070f8f460fab4c639e96a2394727cc097696789ca2a76ba21032afa042ad14bdc3ca5c967ccdb89d2193631328b5557157573f8d54d675210df56141c628e140c3ea2af952872fa05018fa199c0f21ebab1096c7b10e1104fd8979d63ffc7e60eea5adaa71d5dca46eb21d553f00f46c0b26e6c3365fc0e2c0f3f42641ba472f015df6b5e9ed93a5542e8aeee3bdb6f93fea848e4e3ac3cda7b6e6063f334505b18313b0acd0ebc541e0a6daef9cd0b18346251efb6f84b01812c142c11087abd7f02c16a7e98b5775a8c883a5152e598d427922576aa9045a52561eb01f5b3d73d8d623504da158fc1cd4e03150636117f38e4aff314ff6637dd5b38820b33987bf9f10dda720964f7d53e8fc43e54251c56359706b16ba9898dad457c8ac1ce37edd554a5bb24af72e38210b1c4d8bfe1a64e303855d2a30670df5a0e86dc24a3642770f1f6758822e7e86931c55217f0cc6d49799d7c70d6c27483bfad92a7984afa94a473df6349b59bb600dc921c21195f50f431e8e10a487c69f74f0f59ad74a4f3b86b2d9af99b69b50e0a0587fe112d500251745ed2e29452de834e94059920a05810779cab8dc9e462fc01ae06079425835f1e08d91a5c62761f2efefefec892b6360f94eacb85e1c91ca39b91d2b24ab116ded968ee4764ee9a3d02e0add552f2bf0154801b46719941a1762853e6d8dce387231a929aafdafe41e93aa00bdeefe836b128372ff41c8a7680a993f7c7ad14351e7695966bf94f94562377f8e8c21217c973c4dabc9a01ee0fd218d77a72e65da1f9e52653054b732eda962072f3b27e7630b83d04fcd84e2612935e2ad40ffb2a3f729cb86c57e9ab7bb7ad33b96d16e5dd37d0f1b6a745a7a4124e67f9e17642dbb320edb95ff77984b4636eb310e672137906d62f205ca6a9645992c94334c3c113645338749c91cf368208192c9822eaf2241a3e0f7ad203be450ce1d0a16af2d1aadc48dfb44db281f85e9eca75e399fbe3d82d22495f05acfcaa1ce4afa9a55e436dc3eeb59e894bd24dc8527c8f6483d17221014c32c44c59758c75d7cbc250bbb7ef50dbe9b037d14052e20baa5124845c2b64ad09661527fec96958f7902fe8e0908db10b4440f31b2fa60ddc0d5bcdc3ca4deb7c83df13fff2462bffc8171f8ba4bd60ff96491a57f15576ee83907c720c98f6494233243424ad1ab19d85170ad46728e4d86eb3e3dd921a150250ba4bb424835cd165ef3ca6035bed9f3074d72dbe8e2beb547221e9d74b7ef851ac515c39390a4477bcb378e131e7cb568f62758ed69aef7e8bb814e670a480e5d9211f949223a13d86bd7686e2e72c7f5088fdc7cd58860f8ad6e37bcab093c9bafda4c5e5f9b71223f3aa94bb558c737b589ad6699dd09038ce60887e71971769017b4aedd70cd603d57005e51daac79e9e4c5a6521656293aff39efb028af93330322167ab16e7835ee4a6cd2893c4291af4b27769a8e735d526f8542c4223ee9fd358593abc7045e56a3359cf6bf774a988ad0d79661167c6ae82e0e6959127731860fb4750688c294079a6ceab99a7105670c9c21e07c192cef0c299ccdbd0a8923c25c2503f37ecb307252e846f046ac1f164a8fa39ec576ea54b8d217946480caea51d22712485c59f56780ca0625246440815e6bf69fbf0fe449f4c80f543af269835e9748f2b3a62b49d7362229777773d6650263b6073f2c55e15402997e0be01e3f8562364c4934302079e9f380dc590cca06e883de4d103006bad5ab64b3a4281d142b34fce6facf32e3646f9c3e7677e43106d379262a3d77919dc031847bb4d6586851b8d5492c9abb14979a55465a155999bd1ffe239285c886f4184da690b24a4edd9d9b26085d1e830b9c5b2b41f79fe2550dc42bb6b3ad8977c4787ba3f60ee85e525be4833d92c526cdbf0150a870e5cfd195ae6a7469788ea701e2f10e7b797afb55f7c3e12549ceee4e496f0d6d6a9033bfb223657206149a9e39853e29d6867e29b9fbc59f7535a1b09eb99b501f834d481cd81f8591cd3be31fb964de20e0f16e58a1c87c12d42a545ef47e99f77d042375449c37eb0de9d47d53104a034e66f2ad8151608dfe21a6113995cff9168b9d9f16e4f9a51eca1df039045cc8b184c36ca3e70c7c66b9c6ffa7f74114cc2360575e92e458c5cff441afa82d006de83f423c97ec3b8f70c9f3d0d8ee9d6625f602fcc4fe6c6fc7e23e7b89d3e456745954a3badc173a94ee00a72f050fb7186475f2139b326944668b87dd5d44a8f3367a729665f313d0f88b32b25b5a6317f1b9c1d347706cdcda747ce1b496d9493bab71cb953cfba8753b9876b5d7112439abf429a5f597ee9e0ba088c852321459cec5411e85b0619eb91040eb464192b4a317499caf6ef238a410e0d7fb83b46aafda4187fa780df1006a9b73b6d73bada2f8e5180aa65186389ccf3bd093a9d8fd403cc483a5401b6fc22f7606eb1f82f41d9a372b3ebfee4fa7964812c1ead8d8965ab29a33fade727e4c28bcaaa24cf5a034d8b025e5a5965a1874a2b57ec0045722bf0a29f3a92abae40aebe878348822ad3618367d13584153bbc9c53f3793dd35a8f09ee26e4412fc75cebc70c91da7a0e73e3ca6785ef94602502b6244887bead8dddaf0c6f3a8552e0ff39a5b0a27a96464686b48c0f621bbbb7414ad5cea39236b2338884b3beb7986b46160330920915505b9a72066e546e2987c5167a723565626b90c89a0634c564aa0ebd661b7e36794659dc7920164b64189503530cccd1e6b79f6b0f175eed95b727ee590c48b99651edc94a99f6f2b018bcc7164d47bb1742e6f7fa4be67c9fb3f4b103cb6512eea6e902d378e7535be2cbc75cf9ea52b21bfcddf85cec7ec9ec60bf02986554b5379f00c362e174a6e3b34bcf4383c87712e4ef55572e1d87dead39426d4459d942caa5422aea1f86a824b4c09e15aa8b101c4692c05c61a25c89c509e070beeda87a37ced3d956e57482a49bd734f2bf2967f007d3a014378a16d65a1d51e76e6f6109a1a8f303ffccd84d54dba1df0fd68ba52f3660febec67a6f49091923a16cddcc9124dde9aa9be6db6ea116aaa8979120affca4b4ca6735fed4ef599ca1e0b74582177dad20996ada5961e4519b3e423498baf89b845a8cfa5ee534b93442d29764f833afdda19aab576b0e6e2bbd5e0124ed2072447821fb3e141ce0adddcd67fa036c44aee319a1e11f9a1ebc04b75b99aa728d8adce5764fb54df1bb37ca9390605c14dd2d243711971d7b8834924945e49e20aa46823030d13b5ec69cb682311e428edadd47ab0555249757301c391a8448c3474535393a9e045624e74d4faca52d83db53119bf529620867bc9a95b7736a0802c25879f6f7a8b7ad5becde69aa5b3f51ec306ed92b03f79287013630ff6a7f0d1a1538851af449e82c9911b50aa1505dc98019115061a81a006a1911fdf9a5107281af3c4f42d5842ea416919d3f6b1d237934913b10e2fa4f486473f4edfd625aa9654889b28413b87150c0defe5363a6b204022417667089f7d3b79d5620851a754762e05eb96abad6682705114142a0d3cdb789e247d516149af4af4c4b3440b978888015beb56ce298248132fc3fad8bcabbaa312b483e38562812d77a6c6d6782b3b7afad0f171e1ec9da18e4acbe53c5ca390097f9bac31ec97bb94361a7bef889234720ddce1ab28fc10c80f124ae154e302934c3f87b582c5a42f05251f660daf34a11bf681dc06e443d0c65da74b0238eff077e21f0a38465e018ef265098214f4cbc0e7592ab8469f88bed5ada5d8ccf8fe01b757cf8df14d6f81abbc5418e37ae8b2202dad7706ffa38322061eba1e1cb988e63977ab02a2f40e6fe27bfc0a768d3d780219f2996f72a34b35c97be2457cc0b884025f86ce3108512b9379581289644fc47ab1d6505cd6035a38886bad3e09e8df6d3d7f283af5c5093c2e5f4a1b38727f0cbb84aae8f66f1c0205490321cccb7253ea12be0dd250275f19a3c634387d02ea71aef18e63eca7333c4483f7133daeae58e3de267b9f56d44214f806f9a3bd7f61ea9feb85c7a2cc65461a9101b4ea4917185e035aa2998dc2ab8edaeb36a498be30382d12548a6c4525157718c2e6ac9d748e289bac6f8b55cf07bb3500aee8f1eb3fed033f423558b4694ea72affafc5e3db67556d21d944a7cdaaf0ade58a30e41ffd3300fe4589ecea4c337f73e59626b0d8be96c613bc4876e198295df23fcf74da898b567d4b37ef36eccb9c41e50ce6ae78feba30347bfb74b9d71915eff7d0d0b953a97c91280d5c8145307dec4cf64bec616d96968750c6db82a8a1435a8cf123099433c6da3458f606b60320668857eb92c47fd433b7204ac05fd0acf1c529d60dd76500c705a2863d440ac2f012dfbaecb0a70bf5a866c94f38fd168010d1bd89d6cd243addc871be7162ec2f7dbaa9ee296d080e0bc91959c7cd23803367572c860cfdab8289f8835d3842f165cc4302cc3bb667f76b2e89a968b1b5dba11648b6755e8372790e9fda03b86be12987b13c657b11eecded29644aac8b3993b92d3fbf2ee8c5e8d7ef674ee5d5fd868a37c9dc23707c81a7138cad82e44fa13e82329daaa725396c24c150248c6217d751e3cd2768a3bbf261a25ab64cefc543adb7166370845ae36c8d4d8fc8a11a35c569b743f153f1b4ea576daadd8fe5f552e6fb933947be7afc049112943e86cb9c5b9550f1350da929eba03ef4389a85629f18e75242da12e61d262885691527b18cc8c6999f305f0aaf2bfaf0e2ea0255579583405224a25e50127d779b9fc82ca721dd30360845fc7c0d0c39eb3180ffab01d254dc70bd5d72d49b48cc0b5f715ef1adc75a517dbf75c199990bd59b816b2027f635b4f4a9f990a82d55e04febe3deb492bda745de0be44bc6561a5dc04dc7dbcca0f88d82bb65ab99db0d74b64e55e2797ad5ec5ac0e1eb940a2cd5e0dddc258b70154a7f829e466e6755ea8bb40d4d4173c5a5101431dde0f8a69e32c3d78d9ce51c003425653341d6402661b70c083e2b59d7f45ba88536890cc8d04eb7a4577b26556427a08925b3cee1fd42cb40535a74e777ee01bd6506e5b3dbe4b28261fd24a000ca0d6f35a7ac8a3bcb271cb2540a38743989381b8e398c23820514e234277ad668ce1f0546031ba6b6b253c643ecfce389e4519afb30eb301011ea7d09ed5457e1cce11259a8ca54ec107e41e35eeefdbca9c090b5b384332d7263decac48e23765312cf529e6feb415ed45b001fc8b553a9db6be3f7599d1249eab5a644ed1d0309f374de15d3f703487e5ff80d221f897dc3fe840193343ab8314eb98a611488d386b39387bf68a874b9c3701876e3bbf716f10fe1886981820e2f926bfdcdc517327e00328ef3548efeb9ff956d5ddf9c8c135cd46b6db4e5b8adf60cc4a978c56a7f40bb9f16f65f0e843484a954398be01548a102009092219d1aa9b8f3119771e9703a20bc3dfeaebd628b3bb4d9cb2a031c85f11109e35bba7441d3d3aeb374fb1a11b322d89ead6c83c1417587b85152cb6cbe4867074abb93ccd530f4aed47ef029761210e8a983d2405523211302dde39c16abfa617f346e91996593b70534a9061c341e3103ece7e3c7831e776de4c8349c056eb749852327d4523efce1d292796ddae476a18444b4859bc3b86bf2650bbf294cdfa21b9e73b0c7f5cde06740b7420554694e86f716fc05e6a7fa6bbde08d4cc47356c56daa258887e89d12b00eaf33487a266e562f496af359bbad11f9762339a7b9a9d303d0eb4b496920a09a6ad3d5b845fbd748b36df986edfd0177769fb2f4d34ba3bc61bf7324f1f5e72f665a3a9979efc6b5f8dd10b80098b7e6ec6fe239420449741dca96f83e5a274d0d0395b9d23f7b54d2edaa97eb91248e3cf0738b64d072fe6523d435f5ca07c9bc4b8e359c68c49910b3ea2e5c3e13bd81f9a6cdda405ab7e7f81b484dcba01412518db54cfabcadf36afd346fdfc889c9e4a185228217379bcc62f9a4328433ffc651c8818edf20c23dbb10bd68f057fbb6b56342c3529a38c493c8f7a5ce140776160c043f6b5ca25477fde6f89b332a64016bf4ae98bd5042835305fb930722ba13915a8def4999765437953ab36a0e35228af65f7aa9630ebdf365203d851a5bd28240a07d2fbbcdd16f877d21766673ffd39017ab7a2bb4ebb52a45d3e0e1a165ba542c10541a29ede7ad7c7eab8fa501f34aa828d46a57de53960f20ce023be4fd9d3bdef97cc98291bc12eac37dc11b4c539c611d968708d238cde713d44a24c7a9ed4befcfe58a2b21faff2375e6f7574e046e7c18dcc3851db9c02b9c717b6bb65bf3579fc9e4fe53c8bcb68a28580e221e55af1c348bf7580f8d65536e88dc51452ce4e1903c69a87fae4d83f8667cd7ae5c5f92d698133290f80e709d47fbf2770275dd54ab819cda1872beb0bc2cecc9ab7e633590a0e16e611f2cc4f4505aa01d53208ada1ef4fcacbe1593ba44c69b19554234003111676d61cb0af746e7006928597d72346d0e5a1e5d48d407f19bb01723930c0e14956f20c40307dbe8905abaff37264f1bbdee2c2a46913a4863ac313cdbefbacb11c857ee6e778d3976289433cd1600c8710ff8aa40c5befa20db8cb526bccc7e548511663e33dc9635eb2bddfcf50361b2618329c0e9874273bc42188c9c0e9a0e8604921fdfaa2fb8da8e3976319444e18a0c824c5daf96b1e89699f588077f3c3669287b10fc8e38fcb14fa21c92a8233276d443d1ac01aaaec86029c4ae98da4806510334d2118b78a4a43ade120b25bb9b703ae1bb67b1b831b7f7d891e847b400b64766e6410b1116ce3d0224cc7fe290e4a96305a0e17ce39f9dee86713a486357504afc7c0499ced89ea0c038a59962fca75617c91dfb7308c1e6a5967eb0f5d78fa9682276a93627596a0bcd8ccb3223d3c1fc56f31832998309a16b44055f600cf8b89e18b0b88bb1bd996774f68f4845185f66a8b7165d67f2aabb2b162c70cde293a61b6a89bc7ed7e52f9b679f6041b5a6b3eb87fd074cbfd1c5a6cae02e8d92c0505de514b576fe4e7f2e5bc7f1d505ddca37349de5c71abb7ef08e4f8e001e4a5ecdd6b60f9770975ca4adad7977e081f6b372c100c531af61486e71692143ce9db60bc6982f2ee3fcf1272880c23c504eb4989ce7784cab5216cba01aedb2de909d7b1db5bbca0844fbdf7f3a193db8911ce24c3093fc06064dec86c47f95d4eef04dc8017b98970f68a74913661c01e39b1328d38a7cb6b3b9cbbaf6af1f1631d1dfeda73f4dbbf3d0394d2586f822e17d936725638e317fac73e5cdd9435ba5acd6cf429f64686b37d862d4802ca4dd99852a12ca715f15e607d251397ad87f86f55fee013f5218f217fb51b5efa4c0f032066096026923de3815734e25b0cf360646c288ce250e777b805e5d585c5e29ec924e599e964c05aeff1ba99ff72b2749d25aa755f0152ca982b827b254f38ff6a62ad11190fe629027582e03a02dcc750490a23bd6fb212e16eb968758fb8f0de33773485a59e555e73e32e1167bcb5e6cea7e176efb55003fa32dc37e9903082719510fd9ecb03be4f577c2b5e437ce5816dc2ee7f40b22ec1a5e946f407623d5f63585cb01a754ddc59a730d2c696d42ed95d948a3c4abc7e81f982b4cf9e97303dc4467481fa674f4c561198495405186ed8c8226690fe06cb12f89d14ec64e33a4d0b030dbae3791cbcdeb08867941286672f610f179f2bac6dddff877ae0614e83d2eb68454de389a58e80e0d33b700889d279101ff3b9d5c3fa7bcfc43d5a37758886e6d8f322a09fa27df27f8c285f0e327e785e0fe1fc6c8432e33cf616dc01060d67f2bfb943d818a747830f292761be3ad81caababcf9835c443410645bcde9462e27e42ee212117e25f44d41a037357ea09263d0c16d5aa5df038adf7ff644e5d77de12b487b87e0d5bb37f3b26366ee798e2fb97e20385733d23c432a524ae1aa1ea4f9e73ff8dab463367035dde2edb94f5e71abe8f86cd760a0e834e6590ff4ef1fb3bb6943d6dccd88cb379350f1e14baa65640995ddc5db4183c147714f0dd2d89bd25ce4e568889a45bd134f11491f6cff623b269db8bd728c01fe01494cf6e4d179eec62b8dadd347a2d515a26e7eb319f4b9d17fd47db2ca2acfda79fc34f2ee2212b3a9adb6904e79e5798f2f95cb15b07ae4c2e3d5838e0399e4798ec7c37fefbdebf12ec3dcb39375b4592d2a93e5c8d8bf663cb3b092035b6808e5b8ea7c4c68a866ff90f055f3aee447106f396a7d38a9c44120b10a620e26f2f26319b9feeda7fb52e5b6b21dac677e19e924aad170c41774529cac1a9e15e21c1b808858b39535ba79434ab5a047eebb8e6c8bb8a8c13848060dbfeb339172f7273aa7677f19b1f098ed3e9b16dd4d2b38b4d842b205e671f92f0c1048edd28d4a559dae97254ae00f63b8867949700c7118820ada47667d086cf3892557a8f7323c53d2d9b96222cd62e6c29c32454bbf381ba77e9dd4ced6c809f611d268dd8b9d533cfa697ebe28300eb4ea9a0dcae91c6d9073b6208b4cae9b3e697397bcd054d74850d1b45351ab7570972c4f537bcd5c921bfc765b29ceda8050454459bb336093e15f4e498935c32be06e6f79a17f57c09eccdfb36998780eec2d9dad34aa037380e0465f7826c0b4f97cd6258f23b22c274f1ab7e301de91f2850a27f48d22435eebdcbb02393b6d10177a9cdd8aa540b632053bf8aecdb4751c85c6d8c8076447fdfe66c4e0a0e3530427356a04c364f13cf19187dd6aa224374731e0268d5c97c354315a753979458e3bb58c0f99471666d709e5b1423a63a6b674262d7cb77556005fd71c886c9376754c0d333710553d960f5f4447d4552cf5ad38be4900870b9e8c5a1c1c30b76b3a1af922803ab602fbc180ac9db36dcb6e8b8ca07e467bde02aeaa69a0ed23ba4ddf363c87646f1bef4855c434b7a56a9a9b44d8482033605f974c0a2e8e0de0f12ed85d30ab8b5235e608f7cc68b569e73b6d2146737f321a4b90b112f29057b9355cd6acd10e0f881b63eef36b9fdf8e9bd28e3a74657c86836491ff37b57d711aed6fa00b3a3f2aceaffef293e6cf9ac1deec8ca6815bf8229c6c1b5bc00803728fdd2fc9a07928fee2cdd4724a66e23c9b2cde8705c7b94527529aa4246d2da7a311813f8f35941b8988dc8c7803b8b613b3c030d0151ee228cda269db3d1fcc57865ef649dabcbc4ba34711ac0a0dcc04081a4fc17f98c43a01ebc1ef1dbd532b8f53876ee406ef1137c40d6f24e31b962be2320a650e9b6d14616ffa8e7d48e295034f0da8c704ab10878e2d462c3d52e77f7612ee3469feb5d99938009557a94b602cbf3656e0d8d1420468c6172ca8345b6fbda739d2e398a222983690b4e3f635da88e74ff7b14818bdbd320d2d040e27329e338dd741da8ccb10cc1a273241737459a39877a03ecf18f9f5fbde50e834a6cee0a9711106c095d0dabe33851a785c77f3d4e2a3744f6eef4a2aad86395a26558008d59811a423d6781ecb370a68fca3d54821144a94c7113be39c4ad4ae290908633ae765698bd9c6f038293f7e0cf9fefb404475aaae77b16622fdea6fdd7a1e8180c1336ba27b241e8c0d3b7d7c2edcd26d3c7001ca412a01a32451ef8d054151c17d953fc07e109fdee50044e5eba2d67c63dfbf3b3a5c43434287ab33f3a03dc17ac363848602e8bbc07eadc6ff2f753ca90e0231930f02f556d2e2edfe532b1e78283fe1f20ee666dae7c64e575b4f0c804a891de97af734c128fa06a26fbc483ee78646078a23af6a19787fc73287bbc377b048796114e3e8a574ce7f8cd412a49e9a3fe57a3df34cb73a52ba1b2197f445f3a1ab57ca66f94f978f0747063b9b7be5b579fed8ec19ccf7bbf62dbd34c7cd9f9d1f25fdbfacdac8c2faf6c1dddba3e7576836e75342c370b4d2b17fec2992051d45159e3f36eb647f2fa4a997d610290e9e97e9f7235e2439aeab07b235333be59ed9e3e37cb3404fd3aa71941406607627c92b32640ff8589f85a4046d571fa786820eaaa140f24e3d45b0baccbc8636eb3e0cbbce60981b3441751e36157c4facb839e382094f09523e40d4073198a4099fd911756cfdbef56bb952c0054ce7622a4b9178f9aeb1ff0c33c9f41889026a8d03c42633af9b5a4359db0fad7816295a4f8635d3a4819ca86550eef06f29bdbbe495b15c2d9f450520961463cd7da1c5d7734728402a9ccf39959e4ec6828bf15bb6c07b0c237d374dff4267ac58e72acf02d7bc8d4ac99dafc13270c5884e143fe6fd597a0b1f349d40052df61c475a0249026f8f9845988fcf01fd88c16ca08c39ce1304b558253cb4f16ee6c61a002eaf059f325a0a8ef7cfb7f59ead5bdccda76d75be2126c2b30401c528281d48931fa8892335341bca16f8167f02dfc4a40249a7c7ed73ef875041e537aa0c912f786abe09fb9ff9a8246cd4f2648294c4b9a14a094f765cf56c2d99b9dc0002e8929c64a47d0bad70b25c73c601baca3f0016acea3e7d9bdbeb414058fa46750de8bf633c0e91c5579847f1a2a376ff8c60df9965286a75ef3fd7a89a9ac24bf6f96d812c9dcd8ad34e9a4e4c1f689673912dda1d9948b0f9d0ddc76659412e56e8d89e22ebb8e408817af49b9d0e659dc7630c4e8878c9030ba6d97049efdc56afa8f3b67f3c4354576c884a59ae82a8929dcdbe3b3549744d2d5b40735423ea123b478b19839d594c42992ff9984596e7f9e1c65e1471a0162fc40bf79bff139d5f1434e7ada41952d6f94f5566e6bb767c61f0d3f0b1f2bf59943ded3fedc74e437b791e2f063901a384a8981c656a3577910318d6edde1e35a5aef36a1c8ecf222e7c3fe2758a9eaaa3181bcd6372bea531f1bcb8f84c4f55b151e3627068713e63e5698f64a2a3acc7a721c8a083801cdbd2238ae24c15b07173d21db6301ec14d1c0adbdf0dec141885c6509de7a2e4af562b9ad4dfe65c9ca3de80529b0b6c9f5a61fd0980553ad48db7423a3e08eb815e6dda1d56743077aa5606b380da69883e5969ebf5e5c6541bcfd37a29f43a2bcfde46679ca52829c5232af29da919e70a7ade6cf13a5623de62e2c4c7d6e2a4aa46a70e308fb795a702f7b79ecab61137c8e04928398206b7abdbb3d4da54037c841ad2d409779ec4db605e8b5289ad97641c1bd03e26d348bca56bfbe87171057594db0b8fb8e0ec672562ce3fc32722053d32ad9d6e3a3c44fe345391aa67756aca6c2bcaca4055329b7a6c071ae8baadccc4f706aa117da98005b6828c2636a89b93367e41324df8e81b9d7d451ed016a4f6ca41e08c775718cf49a72b1a332589b4cc03b67a2406a59315890bffe51994c15159e4bea207b5936e8570a6680a495c0c5ce9ecd707864be83dd34a77e9c4f8fad1dab959070a4a5c2a4d81e5b72603cb924f546f0e7b1ff81372d07f57128dccb101cdd31ee1a2ae48d22b4778961bba983cbe8ac5553492b023c5b7c2c5950bf9d643e58b608b63f1b1458e42860a294cf84aeac9dea2a2eba4dc0d23c49483dc72a6acae2c065be56530384959cb8db387ea1c4253d929381bede38986f59b5153f73a92a7c516ddcc162ad4e77056ba9fe291817c123592d0fb8941722fc118c17df79bb3163ee0caa1cc16bfbcb4d79556280369dd7c627e39160f12917c4c1f6fe7a4d519fd62570cea99f30f2b5ddb24cdaa4b81669fc1c73c12feb5473bc16e38f7aabb5b5d25412d5d7376cb51c07438fc55e0cb9647294d3e1c3da8c9ea894db41f4ad6b150fed67b0716dc8b2b23e1e81f41773af4fbfdfdd0461cf9cdebfbb0fe97e74ad31022bf75b909a9a2863737be4aba8ca0b373fab0ead282a4f78bc1c4c4b878f038b24c230e0b4e3d229573258328ce306aa855f492f8a33b06e4525c5b4892e924a501c00eaafb63918d879c728b3c5793eacaf567bd192485f05abaf92dfeafa8968539b4a61002281f462fc7f211e0a6836d687c4ced54b6c2cf153237357bd678990adde482650d5eb188f061c886c049c6a31580cf5b1888c5a32fde735348cc30d2b0ac7083d407deb7f5b5455d1b3dab8316da40769231cb5c29bb727006ad107a4c12800695d0295dd967bd011042da746e9c45b4f70f246af406e61a3a048f296fcb25cbac3d163f5d34f2c3fd750896049b83ca3398fd8626a8b0c2d8bd03f48d09a7d96a3e3350574ddc46c6c9c6e4abf2a267ea15a31b8086abb921e2840e7a763e7672eaa1e306206f8bd2e1c61cfcf7fabfb63a9794299262ef111585fd78cc7750c635598a22559127bd24cf3a70081c7c96288a07b81026eb0aed32e8aa8ed02cb004c610fb1845292dd90cbfb6233d34601358b5a6729b1e9236b7b07df36b10a43dcc1969fc47e6b7d8c3901e25627318d022f33580df41f2a2750781a325e9a6a3c863b22b0dfd20dba6127dd2c1ba16249ad42b498542585677a47f02a958e62f81849ea2b82e7f0b1e5d22c8ece203a1314a651d49da7a44c1becf7b501be32405e0a42218f1917904f846d0d27321c377bcfb83de05176eff0f2ded972b38bc034adc43954c8de4d35f9320dc890f0dec004abfb5766841fa56b907e75a2343d8d2b1ebf6ccbc0d34f492dab32411f489682878ca5ea7567700e8e7668dac21b525903d16ca198217883b929e739ae22cdbfb95feb2726451633b1c43edb625979858de3f1724fa04494eeffd22fe4d299e4ce01bf3f95e529855556dcd3f7fc7e963ac2404df8391eb7b3aae6e1a3b3ad2e4a37d8ac6d1292c59fd0db48681aa8c22d4b70a17ec0501785d750429c9b061749a8ba80c591ca8bb4f6780530fb84a340ae54a6b0c50eed45432e66631a42aebbb81c87eb3ff052e78b84b7105f2b9da129cf839f9358ec39b896c3bc4cd13cd838966f1e5f6116c73058ac7d26fb6647f43bc2513c1cac92551354ff092b4cbada970880a386cbd1e26b675dc37b2d7b617853abe981160984d1bd2171bb10a864c93e871e56d6d74d34f4468d8b8d554afc30a5bdb8eb070c07c87f8cb301610c53582a12e5857ccd53254ff6195f9f0f6ec41f563b6ab14b5a7606a069999b07aba8b631955e5b1ad9ebd25a4151ade517aeca5f5887a491634244f22910eceef9bdb6c28832b6c98d43e7e862fbd588eb84c380290ffff8cc78e207c5c7d4c9a1e4940f62dc2fe15dc95723acea9e9b1bf2e520de2e4daf4a411d1d2a0795144a8cafe7cc57cf9612764ad99bc0d5d72e7954d831b18fac772e7fcf4856708a54c013420e42a9f2ab63ca24f9c8bd7614d6ca08c6fd8c8e37e9ea80ab7eb2204b67d9a5645b1e2e848c7516c9fd4b8fc2fefce2b931fb7d34be55467f2db8ca2e966efa34e015dac800e7587f574b89ce1211fa5eb36f776df618fef0763e46340ed6e5b17a95f1c85b37e14fab6c10a2c2fd4833dc87498e9e067c2e446a92388d9bfdc76f98b1239b16792ecc4613f4afdeac60e55b9ace93751e563ca447396d7586f2e6f8deaf5cdfd27fe16fd7eada8653aa59228728e3252a0750df7c2f63f98f236a4f54bf8767eb13a3f9aa01b8fa39e872d0c5ec1d9d628e4133da8820cd51dd84ded46e58cbe54f12b8c49adee831e44bbbfe883cf9f7e6fa17f19f410936377075e5131bae0a23b1b95605bf86b1d6cacfa7b24791fa9b82a9b9165cf7161a72b271ca3e97d972e0930248328376c4871f3ca62ad6a4b790c46ea793058d58d1a74dd2d86777637964b3c55038a517b8aa5d67cd1b7152d1c3d4b3bfd51ef6f739d010d5e06159ab7f1d208a71ef0e6864b8b7f3d77a3de66a2b31414ad73332f2d2fed9f2b4f67c1e9efa694f93628a643600cd4eea64bda911118a5b0b2d42cd9c923f33223293779ea3775cb2ae22157f794f8cffb7002d4e3c909e923329c8dcd2842d18ab84b31aa443bea221ac9fd1dc027b2e6ab3612bb7153c101262b245259c572e86f9de4bf450fae068c724ac91058c5a3e2bbe72bf242a63cb91befed4db0d6ab00279bcd47ac45ffba1c90c10b3ac87d9090c3c4bd7d9b69d201a44db019941ba541e5b785cdebc1d053aa383ba840170c4280c88c5910f60c1cd82ac75e8ca05e47e4ea2af4e0902d5691110ea2d8c4fc6b707c233fa9e60c028e79f91e0dd8029543a5716a93d863b318c5754ef4de468e836cda139a891a166615b043c16ded67dca0121194e4b08e23e026e5e7b28033bec4bd9320b4550585398758a12c6121f1925f58f33666ac695ec2d3cf1db0412804c58b3356befaeb8c5ea0107efbb3696f8c1d5d80b49cef964d74f6ed483702586a7fc8afee5b69c4fcac2b6f2eef0b4d5fa48cf5a27ef5003b7b80feed45ab46acdd0dd472c31f7f75f090c61ca1be29bf030300c01823720105758046b4370f8da2613e26b5ef9d2d0a0bdd577f0f8b1f6a0e399c30a7968195be3f2d9d3757644a603978e40c8bbb3402ae568057ce7a5e413ea6bac6ae29ea7b0d6958e53698ca49d1e9717380b429f63342378f100e686015751829e6075b5d4851987b52b7d4547fd8fa53a862b58c670fe19094e37080ef1da7ccd80301a7d5cce2c718761827b0e2d13a585a4a9db179706cef83cbee9f40410286514c9934a0aa83fabeb07a5e25fe46a36c44a17f428efdaa3e281e36c51e8fc5476a1f0ee4e03c97b0227900caa73af5759f84d19ff0591f542505bf60b838c08364ed0f0249a56b41c5b464e4c0692946434ee98af2d05a1d925aad51218be72fb24bfbe866f6b2844d554850374be974022f48725311c5464a32c7ad849e5b6d1ef1585b8fdc31045c0b73bae3f34142ec8b9196994e8884ca0a0ea679bae418e79051fbc320c15b52f9cad8b236f000aee3752276d420799045fdc8e0c0424e76c64ce0b33c40db1daa6c31ced38154d8f623354e34deb965ac01751aebe9ec145de4cc8de638af39f4b118bfddf3faf507513af982138c3a47bc0bf1feb1221d8a07d8da35ee06cc1756ff64570d568f6da80b56228adf819561508c27e71b2d1657a0068b02fde9eb70f3d433ebe7409665a49917cb321d79698f6b3f33f093c096a2edc509dd07118dc53ef2d54eff259b5b6f412aa5235180f5c9552bf9f33b22856962650cdd030f9519b759c05214395fd158c1f3f40cbb52269231c4dcbab7c6e9aeac75cf4925e3919184f7f5fcfa46979e82c840f27813b50299e94a2a316eb793001093addb2ee1cf7248592a25b7fd91950215c1250d4b3ce4cb3fd84ccaff8ca20b6023095c6b0194c077afe30865eeb0f1048df31ece92ca002bfed4848152940472b4074767ae95404544b27a38cc5a7522d902f19edd602dc55cd2aa082cfb5ade02bf3183601fb0a0a22d280fb0b8c76da98ac843c8037c0b80d52016f8b39ed2a1f772024047f896d25b3a24568fed3e582b4b0796a1fe905ad7b168708756c7ff365cea85d7d2313b33bbdde7fa68f08669da206c63b4b06e1482b6f1f6721628f871f5d2373df7ee9d0423e9809b49b37eab86d9f170e96d8ae1164a2a6ebdb765857b93c91c315a54b7e74e5892248b0bd0f0355d540b2d36df8c3d81eb284366a88d8771caf9a8ee67c037ca9e61e6c16e0bca7d13795562032109baebba0d9dbe4d9284fdd8255361c21c363b8dcdb1f970e9e80e49bb536acaa9f994ce05cbb8a48761ef5c12d8065493e90e817c06d09de33fb6ebbcc1e08de953230afb21a41f2dbf3a8c5072ba23723e923621e1bf389ae3d1e4ab3f74602277f353d62ff3288b609cea683a22ed3c72ab87d930228c53788b4fc87e075f7816ee028e4b870cfce0430d98e58d2e076f1bc9d94771e4a8113014b201127834ca0035a4b1d652f4924dbfd6b47cbd4922cc2dd1501b3ee58fc3ea20c07ffc6dcc9f14f0fd042042449cb140a2ab5b76d5f373826f3c77a41b0557d4a994f484893ffae8babc3312d4860481011dc1075520a751317c1b34e6b15a0176156effe2a431cac673e00cfc4698374143f987e13d1e84ba13dd7928a1598c374c6f628ab1cd6c19cb30145683453be75e12fbbfd7381da041485322976122037364138ec39ca00c27a812f4ffbbb7f66c28782a99699cd7798986c820ddd9d7a8c939fd578c416ce12c4bc5959f5c233d7a8424d6f312cd7e8db5ba9858f86c1517db65f5fde1b0b3eb4314172069ba4db7bfdb225f52c8d527d349e68b260700b27706ee6f438b651a3e29bf1fe8f2b3f5ec6436db099b9a25e3294e0852bdb98d807b7da00df15884d2599a7d4307323e0f556c981403ca95dff2684163a6982a380d8b63f321122559dd4ce3836319d712b38fe30efd93af81f842307894eef9540ffabee76cf4f4612c9683d19abbd87e044df301fbce9c97914e980b34651fd021fdaec4fe473b12af9559308815db6e956c38fcc1550b52dbf8619411848aeab288f5b038cfb952101f517a4f59fc8b04c73f001c8a696d54bc1a964af471bbb0cd93cf43f265fa2fdff82ef701e77da3851f65b21b7ec57595ffd55c4259f340791d052d4bfe867ced0edc5e6c046c1fff49377dcecdbc76c269a7a02a09de1369380493b4e8a05aa2ea34612651be4aefb5ee58f8087892188ab5ca82f428ac53a03667379a8447cbbbc7cdb6231362062eaa3d84057e28e03e1cb26ad6ef4f1f99384782c9fa0203833285d3dff0e4d221b20a6fbe3e22e6284ad0ffcf0a098734b9a9974a1591167b2389a9066b0b4d91aac540fa541122fc4009334d9d50dd53647e8d25b506a3a462ccdf138654acba3d054d21c1f4feef7616e9dd4a6ca1ccb1a9e4f475ddfa20b4c2dd8c650b7f890e6af627d40aa883a4956684626d9dcd446cfceaa9ebabd57c8a54d87c46416cc0dfe05055f80b8579d8e2f18775b32640696d636930cb3730279cad57e06235be8d414e1fb8bf2bd086c0b150cd8291c25f5a0c483908850d80697fcc5d3ba8aaecea85a172d0c8229d297a6cd91e0842edb0b36dcb69c3fc3d867f1a82aadaa0117c33ee8a912365a55406bdd678552b0af27a15884bb9ceee84467707ebf33f959d246b04719e80cabc3266bfb4c914333b55a82f41a06fad0c516472463b07d1dfdc7b10a0c4877d81f5618fb3744387ec358b914e2472024aaf7e0809620bca322f68cf6037f6d92f3f2a86282bff59c7506855ee0b152f4c3a3467e6d2a8a227600813660566ffea9984e8836bc22cebb9a8538c9da9ebb7928c9a25ef897d2873cdab7cf72db336ecf133905e4094b2ffb017d0647bfb34405c8eb7c9cd0be50142ce3890ca2239280d04a5535fe176090cd5f39d27f1a0bfd449d4d216d18482465c70d85a4b88803144172a89f1a41e1b5e2a003601c6144d53f451e03b8314fea4cb31d32054a241ef16305e529e9328e0d24ac406822b89dc0e0d8ab2431bafb29e1386523645e592f4d7b0e415cf6de487da47795730f0c25ee21f6bb3aa98f3cab8ff2785bc638d8c45f32a659ce12e59c9878dad8b06b089c5c5397a9e1d8862dc10383b40877f6bafb758f11a2aaa3a5b1dc5a7ee3a57dde7d2f559d410e85ce3d498f60807953f1703dada1dadc89060130c421edf8426137e2b814480da9c002616ea25a83e3ae33289ecc74cde910fcfeeb61810faa0c766007cdb6db44cb46968b77d2bf9764d9b5fc28c0cfea493ae2db6d779e0186eb6fa95bd03d45164dea5d0bd12288c2711a1a8119cbaedf46f2e331c969c67bdae1067317fe2a4ec52cd70659c55ab50de2812149228da2e13c6852107febd0aa54119bdf0fd156f76931645abe33dbe673d597fbcd9cc751d1740567ed7ad1d6a3891ac63f4218179e3a81318c45f582406dc07902f6e9e692dff2154bb8656e5e88df0433eb475c6231101c5a3ef4a6d1f9c903f15987ba31f77f86163ddf9f10609113b8b88a19724aa715235c2725c70851f7bb53d8d55f8963ed0dbc1858fdb05d9e08f06123f45eaccb1da46c7fdbd98ac83074ed894f2ae26d09acc9b2ba5e89ee177d7892dfd2c90885dc313f53c9e5cb8f07a4db295f9a124fbbae3fdb1e3341394f8132771153e1261b41af587c6ea43170f2b39a80b92f4c0d930fe18efc3ff5199d810769990edee71d8795720bf5e64350928a928db8602021d9331406abe5c46f563574dcb88b19cc6320203340d45985d3e72d8cde0759c9c9a3a54fb82efc26e7b42e105e48d90ad434f05f43f0882903b6223c7bf983e0c19c053f0fd817abcabeee0adec1ea282da73ef84776a7e5b05c27b33d5b63231eb646e693a9d970086e74aaffe52b739e05801767a7b5a25035132a32d402f91cce274ec03ab6ce2e806bee77495e9a0bc7ea0f4b463ffec0b436fd55c91bb17c3d897c0df8c811e1b76ce17ef9981886710fa10fccd0dd1bd381e1a67fc1c2c6c2f4e811cacac0d5f7309dd989b16e0493d7ac85a09f72e04a3c3ebc845304d6c329b0eb657e46f9eaec56d192dfd3a2951ed711d497481a7a10be1fc8a9b80b0e8a52f0c682e2ab16a38a62b16cfd2991a5436746a804ae1ba2beff73521acabfc8aa4502b4c77fc204b9f4027cece152c52c6b33bf48b141553358865390d7b7111735c062c88014eb4132629da57eda715273e5c24d8e50576d6e4f46caa8d87e958e8eea336225962932fa0922ec166ac834290924d024ddb42d8ca641a8154a1a25c5c0b0a9cd6e8a8362a0e6798e6df3f102c7b1ac4e7d78950f554b7e86ddfb8828b840f34d11ae3d2f2d85a0f2c924f65f027eb360c6f858ce9e8f1a96bbaafb28ffb4f56772538b3a3090c71fe853656b815314e24b6c0150987a44eef26629ed00f9ae8871f6a1ecfc01f177d0a47ee8a95cb909a27ebe0081a1a4b389d301e0cb592afb2845c4eeecdebcf1ea4d4f4753ffc59e4bd016a429a10ad1be42e32f55e3f14fc4f69301758a7efd50223dbc1bcdcbdc37b4ce26df7c195da07d4b951a958c84555d7ba3d38eb2112be1bb6e91e5baba4f43181cd3bb0563c7000e83a1250b8881e447f41f9c75937dac927dd2d79c9f41d2bf2bab6cc6ff7563095c1b1179fca1e3211b8c50a37aab13c831a914d2b624756317414f0b242c37576c214536f62c9bc309fc4b0b9e966d98607c9a4847cb687ad54e73b14fc3581703382813be39899b636716704c15dbf914a9fb690891a497b59eb68b0ad353859bba988c1e83109de99fe65772678d8f0355a13a489d4b2a8817bf9b63c3c52921f4eacc4f4fe3a44b4f78f28a178aad841230dfb6f994e442e1d9dbea8a93c13c4291a7153c36e0757084fb2dc6b9bd4fa3eb308e00b5ae2c776ac2d9f51852430ced5d3ab4319d25263aa0db73f8ed1ced9a21be7150817c77dd257c31538a4ac1fc6ee446f01ab5d9b900b5569123c7bd8ae4039bab444a382fb20ac192cf358996685ed82fc4e3b8d139cf86683cbc0509523d61b8dfe1f4ada2d4a879de8b723a1be5322d0328fbfa8dcc190950d25030ad7a4861e4eb6ae9a50ed4b62c4745282a2ec1ad839790838b18fb9d7dd96997edbb072b73d46d9a6156f6db77d1867fd889de8edb1e3b955df18a3c39ee20a16bcc79ecaf7c6d40f2b5e0b38aeb8c3cd39d7c207c669353e6b17f18af1d7d7b2e1ee748e3093ee3dcb4e6406580478fb7146e705a0c9741cdf7134f391d0a3f7eef917a0f0cf6919a0e27f5e1e18f47da3e25cb6f5da99213f39a65f238c46f2f2d5d94b1dbf75dbf772723f19a7a593c96a6c5fd679d88bdf3746eee0c1121485098bc1da6831ca4efee4229ed99b7e76d67e96cfa44778a960afeade722a41a14c1571c0bcfca8fde3974c080a732184304c1039db92da023a600116480c0d260acb54623933d53672159606936acbd717f0b6869e92041b6641c2b6e2227c38869290ebeebba08280644bf4849fcdc715f44995168292251ec9556045722ffa440b9cfb7a1f35c1f8c8c8e40b30b7256c5e9273f79df5e74eca680847455bb072c2c172d61aa996eb889ef9c0dac2e66e4e3cd1ae6a2d742c20d779c30fa946cc5d61b039ccfb5155ab0dd9a6857f1a664dd5c55ab19ca545db158a87db16b4fd361c374723afa1037bb8c4f803c51526e1a0d7bb520afb1196f2f83cb49913d7db5accc96dbcb3c8be172c673b3b48a14cad8594add70910926bad10f04eb6f8c0257aa3b4633c45ca9aa03f5cbc0b2a5878d1afcae751da62daef4bf3b2d2a1fcbec558b9dfd5f5e74a3e9226b72d3fef1a3bd1e680bc4da6ca938a69c261e55fc8a4c59c4f6e36da5a2f787cfc3379d06d15f4abdd7ceef3b20287654946b57ed3ea7d5861cd253bca5201b6c09723f7243f67c260b143c7aa832f05618c837869cd9320b91fb78149296b6546ce952e8864de0b87c468df59969272ec2fe77475309ec30def8b5a7342abac5f8964cd66994be7b4489c7d8fffe6976686697da29ae7ef4160f4cd55c854f910a6a2055793db7e7a5485c776c990c68517eff640a0f5888e47e87634280f25449f35fe46514338394c3b41169de598751509c903447901b410029e8abd533f4a4c2c0db0fe06714981d5e1da08d9ade0947e4f79328458489fabc8f5c89ad6343c365c3b652931882abe9a78d2ce25d5f582e1586449d724e6550e66ce99d06b54c84fd95446957bd0bb96e34fc4ce034964307c6f829272a782268a2e0c605994bca3ae8464b40dbe79b36bf961140f363c472c75c383e804ab1429ad42ed7aac54c194f6f2eb8ce1b922ffe70c1bb5116cce8d7c05c634343bd2507d12220448e5080398275e9005c50a0abf48f81c2331e17a783cd8dae2b206acda236621658d388f7f76a00f90beb8c9158e53c13c520413b1f01dcf5cf4191ae825013384c309214ff3df16203f58c99e1143f6b3fce9eec45e3b257c05121b77b09bdbacd0a124be4171d8f4c1753ed0edefa8114f2d711d50ba2d3d52527e7a92122a6ddaa2c33dc01d1f8a37a97f918f0cd8fedec89ab1007acefde14f149c8bb7d4f1c5ab7bcb81b11cbed7c91cfc834bc2400db36d078747c646df31a4e23b06eeea67a2e121061ce30d314ec8470897b022ba741f5eb2c1dbad99ead7cbd197210fb01a1451af486d402e20f6791004c2f43a41719432f2acffd1edb308824c4578a49a9d3430b94cfc76d85022bdd0d3bc60701721edcd12e85705eadee18830dabb5b32e6a6f5b05191e9fd74360280ef4e7f94efffdf54b9059947b0a459862b3b3bf29f39727a673b3a843dd4b40d756c0b108610379d11d7a0319083fc507700092f0121442b602a94758f1350c87e205499b4e8835b5dd5393689d2605c0c42ac6980fb3519c03bc1741dbf0381415d264dc39c5aa09f472ed6855be982c42b374422e1e7a64ec8aa18ab9c068dffd923858d8ea87af703f64d4b0ce03d66dfc7e37cf8c0b59ec3204e2d8f3aade5bceffaaf617d6539e438eb1672fa9925cbc82df179f3341fdc77f87a3d93396e4b85bc9ec16580fe5e3094a4eb1f158aa91635aafdb6e8099ab1941ceb01cdcd17b6fc2f1c0ef135d8f167db19ea50e42ea8697c3bd9bc433817aaf31e5d4dbe04222d42ed625dd7c723740d10f295384ce3231b16621fdc0772554e76fb8c20daf1f3411eb3e9604a866a562cdcc7b5c22e6a7fc994cc7ddb83c804fe8c0c5905728fe678ea5be34225306115a15012f9629bb596c9cb5fb8fa29ea785baaf914eb1bbc9b0c24620fd4d4bdcc81c11650c032df5978f3d242a285503cb7fbc0c55849f07ad78207bab24c35d04c9abfcc5579c51fad7f21ff68adc14373b0b8dc0475f62dc4af2003d8dde5112ebb5e8a52ff928137db8c759636f009e3dbc23d01207bbf881379025a25351738059eec038ad83d0ed780a58e683eebb33fccf990ef91983598fac0126bc560574e8cd4a25d19b07e2c57c1e8648703143db101b68ed58c7d10be0cdd3150f9129b11859706f38f5303df990daff072d2459dc86ae5d4ce876ac675100d63d067935e9b14bef61fb3310d9b8074c9916d2e89b2bc249a9b02c978c4fc102c97ae56b99d50c0190ad72dc36fa6c542cc0fad953676dd097887c2de8403c458fd93f0ee3c462d256a347c04fdbc8807aa5b0caff46349f8e3b8f9219b5092052b15f42eab8bd0b09b16a8ada02f870310d85d3a717a738332c2eff83e688a3b32dd588042b715b28a27d03a83a446f17a9cb8e2275a4948a48b4cb4aaaa8ec8b79c5f8333782b966036190b567bfbfcb6990e4b59a3a068a592ec11328bb5b6c8786f9040c09af4231339d84e738efc4d05c417f0ee8490514b6b273c0d770d71a0f38b0ac43b907c453710d5d25baae0b726d0cd966185590842a8d5fdd7928d259157247bc3c0480ad00923172580b0c51597637da177c3bfda14659f43ead26ad6beecf4365b98e7c3151eb57e8093b1a3fa7c2fcfda5cc0408fd8c422a0659f5734977ea73eddee8a872c4a8724ede1b08f9991b6183412fd25f4b97804803fd6eca628b963d400c784d58b1b7da39041b1d1abd1e706c4b01d24b41914c663e94c259bb77d195702201c43172381f665ee373a78f083b4b361a2a41bc6822b9ddb33edb658eb0afe3c66d6605b19b18ccd758611fc433a6f86fe4efb57e3000ff58e1bdacb00f07c105115670201ac03f501d834564d9692947fb2b5ca1955f91ba89c704b57eee036523b422d6334f5de08c062125d466ab4c49a264af54f9c96101a91e06e2dd0c6709a557685ac828fa8692840e82aaa77beea05a05871d52a765a5cdb692133d23bb58c75ca2365e5c96915813f92c2336687cc098c8f0c983a4d29ca6d0dc21f60b06f83c2cbeb6f46c8d9b77f8b34bdbcec821b28e1b197dc7fdfb6188ea9e48fe15e0d201a86d1d4f806d014cc411b7edd8727f9d15f50f8d61da5034ada0255598b97d26217b6b9d627b7bd38efe30dfdc64933691f9a820b524e35a1cdcf803bf5d0a422a3113a6a0cff4216c804e0f7156fb9e15a89d147157aad0a7eb317ba6e6d830d487e37a0ba49b726ffb2ff9b266841db1d0f6967efcfca7cc21630511c656b287b9e9aae5d82ebe50520480b9ff76cacd2f5bb458f876f5066dfe2594e22991be7595e55038199368a8842bf8471ac04b4afcf204cfc13f63e92b8b27dd5ecaa7f5d85ff0a1f3e2dee255b4d9c9ea2c1d81e72a2253c44f294b6d1f7e4685f08f668206d81ee72f7e88d7cffaf94dce009beb72c0e7ae1e1bbc9ca60b659fc479c1058cf98ac1ec45071a42ae86eefe94e58dc6bc5f9f222c0c506242ff8b3d988a8d9349c5f411fa9bb14217c211c1d35bb41dca23518f2a996074f356420c1e2e5309af4d374beceebec53c359a7676e5e43cac72fdf070fceaee1cccfdb827d17223a20d69a3b51e04bfc7cd057b898212cd2c0bc95f8d0238e210b2104b930e26595785af6d6000988bcce3a903a87607e8beb2c957f7cd0d803a97d69a5e866706742c16037e88c1c02b515e1d0d16ee88a3e519a76893ae3945139308a9a9b6927808d54143e8f46f48f76bfa12871f5b754ca11ced715dab65cb005d98eaef876af4925ee4eac8561dcfa8da615d77363f06799f1eff433bdbac426c7e8c5e16bcda49e4edd4b514f7fbf7d4955bf016d3ed5614a593f4108ec6310eb98168c711deb5803e6cede2edc055ce274e620a10b859872ea0257de0c1e316d43618d3f0df3543461be472611b588dc6f4d84b5de45f4d1e62168a3ca7483960c9db030119bf601546d42084089b8ae1015caaa916aef60800467edb1b593cb75848cf234c9178b300841d27c0b119e5f17ad5776894c63ed844ca759c6f5bf9eadbb08178b3d5c42e4b8f6614573cf7dba808064b78943463070bf8584a9259d5f979dae9b0227ac557d9f68a3ffcf8b48967d7ab479793c5aebcc9852773fbf1a66c7395d5fd4bc56d0591c19c185a4e1912ee6d46aa9100d6b4749864deed404decdea68ca9ecb6e8bfd37f64568e7722fed8a6267493b90b3c3518d5f43a0db14430e45ff41a1a5244f8a9f4f7a354488d420b8b01009dff0860c2283b805eda7a2453b7410936cfe34e483537fb9ad5016474b68d4b71c5b7bc2e031142ac9fb684c486e3c585c022fe2d1da533fbce0342611e8d57d8a2b85fd6a374955b97cb6cff29f581de9c4eff14ad1dbc9c3cd0f5e381739ddd2789c26bc2c9666a7126442c633960013b0b75fe1a52d4b6388d73548df7629c719fb85e1e0f07045d8e67964bd55ccb36c64c42098687ec38800eae8aea2566c350022a68666fce433c00da8e28509298749948abb38b79f371eaf5343271fa7db85af7b96a741604a8fbfc8b421d17a61a3dcc0572cf72317d71f77e62bac1f9d1f7368324571aa813638d20a86fb83481429e4edee311f16e006adc44942a93e8d73d7d752c2f4ff0766f71a1545a4365580d56529a81ae726a59d92632669315c126b09278d6c139b266a8d403ea92be30d5ed21ef9d0291edc064e1f57e2e08e90d493433da497f4c6e50356f89b8e1d2b2e972eba8b3e533e8958602c826c7edf850cbd1310e725d6badd08349d79fda9d94b4826d2e087009e16a8b9f7da6448cfc143beacc8d9affa596feff56c080d1040a36dd6c56016307d8c4eeb0ebc973265fc9530fa6aead4068a6b271488d6c081f114f48ee307f98c471f3183c2d0c7facea0a65d79a853cd7cab331ff302a51e0dee22d97da136053b5156e2ff83e7743c3ccc87af5b6a872be1d8d9eb5a2d7124b2276ec8714e2ec00edf0481fdcd1392b10eb45b461eac0cf1490a05102f9bc113c0ac2021bc0d7646370ef74bd834935786c5eff8699ae1f96be9a3cc3840b43b455396e076637c3b80e922299b5cdd8bc3ae4b3f7a129714c1aa29e5ba9492ad50b698721ebc145be9ee10e6d100c0a9caed0c815246e6f143452e55cd1105eb341fd28c487637ce52c31671ab892369b1f2be26eccd142d8c357f3574f4ae94b09f00dc598c5598d61ce9f2922b685cc16161690fda5bfeb1dfce0ac2ece38dc8416a47d068e044b1171a4764f2b23348a4515b6d842ddf193ed15f558045cd97c0415c7731733c6d27fdc404bdaf78791dd76c69a302b853a67df5bdec7427b62c71dff94cad1aaf2c121a19aeedb2c62c076bdc5de3212aa51729169368d0cf67d1bc9d8ecb58f44d5daf27047e53771daa78321cac7a93b56e822820724570e5a9d92004d54d90200063e15a651026e08ec8bd2ba25a665128cb56b771b530889d22cbe31b9e7806bec97a57f0b8dfa59d631f785a97692698777de8692a419b0f97cb7de9349be83ee4bb1369f3d18143281f86819ccc0d44aaebc54163d8184cb7ca09dc8a4b35de7523a606c369367bd150d7890c2ba8597d0112bf9c691da5901135f089864b8ef10a69a71ad8172d18af62a99cd9bdaa89d588a9a86172eecdab1c7b0e5ee0ba95d67d543459472bade74c95a270788ae35a31becaa507990b4052078620857abd106092a98f898698887e9bf9cc62f4db3be94f84eadfa3b94667411746f2d74efa3f49e683ca0539c98972c90321bdb497e986abee104205b2d04cdb0f6618cb68ba3331ffd53ca786f8aa993983c1e11aee7bd36ad95f0c5d0bcee9d7d0fb319c9dceb133e75fc2e81d9ffd005cae9cbc5c9ac57dd87731fa98434d4341d6d715e5674808bf0e0dd453a9fa150c82de004ccf3ad5404a53b5272f690a0460479e8477989db80d3e9e426f013da1dd83a9e3947ce04f379cec0ea62e2ccd11620deac36c2eef9512e87f2d3aa98b7890ebb224ccafea328446a5a704be171a805e8f64db6dd0d2dc096f32dafb04f4946045b78a01b71293ad46613bccabf44b9166a550729f6c1adc5a4a1b0a5e7fb905cbeb847726207750ea5973c1a6175900b4d6c053c121230a360dfde6ad0b91a490f9bfcac9f8060d8d7aac0942d0cc53a238341dffe4d41f0364ead6acd6b1606d92f9c716f88301ffa42e5ad3bffed55f0ed3ed17a5c75fc3d78db9ddbab59bc602241dfa6d6e6aa05287593db4ec3b9b9d4624db5553b87ca61c963d07a43f8c09e4113965bbc41021209fddbe6f8757037b272833a0c657a65aa6294bb65c5ad3388c4e5276f6364418c26843c9f9ee4a34b8d39f588bdd11f12c273dbb13684e49e2972db40a6096f29371d757085fe97b01645fc717830227a0fa11cdbf05d9079d9f5f5f2e8acd9d7079e3fe51572c62c3ab98ec477597a8ada08df7157c0561950e7d7ef830f93e8d81237e4cf5f3afa0372cfc7ae4fbcbcb675d1e72fe710aba46e0e791f879e42344cd6f7c07616934a27700757ffc10a046b5260a695beabf78f82efa1d1afdfbc64f8e75ee54b5c8956fc2fc8cbb374c2f459b946a7f001c917c769b2e331552387f727ebe1d6734811caca2f4b2534da26a34a04fbdf0269bd3e532e75e08e27b6742e1c02b533ede1ed8a043f720382e4869d9e563b00ba6f461a33ca6245796f14c1e826a0f1d4939508e54f55a5a07acb3b4ac11c161381e2811e8d5519579a7a8d9a04f729f11baa18c4490df35538bf518add1f260f7c5e4b6f5350eb7c2542be28045a9dd2e726eeee57832d5c4b82f24b0d5c6d9aeceb2a81cb4cbdc092b9630d1c7c89ea4eec1701e0e5329ac2013032219f328e5b8f03aa7464263df9470d7a37aedaa6f073fb54b4168435315292942ba204cec7ae6bcacf3d83eba879451018fb367b8606b59daf64d85e76397a3b2bdf5fd0a334072cc6aced25e60d99f26aa6b803d5f97f4a40f3e10cfd9bf97206d8f83aac687bfe243e89e0f14fb0a3e5704ceafaaeedf09ff3585f5cd41d708e46d295237307935cacbc783061ff49589aaa5894c047323effe0b7cb49da5d16052252e68f6dc1c06405d4a24797a8bb5940ea158941802e996accb9b7137904b33898ecde6e7f8ed96894eef13de47a33d41f697b95e4d822d16f69f638fbf66d46fd7f39369205d7015f7cf1e2fa051f7e2dff3a152975acd8217c31179782762f7842116cc12df38939531e96938133e330fca56cd362ab8981b002a3b75d5631c36c4183aeadb40e5adec23563f920f32d57541fd799b282b0c5088ed0f5df095f9b3a253427f65cab3772e3412448c1338b2182b4db418da200d5d80bcaaacdf92323c99d082f537639185738d1f721968826313cdff11f3d5ea00caedd3e553aa230ef9fe79bd78a6655fa8fdd7ceff2bd386660d072742b0a1496eb9a556a504ea4dce297ae15a5ac2c049a620431eda7572dff7202b92862e8480e97c02bc0414b0be1887302ee2969bf175edad88b7b6da95a198c8055d2c56c6b29008d49f4faa7852ec62104c7a45de3f0d0423994c7e10f324cb5761d2084f580f885ffbec1a04304f1ec1facece071103df4820dda8d73cc53789d0f258955cd3bf64be8d8c5564dfbf4c62fd8ca21f7821c8c0fcc9b326ac5a956274460ca416472ca065dcd9b42b7e54c72ec3b633c0b14a7458f17ceea3dfdae60584efe7547383a83dee17ef13fc098b650ea708d32d0dcad7a72f8ea2ea6a40ec4dc22fc3a786dd40c290d6832223349d43ba7a5d143d41a0dc801cd95bb2e394feebcd47e5729c576e186180955df511c04889115d768dc639dca4a51fab97e3ff29a4828250aa28c919ac409c091ffeb07c8740039bcefe659bca08dee3838956bb1f2b9b2ab632bf9c7963edd89cab2eafbf374f8c61e06c3d775ca6ec336d519cef9cd67540c8b8b8d9bfbe4522c352e873fa3f0d6bae89a74513a66058069dcced619cdc53feef43b890d55d053da137527f9c8a6200c546a941cda8933b5141a9770e93812b37ca8856cd13a9207c52a070c00a0d7586ba9355e28428848ce03192090e8703b982a1009904ac75fb1c5fa470e8c7e2dc7852f1fa0770787310f3f3a283ac149c2605e7994969b6cfaedab6c36424368d00b2ab172af7818bf47b582462412f808ab9b373756cc72ac0fe4945cf6d2406ff99efde14ee52bb13ba20e88bf287b4206ca3450f73c85ebcd9d28977a007fae347f227a7ca138757bc5eecdd340cc4c28fd9d7a89104744fe52a8649e60c1cad863c541059918cd62c330584b62253466bc3e47d8822bdc99098ca7c117745c504c6475ccea700de76ae198298e633cef3d591fe4180bf467201d2cd8dfa5a3102bc7327c5fb1cd735556b899df30c610201e334decd829745c3b6e92a38b3118b52e8642d7635392add8e827292af10650e03e1fb348e85e6970c1c668e59a7af0ef47dd77cfb7e0d41f89f87ad18a7e23a21b2f8877e1731e054dcdb87361ef87282d2ca825311134d86cb4fa2131d4cfddcb26e9b5f91f61f049c89066cb9dc7ab2ae55cd92055f317b8c0464da2353c2c281ed83a1f28e8c70f0b1e5af61dbd05adb93aab663c5654aa842b7707d9389a2c364008f9b173a4d95e76582dd281c5409fb6b80e6f40b4720178c2592e14ce7dc1c54f7ff69fac079989ff3bb2dc8c5900b90e74a2cc64b64f281cc9a3a8cd9130d7ac4d5ea7a1a48c2af62d7399d3cc1504e28dedab6c686e4ea6ddce7fbf010667ce96e0f9adc0d6fbec7fd832837af32043f0666c213a3ddf711113c1348554b148893248d8291a08f55848c5870bbb7c2f35f9a0d2a08a7f80791a32536c11606d3dff92eeb1a9ffd500651f6d024bba6ffcbeb8d233bae624b5e3792b1bceed08bcfa65f2b96997aff20e41c08885ab79cffa0605869c733aee7085d7fc8285e30a2856434fc29772356abfe6cf5962b5332e7a6f21c6b559296b8f710963deecb709367e5b9074a1114442849bde85aeb1f4990fd6813a11df3cd171dc2cf145f5e00716348b27d08dd4b9221578c1da117f9389a44cf4d18cc3efc42a11f2c67082d0bd046e126d1d1e600c9da10d0ba56010918b61016cb471bcfebefc19a3669b684aeaf0ee597ea44c9647ddce28bad9a95955cc54a0be1106bd908a0abb270843f6dd64d6947d7841a9dc2696986cb082bc49cc4a46dd40962e57a4d050ba11a1e1de43f5c99c1dc7ec552a672f10c125c88ced1650d56784a368bb45b60580182faebbcb17791f6739865e2029bad507de79e4aef51ec4cc8b8eb86e5c648042302f1bb08c33ca7581efc98410b24bd56ec02570c1890ddadcc7617b07af5849cacd69d30a567609b388ff6ca950aeba5761a75abf58cf8874fd34230dec539f374ecb62d99e087df0572675bf81f01c4ec2d1b54e1225aa89e64b4647656da7144187267f6e6208558fe741279859733ddd68693f427540e916d2e0b460722b58e01dc8e67bd18015413f14adf130823201c2765d726f654fb9b1d7edfad401ba5902e7252db510068b6d12f46fcc8cb3eef28420dd3b281ac5e59d4f245ced2448fba6778fca326157a684fae9a8682801bd249f46704e2ae4500673b4eec0d0576852c64c0cd0c68c32cb7e61fe3a9d22d91303042621902a49fea21582f9ed09dee4202cc9b613902000a84b711390c17be1f169795371e606b9b8302ae513476ae2c28eba09dba9cc7fabd1afbb831e02a9c49614923b0576d32b9e73ef09bd6fd7ac3395f1f2b9e7c42081db0c232da1de0ebdedd8a8ba8d26b1dd8118fa110f67e700e28b8f348580a0796c2ba9a554e912bdde6539366b99528cf21d0c57c292e8942a2423abe663d3acba70689f9a10bd462f4552157e8b083c4b90baf5b3438178c26681ba1b17b5aa348fdec647fb59c10637dc930cb22f9aa41781af01ca1aac5a6c4de9b894648b3fb8a3ab307874917fa48ecead8a32425cc412b8a1d5e7cdfe592875b77bf9f54dd890ae552120a4c8d1f44b57938da9332e6cf53b8707cc0891964029321bc7334e1b487c5a68cf805889ec8cbd9b625426671c83729c259637383ec73ecde2cbcf91e8eca5ff3a14ee52ef5615c6811f0788a518a82cd50881268f4ad0f7ba0abf7f644b31f46b961af663f5949621605f05b100981963d30827ff160433bfbdbfce3852a62aa85311cbe341359533118893d9a3d2a19cc0e7e203ee1c32ea1c4bf178345be4606f41414266c52aeb67e966fbf77c1f7456ef4a0ae3bd8f862d9f40233bab5e7eae9ad1925c08deec2991bc4a3ce2ac0d2145429ac266af8e096f45853ce5614629cf4c551a00114dca04c10ef9522fd27de5802fcb7e9e3a99293233814dddcf690f0f86d0d034ba629a18a3de3cabfa3b96e94b427249a058bfe00d0f669a1486b5ed187eee16f994c9903d81e83d46dad6c898e5a9d801e3e1bbd80e0a4798bac8b662808dd0542f8b170f4b0dd59acd49279b792aa8aead1cba32afc91d4b08de3519aad0824d9e6e3485e5832d642f94f484cdc88b36e8c7ad9b243b49b55f07f8494c014f076b5b02e1142443e27ae072537d29db756181a28bf13c3fb4f661aa5737ffec8bbbff3fe87990f0b6611c2339866fd7f1d140d99ab2500a398b9684ae60ca9d1fa584172d23a55c819278589d3629a834f71c74074a5b3a9fa807ceb0b164c203d669e2e01806e119348c5961b2976a133a2d52cd7842e0414086aff6e9181e3cbc5a0c878387eb9f76f5f09b94600a110b21fb37790b187365b66c9da0d5d39234546484813b8943b8266045496965e93ecd00da1512ce14d657fe5416e639b5cfea1c81df1151dfe8dfd21d4d0fa4a7f708a2baba2adf4eaaf98698177916c50d2ad2f87a74e71da8cce043b6c4624a83e9c33652bc90da050d896c5273d4ac697226431bb5adfa7cf0afe65914ebb921a7417b602c9d06c18fb1e3025590e56949112e25e4a2806926dd403b70765b0e3ddaab53747621c155b56fbb032a4fbd241b0ce7803e24cd3084a54e554ab4c289f4a49a19a922981122527d735a3b0ab924036c3390acad92795c8d7ac2c31a10b1d3078e206a34671d3c123dcf55fec32dd5d990dd934b7ed735c1e6de58be6fc121e9dc3ed69163ad74f3c8d13ba3c75414ccae2924a102a1abd74ff3f6590ac6d6d4c061c83d78072be02312ad54fc45a696640ff501958e241ecb3058a822a1a355dda9251d1f5a01e6c0410d198c341f86fb194613e2e0d5d011c2accdd17477d8780e5a4ece61e82141019cc944f1039f155411c68bc15fb64fe6cd5dab1bd3d2f268c8ce11c8e7b4464a596bac3a8ac47bba5eb1a1b77b70ad7203f02d05f00022837aee418b9588d81ab18b1eaf123db5f7cc4ee68b45018ef85932dc8554827195982c4b3dbc45756d56a4f085680b778fa300a35e439d8b54717c38304998112fba9d83d681656780cd3734577af353049d817092ebd795ca86c39f710681ec640f3328ed5505d989f61634ee6c6915a81a972475519c18434073c76b5d83f8457929fc1721b43bfbe0a475049dae37142ef64dbc63914b1a1f8ae19bde82fa64602d2e37040edea4a6ef54e94b194666a6add8e47c571eb6b9d8675362dd84e0ac3f5ec72354cdc19ab461e0b056a319aad7008ac57030ea8c5080f3420b026e9ffffffffffffffff5f1c68bea1b5c812969294d91568b58d7d4a52da49a69492617b8fdfc03d00c0d96eb6db5a7f0b02eb0e810eec0ec1308b31c376f7f5fc66a98c0023d5ed94cb7cfa943d78a4811c483327467ee17be691e2b53333b24a8f33840c0101857286902189477c81fae49fa5cf131ff70f3c0885d263881012502843840c19e945b59ec5f618d773e92c9517ec30018f33980cf72165788042211244c81823bc285d3abd9371938db27b10f90193b163c7104763053b76a4e126d831c455c0230823bb385ebe0beb1ae7ff4a427ca06144174b9b9b194c733e7f2417b970c2e3cfcafc56c2082ecebabaa7def4274da1915be02db96717ed43b65e5bec693a63df25a5c545ab6a517ad65d8be9675b1a8da1059e51c38b988e192f348bd43766de4fb9ce9e604416bc9ca59664656846b32b148a09466291cee3314e46a8d2f5c1421bf9aa2736e65caf552894347c073ed80c1f67301935187945e61bb4435433765008465ce1cd8ab0974fcb82077985421963a41549cb2df5721811237434ce60c5fdd7526bf024545b99bc42842b41d0d09155eca6e5ce2561a5a3ffaad0e23bc79bb06f598c144652f1678b0cbaa4bbb8a26fc2082a36eda67a1b646ad3a9258c9ca2d92c9786119ac15f4c8f1a4918318531beb057fb6b1f13e26d83915294593c3466590b91fd0623a4304b3a7f4eb1d02367aa50283ff8f13e0ab424479a0a5566a24107824030228a93cb59cabed52a148ab7a00214e0a1819150a4fbae3f75340ddd4f854231c10828f4ccf7ef21943c398f7cc2b4f7e09d7c455cd40a8542a10819f1c44147a8bb203b8b1945150a65a41388c6e0921665337eb8543c30c209eb424b1ee27adf4357a1503030b289fe3f8dea28422d2c2244c8901d239af0469bbba0d57ebe5c2a148a8f1e0ea4d983b840082399e8a3a670314f555a911f66fce841c68e0fec28830785d282114ce8df6da3d447a776494c18b9c4f95aceabd3b27dea2563c412f6c6d1ed6daf0ceaaa5028690c3143c81011a431a40c0a8f1a5218a944fd41f47c0cd51fd754e9e1418400f90085e2418400413c4c3042897ce37c4ea174c86ad0245232ce5c0b1fa4e8d48af8087e441277b4d37ccf9b31ca5a414538073e821c8c44026f3b13de2346fcf8150ac58c40e29821fa3c2ff4ed45d030a3081a642c238fd8cc7d44dd93dea4318e40bfcb7a2d5c0791c1462c78683725ecb6051d23963ee468dfa04ea9d08100610aa5c62f4616c17f7f6cffb01f7b3b150a654411c711b9a305711b658466fca810c1400f821084314612b1c687d82a97bdea74a5470f1f293185d2a3c80f1e52860388d4b8c508225c2df73827ebd5b7fa60e410fd95ec30aac2c4ee06326288459d16fd7ccdcd5f15e2ccd965c3c629d72ca7072384a84198148c08a202a18111407460e40fe9ec39d7d2b80d57f2033a09255d34adf0a4a5fb50ba94e7d5253fd58777d488c2081f1021eb433c77ebc96f0fe7ac61a01793b6185b84abe8688542e93183113df469dd9b838cda5d9a1746f2b01cf7d4cedcc3c33ee7b2862661d23ee60e29a5744cfa85ef1366b20362a705cfd3a753b7a70e9ebcac11e192f86f0d053ce890890d3244b5641b2b3407ce5cb5a3da5eeda987302207f33a7fd8a8758ee73c1889c3dda1524c984c4f7982439ecfdeb4de56ac89236f38963ae206b4a5b7582e5a06193e69186903eaa2b5cea569b82486c2081b8ecbf194b29b5af2ad81371fe9318a880bfd8ea8c12eb5d250973a82863ef54c5cac31cdb1e660e40cc97b693ecf4b64b8dc0ca6d0be14a54c745bb00c6797673ee7f0cc82db1f182143161b3addfec5a06af64824d8c1e38508a9518591319c632a33d88ab890d388181654bae896450b197367240ca7b58a0fdb7953554606236048b8f5c6bb690c196f91912fa456f2ee740cb2b3bf5e487feec3e3e273b47fa40ba7d6de8cb7f80c7d557161bb12ef34aafd18d9c2625bc7cfe6149b945f4818d102b22a9430bdbeb165363e8c1246b250a96b1694bc35932bab092358b85ab8b77fe1b39bcb3285912b9cb39825265b4f57c6adc08bfdb28b293dfad45c05d4cbe9a27d7f5d98b6861146a870f21417ebd34d67971a9942a35d7ced93a1aefa6961440ad708d597a63ac3d38e429925b92e967c59cc829bc60814ba96be842c154af5cc3b788461e409dbb89cac947b0b1fdd11279859f464e6e622ea4577f02042c46bb061a40928996d539f96fb0bb211262c8ff02c98e84c8f31686409db89ea2c970b65ddf1a8c18812bed1d22c9efc9632ee434692f0988e375be2d473ee150a85481a6e020a650409ffc8af48ef8fd1727e04eb836d0e71dbb9b469c408ff85a8d372e6506f8b71d069263f5a3a9dcd12e3b89b356594503ab3651895dcfa9977eba73b8561b8d4fc1cccc4c43ec1683e8fc6d829bb5b1118cc09a92fe87423a75fdcf2bba433c688baf6788c61c317cb2ebc69e75c523bfe5e147ade2a4495bd34332f0cebd16d477b5edaba8b4ccc6fd64c7ecb95ea02bd58dfdb2ef9522673e16a6b7c92c163472685600336707172fdd4fc1365ea82b730cfaf6539998ebe1bb3454a9856c7ca8c7da86a61d6e8e2c7669e5a0bfa800d5a3cd7669a47a587cb314282cce2f0f2ef27d9594509952cf6fc23de8277ced08985ddb135897bd79c9cb0f8cfb458ba714564f68a752b46898e49ee4d8b2bee70d125cfe55de2f25620eae32ffa65cbbaba614542282d48794969156a693b25f7b2a4b496aa305987813f86b8ffd8f06214bf52e1983c31974543b68aaa50f16b5dc6ce2e87fefc140bbbe562f2bed1e1ae290ed5cba0d4630cab5229b8da5342f6778f69460abf52c45e334beeba8ce2b017eb265ce7365d44817d363fd9db1c2a463403c5a00c1ba1305f7e67686fd182e78002d9f1d5cf2aced30519f389ad4356d5cbf99a614f9c3f6656c83971d9ca4ea45c5eadd3a2d57294559ce064d2275b6e5f509eb38973ea30a08dfa701df26ad6421511d8d0c429de5a1c35ed17eecfc4a6b48de9f4e4925f27c406268c2ffb6b770ea79f3b9758aace4a352dc9659856021b96286f57e4bcf89b9eee4a6cdf49d665e9d0ec9512cb8b570ba36e5a4ee2499895a6a7f4059dc5b524f1085532a952d1e2e791a8c5334c9ff4cfe94648989559e684dd8fcbd947a07d9e99e47ed62f7404ee572e6a860c1e3ddf08dd93897031fad6fdc6085f3e87f8d1a26a3eb7083f84263b314a85d09c2210d92fddda6ff0f4b1441cacc340a666fcede48e97ed061169317392ffd935356dcc218ea19a93cb63faf36386d85387013b4566d9d17bdb398642b11ad828c42d684d326cd2a93b5f08d1e88b26b318fce5b9cddcc620d02ee9412693d1e326883bb470425fc8d7b4530562b5fd19edeb21ed444058a7fc5d1c2d9ee824fe83419b68cc25fe75d35f041b7e30e6fa381d3d3ba84df601559f84f6b78de95aaa42a1244f445660830faed9c610a644c674ff1e54376f153ff92cceab07b3098d1e42c6af0a2d7940810d3ce4a9c380fb1d3e5cd05da50536ee807e8baaf94fe7977d21a2041b7658f8b42245e7474b2daa25d8a8c39dfcb5253142cb7ad1414f1d06b6965beccb73d12b7b5480021eb03107343657a6902f7a2d72e85554e79873f898b17f1b71d84f467e5435e7933138fc3622735ce6ce7b558542e131c4d39014c4c0c61b167fe34bd5eb2ddb960d379061a30d77ef288fd32f7574930d68ad8dfdb598eebd3d828d352c77f2739df3a44aeb6ab0324b61e068a2e5e4b9dad33ba622031b69d8af5b12575a1ff74468d8c50531f5fb9b133a7668ecc0c619ced561007ff9cf3a4913fdba2b144a0f1e67081992289421455860c30c56ddb7a4d36b685858030a36cae08bbe17a74fe7585b150aa50708cab04106e3a78e41dbec4c59e503790f7c74c0c61836a135e850994bc9b089a16c558f37af531fd74618d02faa849647c35d58796c0c1e1fb00106e7934853791331b7bf80388fe9c53a539bba786141a6974d9ada0eea831d28838d2eb42e65166467164db65b830d2e9c2f5cd0a0c598a594090b36b6b00935a5f2cd2e377e5a70e335abdcbb9bf69831d8c8c2a393a7b10c4fb35b9a0e6c60219d53c72a4f617f99b17185ecdfc3c5d76eff0c82c18615fcbf0e272e69e135fa62b05185b48b41b998c6921923830d2ab8ba9f2531753be9a90a8542840436a6607ab7f9ecdab55963869cc186140a3d3a0713a3ab84ce4136a2a0267d66a77f73da4e031122c40536a070322de9e84bf9234468e3098b7a61336ad0d2c72c73c186131a0d2f86cfe28b8d2654c2947b7a0c16fa5be060830987b9b9b82e8ececb611b4bf893fe90594eba417b5aa1508238100aa58810204444604309a766d21526738c9d85cdb09184938bab235747262dbbc620e1cfb2a841cb7ed559ce0c19368ef0c63f5dba363aa95bc45bc0041b46a8936951377b94b138152371d599a3e5e5ac7d29d42046592f28112be257f74eec950e0819410d232b2dea78d0ee7c8f2fa18630fa58e11d4a2d4f6733186ccb17dada3746dd91083580c16b85ace897e4064fa5a008357e91b835357d31194d86d318522448087cb18ddeecd29e4a7e877a71b4f7d3a7636e318b660835788178bcce7a974227f184506317cb3966fe7398fc0fd78e140ca9a10bdcbe4a8b496c16beb44da8910bfd6baceace67930b5728141f3908f2c305357061ce2e7796e489e8dcab42a190a0c62d728fad1f17e3f6ea57060f20356c717de67039ee93a98d5628940f94086ad4e277c1d447e529ff60522855b438cd3b5563bcfc552673841ab3584c9e68d93b7d9fdd0fecf0c08e0e5020063564e1b91c22ab477907158a85e3b265acbfdeea7581459ee37d37df09efa47c05e25d4a2b5bf7ad4d6b1ca1862b4c635a8e59dfd9d1592b0c2e6243b6ef8566fc851aacf0f25eaed9983fa6bb5661e9e85bc8ca3cbd1d0c355461fadd58a274cb92bed9851aa93026cfeda07b9309cdf1420d54f09b523bfc6d99fcdc29daf8d991994db8badc166a9862cd1feb4bbf9845fd10156a94e20db13937dd6d672d93508314be24c57ff384a96b96851aa3c845c7af8eb9ca1caa1a55a8210a2e4ddcd44df7a4684fa8118ac5dd1b175fcae025ee1ff81843dc07424e70354051e6f47b273d3c8b56e2d1353ec10b234486d0f7925e318f8d91831a9e40746a7629debd33666b20a14627fad6d3a2be295bd343410d4e70b741e74f2ba317be0a6a6ce253def226cfe14eba6a35a48626381367992a6b8398d803130d1eef2ce0c1831a99707bb3647ff6b9ad4555983079f2f5bcf9a4cac96a44a1c62552a395d1f4665dd1d412bc09f52d6f351d345b8932aea4569ae879480993fa92c9356bdedc7b125a65ccf183f6b817fb190158c7e635393a8b961ff210332f476d31d56621e9c39f7d3a45c9cb1f65e7c31a2c3556a8ab133522d9433a88396b8dd1748ef693e8413bb57d779e64165324c94325345c7ffa9a9f198dc183040fc575182dd62d6d774a7287940ee6268429cf9aa5212476b8b4fca525ddef9f47fa03923a24bb64abc8d16ecac5cf20a143df9f6e327ccd29fb0c9239f8d52ed6cf6536b9190d12399c9599848e6949c6bf5448e250caba20c654c72b977d400287b4dcb957ab93cc5792bca113d5e6c17ccdf48d246e6845888627dde28d46d286e63d99aefeea32b77b88a0033c7440c2863b4dc54bfd20246b4034455447b7070f29f28310ecd80104087f60070f0aa5061648d4607437e5e1f35f625685421922e40c1f67b019202049c39ba2fe5e9b16ba63854219e2690ca15038408286a3660da7bfb79649ad909cc11c2f35a597f4df116a81c40c070f562fc59f742b4f1948ca80aea7fd1cd3a77849130309190a2d9b8531939f2f9e46911f6e2019836f42078d5fc26ffd42038918103aed994adb17e76538908461fbb84eee1f5fd6dbed4002866c45aff35e2ecfea19245f58d01d5f30e5f1dc4aea8547e9bcea24c4e8cec703922ee423bd4e457d668c5311122e64979dc399de7f59ceb790ba6cf22c8667f0fed120d1c2da529d16b5e50eeee23f20c942a926e22fe3e6fba749b080a9cf295e4793b2d115166be3984e227499f6adb0698c31ec3e57a891a982fddd995532fa576f8c404285aafc4b279784d43add14dcd9d3f8aebd1f1b2391027262da820e1d5fe6a202491454971b99b398c5d892788881040a49f18c9d6fae51059227a0e36d6b6de824564a244e28db3be64f6e4d38fbf6a60f111f944b226182f1a3a2714b6ec830e1816409762cd372f28d3b2e79f240a284648e778ddd596a41e8788124099eac19b971bf9e3c0709e6d4aa516d4e9a8ee117488e90a6ddd42cfda93239320389114e6be5d6a5e3e2895f8c74d078bb2342b67c3131da96639c6eba8d15f261dc6daa43ef95ba982a61a0643693164f2683fe8381de1b595a90933b6d0103d91bf3e142e8c9317f81ff785053b5119d7d0e387c618eca97de4589cb31ee85e19b36c8d96a4fedd2061cbc4849331b6d423e5bd8c8806317291dea565c0c32a8fb74719ddd69376bb92f83ca802317a60c27b6e64d358587061ab8487c67870ca6f3bb87068e5b209416a565598cb1451b3ade82b4eb6cf3c901472dca5c5aaebab10a3dcd0c3868d16831b36cdcabd511cf806316a6ee90975ecc51e3595934a7a5eb8c418cba4de701472c5c1f2d6896f4c57634b901072c0e42a97678d0b9233faf405a796bd26f23c4ad37e0704552f49bcbbb20b55546038e561cb3b8f97a364e578bda01072b9693523b429aecb5fdef806315deb79c4c0b2fcd9be655619bc77062ddd6fed2a948c6533fba41a7129a46c5a6e436ac9692f52ce7140999f6b297e7e85f6f0a4c9a069329bb617757709422710def9f654285697fe02045e673a5a7848a08384671095d2edf196e7fb522e0104532f9cba36549c7387228525626ad3da8313941e1a67f8cf11b169b858780e3138d5796f5e83d1d19c7e189f643a70cb9c1eaf2d3896450a65bf3888b734269e0e004271732d5e8467d190901c72696a5d0e28d7097e44777080e4d38ffe971c3a538177b1c9938efabe9a9cbbaea15c18109de6eb3f3e698cd445a2488f7e012c99be89c675a73af0787257c9bb9ccbaf153c69c4af8eae1b222a3c7ce5062f5d07b233eeae9c149243273f68ff167448424f196f8cc9d44ef42d63822a166414fe8dc63053820917bb6ea6fcb396ece8fc0cb4a78d41c592777471cfedab6d4ec447bb4116db5acd1d28396c24d46f866f2eeab9be9fc2591a00749c0b1885a12211e43cb92788b1d87224e61150646802311e82ed9f0a7e5b2b745c47a1983a72ff34df7f328e22d48c30c336a5801c72150da99f7cb3499a6d7105fa7f2f38edb69db2dc49f840729ab73e5e91102cf3eb7ac9a97640c12048e412c85c7cffc51632b5f18e0108415a75d3c3ff7cdfc076231ccd636dc6efb9a3b00c167f62c28b171398b08c71fd2325f3ba5aad974d20f8e9f38f522ddfb5d10471f98bfca2f6dc2c45b9e0fb5a0dd1ff3c4a39fbd87cdb54f9c12b31e0c9f636bce7d3728a53c2c76301d23f6aaae85f150abbcc88e9071ebe33bdce9df354b76b697b4d8e1b1326be13cb3e793a903324b2fe698fd99438be8f0c88fdc1f17f635ad73f8e435ed2a4bb4768c1c6c51fec558fbf36db1389c64d4d196d4a6f076b9889381030e76a9aa35a5c456eccb1b963a283397a4a76c41e4867d74eecc561aee21b781cffe3da21e5eb80ad9a0efbf58f31bafe12c7772316776316b8bd450a617fc7d6ffcc2e571a461b9462bdccbcf5ed8a001e922a6264ea74b425d010ae038c3bf717f638bbf39761a8719ce21d7756aaceb05f180a30cbd28dd2c6ce94ce9211d709001a91ffa33bc20c466a931a43dbbd4262aab67c53ee010c3ad1fbfb37895afa7c4431138c2b0d8bb33325f50e23c060c68ced7314773a945d9a380e30be8aecd71eb3c777ada0b5eaad966fb0f1f5fbe0bc7e7768c372f7a8f56080e2e2c5ec5877a499e14b5d9422f09a163f6fc0ee19d1610275a62c7b3fcd759b290d222ec64e5bacb921a0b88f1162174d094f692aec0e79c6ab57f0c5a6eb142b2055f719915b1707154612fbd7bf2a30b9a4b860ab6f8d6394a08a1c5bca66069d097d53bc688eca460078552430a38a48056adbcf586d7f5320ae8aa9297c4b4fe851d0a693b99e64f888dbf88e3097f922ea7fad272aacd359080c309c81fd51644a7cbcf198e2624f45589119d5a7231d4821d65f070030e2634f2e13fd25ffc24a43896806b8eb927846b66ccf0f0010e256cdd21f4c5cec7c68e018e24586263c85caefb41b421e0408226ce65d33f2e388e70de13ffabf1d65d5a7118a1eb2bd3c2aeb8a0457ba318b98712e2aa3a73d0d2c438bfbc5f7a84cee2199dc28d61f426576f57336939ec4280b4c08c1bc2e84bbbc5f0117efaf41bc140e6cdedff2cba69d08161f664a7a5167f648729ebc62f9ed9b05a7b69e3589d831bbe40735611b2a33eda97150ae5462f98b30f25bba2a9057d05043778f1ee7e4c4259e875ff54f0c62eccf67c7d725dfa167c5d5419d79a05cd39ae5972b1695e56c60e6a3c786ee002fbd49e749673837ad02d16735dce61d23be98f0d71226880c005376cd1cb9e74be1c37bee5238d21456ed4e2a03c6e4efab3e44b322d7cd96466119fb233b93f880851c12c521a4ada7587c89b87042830e3470e6ec8c2fc1a77fa516f44cc5f881bb1f863784145e98d329999551a6e821d05861bb0d85fbafe767dcd628ba1507adc78853926bddfa3bf25d5bbe18ae42839a77bd30a4d3d77a77e109db41c569cd96d69621d84886c1599f86e519412f70faa2afc184ff3cd889026a354b86be65f4a5bceb2204645baef49bc3c473ba9d58d53747b32e44b7af83d5303374cf1bd7f96afb6b4c9124ba197d68d51d464eb662b140a29ea9c5ddcd85736aa592a144a62214028941e65f0586e8c424f51f9e9ba25a1da240ac76c73d58e7b32f555281419dc08c5a285d6a41e5a102d58e8062896fae6b6f437c5e986821b9f48945b89ec16f47abb3ab8e1093f0b632dbc742284b64170c68d4e5cebc2b9864da1b75525c80d4eb0b3a9f7f19316f37536915e9ace21cabb3fcba209e46566a78a9d93c9cc44d9362fc8857fce9ec2446aa767dafe3b73aa2f510655fd4cca367a1663097d4e7bac5ec954a25642b1f46ca93bd57447898390bd1d3b9f96733a89cd742c53d639c8ac2491fa1b134255ebfc0523618bba8b0dc2936ccc40c2ef9cf6992d5958f78f583b0bcab49c7a6d568e58ac32fd9d4c737a988d309ec589ccf28ba14565c4eedddd9a2b4f5e5d8bc86d3f5dbc33737556c4a3bf2be4d77c960b4a845963d072e87c46b70e1156cfa8b76c6d42ade8105abee8bde94de4c8c710e9f5a40529562e8aed8540a87ccebd898ce23121d417f7d4f709f5ea6283488b2184b9d87983a72788a57859ec18673768f10f845996549d78519a467b00f19a743183b0def67bffb098b922d71e542d433fac2263f29276f5c1119f3f4be6b27c580a3999e25cd4ce35efa1fd4a2b5d4d9edaa20774c5b4a4f9535e6a973cfc275c63bbc8d01c8378c8659d199775dd051ddfa1fe4d4a26f159cfa466874f7c9853e1d76296fa3af8799d25eba42553daac5028144a8f2fdca0832d8eba950d6a54cd3e6270630e7aae0b1526553924bdaf5dea5ad7ece271e83aff4b171e7dcc4e386c4affad9fdc8b2e37deb08dec8f1f329f43e1861bda72139db71bcc366c03b2d4843815fd9eb9c486646c31a6dfdefca535113ec387171112e4c61a14ad25fdad32e6b09a1a3675d9474b52a49b1c552894f7213e88f08d341cd38aeea6cedf7dda0d34145ac2d5545e0cbae58d3394a3dc4ee878598e61ede1021e428a042141de3043f5b2bc7caa132176ab50286798e1820fec3003c580c70e82fc688119280614ca1966a081851b6538e3946d5c965c860c66cd92accb73a5ade5c61890db53c24766bea876854219e38618d050daf4b667854b251f4bb811866476d12e4b9f07f7180cbe54e572a6a5c5a4e5bed0dfcaf677959a76c30b587698b899f430f1e98239338b36b976eb8a0bca5cb7a608a142985285422172630b9afea73d2d86c97cbb42a1144143880f1f5ab02535b38ee9b14ba77270230b66d50ef25e3f7e6253a1504a70030bbebcd6f2a2b61c5e5d6e5ce13826b4329957a1506e5821a97b2e6be765d6d8dca8026a1a3d7cd666e8583571830a7b9027c34f8bd864778542f11b53f8a39fa5ffbaff784a0ac8ff9c848e3f7f53a328f82fc6143e72ae4f0405cbba5ed02d9638f1623b7678e011379e7052d2fde674c8f524e38474cb62b6694b42982c6f34811bd5956e766f2b23135acf14b32a1deb345628144c11dc5802da5f4e5ab28f21427cdc50c272a1425db3f6976e2401a18350fd9e3443a87f03096ec6e6ffce2d27153b100e92821d65f0e0f1831b4740ada7e751629ac95b6e18a10faa43b75442757041ed63a418fd7bce6269064de51b62e0d63defb2b0add5f2304c721f4bc3e7df91a911861161ec214be63d46df519d0a1a6604bf1863fa0a396ef1a95fbf9bdf8d5d3e911d0441a3f20121396c6198b6b84bab52b1cf83a420472dfe3cdf255f43e7121b2d721173ba5ef492962eb3b8a4b9a0936e867e912cdacdcda5f4b645a93116e9a0ffb3ba98cef49c1cb0384e3dfebfe9e478c5c2756913b6b9ff3697c31588ce2a2af573b698660fece8008f203fb8f2010aa515a8fd76d816cda0d7b3e21cddd9e9c1cfbbd4abb0ec2525a246448be854a129a1a23164f2965573a4c2cf1cb2ef7266523b2aac2fd32333f6bea03d85ff7286d813d9147bc8113ab42cfe5a662945228487b97791b1059b14084ff51c45b463d2c951a44d877e29635b4e650e51d8193a4b1d64f36a96ca110ab4ede8732f5dba4e0714a77b39645bf4b44e56a5727c6279737a3e2dc977b9a642a1f4e8b1a3c70e3b342891c313866da7b8a7d9be3989742299a49808ef98b4b98913bcd8f2c65231e3e7c29b48a6cbc26d869a58f296c2400b7264c2fbe095e9c2d2caac1c98683d3b33d426a5d1541ec87189b253b3a4e64b17ee52a900057258e2d0f0398e957013cf313cc85189dd5d74cfe9c5faf63c2590eff6db3df9939b25018f2241d0a8b460073926d18bf0f42583e967df92b06e9436f99e2b2d9da9489cfa4a4f33274d236e485c7e1a93d6cc66f9d467e478443ab74edf5fc7f6dc7144732f8b8b7526daaae4234723beb496e4cbe2e9947964442ec8e61ce192cc2c08881011ec20018f33980c0ae50c069263117b6bcae67639c6e00e86b0193e6a3c218722f81c2acefab763ef2947227c53ba47a6155bf314f90bc6c88188b46dc61265a7469fc69022690c294303390ea188c6fcc268cb12cb0d71082d8b49c6ace62804b3b1a5aeb12d97b5e42044d62dcb497654797f07815f277d1d449d92a61704aa83fe9c94c7356927cf1188c65a648bdd0222a54743d6a6d917afc4e30939fec04b3ae88dba9f33e1fbc1743f27731c79322871551feab3595f37e975e3f301a5a552efc26a965f8c5321c71e12edb52e662cff9b5d0fbbe7245bd67f25eeec001572e46129756e4c33df795f78609486bb696dcc498539ee70b60c2b2254b6b8faf920871dbeaa0cb1591abd49af8359eaeb18c37ececf911772d0e16f39c9121bbabe99650ea6daaa8b9d2583d68e1c38df97aed23ea78cc621e9310b2745bc7c9b83e0f09cf27de154282956bfc1fc235ed69f51fdbea51c6e6894385915b575f5b90d7e6ad72cc656883e9925e46003ba329f37ddab5dcb6b384793a7f7a47323ed1d898500498355c0a30539d490cc62be9c3dd7a34769b0c396dca42d8a0647b8385f7ab367488873495c28f1f099c50cbb28e52b5a7043c0c38c1c65605cba9222b4f5fb4d3220475e3c6f1df199cc3164265aea369ece178f3162409e9a6ec74c7b979e301cd737be32f3d6dd9e420e30285ae3754b322651ff0bebc69605518f592187171a6dba4ac76cfbbe5d406b72594bdca79914b9b08707212f4dba85e7b3b979ca37a132a885353cbb985eaa16c35a593878d29e3dd78e1efdb0809bf2aab00c2edda6afa0b84be1b22c5af789ad705f9a964dbd26ede457725481976e4e08ad263da89c830a976c6f2a9d2bb5ca9b42ee419a98939b2a29b86fea2cd5654167280a0b2ed797ea7f5313550d7240c10eb2a6b5fe9932664f505cce7292ee9e34f70424871390d57216652daf2ea69a80da243b5b471f612d4ce84609ed25e3e65842b756e7a5b427b5a7120aa1c3558b50ca9184cc656b1d2193d2ea0cca8184324cfce752dd163a9de3087cf2eb0bb9b72f6f7218a154cbd24bf1d05bfd2829c6f32d97a60fb71d8452042c78018502c47730648890203fa4073c2a25c4a83bd77727a5b784893c2814223c5450328c638c19abc3f247e95f1887f37cf1fd32994e3b184b42bb2c7cd2ff5765c5a004189a865797937c915dd62f16f7575f83dde7ed961894f8e2a0b4983786320b214d150ae5c77f192410810828141f3e28e9c5b97e3b3a9aa6f8951769f89c6ee61df5acdf45ffa67e267efed3f7125da0d3f7c60fd77ff1dc0a85924a729192f1563ff6ae86ac0825b8f0ed2bf3960add02d9b9e35e74ca6dcc630425b6c03ebf187b648eb1c5960a85d2c3063d2a40011a8c51520bbcbf2c45de6e5bd27b3cfb0980004143046394d0428ddf994b88121d979e85634279bffc2736cd8b2cb0925990a6849712151189c5261a2c18bd69da45d32236fa0a85c28292571cdde4bfe8828beafc2b25ae3896b24c8da934e668a950284172f08348094a5a9152dabf99a17a35324a58e1b7adc61db1fc98738542b141c92afa2ef99419bf13aa2b51852e977e5ffdb8981a557acca0241565d5e59bce6d2d6951549c5d0c03e9f5d2631f45bdd865a5e4148fb8c8f5ae8c295c50520a6ed7b3a44576c7299114ede675965d4b77f43b0a63e91ca3c8bb1c836f860c09010ac23cd0281105427ed96f520dd7dc84a20c737bfd9f614bb8a040884f116ea95bf972854229838719259fa842a970f5dc26e4479ed85b38f9196496c2ea2de9842f55fcbdb0eb36422de1049feb5ddab02e87cd6d13a88f979fe5f95cd1b29fe14328942bd184ed52e7d0a64517ecc20a8542a424136b349de66446555f5ca150887810213e8a0441a38c1d29c8400926da7bb5d7b06bde6206a2e412073917af66f3f47daac80f0f38fa01a405457e782007259638e674d182a84c42aef7924adc22d364cc71dd91021e44f807900e0841411134c818e2454860460925d27ffdb2e0713578ae26a1fb690ef7cb7c39aa2490ee9da92d9fe6117b24ce9d5fdf63be4bd92a858283124830ee5d9f7e5e12aba30a8552f208764dbebba465b1e322679438e2defdea921fcf26fe9246a4c5d082ba5688bdb82961049b3c897a59b896f2eb457877961eef514426da2d06cd0ce2d29388b2424e0759cbd4f289083bc8fad6d8f32d7852104a0eb160a74f37bca0bffa3744257ec4b33c56a91b2d84ed39690e1a52c3c69c1088d2202e738476318e83e8433f47f5f573f317447ea7dab999e7776b8542f151128875c5e6646c59bc2b35206e1ba5e75befa5f24f8542f11d7091923f3823675b50bf5628142794f8a18eee62754cb50d4257d287cbcb6d3d66cd9cb52be103af2f85f6dcccc1bd4aa3640fff9568d1e2bb293d2b08257ab0cb8579dfba3bd1e93ca0543c6a7f3497975a4af0d0e7d97029fa3467df3b76f0f843c91d3c4d3aac657c96f53f3bd8a6d5a48a67ef26751d76cffd164665e4f45da1507c206488ef60885f091d10fae2bd7f9d2a144ac91cb6cfa265ab3215a1463a289183498b9acdd3669f69ec951d257148c4abddb4a065b17b03874c8fd8a890f35ba77bc39bbba94b870f2f4255797620439efd04140a134adc703af7787a7cdef1ec2718620619632869831dba3a6d326d39f195b021d1185a16ad41a84f75a5073f7af00304144aa5c88f21ccc34bd6907ccc5afb2eab6dde10a1440d698ffe2a17a4e6f3701ab6d1a2bfd60b4a97cca3a16b9f8f315b8c663ed2681f6900394304256730e67ee566cca13d3533787f995ffecefb829d2565f04ec6ec1e4de42a6f11949041f1d9542d89e6d093567ce04186948c21fdd51d4d7f99259f188c2e6a335bbe131d9a9230dca55368f1c4ce57e6150a65074284547c38107e00493fa0500286c5e06160af97ffa3c8a82d979fa0e40b66414b2d67319d686c312fa45cce926e413ebc074084bca0a40bb6a4749f0921444be1c285448878329744dec8a7640b28b7ba5021e3eec68d168ee9529205d34b755695d291f720528285f52e8414f9f1fb71ef40c9157ecbed0ef9d228f1a20a855262054ee6c674a9c3dc922a2c092d2174d229fa473cc48ba0d1a3840a8dd87fe9d7f1b47c062553f8e5d6c3b23c7bfa78891412daf346d45abee359a1507af4e0e1409acb5012855c181dee19d26f3d470c25503895ad7cf67a8fa3b90a8592849227e41bb3201aec37bfb7254ef0a4b8756a49950b4255a150b852d20435069d4ddb3ae32b84122620ec6ceb5a74974dc92b14ca18254b48334bba84ea69f5584a28bd9224e8f28b49085da579a32e41c2af57c254e72c86edb0e4087926e1a73a59d6e65c85424941bc053c528911302dd76e654c1767fa622ccde89896beec416324c470ff32b894dda3bfcc0a85d2c30c148314c45b6002926124bb63aaf47441e77a302011c6dd755e7b428ca7f183818e413564be0cebe2090c73906b9bb3bd4f1dfa4542364b2123bf84fabdc7085eb0c34cb0a34ce0407a0b24be407adc347f419456e6497aa107fde4a37db40b9e23e1c5628bf9ec428a888f37c80f1e92cc40b28be2e5c6e675d53a272b144a0b4874d19b75fc100ddbe120427e40920bb35533e98b35092ebeb991a9f637bbf922b985d9743f63bc132fa7aa502824b6582fc7cc457559964356a1508608f1f101925a7ccac5182ace4fcb4923a18572592bdbe2414b2f59a15076808400691f3d82a4e0033b880001d2811d3b8afc60078542328b6f6b5e5062a386f99c93c8c22ca85fbbb0415f5c8d24166fd67570fd1c45e35ba150900a4440020b4be9c858b7f1745692bc02d3a695c14e3cc9d5f0901050283cc45d40e20a6496b342c9d0a75cd290b4c2b2bd9ef192e1f627324858a19d0b4237662e745a40b28ae51644bd9c7e55f469150a650524aac8d3c3001924a9e0a48ece6930f38d0a4850719886958b9653345fc62039456aad83d66a4dda4dc714b5cbecbd14b2fd6396c297c4e5be8fa2e3612545799d937c78398a452633ad1f93aed85f146b100b139919536aa130bd18576490e9f65e71800414bd6b8c9ab4cc5328cf27f4a04c8d0821d4dcc554281407927ef80822c4812412044901854264074284546a87a1008f33483c61127a5fd41ce26446b913c6144245887e30b190138ce65223347552e20bf15121c21524d984fee20821b7f9432839043bcae0a103124df0f76b2efe7dba0e9e4cbc3995e7b42b92602257d13025f724b944ee92dad2694d96f0f54fe3c7145502f7ffe421934c89af3d9e1c0f6ea2dd2399c42b26fcd365ab8d58819048420bb53f4ab4b59884160772061a65bc83004922e167f8bb77293f957e21814b4ab5cce9bbf825534611277206c923b41cb198340c9441d2883369248c8001c9224240a288a4e677b97d3c29d7ea8024114b7de5494d85b6b37307c82b3620410496b1fdd5f5e9a76f17480e918e6aaa114a87d36b9218624d31b6d699b3c8ce2944a334b61c34885900823178901042db515372fcb4545a0cc92016e4dfc57354d307251241b82523931031d2775f924018427fdb5e6a6d6b4a0288c24cc78b287d17eb21f9c3a2018b3068fef98ab2ea0fa522d8eb58e22f4bbdf45d22fa9ce1d294a87dff1911aa87d8b47207f941c40c1d8738636c397d6e504587210cb99add3bd785f8c45ab65442b97786950ef0a8401e3cab51071d84a8b45587cc94a64acb204ca23ee5cdf7827083fa0fb75ab2629302a1b5ecf7a936fa65f906846f5a1d83aadb1c4da8e30f8b313544899d522e0b0a493afce09659cca69af79eab42a104d1d18747a3697595f8b0d755b9d6b6ac077b0f5a55460f7549859646871ef8909974522e73eae53c683ac9759e6596ffe478388487a7695fd570f93b24423fd4684b1d35633be47290793fa8673926a58e3aa8392c3a2ce650c71cca68e5f265976f69580e575d872b6dcb607fc7a117739ccdb278bef8231c7a531df231e6cc257f1074bce1b8d5a0fbfba9c93b1d6e48c9ec89cd66291dd3d10684b2300d79ad4979c90633873ad6b0990c3ab5b89d1b3a5756a0430dcbdd317fd27eef365e49417e7c0b74a4e17c1a9e6ff4c619f9c040071a6ccf27343dc6fe52df597086949dd84ceeee7184a9063acc5046d32d6b929a1b1faf30910ec440471952a736b4a0a5ccf6cbd04106d44255e81ed96f3aa3630c763017c694e84bf2b43ac460a80c7a3ac3e53467da808e307042c7ad8fa3ee77bf19de021d6038bbe84fabaaee7d272f42021eaee30b88b26ba9366b4c2f390f10e8f0025f21c4a834f7185caf10e131544717f068f529427d7039710a7470e1171da6d44a997796b4053d2713de624e1ff5e57468a1dc685db3e13ccd721d59f84e44aceb55b8e0221d58b8ab4db84ba2ad19978e2ba4f2a5ccfede1f336e337458c1a4d7f2a8f5ff2c6650150ebaae19359ca7cfb25450731635a77bd94246c7140eef2c6acc691f5aa3951e3d3cc0838c327810210185f23e887805156133aea0430ae73852d34457c545a1f03003c5c07bf010838e28581ade526be6537cae030acd866f96373c0ee878427ed265293e0b567438c138a3c3b6957431b9700f213a9a604607138e17b72fcb23630b7aafe858c26396da197353883fe950026ef6292fc7ef2c6a4f0272c3edce654147b912128ede9e23a437b30717347dead0e830c2f9b399c8a03ebd601ac268f0800885528ce67316bf42e8cc61838891d2203ac790a361b02e653e71569a747d6120429fd40ebf8d299f9360b4f7727beed25c5f11187c9d66498e5c0ffbf72f7cf7e8d9b27d4bbd094e7ce195b237d1a94cdcda8bf47d6ccd885493417620cd0e0408e7092fbc5df1d2732dbe5b2922c403444270b28bbb72cfe5d30c22a3e944170b36ffb2f4b298f387cf87a8400a27b9e05c4c8b2222b4fa0985a4324e7061bc38de8296d4e8e416c676d87ccad2f2cc63eac4164b2e57b5c05c4e6861b998324e66a16dfc07f96d39ef9bb2e0254f5d3a36099d668a45957299a592a341da0916b7a0950b4e5e8167963b47edd2152dc815e8cfa6e5aaaecf1cd4150a454f5a611223354685bea0f93961c57576be49c995cfe29eac22f1926d75aeea2c279d2a8c5d9d549a7e693ee6d3384905b2932e9f6d296bf48d0aef3e3f857daeaa594f4e8116d3a597cf6f37f604c28929fc70f11bbfe71de3884209c24929527f2f9dec28211e5563831352f84173babc3ff6a95f229c8ca20d3ab91cdfd98928989fd1d1ea3d739f2714c6f5f9d399a12973d48313509c47f35f7d47c6dcd9278ad1c96737997a49dc3960202280c1892752a5733d84527d6153428afc680aa5470f221516f0189282223f3c40a114f9d14338e9c44183eb6f9e8a0ed339e1c4629c975a54a8a8cbb889c40925fab1328c3c97134db03ae2a3cca7f9162d138568eaf0fc7f11b639010f324e309177a7b7bb24de85d38aa021240d3e81104e2e919bd418d7694f77ce2a8a468f34dc0415223cc68e379c58a20d2e7dcb41dbe70ff232227052895df6243d8eacde721125d062504f9bd6c5d6cd5428949349a03ac8d7b0fb37322975226347193b4460821d63f0f00008c8e0c18213497cd24ed3d637dd5f8f84a5614e83b920c472ab50281500c10e0af038c3092418ed9cdf31ba9c3c622f8f793667cb591df71f43ca48407e543ee0831347a42d5ef69c674f66a71ad1c97f4ed5f0a12766469cd3a6cf0cca7cffba4ae56411d9060d4abe271dd646830891223f78c0e044118cd233e5b94aea76ec2411f77bd9b61c84307d414458b2652e978ba6269d43e06771f5929654b4ac1a2261a2f7ea547b5288f3aec6cff46d524c27842537834b272e3cfde9638890324e0661f9081532366aab4195119c08e274c9b31cc4bdff431e084397fe76ca00c2524a667b59ec6e49fb0a855224889b31c6c91f3c4d8f597f4abc5f7e406c96b34bcf85cfe5f5c1a04e9de68c9b5ffed4091ffed0eff8f3fae1c1933db0359a6ae553277a30c893a75c9468bc1c2c83470f4ef25066594a1953291ef4cdd95d787533cfffc91d0eb93efe99c5dbac49214f44880a2a457ec0400627765830dbf052a6eda40e07f5fc9b3246f58dc9133a946ae92e8bd5a269ec2a14ca1cbcccdeb93c35a1abad50283fd0891c10ba2e897cd01e7ce43d869841829338d4bee9bb4c2bfc420b87bf7410eaebc525cfe9324ede70d2a94a9d4abb0c32ad5028163871c3a7c9e514e23c63b60711ef81244eda70b9746ee7722a1dd9c07fdd759ecbd6f07f6acf31a67408590d8ed8f55dbf7561749e866dd7e57c2ebdccbce9040d7a2ed1e269fd85d3e5c91910ad7ff539eef9e7d80ce7b0d6781f5721d53a29c331fe99b624a65df43a21c3044ec6d0277d719ad4a7cdee9f88c1c78f331c7012061444c8024ec0d09f0617d6c34abea9abcad861aa0c0af0584ebed087dca44ea77917bdc4c18917d0fb7f555717a737da853ae7720f1d45ed7be5c23e967135dd3eb3b52d2ce0440b6f0ea7347df563fce7240b86cd52f726dd6ab32d27583088b5aa5c2d352f5f5758b4ab4d5a9261234dd6821d64ec2883c7084eac3080932a68426ed0129dd1bcb2d2c37330c4c9a0503c07437c0c1ee8840a6b8ee69b2cf3a82973328593d072a8eda04bc75e4fa4803271ab399a9059a34486a0817c08910b9c446159d8f3245d32f516a20a85628603711f453c0727d831060f1e29e0220c02169041068532c40c334eb083043bcad8d18b1328984106014e9e50c489f8f87146070a70e284069c3461d9fc49762e3e6fe6542894139c30e1d02d06a15b2c8da7ef25b42ddddd8b7efd31149c2881481abe83079c24e1cab825b4a6cfe286ce09127e9cd181079c1ce19c18010226c510800931ce4165a99cf7ce570fa30e2d7f0c91b33082e1230126c0c075747e79a3b92cf2fbc5a13c35fc32a6dbb6bef0f1e38c0e78b3070860d28bb346a8d28234152fdd26bcd852633435cb3e9da50742869c0102935d787b7aad3bc9fe1ce6fbf01e65f0f01f43cac841101398e86241e634e3f95cca4f2e2660820b744eba83c98f06198246111fe223c8fb308308fbc0870f21453460728bae3363e9e7e71a311a135ba8492d0e60420b22fee3c7190c3099852c62018b84d062b9a4651b5b4a935708790498b8627153c3bb9833b6f3df8aa3ecefe9c77a2d65b262153b4c54c16ccb82eb68f68fd224153e1660828a08989c420226a6988049294c4df2a327a15dfa9509298e36b29db3dfaa641e85034c4441840126a12032440811216318c004148b3232f3e35a446ff289640c17fe225a25e263e289637f6a2a148a492730cfbf49bcd4b2695860c28905d32f632342957b02934df8f871460760f000134df82da650b3994cf3a92b2f30c9c43ab7e6f109f2a35b6082891ce480cbb080c9253a2f21f7c36746f32b128411bf8005269648d58bef9a74bc8db93302934a10a144e3e3e2fa9a18e92e5c41144a0f4f3f7a60059349d8a6ee25ddb7d19c2c1349247a544b9aa4e83e97ae5028424c2241c40126904880c923fa72c934650e8308f901071347f8508049230260c2084d5f4fc8cfccfc24adf8a814f9e183333c21934510c044118cca38b3579f6a4a9808eb73e3ce7e129a5f2a26881080c92134a5254fefde9270d12a14ca182686008049211e9d5a50f320f74b2749c18410c8b1cd16eca57c0890e6327cc02ce080c920ee0ebed14ad5a990c90a084c04515ce79e6d87f693195e8404144a8f3478c8900e7480078f14c48bfc2004140a0fe42fa05078f8c02410465ff36bbf172f73b2925c4811370104177aac5bf6d4494dcb10213e3cc80f20417efcc1a02db8fb7dd2ffe2ba267e78f48ccbdb52c8a4dfab50282dd851068f22de820a111e634dfa50dfe7fbfad2cf92a8f890fd5fbd9aeb76e82bc88f1098ec41391d5cd44eaa4693eba118a1de1ba666c4cba6c0240ff86d85c9dc524679711f3d4cf070ce9866e4fafa8c0bfa8f216594617287e4a3877491d7825c267658379b6bd4fca57c774f42506052876cb3a810ddc1c570ba272128a0433fc22f4d6796b394c64de6c027b962bf9b9f1a3e1513399c450da14bfd67203ece10322405a981491ceaf04ca663085bd1470ac23e7a207f010a820c3181c3e667fd39665dbcd20a85d2a30528c081c91bccf2fd243698743927090932060f9484a08042f17106111ec8c40defc69bf6f81b5dee3807148aa3c1030741084cdab08ff8a6f2ab5262e3950aea71021e45d020c30320f01f43cae8d4a903266cc04fe73be584f0ffdf640de7a65411257a35e82f6abe7a9c4e1ee78a491adab0a34e6fc7b94c1e3434a3d38d9c8da5aea633a8dba6d15f8ed3161333983ff5a626a1fd49f53264dbde1994d4d7fe8c0919f0da9673be75c780345f91d5d4440c0b67d9f2fab987671286435ef650f1d93568bf42a1f4f02167f828828610a6507a78c2040ca5d6e8cbd28a4c9ec40a8522a4880f1f265f284f282d07f5eb15625628942b9878e1bd11be214747bf2d2b148a9a7401f7eb24ca638e932fe5e30c34ac60c2859378265bc0c433d142b7beb1e15265927ba95028144a8f34fec71037c942259e09163eb18e295e9eddceb90286053bcc0a761815ec3029d86150b0c390b1c39c80023ea860720573f79c6a119bf105132b9469571a5a12f522af1c9854a1dd9793d041646e393423d821821d21d801821d3830a1822da25cf29894779a7b0aeea8d32bbd31d7ba6c220573fc282db1eba3273389c2a75b70b9057db92a642878ae39fbcae6b7cbda1378a9baf7c5143be19cc205f3cd9e292fdb05932624b3e6667f77b1112d13ea9805978410a745b97109a98ca7f61ab712963fd98b61bcfc378992b0e9f14ea337a9ce929a20e115794163b53539c269763463b72c9ad6bc8911f8f89bc2b3b8184d7cc5c07eeef6a5518990831885fcca2c9b349d8c9d6318c966e8d03b1aea7be321e483e41006aba76994b6b81d9aac502839827187192f974d7d20073052213489502f35caaf0a85f26348911cbf408d6b8bdda872f86299d1d973b896d7e2a542a1ac20472f2e3deaef41ed1e5c8441b0e30c2623b92c72f0826f753126a172e745b80b4bd69d69917fa7a49b43178e576759be4cbdd7631372e4e24d3b9765d1f26cf9d1420e5c5432abff7232904da82452d368240e05438130180c0080418eb76e00531108204844261508c401a95ce0e6031480013f382a5c4a222e2a2016209085e2903028100544814018100a0383810c84921810e354f6dd215fcadef591a52fbe9fce4b0fd0ccf3506184b1511efe76371239cda16fc7bdfdcb70b1403c8e0459b523af618b14e19f3e18ec2b11ee09a816d2c32b70499648b9e245aa47edcc32b651e260da1433c62d6f29af5a2a9233f53ef3465d36ee26fca4b0b711be1dd36e8dcb16d33522fb51199a66a761b8d6963a2374e0b987aa3182044305cbd05f5ad8c156a50476bca58d4195acff6f37bc951cb5ccb6687a4544ac31fe60ff1efdeffc6d859ddf4e24129bbbaa92498b4dbce1005f7b1fdfcc44f66b6bc685d9c86681d66a801610741cb72458a72684191a240d19245916574c1ab0b780289290b15598e193cd2808b63b52503880d78a3422578ca86de259b6bdd9a2fd79bc32f5043f9af0479756d3b7ef19ef1c82e85eeabe9a67881b0d0a56d842d3509f815ef1b1bff5fa0787cb78d4a2f1b11b3fd5413bae30c345ce0e7b40950312a334c9d34c467c2048bcc8f0c186e50656e1cb42edc8a3b6c11f0c2c62d443e020d4440f3040dc7510d4b7811f928e69f78c01386104094fb24b74cabe7017a304e06ed466477a78e8f0ad3fb07897abc177c3e12f16c748af4970393a58035416a080feb80c72e9a4eeb380a08668ba0723ead37fe15290e18b83e0333bbf3ac86271349640c9f682972c333aef607151c0d6a564401e8fa524133e04fbbdbe1d1cf30e919d0d0084be85ab2f5281cf50efdc0ad24c986058df0cce0b4250dd305093d2e77e296f77942ce2009033910ec693b07df50dadc488d06391452998ba296e5b96ebb98b9ca111299a3ea8c4f1d9fb27600b0997d4c76fbb26965b93f0135263d9b896cb548911bf63138083a687c055dbaae8664ed66ccb2d0b6e8da6511dc737751f794a952d07e5315381ac3d14338a860e9bf0a80d53b9891a964693bfb7327f7a3355dc1ea3b8177a1f0a71f1ea82d5ecbd60356aff95ea008018e92a5e5e78c0178a2dc0666baa007d3d7b41750aa5fb338052318e3d64eccd1e3017b1a18f273b909d966c8df36272701527d348b6222e8ef3c446c9089110cd41203f41aaf918fe6c3945665a88a81caf6f2b7abb1eda402f8f3f884a8705ef8643274142e9e40d9377a21fd46fd8ec4f2f8460cc1fd24e7df326f7981b7209853d69b5d730e338f09a7bb49dfa8bc5d659b509e954b22a4625867b13d4704ac3feb37d0368b7b0d71c1bccf1df55ba0116093d9b11b0492c38624a0f3534e03601d231fbd43ceb13e31e70ea0358e796a78816cee47a0563370b1a8513b8446ed2ac73097b231fa562bd44ed1a56e89a51cef1f993233065e131fc2abe40eb821a8031c059c52252450c465cdfe21d1c8ccc5e729d488c3129beff26ebfb8d5ca617b8997158e43df74318ef6c049ff3d1a733f74c6a9283fbc24e0b7ef2e8ee9fc369cbf96e28edead5bc7e27f117dd34b5c69223a0fe6681defbdbfe8ec2eb85410ef052de99ccfc8ecd373adbcd8b6c91f36661cd08cc5928a2457dd8746e2033fd184793e04ead26c0fc13bb96533837aa85fda5a0d24b467e9b2110f2ac919cfae71d5df690cb55b7d71816baf584b1312b169ca6af38680a44fe5c93107b4649fccb117407e76ce18673b090f5184ccb04e949e5d1b048083f5462e2653582a3e3eb4228cc9e2a644c625936c73fd8217f74fa2a28108a49a5f8b2d4197143af9535671cf774fd9c5e3ceb79221615a047fdfbfddf090956288d42d33051a7ddf9949384456d04756d041c48f47249e107200ccc185be60793c4dee010f153e0d2f3d0fba9c09433ea1e744f36f94a4a6b07d53553c469ed077b286f6acb5a2136a1feb0ab43524fbdb97345a2d9a0360b9d79e3a8670de948a522dc18caaead358425492f5ca911156ae0822b0e62caad328009138e2abd23e08afa1ff279bf571b696a009d7f82e725c2fee01f4fb171ea16ae24fd0ef2c6de56191f1c21860dc6068f7b1698fb08aeed164f15647aca7d7435013f8907a78c57db7da1ee6f9b8de91f218550f6d890dde39e7c98fb240888374cefecf3f5190f83893c892f3ca078e85cb9475c29a3df719115dbd9469f728f7cf3b709a8503dd3f728eb178ee1b2d44136e1a42f17410596c7e00a0d200d0ca275a21dfb055c9e65d55b579022df263b6f17cfb12de3f16799e17c9e38298e79632a17e8f23220762cd52b48b516e84655115a7824bacca9059a9e213689a7a0f4efb9cfe9839317526cc37b5c5c3c2ba950a96f2dda03c40a54d0c07adc36efaf7871e305644408a052e3a6245e392dbaf50eb03f414fa908df950af725c896f607d8c67c3fc8d22d54476062b53c22ca95f98d5a6814a94c78d707eacb8a7f1f72fbb33e58e8997947f7b244052c68bf6b59a83ba64ccdd3e4cd377a7906b31de4bed4de66ae85e0cede8a177268909898207d6afc85d3b9ba5149bdc8630132f5e56a1c36fe528e525aa57f8ea0d90fe372e7fb780bbcc6950c202c45137a3043884edffba31268b643eaf4a23b228f5d55c7e838dda1fb4da836d17030714858b1e3b8a2ea46f14e91d7ac40a0290bcccff6c804ebd67baab41e41955e0673bfa49a75f8385282d8cba42abb9c77a4f4d31258f2ab31822517e9f3fe639da434a911ee263540aff53f68c3ef4b2a70b79e3a80d0c401cd993b8562d37b051902e4b90ee44923555dbb8f5dc0291b11534049126a846da04bf8e7140440db12b06824997c8a38077189ae41d341e7a20da8a02773888a879b0d284bf052e60d2c8e6d7a48251be8b0170a60601e9211136478a2506cc52f788d67ff725219d33838c9ed86c2701516960d8d1962a9a8bd233a330b8155d2c046e2e6600c28bb9bef028abcbcb892078a587282420bc221f968a3a131091ed8e0695dc863778126de27454fb35298ec02da67ad9077fd19beb5edd073b42eb22e7b944c814e766a3f90151540b9d868e76920749be47f0124dfc15578e54dd56ea15632c234a8b97adb6eea87f2e5e1ba81aa2ffadc5c3f719d2da5215051a242b389a2ae7b40e750089df38bff4401ab5ec533c0466c26519440abeceaf25b3209e8391bd6ad233801f822c1f13d2aa5ac6b65fa093923e680a071d67f2d4d5977c6a3c256b38278116d22026a4cc0b7cb62de3c468648fe6d98796fa66cfccb7a13c9e41912d40c46147a260801f6a0ce3fe85983805524b6f10e348822b44141c30b812eef3f76c9f1be67260923f39535a223a969eeb2ae8b642ee9b6be911af42b2c6e007a2c442d99167ab896024534fa450eae0d2a65761e40cf80ebfa79b65e92e10f7e52515494a0b93dc8a113aecb517d932f3989fe044dc3ec5c78e9b0c3fd37d0188ff9e5025fb1b08d4365513e40c7747751dfa80900c27da0f68088f8482bd918875971684667341b5197d390e9e43d4498d3314501c762a084e82c19bfa99b00c56f2298b474f78bede41f19238309610b2efa391a8fedea3ea7828266a0032983acc11e1ddd0ccfbb113ae592065c7283367c6865f7bf01a1636ab6a439b335588ff91df3427223e57263d01c3a3abc1f8b7e0ee0fecc8d0a9dc33ef6df22e5655f09d37e6acf9e71e037b7f61a842813de002436059ab36a0f9bb2b3ab88d7322b26f530c3482d3187a36eead2082f5c24e4281ab3065445f317a8ec2f066ad266fd00b99408174428f700005e94c172670e0746fb288a46fee501bcdd96fb406dfaec607cc3e9881c4a9801a4a3033a7ed9ea35907b32399a5cdb525aa028579740dfe80ae585d5544473f1634b992d4e353cb52caf44c15e0c6eb15b36b75155f015b940c871020911a668e510f5a28757c86a974eb137fa2946e3ed53a15f680cb2939457e6294868af864846af896722e2c978bf06fe7732e3c4f2b06b54241b5dc66cb570797c6c0861ceda2b8f02e3725da7efe18ccca6d1595637a9e240efdd9b84d3915e327220631a4b312128c60ee47e9a64277f3b474641dfe386767ffcdcc9e66d09ab106e09e37de658c1158b39fd2210a24f19451caec8f9a18091a4da2c2858e2c2528fb90e59b1f8bc38b42450e0908b69e003ed6206e88cf77ddeb1c55e52f940283e6c38d35625d9f684c8e46ce80d8f7bf703e2a2a6f4b276dbd5d54d88a455f2aa7048ca4666396cafe809a04223310de710e4aee4390e9a15086b6bddf19b7d8490fae8414bfe66a289ab13a480bb25c82dc5e1fe1d63c59bac953af2eb0175dc29c05d3ccabed281733e508bad34fb9b54804053a637616fa31dce1d81596c00e07d09ff534f4189b182b5f8f66c96844fee81af7d3109e868d1cf22adf4cd0aeedc2e274f5711d23e12dc2e88e836b71a49fdc51c0eb35d939438a9f0b73af56ab674403eab3db9b4adee070f9d69905873c6d63fb100b9c7b1fabbef5ebb848f0476c6fc90b5877d9e99d4786cad181aeacd3fcb782d5345cd5e6e008a00eef460c07a9981230258dab0dcc8c0f7ab5cbbc411f5b76fc53a7cc3d05f9a4a74e09980b10b91f3ddc42c84a2add92792cf8b69b2c2b3392a7da4a1a5fa438bad61e03c58bb0d755463f729b2f9085b741924cf6006718b5ffac65dd2c79666b6c76ae5b6254a9efd02652917268cc28087c837ae32926663f275f86e8e92458d63dbf3129fead7cd51486e20a2789361ded203045ff47d529f8489dfb61edfccfe6fc7c83b2c910291b84752b6005cd45c3bf3368c3d03994da746258cc7489dc27fec8aadfa4845bb3d7f311b117aba7a7e29b24a617aeb504b0001f04200107189af5fb8e4efc0fcff38602fd60b5269245de7e81cee8585ddc6ff267dc91316c3cf1c40f1400866104cbbae854b136b655c7fca1175f159b5bbd4d5662ae039a7223e682588e0a98ef2eef3f3d110fe6972f36ea84a19934a16c64a026bd5e808d26ea40a9208f3392c2bb7ce3a01ead15bdb4313232746bc61525b3aee8582b877074c0ba6961f8925e1bf528960a77d74e0582ac1101bc2b2eac586ae4f04148b01d3146337bfca387cd26239474550c28977bc3b3d26a21e39241c2b15983d2a2ca81c3785766337c72593bbc3cec80bd0967f60e776350a05e8033e05abdb883c11ede9ee973567c9da6745561ede6757060e6091e04173b91fe7d5d55852c3e7e867b9be4d049efc5167e614380e5fb8cce515294b95ff3858dae94710690ae5d7145eeffeda29db2e748a5df038cd2a0ed92165a2fa3f939461502d0cbb0c6366a452d2107483e132a049c6101d74502b299495ddfaacdce9fcaf61b450b6eb1153a862ee4afdcbddf994d61a40f4e01e866f9b4ffbd969288a5b849227c71790cd1dc44f605c8150cb414c5bb9b33bcd4613d4676008f48821d7b55261eb4005263d71dd5452e6ccf2992d393e17afbdf9a1a2bca211026359944db00cdf0ba1f6641fe94016aa89e82934d2da8172722a958ba1e5fc27a839b3a8d8065ba10825b6bc41aeb58d7fb5718473e6e38fbbd04850d54d2b4b204ce7dbc7c60798d46939cf0b79b58b97202083d4c011d5de6a7a1df9274f98e25a0deba74e7a4a4af902b5f5665a14986c6cd8974bbcfa9f2306dcbd0ce8c1e1728d153138aa64dc2de084f32a4815653e41ce81842ea74db5f25dd2688662a0802c01444651c62ee81bbc49f3c06957a056c14a260996427d2980fe4bf69e73a63065b532206f01f79f41a2e16d12ec2a169f7417931bf0ca869da5cc459fc0df93cb4dc971f544efc8d0a301bbb0cd9ba8bb38853855c34dbfb2539543158dab5edca2b61e98e9efac5b0a4338e11c0e4ad889c2492dcc85cb78d58afbcb1564d14a112dc61da124b91d0eeb4316695e730b28214cae50df9d5aae609b15671f3fac6dac3c724126beb77c94c6b917e972375cb51b984f8748c1950a507b36c73928dbed97d91cecc80b963a03aee5718422f5839d0eee6d428da4d967e4834b292eb4d126a96addc557c069f86070353df6b71e7a1af61098b11e5afc078c44b715342649a6b71f3494789081b8c0a4fa7bb110283c9ed176258904d07d3822e37e1baca29d7f2b288784033ec40f8b69cda58784e5c3fc78e910a1c8d11fbf90cfdb9e97e5f52ac9b4b0a19718711e167dfb6404dce138fd57614085923975f5f2fc17ab4dabb2967c1ab377dc81039fe01082b6671937de5cd56345a4863ae82b5039e705ea05269e306088cd98969fdf82a7e9aff6dc0e49754ab847b6af6c2c99dff143d106caebfc548aeb929523f2096250d6b846ba2d4ba5c784299952da4bed9b91406e92a348e8c322b53d3fab501966dab5a952e1a394254e670df286091275d1765f2b1ca1b14273a9f7407e38645e4e3044236045ed057f120881e815d25d83746a4d5d830fed92692a05b7e5c73fdc5601aed661b34ec9ac561a54183a98e3f75ae125fc43ebc6a5c1a8285e143a0cdeb6119f40383eb6fcf7f5c6c5e2bc181acb7a994c9f3b1f7c4daab9a67011f00c3495817d0b3158d4b83d58a4fee5279ac5690d1f3aa8fb6ca931be2d4b6232c7ed84d358b9c2f2055e42173ed965a864b670a417ad374a7d44e6d308f04b30f8bdc25e3ded770d6f139c0b79dced781e0c46058876864abcad751fda023aa15daaf670386b82101e2e7c22511fa5822b170c787cdee52ce64707e88b86d01ff7667dcb5dd4f4ccfde87dffb61cb65f1c1844745e4e4aa0bcbb66281e16a849b35e1d62cdc3324961caa1b86c788ba911ff2c7de3a1ba9e1cf08a4a051b95ea6facf25bdff72ff3d08a3b9b2af15d2997e770c9257751493e944ff06636b4274c9ff77d7bfe06325b9ebfa94c2a316843f9c4908679d30fad0d8688ccb516785d163437b82bfd6e424cd1d280eed7c4e639c57486c9ea750aad921e04478af7c12b52c71956e53bca048f05659149bcff8860bc33ad1f9f9e902fdb9d51c5851fcbdeebe4a185fd4b84badcfb62c9bd98de8b70dba4eeaf55541e3ab7c66922aef88f8925c85963c1bfba3122d652f2879907ac3d6780e62ea1337d8f5f5a95bd2ce85e987d94e111e342972a7e89e26f6d6233a0fdc0b4a0a37c1a9bd3ea790bd6f861445f1f176696b3223625b0570a645ae3d011002994dd6daca8db06e67e7f40e8708f4f8f31aff4100ca77c8e1dbb336f2169e795b65b5dcd617c5ffa651dccae9b3e1ff327e49059f9113160881db74663345288c3f86140b223f56ee5dcbce200144d85cb3cb7d48e50e4070208dc81d13c32bbf0cf2ce05752380327786d8635478909a594e86f8ccd8886c4f0f35dab543ff2981f97c1e08c54356115fdc985f085e0a733a7d368972a4b548add1b33867e8af28e1a4d4c48240829da23952ab89e97f2259a1817269aa22354e061063616825d4032fee5515fad861069c5c241550e361f3db63db20b0fb35f635098617d2554cd91c86b152a98382ff4716d2e7d41c39731050a64918212a0fd9d392160efb5f2c13d49904a0131807c1f148641849bd6f009280738febca1d4d84213b5e3cff4cd1956aff6aa634395567dacfaa02b03ce8f46bbf72beca442965ddf5d480e9586ef7a1ad9f23e38631fe258b6fb5f05590ef04167647e0c2a3c6a7c955e6b319e15eb7c5713222e869937063643864b10b6fee2dc14e0e58868780c70363639a9d7a48307eff1aa0aee218b37012c406601080179e2c1478c04ac6fe4d13e0bc4c188f288370708787b27cb7e7904eb364c7301c8a13288417ab287b3d97519360bf4b3da1194dd6f609a8fe03c5f978a778cc73df6f06ded9150ccf3f725f1ca563fa35f0513dfda7f383cf954f7e273e8537ab69882eaed78f6f9b08a39324ced4d4501922a91450f4f77fa109d38781a446663e4a65d59982e51cb0f8448b3c144235ab5a2b0faa30182d98734a425768c0c0a1acaa08a38eae4854a6d22a8e92f7249eb9df21e9156b71fd829cbb45ddc5e8669a9cddb4e06c53449d0c564e07c4efe10399334eeb9e79f2abccd55489677b53870bdead329812d7cd5fe655ead58af058ec5f201cd32f0a656096823626b297599cb10aa68fa844daddf2ddf96ecdf3bc39493f857433e3075916d83eba87dc2981626d43b9aa2d2153ae246c7039dd97545c57ba21a74067e97f98b5e5514e40ab861919cfc03b694e4ccde82d31f4b1e64dda9804d75cbd689fffb9d07f4b93f0b757245ac6b66c0ab78e0d8111198e36abb2702469f65bb46d6ca92b3cb0a5cd7dbe39528ac23f84325c64e7a823cfa1fce6edcaf2feb12c767a0df3295226dadba4cb55577d079ee54fc8776c01b32e29937900984885c51176ebaca7f1ac57a3353f157c8d70227a10054570c4e8660cb0d47361e857690b26a2cee57e9e7d36f5333ff2753f16d553ccbbf0e8ccfad7c9cbe305c9af1df6ed7eb497b7b303a39ec2eb769c136a54e099d419cbf5c08ab39341b4684b63c4f62ffd705300c4baa12b03ec5322485f1a106d62df8f3ceb66ed52aa1a64563c0d6349098f96497cfe2f6f7faa8658b6bfaf73905b738e64574c3d8285723c8b4622bd36f02a752dced7bd64d22bd0c2d52eb96abf76db0d08de679157b2a223ee43ab85d712f49389ed5fc45305468f348ac960aa7a906032c4f9fa0180e490dca3c66f7b29a791bd793c5d211e356c2c16dff29b0d8ec7b6019f4a60433cde13db2d48eb8945c6f7c5a103af523c1d5eefa2e2fa54dee0c283cd427640ed5b55d21e2aab7178975e021f72182881045e4c292b0266e15ea81239091f85a3ec399ae5d8cb5d71b0ee3c81eab871f9d0404001e3db6927d676bd251b9b4b0e7806038805d6b1990b2f0d235db8149c0f015e1439e6d98d0ef3b8ebdbafd7339476ab5a4125386fd3f44ca29a82059c5a1c455dc60f952769a823dfb08485f3b218a6b046cf4fe4a0b50665bb524c0f7f181bcca1c609e4d6930b9292c305f656abb7e53a32058aaead6a247135418b7beaffdfb3995173ac04150f007c4123aa0a48c95d8568b4498f528cde72683da4c48956a19f586751a432ffd87bf0deeb5d727dae3986b8ac4a5413b60047e29223dee30e700e32565b36d88d2f97010d85d2ac02acbc719bee45164dffe3a6311a688fb50f6ceac860fced2cec6822065006c18c84fb4246f1136e8cd29c211bec931900c1f3d05d75a3d6e497eb222eea57925a071061596132db9129ee3c037e7949b1b0cb866bdd95a56353b933800efa02c66ba832dc98b86f193cc570d25ddb0a3f518b28098f7c54a2d108b19dcb6bc56a5cbf05a42421063a5aa8bf076fa43a95a72d8298e6ce1622b230e833458cc3a0c2cffac42b472d4acb07565606fdd241424458245c057f54e49940a9e50921cf49a923ccf691e107b29ae97a05329f2f218b2d75e62de5b6f229a4d905d0fad03993275aeab7549d9692fa0bdb3ef81601720fd488e0f7b351fb95860bafd1dc12eb6b4c7cfd463a5a3e1e061a6a1468002f3daf162472d0450609e1e2d7734e1488002ede3067327fb96a11e987dbd1b821d8e9db0135181c23e0124ee3b48838f15404716424a95c840a119bdf5ab5d0391d31a5938ba90602ced12cf0f12583290090f4ec7b4bbe7b5a101b2a5d041d13563036e7ca6ee6350a43f2f3ebec879a8f1484b4585b4f56cd139b770e9a0fd0a9d7673fc159e338fe9348f023d171aa1a4fd7cb3e91870badcf0ee7882f64dffa7a905d6c3f8eabbd0c8e3417327623eef737fa352dceee9115570ff394b6038f41573d53a779c646b09a7aa59be159a4dfc39006f90e6380baa47cb9dc1d6b030c95c0950d32c58592e79a069ec97832f56c13564dfff83addf3782032e73cd934941c7f77ed5a48c6cea91a363190b32e55fe719179c4d6c18010bf5c4a23ee86a09afe937e7e09e12513f632a0f583972309264375e0119be7c30548d8a7ef6e0ca880fda623325589e9dc6e5bc5b68e6c9d6bd1a65d301649a3b4220aa5c69f45e177a15182d0e4033b9babc2ac099229d77c7c291dd42a409fba63dee5b2b6c83d345277d825914008bf87aa17c000b9d0249afba9283cc108144f57ba92aa5a5349898febdd665f18c1e60c3ab11b8ebdd328b4c5f3aff480c487417e40d828c643089632fa788947318f4c304f0e9a3c4a790beff8fff7ae4cbfe162e443b64a44bac41c559a77070f5023a66852201703f05c1dad0fcc5b07ffb10c30d465439960b70281489a6f48c5221ec004312f429842d9bbd6fdfd2943c12be69ae146ab6a1429ebdd301566f38fef8ae4c03bbc0c6f115bbc6eb919754eaa94a2441257fb8583b47be773e08a14caf75dc32b2fcbe9b6ba38e1cc074d76408392d108eff52fa1c5e1f81afd1eed1ccb73c05f26843b68c44f61c923dcd0a7b918488b0158e8221ff02797a29e76ca0eff257ba65807bd2efe214248edb06ed50b5611e702f4941cfb9b78c16787d1fb0d775b5535e59907c75c232021851dcbe083d9b5d3906ac0e94cc573d68458009e54ca2fedc807afa95c22db991c553662c0be3d3fe038ad3e076aa4df4a1e89db699c3ab75db7814bb8ccbc79619e4fa0a9e1caad22b2ccb590d8206cef89eb22a7c52af24cfe4a64716eb2e0c0ed5b2301e901dd02ceb91e22350893d559f22950bb44e30fb02206409db20b665f7815dd1f4092ab69f3f8b2bcf0a17ba1954474e5a035b7b281b9508af0c0e2127aed54c8df5e133ae0f1bd64df5179a0dbe64b0d382342cd51240915ee5d93649196a6e3e5ccc6170195fb1a07273f9d5fcf2c765f46a6400959429caea9e573881b2526fe8552c4851a457fb4525ea767f3b70dcc2d48f4a1ae394975c7493c57ba9c64091dd39faef4658f8b74070096fc8948e902acf146ffef145c04515b72df03838bb589b9c3215df715e98d0ed3face597c0402c502d3b6cf60d7403e845065002b4571260ffb2507ecac8f05db8ec293be54769c9ee5b268718a08532d8624d43e4f498297e556e89ef909e1f1bca706709d3e227a9d4b59600144477f300f9e6e7e0713a88c7bcadf47e6801be025a0bbcb5e504ffbdfe26e362a4a06d74ac92bfe8787ccb38f0a3fe434b035a45124aea0cc5a99d2b11da9085673c05b99af87cc99843052787b009a0cb6549e2a2ba64d6964ac6351acf996d24ab274f0ad04a9a72224da8a7bf172c7314883b868548faca72435438884828d78b6a7bf406cc607de33b48be016f28fc100d5ef922a455644390fe19c28c6309eed7a98d4fac88038bf7e88ab7ed0930f09ddd8ba7534bb021ca653407dafb235ffb9dd6ed69622755fd0490e699f85aa06a7370a71a3bb3bc30916c4fcfd89d2643454d7d09c34f37d933509e6708ff9c3d93367efc6b0826361528fbcc198c45eeabcf1811f2857325e4dfa221dba0947b6406d50646960d8a46af45903bcd88106609dae3d4d0d890300390acf1e7f8bfae1c5efe035ba49a2755aa1c70ba43b1e655db8bdd49338fb6fbe49f33090a3a64f94fea6cd8d38d0a5ab54fdcfb209120180382b4b737cd0b3bc96a83ba252048505acfb1ada4ed15e18b32f41216e68e87dc68c542b9bf014fd55ae2c707fd23d1af12832aadd24e6147c8a5a28cf03a0b39005cc058ba2a9f75bbb933631d7ada85b85a2941e87d9228ccb4b3227b93d4e5e675dbc1b6ad4634bcecdaa7ac844d14a4ec099c61917d7c90dfc5ed4378aee450d5315ac28f81e58b8be5b64c9c5538e6e2600d8fb8ef3321a2fe2b1577efb4209ce1de7e7f29f5284e19747afd2846e63d7f40259b52b3225ba98a6e95bd77dc7d5d79a21d57a887cab3ad403ad7770a6641041b838b6eb0b203dfb1417150ba9b7b9b310d1ea7504f857153aa17a00211805c0261f13e53825f5099806ebe0fc5ef473451ee27d27b62e99db83513d031d13148fc3ec5b84c51fd2a426b62574c9cfe09c47aa2ef4ddcddc4f49928da13593bb13a4f5c6c13b835d1ee27de7f62689ea87513d135b1314cdcfd09b89d09905533d6ca2db14ee635a4c6138fb1c4dcab285713e93fb1f4276ee509e843026451aed704598a871ce60816b2dc8a3cd480818d08a1e5235959c412bb0a15f3aea8600778d893ce8bbb26afac1504bf218d2c5082d9fe6f6c0d36b2e4a788b6b2762a037c6c7b0bac143cad8a3501109297b67ddc74bf1795d326c8b225244875823925426f8e48cd5e6d8a52cbdc6be871b4492a48b35a21a9e8191113338394ea6c9c8a72571be917419d04294ccb2a49fc1c1cb1ce802fc564cc9248d38b186eea171715345fdea9e7acc242be042a46bfc7b9c9090b79132c0807c8e8c2d396a7fc757f70e86bb54058a918f1e6c4aacb356f8b27caa9c02fca4efcae8ce29cef0dc21a07b1f70df682223294df995fd763c4b89734db501294a0255dd7a41f6a85bd85f880bd14c5729c6ba6616784a49174ebe1ec13a934fc7325a25977dd93e2a2940ee9df7ac29de3376ce787a338d98c04be61b44bd1a35cead8126a97a20c030881ccf243c3044c1c39c36982b274e13199bc446aefe3d17645e8514816bc7d55e03b9f28cf8f2f029f4e3ccc544b5b4acdb2224fa381cc63174b70115f33be471dc891b0fa8f52309f1ee51924dcda7b5d99d5dc362b785af5ee6dba6d0be3d01c59566406c6a404e39481a36bace38b5f2faf12227fce1e42d2ceb7f45d45e7af003b9f382ce7cd6dfec375c9fbc81fdfff240318b13b1684f0b483c9feb8ba90ca79683435ac1aaac9709fc4b13a49d45d708aea61453ae8c55d09062adaed170883cf84431606f619916b34a7bc28a1e7888b2204c1c55272fa87e16a73560b39bc597625da842728b38fd4968867f82b714607d7a8ed4fb5a960068a6d67d022ff68bf9be1e5139cf84339b4615d1450e971062ba9bdb517e601f84f008980c33e8a57b980122b31cfcebbcf0803078a04d0f096e35db00260d1c342c17704f7e5e8749f1f35bb1cf01a21e2abee5fb66738bf6f41d25bc51a048df4ca21da52f4d5d471cdea5691119f3463b9e5778903b4a3be7aee39e92bf33d46b953a84b0082e9491267c9016ab3776345a21c6412ddb1ad69d127301d5f654171665054c831618db1fa79288f2b61e668e7179461eacfd01862d8e8fcdd0f6838496caa43c1aa106991bd26518a251d048b77fa1ef1c052b699a12f3db5b3f3dce800aacd2da210a477f8118b20d79d18591ae38364979b595be98330fe3a4bc61e8f80398b8092170e327499aed608aab332f22278024ed4bab17211d9499cdb6c961e3edb7d3c956dd8c0bdcf8b2c735547abf58d91c2e125cec5a4439d8e3ec0ef3cbfb22878b6761d636ec952a15b06fb16486c45e1e202113560116615cbccfe7f92452ce52f47f19e21c628440ce38d4f8de63c771b38fce5754964406344c40837fcda21f5f171f2a34d5604f56c228c2500392ad62c977383d4d23e59e1661c586370dacaecbb7703fffece401e01fde91c4964faa45e73c930539e66d2edfbf3082318b4749afb47351614dc4bd28718bc47819238f57f98ab6c18f39ea18f3b45a27d1fa099b9513248421330b27d67033dc12a6e49ee7409b262eadd17f3f9345e131451fe96496d88febeced56eaef16806c6352706da52a470c01c954d6094b62ffb6633721711d3bc33110cba15252663cd81beeabd310a98734b11d5c3189786621277392f2c8a65fa2f714c2a28c476104583cd812fea599bc3b50b7b32c8c381684ba395c2f66bffd9f576eb60c986dd49589dfa1718094cf804065786c4f0f47dded110d7151ffd178a72c3ff0f8c8e4324b9067b649eb81df35caa20995642391330c5e99f7407f17d250d9e76bcdc0eb039a1fe8ea471ac21dc9400bcaf2bbecfdbfc20aa133933b1eecca0e8419f977dc718d508292e8ae4c655c4cc7513703c026334255a199c05935df8d9657949494af68d9488e59b5bf05fcc0a3114014941e053fdf83e5ae988fbe534cd373f6be27e1d8193c8c6b40bb178d01379fcb5baea355ea354f85e3d6292f5909ec7eaac388e73c2eb773a3c8b8e6df02055f51a7d5a2a2ce1fcc94530051283121f4b0dab0aeff1a8596aed1a2e8733e82731d75e0de5d5613237e1885ad7f28d4307a082b6bbeced3df0c2021bba579c695d65d15cc22dd734e0c38344e91c933038d4e3fd001490ece920e6e50a18bc0815848dd2fe847d7f308a3a8825a5749c2f98b5d83882fa5c814d7ae8c54f92df34fe61a49a1b866dec4b1de165ef1b9bab92ae1c6e82aa6fafa1b9667b9634f8da0931ea9a8f957ad0f4c536390e9f8f0378b8f270613626697336ae5f52fdcf75841095a0cd9155f92e43ec617e82bf517532a32f49617dcc1c6ad8346cb3fc44b76c0d7c8bb3193c5813c9d024295f14b0b86827b24716d5a84c643683ac9da9dcbbd01285261b785d2e1be07d335e0441992ed68065f2fcf7abd5a8c432844c730321303ee17c3948d6b4bd5b06126f23f85802a879b8c92c421c668ba64d6a5a856145ba8cf5a649663940c238f1ccce74e07adc03d1208621842e5a5c94c959038d5aa685c81b86fef8e1fa511b0ee3cbe1e84b06117014829d1d7a146eb4c596e8a817844924e7c03476610903c031e4c1dbba438684285b11c39539012f59ef4b14fb7040fd80313fe4d1ec8495f02da16af9ecda72e25f4ecc160b30b74cdf6699070e66e7f9994827c3d411ff226b6ebc24947d6b4c2b186e609081bc54bebae0d924ea708dbefd8716c6450fe7b9a31ea95c7d0bfe0f02480b882c350432a4d394c37dfdd22b30d3b83e42ab043b25dd6f424dd5220b1ce036c0e61ab6b3b7b995bed64494d0f8af5a32f93f6d564718f47bd20824b2a0c9cb184b8eacc9e33b4bf9859d49e43933731e5ba1cb26ac413a86dd8c58e9abe3b6105069b79e41fb37c7907d097df27fe3ff10efe1db718634e219e3d14f5e3366b991fcc89cf800e2c8bfb08bb05c9dd2a83848b1e27158a6a18e29e207fad8a5d29be17ccdfb08ddcc45f4096c9d9cd905efa129320d752a82c9b138c73e1c0fa6741bb6a050101f7217924be55a3b0fcbdabe37aa2189b4865b2a312d36cc23ba73cd514391411a8b05c7e2ac7494c3d7e1771543a79f30565a9c9a5f206066ccd012e5c7925c3406394996b7e7c5060cb96aaf08d2d71561840de280eeed2b3adc11cf0001f86c4f15580a5f49a59a3609032896c673a614e70bb52c30da45c1d9ac4b5bf1a98ea21d8964a7538e9e0b08e7c58e330e71dfc192686be8aec2872cb585512e45e1cd8b5eadbecd73a8988bed3c750084e87af29243da2b767752c330e0d399e6a0a9a42e263518904ded3fcbfb9ac40cc1440ff7662aac62e50be68b9f475aea5d60b3ac4c1839d3fb4299a00aff9cddf12f46bcd87840529f3784ad082e832a3d75299bb2d9b80a7906e66e8e36d0335f7b6ec2625aa50c652bfdfa6d4e22bf91b1dbec4133cede58cd31e938450a28f5511c23c23fe40a8f2a0f069b6b18355c4c4d1095bf22fa21a21d862e624f28ef8a86b5c733a0d26f8812386754d889cb9ff57eb887e5dc2cc20da0f37d09c62be6c588df130a8b4f0544648ac6ca94698556c8c878671d95f5ad931b89992c39ed565ead42addd298259831ad19a453792cf296176d9defb20c9ec3a20134ada3a5fe2b8dc396e1b7a2756b7c7802ee83428a6edcc95bcfac2ee2b21c65b33cb54a9f8507e83ae2ec65f29c0d58b6d30451d25a2e5b65fbd1afca1479125eb0457edc9d224cdea957012cb7a0be7b3ae736a10d3973733f17238385cb41905f18defbb64994f4b0ce83a401e1f9ad1076f127f21b9ec405418f8ad20a8dd0e8846c30efc18abecb0413aae728be178a29ee8d8d083c39eb1465a5a877f4e431f114b8b4c522d251f5f02e80028f30cce854080ada2abddd811db5d3e356dab8a03ece5c0425ca94dcdc5e97d63ab4eb87d8fbd9d46ccc474df2bbcb61a9156f230d0c37c5836adf67987279a178e4c084aaf6089eab084bbc13e8187545966447a67f0a59c006acb061944152befe3c2a78708c2f6c471581111e29a33762a9626bad6ae557ec977b8a22fce73d02d7bdd744177368200074bf6e76a7724cc1930838e9d772f77978281ff2eb0998e73bc0ee37a6c5c32734316232ba3fdb18a4497dc4f8ed14485d3aa96a83ce5111d1876ca2b73b49d940ff46fa5e68287ab45677fbd0deea5ac9da310c7823530a143b7cb01511e833d9d04165869581d2a43965f41bc1b7cb7630ed84909607ebc2428be101816ca55b55b85b31820ba17b054fc284e8a2d2f2355111dc9ff764a75825c51a06ec4dcecf6b226eb1c9954cb650629f61c0787ea8201f6feedd60ad579f9972a79b3d058151680839fe1bcc22c863e89215a3a3865a1b006d29d9cec88ff2f6bee90826ab221fec8b1e45a59cd1841788c51812eea8af5b9a5a4b75ba8ec5536e0067e02deeb673393ff055d0cf69ad4f90eb18f0e47ed09453f5819e5523ce6219fd0a36869c637cb176d2adb3e89fd5046cf0db3652e0bf6b4cbc6fdec0f20f0ff8389db4d5a1ed309daa80d87255b45eea6704e0385d834063483962a7fb9d40e8dc5466d441ca2213cbc95696ac31b0a7c43e99dc79f3a2ef2330edf34e181542b85720d8dd004283527d5c41156984e73998a3e076c9f1383cbf1fbafdf9c290b49d1d23e9515d0feaf73882a2b098de1ba41c57bdf821377774cbf9b546f819b2ff5c3a7f2dcb670cf7d70b8acfedec14a7c584f435b0ece65813ff526e5a24dda1f197fa4db5fed342ddc6c27567d1a1cc85dc87994076e569ce1460103d404450d060f452317013de6005a8ee1403c50f024c301f3ffffff5af5ffffffff6e0dbf6dad9bf5b7dd8a2636a52413c665af85cc18b4a6494a32252965d2f225c19d1a050000000000d9cb8c3c0104d803ea03b6c92fd3d0505b913c61d79c533ac60fa3e39538e14a21c3cc555776e366b0488d137ca0049226e0510913eea86409e7e891288119e56dfea94248d3199224244ca5142a48b7f8a12241022a69af51365ffd1e9780e408a9106a83a6ed7edf981b1223a055ea7793ec395d4d52843ae69c7afc2c2298e1d29a77a5cfffcf488f1d22922114e32baaf9a5b58544085a58fc58d22fab941007244140edb3bcae985cc7b74600b22001c2a9bff142c5be69aafc20992e7245eb7d2711f2c139af860e32a65116bfdf10b9b1ce63870818377af01761d8e8016244ceac724ccdddad40c2833b7b8eb6155eef2d33229243b283aaa49cc6d0e965651b43a28366742e8ef01eed41264202490eeca8040765d5198b495c96068f16921b282e429afce7f5b7a09114864a6c604ab14c98f6f08d9a5483e2d5b4777fd05fe193d0a08fd12b961ced926d181e90cce071fdcde223c68344069bfe24234e4ca46b6b01490cde92b2959af341e55ed17abcd5edfd14d4c85a2c60020ba0d1c5872bce9f229fcc43ee82f7d18a5bb37a6e28351a333f82639d43423cf0c18a47d62ed3b6fcb40547b4a0a1c3b938c2c72aeed37f6f6f29d5773538406387172342870f55a0362b5a1ee27ad71412a2c5472abeed94eeed93f03eed484808163c746041e38c0f54689e2cf4924c399476ec80c0c7293459e2fb99fdc3a6e8c31497ccf95eba4ebc6ab8f82805c23a9fa9a827a3ec1da9d13abac0c00729d8ef0d7923c4d56e35f818454a95e7787ae6a9d4178517a6d3baeda2875aa1703ea7e86e41a539f5f70314e9b1d87cb9ea5ddffff8849afad36f487324246487c8161f9ea8a3278b8f4e1cc49b95acd8e0e283137c0e42887fc87051c98f4d20bedf35c4dfc6325313654f4d6a5cbf4ca43234e8ac1c3e99ea60e2da97fbddf678f1181e1252638c0a74202424078e14828f4b687277632a8b9642c6125b69b98cbacb2996fda8c4bd5df7619a44cbfc2321212ef8a0443a6df688138d7b2a9f4465af1db7e6f7758392308751f9f2199f36cb9148af465f1d53cb5961482cba3779a918c4e6dd1e9125ef0dd9c9e208f91de1cf9c6ef3a021e5b5469c722fd39f1cfd6c950eef0f46e0964c939f68bc5df26311a8183c59aaf29c4fa628623759b7b193772766221821f4759c69cc69424428b3311bb3581c2bcb214cabe7b9b3780895c42b7c18a21c2c08fdea58d22ba51057c920f46acc84869310f5e9f552d7cc223a1f041e34c4de26b51f5505e1ff6e674fc994a9d7035150a7e346261d3cd3f50188ee3ef3dc2ff887c732934e9669a4ddc80fc85dd9ccacdb29aa7d58cb74b48f8d49dba97c5877ec92bafaeca1b25025f542d3ef2c7a389d5e53b9d4ca8332da41b3ea744cdde1e1a4821077d9b22ed1ce48cd72e709d70af2e91dbca4757325d72d314f8e26cbec658ef511092bd21db395efcab535ba8a65adff54cec6ce13a9625591de6233f2659a1c485261182def7fb33f57413d24a870fd35d43ac6d48fab059253684964a6c892a84a8125519142f7cf3467aa1764344946710af2b772da51f96e9488225d427cd2b69945e96405982009c57bbb7ec1fe4e75a780e268499eccdef1bb54f78984fe25950d71fe999678c2a85a3164b685fa5127544dd3db35eb1417e644e9bdbad5fd43cdd24d14439c768ccf41452c174834c17f929daca46dfa94cb849d92aed9b830269cd3d65e3163fe4c74896f6db4fb5513915822997334f5f7994afca33ca5dc3b1a53ef269050c2f9bcaab5935f6b9749b429b24d3fea2629f64a2461eaddf7cef172b75991282ce68cfacc9e363a9040d667513d11fb1cbde4117b5af1dccb6529c449e2886b2de5cf5be51d0d37028d9e4f76af84ac5e19f12865797173089552bb887d469325cf5fb6f761814411251bd38df14cc913912411ae9a7b560abf69d508438208649031888ab193b40e490ed17d5f90cf4e2989214a6396298b9ae76b37121292024921ccf4f36a1d0fa52b891066fdb48c2ddb49c63688ea845ee7e8693e620a22b56f1e6a673cf45d81b064ced95fdf02885472f9ccfb794f298de40fb5458d41644d3190f8c1fc49c6fab75f02491fcc381554569eb64d7a49f8f0c8d19636293b254b2aa243b20776535ce50fa2b474120b1c7ea3023446128f9d8008247a50d3c9fefba4ea634892875f2c7eaa65a9f2f8bf408287decadc828c4772c662dadb56d1b48ede4090dc218d317c949a6bb456edb06c075196543ca6664280457341c30c491d3e131fe4d2c9facd183aa0c1e5aa84f69a3ca5640ea8168bbd0c2653634a2207cc43feb956300ea6d5faf4494dfc55140e97e7d89c672db506ed0dbb8fda5f2571cb3addc086e6a063e3cd553c6d2868f554973baf5a336ca82dfd27ad9e25ae37c91aca9a651fcb2a5ce592a80191b5cf7ccd18923498528fcafee315426b341c3faf99274a437fb84372863f75765cd706061233f4d9e5c492d0246528f57ba9f1cf4ac8a007f9f4586e1e94501ac341fe667a8ee9426a522286e4d3627c4a6a97cf14066fdf53f435db0c0c9ffe76ee5ecb4dd57dc1ec49b56a6b4f0615f7c272eea12937051dde77a16859848666f4ccb1b9d078ac935aa3dee2be5b4006f39c9fc3e5d85d9921d182622b1bdb15b6e422c9021bcb4afa654dead7536548b0c047392d2a357fbe792557f0cd845cbab015bc3e197eaedec164525285d4994c93a1fe7a557581840a88582c0b94994e19cbad3c463385b35ccc75aebea9faf222478ff62d74209102679553492d0f523ca686240a5c2c0bf6f5f13a2c09141805581aa976314144755b294bec6ec9ccddf0627288773fb8fbb83e323144b946a809536b3a746652883ece4acc2da8586126441b6d3c657d5ecb9c9f0c62590d27be4c347cb688c1230c2eca9808c2a4353486cc9b573b2781d84d8f76e74c5a4a3513401834d347a734f5d7493976d0d062f287fe4fc5e2aa6bbe7efd50bcadad338dd1f55e1fb6a435cd67f0d261a3133e5437321b7fdb640f7cc765b98d17bd7b4df4806a4f4f614ee63edd51c1240f45d19643a63ead371e19133c18ca53b4a0ea62feb8a5c91969105eba4ee3bf537387748c79ce7c276dda01f99f92ae647e51842582491d0ebf999449fd78bd29ae43644207fbd544667fbefb9c339903e2a2c6aecaa636a3692287644cb2e265bbe2f069b61c3fc71461752f1c5231fb85ba51da62f206ff93c811d54144ca3d7080e00b1b13080941133720c494b6158b6a57511d3e9274ac7b61c68a408c323e1012f280491b3a65aef7595e6e7399b021a5ec4608d1eb50f935fc265bd3c674d5a0584a325ae5ade48b2669f83ba899a5d46723731b98a0c14b9d199438a12254ed000d1e366ee4f082060a266728e5755df8142ee2723398bdf93d68b9d327721998bba062cc4efca9870c6b6ab2acdc7f5ad31e03de5a318647510c66ac7f0e6329554e3261c8f2ef2ae66d68901d180c6affc1c35cd6780a0a265f287c7bfef12b5997a35e50eb42dab109174ab236bac688c6f86b0bb89f5ead69a8a5785a48473fa12aa9da0c31b3a0f88c8d7df6bd09e1040be5f4a1746eabfcb9c257c054752e71d1b5829a725c724dc974b453855a6c93343d3b6a979e5061af4fb24353574e6e4fe16829ffdd5b16d3734be14e42ef6509dd49c76c1410d27afbba3db8c50e0ad68ea7cffc5bbe95e1617060f2842d599cc9585c8da277c2263694c7fcbf0d93263c9fab4c5f663615222618bfcede766cf6dc25689a2ed58df4d1a534232121ef3a44788c3151c2bf3178968fab6efa4b429ac1b2375aee9ca38c0437d6dca652a1ad64cae408ccfa45379dbf89114c7b37d1ddd11b2dc2a2b1b594aacbce9b89e0c5f1bfa0628e657d4f8650d29d73f5b82995d57b2284c2f544473da929773a08f9eaf55bfb95e77681907dfeecb814622ac93f4883c64c29aa65e283d62c482ff94e7a900aed59435ff3ecd63cb092f4263bc0355b3689b33022ed890ef08fab7e1dc7724c7e0926396035ab7ef5ecc9b0e1090e36cdf41dfbeea4c46e82c90df82445e6539c6a4ed2890d107e79f4071da2efac490d506ebabb363223150809e96242834c34c7bbf4b92c99d2c064065b695cd2518dc1af890c58fb8aaf217cf6779fc4e0fe8dd70a233d45cfbfa2d0d164de126f24248486c415e924bbcec7352321213b44c058d7c147d28a6ea3c5139d0dd072809603ac544900031260c60d1e235fd808c3019505ba2c4c0104088019ec00090078ece8e1810104c0bfd81e5f84b1370e20801d3a1000020018910380a0c1d8e0a16364c70d111104809c21078e64061ebea30c4e86183870380e038090c18c1c0987e32800c8188c0d1e374676ac188c0d1e64d8e830181b3c5a0c1c3d4444100002064c4ce3cfa78be8108e64b11e2121385c870819365a6447183678e8d000c817cae961745fa7bc703e257457ce21de291b7130f6031a00e9822122cb02840b99dab0f4d85a9f947e04640bd76887c75cce717ad542712a546add6016b4d678b1944794aa110b7eab87ad38a7e45ef40aa6cb9c08f1e9649b02102bf0f39a45c45f76b86a2424e40b1d8ea341aab067e96b0f9700840aea5727df0cadbe910186c8afdf10a95123041908011619c082478f0dbc7bc05b0c0e08600b205330291cefadd975b451782f7e9c598d6f397ba080554a513e35cf88d38f60514c0f0660d100062c20813ca19041968531eef5eb26e1080a409c60f97bdc7071345eae9126a0ca378912997261f4204c70c366e6a45205ad276406c812be0f3a87ae4fb19b62204ad8b64ffb6c8c7233224812144d53ff23b251942048408dcad2b0499e8936418e604e9ace94ce5eea2b48078811f80ca5fccf432b0029c27da1dc42295399f1418890ce5976b37df0022043f832d54478ae9c55fb0c8008015d57736963e305481056f5b89af47720e8371b424b755d4ef30f102d7a499a4aba19a33ed07be672501f7b50de243627b9330f12aff4e15565846abe8336ad2a66ce900efed3d0dca1d2a91d25901cecaa374209f97ed14f1c9c925e9edd57b9ef6f700c21f4fe3a36387fc86f4d4aac411b222d9606d9212ca441294253d734c951dade026406261933c8aa8cc900912164faf4141919031203b6940abab4df685339af3877ba8aa1657145e15395bdc5542b4a3ab5b5725c543061051a2c7389937f29fe5b85c13ae690b927aac83669a84d253a28218f60928a645619bdf29a296f898b092a8e7a5fdaf4fb7696fc145a129a9bd49b9fcab129ca57ea323bf9a7b094023f9d97f2e89c435e458afcbf772e08cdff3e47a1e75e6976d29de7c58928d21b3dabf4b062298722d94189bdd2f6e976501c4be5d6e9d3153eccaa4f98f3e7946b0e16432c38269ea892e526cff1469f92a91c934e1432ea9a74e99863f59c38d6b646e9321d7f429bf884304b1edfa3ed569a28e75ce78ca922c624137e509bf36dc4c7662130c1841533a9bc1cf56a77b3c0e412dfbf7b89f68d537562094df4925af79e9183b13c42422230a944b27df6328667cce0a184a163771efbb78bc924fa8a9fe3e39d32b12490f13b850c7315e735658841011d3f89c4ab498ce7312f0b5142a252f76542c996b1e8993ca2309f9b3f541c61b08f0db2698d4c1a6192775a9a30a23421c459886bb8145dc4e12f938d5ad2f63153041feadde40895637d2e11297d62a9b9058445a893c8288ca32886822008214010c46f3a7311483058481a8c0624c2b890b4ca0f13808088e3409138108c44616118844114c3201002210cc220104d198390618c727633f3e95239b3d807b4a614e881d4dcb93e1874c15280c10d48ba69c2bd4075052e59ef0a74369576e0dfa6a935e049e2b8c9c2fa2446b67cacb8275a3994e6b7b16d83682c474bbec82b54c0c7a64f90f23f2d94876f2c811b98e93773cb79f1590e93110f121f3554f70fd2c8a2e681f98caed9db462af52419bf216c6e20ab25f6a766533504678d292f1af5f39b69ae04e00f841814504e8b7f710966c5c29392d8ce5b2fd01a4949702562172d99d471eef6c9e51540bc918e639b7381e482a7d447c23594001940fe388c17ec43e19284c6e4fb6c890f89840937de26aee98789c798004ea026042e43cb229a0465a54971e75fe1c1099dcbe67480c24334b0e02f09a63291e6a7a73aa167b3f747d997dec4ac60a14258d5a30561298abc7c7ca2e4d0014d5d3488d4ac76ec0cc9e4471948bb492ab39ddecfdfa52169d70d24c08c5770191f2da124906f8723fc08dac0414059e3af515bc900059e6442f66897f77469758479a90533213789a164324e12330e3c8e3a5eeabe023218c06554a7f3b984e87e7d8bc52ab054a507589f1024ebb48d6484c411a515231f0400d9bf234b4e324191c14bc1905447321d18f615ed490275de9380ebfbb24765bc55696e9552408c4acbe6391219e19f7f49cd7bf1dd3248b1404ed943d1ca1bc1a6173a2ab3273a36086320f79f55b408b75ac8e18e8baa10d67dae0da6c38018985ec74a2d67bc6a2c92f4a32fca3ecc138fb1b0570b5f0635d6cb2895761def4320d04572c86537fc616289d859f7e20eaf491e804ec6aea85699ea2b2868be09848b4a62283c148564dcb7faafc8e6cc1be219ab4154fee04ff164b82147f8e57d53813ec6fa459e3ce0ad9c7e907216c9bede1060109557d3050b14363ab659080121bd8292ef01bcfe5c4aeecad02eb6a58296ed599dd3828524e0491448e239ce73859bed8b881ca6dfbdbc8142172a1e6986314f39c8f785160fd971d2dffb684a9390e0ed429b8e3a64356e55ba23ff3070b6335bb5b1436cd1748c133b16d1b934f75362a52cd27d41ec20541f1595b1a8bf8e891c704db8c9e16584142a29fda0aee97c20b22be63a3fc7ca2e7ca658249ff729407bc5331e939d33fd36f4522737c9391e8c9d9ad3a4c41a4a1c621751c9ebb39685c99fa6b4dcb860d361f717862a4cd7f5a436f6f5ffe1065a1718ef06046bad3165759cb2977c7b36b324f0abeabbd42f923390899db6627784dd43cf299f26da7262c3e4adbfd9e0e2dec122674eae192a526dda704f32651d80c7991a204d467501030c80064020eed4292e71844e1301a3294794a1b17e942613dc8c529157e3acb7ee82fcd0b0d9e4268fba8fdc083fad35e496893240f667482fe0a2f117ad44e9d99966f293cd2cad181b469e339548a820acb8a0612919b017f8c0e9ea302890e19f6fa9f94b4bd5b8e3a8290b1f82861bfa38900d2e8832cb056f43c4f7c7ed7b01ebd6411355ebebe2d0c76f81b46cb1026205ea9d1086f50bd0313a305a2b950a8738976aa902bf948476299fe8650991a30f716b6f8894de4a94047c5a63a4450f2fb7673168eaca8ec3bfdfed2c64c11496974f26d1dc7a99da6e0f662ed8f596df0924cd41b170f12c3fd80db256fa98e04216795eeca4762601d4bc8d96e4945265b94108c8fe8005c91f7e90845a9e2362c4b008d63aa65e097b9017d7cbd96f80dc0eac9247491bc8ecab7dc7003070eb52c0155f823bae1a6ce7bffa2d6b8e35ac28ee445a51fa81f5cbdbe308200a3b5543e171c7c491d84f857474c88bf28b19c00853656294fdf3f79d441187b721e5793c19e62abb219ce5f42518ddb099abf32e659993aa03a3e452f8b33dfc71c7e5df7fcb7986d3049261db981b5f5d31481de6488792410755bbf0c1ab41cb3661a7878b229bf0848a59b5fdd86f74e387877eeb530e0b6d7db5bf04cc6254a4482c67770226ee594d2bc8d1442a1f16387bdeced8e6ebe503303fb0de3639d0d707251f51cce827c0f30a9d5224037e602e03f6f690b2a38efd9027b017322a12f058c9023085497b64ff71665108aa4d44c8159a9f2fce72164d2ded2fda4fbf8cc3d63f8468c20bea0d932d5f86c6df29de575af76105723eb264b061a7118a2d1cd50a8732b73ff9dd639d0d72fb8dfa15d1d050ff0dabd3e69d796c97ef325d7ecf9ea6f387b41ea12230b7af6ef8a4d9b70166d2d2e38cec3280fc1e72ffe5519e2013e39565f755f2a2e9c39b37c464902620f8ad5710f68021a84d90ccfe225684507709a28a53f22c195c5996c4ce10ef432e80aacaed6ddb1326e13cfb75f2630813801e130658421d0499d1a8e4e27e209459dd67dd81adf6ab460c3da1859107ec2d9ecad5250192ce1e87c9fcfae26b5cb91267a3d877211e755622da1658c4a801e1c1238c6739a17d66bf9c64a536ee518567bbd62c2eba37c7e83e52fe6d8f356dc244711a754702ffd18634c4f3057e7d17fc3d815fa5beae5c173ea083b01568eaf1f4ced963975f1d35b69e5608189a28d44e386503abda1684b4a71d7ec30739b2637ceaaedd4cf4b3d778f5d3ce85cf517e4338cd50d9d43a1bfe139abc3345e9050b20d71044d76083a6ea1f1a237e9d5488fa2848aa9351367c6628f2c2fef8e1c4a5be220c6e2a7f13c186a4255d08a707068055211726611a35211be3ed96c6bded4b074f33ba961a52252705e07ede8d60d1ea2fdec6f902d60eb7a256e819e587a43bef8c23eca3dfa8158a19bc1158f42f1ad4efbd33b296bf535adfba2dfa4a6aeeb114d47b75eca42052baca7b9a58a3367f10fe099f04fe1bbe3d06ef0cfaac98f52f54508ec2a9b4e5cd504a795d8f585e53de5caa0198a97642b7ae38b1eb69d03bf3c8a5106c5c56dbe710e170b2f649f3f58ceb45206a1b67cfae6738926145355193353962cfb4dad15af002418d06a1bf8d2c5524398e588af641d609c1543d8c4c8256fcc196efb30556678ad5fe407234ee11038e49ab24faa1e3172546c159eb7f2d4e642735a470a004589c44516a41eecae55f80b1aa872b5b5601d687998211741cd161517f28f12ca6e199a0e720dad0e6ac0b92fae6e5c35e35817c86c983562bf24c47629872a95c9665da613c4b2b762753beda118b84450e5161afe34b563d03a9de173216ca94f8ccd8024fb56a7681e5a289c2f83aa83eef7d8171aba851f59df96894abfc844eea3c490ac04a6b27f1cd7f7a1e71b9dcccb0c7ac6b2ff78cf667a90c3940fd48731e6cb44ba18b2a1a8c25505679680effd00f800f815b32aa4eae3a3d76e8463130f9167639484a24bc6df9e05854892828497f4d93ff175398b30cb058ed23db3bda2faea210b40861144ee862b2465ee47611888120560ea5363a560b77085efa7334d662c207fc157666bbf26a411b695cdea5a1bd7c5e3d54e249ac6592c91b16734208673bc355a64f5fa550e8cab996f54b22d3efd1a9c9d9796dbe71eb0da8f8757da36eca8a21452f3496482dd291d6989837d8fe0c71031cc7895d284648a3a6b99a964e3c6d8c78f83a91e70bb4b4752eb2d78121cecf89229324803408a217f39f99a8a0ac208e98cb775743878afcdc8125217cb2a84a7a38757d1fa405f26cd007bba6a5a9119397f6912e33a361316ffa2148b8125d59784c57890c0aa9f854085d908c807d34ad92819814e8367a8ff03e1d40a12fbc91adb7c27e76e070910188c92966c466510a1e2952a2c90c67922dbbe3fd3820eb7b46970c3f3a5a23b24a934b98a2958bc3df07a690e7a205599bc91c55b491e173d938e1b919975dfb17111f61525b640925543e9122d80a165260ce5c63338800106df9b0cb29422b1f0de5cfbf7a895e2a930e71b4f4d990c3b8bfde4a5519f5774eb03914887733100c7168f3fbdd7dde455db9a9a434c81a638f5db6d2376b05d66188bb2fff590d14b4ca8aa5facf6c2b5b274020e005865a36895446a8a987ff5315b4046829c5224d8033a40d2c4145a6a04342a80eb22654ed2ab83d9ce10cde48f9229252c5b7d2098ca6e5467cd97232f2825e494ac9e55e983df8c7c8e5dc3cf861a40959e4c19e5ad98f949453aa778859e43439328e914422f0a5b4fe234b03c5612d9080b745ad2333a2c4c874e6f68b512e7d1d7336e94707e810650da4a0a60d8d515d99d956dedda9a521a49141f332f21bbf03e9fe52fc0021ff79ed3fec5fd93fccbf6880fd5c9cfdc06c86ca4b0d47d7fc919f809ae03537ca962ee628c6015905d72db79027ebd116e367e0b9567c99e362edcd45cb354f1d76e361d69ff0f6008370a08b6c995c8180a76b187ba4698d99c1ac8319c2845960389884db891559f0d0cdb89dab77bcaafb9320753e98e0316b36f50cd6218e0f859f8a58af3ecdf885301b6a2409", + "0x31a3a2ce3603138b8b352e8f192ca55a4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x3f1467a096bcd71a5b6a0c8155e208104e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950f6584bfaf470c1b26175646980f6f8fe475130d21165446a02fb1dbce3a7bf36412e5d98f4f0473aed9252f349": "0x520b48452969f6ddf263b664de0adb0c729d0e0ad3b0e5f3cb636c541bc9022a", + "0xd5c41b52a371aa36c9254ce34324f2a54e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0x2b06af9719ac64d755623cda8ddd9b944e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcd710b30bd2eab0352ddcc26417aa1940b76934f4cc08dee01012d059e1b83ee": "0x00", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19500d1064d79ff558056772616e800e6d7d1afbcc6547b92995a394ba0daed07a2420be08220a5a1336c6731f0bfa": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa195043f25e7a03a30387696d6f6e8092156f54a114ee191415898f2da013d9db6a5362d6b36330d5fc23e27360ab66": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa19507f532159f03d44eb6175646980f49eae66a0ac9f610316906ec8f1a0928e20d7059d76a5ca53cbcb5a9b50dd3c": "0x62475fe5406a7cb6a64c51d0af9d3ab5c2151bcae982fb812f7a76b706914d6a", + "0x1405f2411d0af5a7ff397e7c9dc68d194e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xc2261276cc9d1f8598ea4b6a74b15c2f4e7b9012096b41c4eb3aaf947f6ea429": "0x0000", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950ab7b30d24546522861756469804e262811acdfe94528bfc3c65036080426a0e1301b9ada8d687a70ffcae99c26": "0x8062e9c21f1d92926103119f7e8153cebdb1e5ab3e52d6f395be80bb193eab47", + "0xcec5070d609dd3497f72bde07fc96ba0726380404683fc89e8233450c8aa1950a00d3cb0425699a66772616e804bea0b37e0cce9bddd80835fa2bfd5606f5dcfb8388bbb10b10c483f0856cf14": "0xfa373e25a1c4fe19c7148acde13bc3db1811cf656dc086820f3dda736b9c4a00", + "0x3a65787472696e7369635f696e646578": "0x00000000" }, "childrenDefault": {} } diff --git a/node/service/src/chain_spec.rs b/node/service/src/chain_spec.rs index 3aa03350113b..a2cc61507b5d 100644 --- a/node/service/src/chain_spec.rs +++ b/node/service/src/chain_spec.rs @@ -157,7 +157,12 @@ pub fn wococo_config() -> Result { } /// The default parachains host configuration. -#[cfg(any(feature = "rococo-native", feature = "kusama-native", feature = "westend-native"))] +#[cfg(any( + feature = "rococo-native", + feature = "kusama-native", + feature = "westend-native", + feature = "polkadot-native" +))] fn default_parachains_host_configuration( ) -> polkadot_runtime_parachains::configuration::HostConfiguration< polkadot_primitives::v1::BlockNumber, @@ -365,6 +370,10 @@ fn polkadot_staging_testnet_config_genesis(wasm_binary: &[u8]) -> polkadot::Gene claims: polkadot::ClaimsConfig { claims: vec![], vesting: vec![] }, vesting: polkadot::VestingConfig { vesting: vec![] }, treasury: Default::default(), + configuration: polkadot::ConfigurationConfig { + config: default_parachains_host_configuration(), + }, + paras: Default::default(), } } @@ -1311,6 +1320,10 @@ pub fn polkadot_testnet_genesis( claims: polkadot::ClaimsConfig { claims: vec![], vesting: vec![] }, vesting: polkadot::VestingConfig { vesting: vec![] }, treasury: Default::default(), + configuration: polkadot::ConfigurationConfig { + config: default_parachains_host_configuration(), + }, + paras: Default::default(), } } @@ -1546,7 +1559,10 @@ pub fn rococo_testnet_genesis( authority_discovery: rococo_runtime::AuthorityDiscoveryConfig { keys: vec![] }, sudo: rococo_runtime::SudoConfig { key: root_key.clone() }, configuration: rococo_runtime::ConfigurationConfig { - config: default_parachains_host_configuration(), + config: polkadot_runtime_parachains::configuration::HostConfiguration { + max_validators_per_core: Some(1), + ..default_parachains_host_configuration() + }, }, hrmp: Default::default(), paras: rococo_runtime::ParasConfig { paras: vec![] }, @@ -1836,18 +1852,23 @@ pub fn rococo_local_testnet_config() -> Result { )) } -/// Wococo is a temporary testnet that uses the same runtime as rococo. +/// Wococo is a temporary testnet that uses almost the same runtime as rococo. #[cfg(feature = "rococo-native")] fn wococo_local_testnet_genesis(wasm_binary: &[u8]) -> rococo_runtime::GenesisConfig { rococo_testnet_genesis( wasm_binary, - vec![get_authority_keys_from_seed("Alice"), get_authority_keys_from_seed("Bob")], + vec![ + get_authority_keys_from_seed("Alice"), + get_authority_keys_from_seed("Bob"), + get_authority_keys_from_seed("Charlie"), + get_authority_keys_from_seed("Dave"), + ], get_account_id_from_seed::("Alice"), None, ) } -/// Wococo local testnet config (multivalidator Alice + Bob) +/// Wococo local testnet config (multivalidator Alice + Bob + Charlie + Dave) #[cfg(feature = "rococo-native")] pub fn wococo_local_testnet_config() -> Result { let wasm_binary = rococo::WASM_BINARY.ok_or("Wococo development wasm not available")?; diff --git a/node/service/src/lib.rs b/node/service/src/lib.rs index 3c6358ba7cb8..191f063f5e1b 100644 --- a/node/service/src/lib.rs +++ b/node/service/src/lib.rs @@ -24,12 +24,10 @@ mod parachains_db; mod relay_chain_selection; #[cfg(feature = "full-node")] -mod overseer; +pub mod overseer; #[cfg(feature = "full-node")] -pub use self::overseer::{ - create_default_subsystems, OverseerGen, OverseerGenArgs, RealOverseerGen, -}; +pub use self::overseer::{OverseerGen, OverseerGenArgs, RealOverseerGen}; #[cfg(all(test, feature = "disputes"))] mod tests; @@ -54,8 +52,9 @@ use { pub use sp_core::traits::SpawnNamed; #[cfg(feature = "full-node")] pub use { - polkadot_overseer::{Handle, Overseer, OverseerHandle}, + polkadot_overseer::{Handle, Overseer, OverseerConnector, OverseerHandle}, polkadot_primitives::v1::ParachainHost, + relay_chain_selection::SelectRelayChain, sc_client_api::AuxStore, sp_authority_discovery::AuthorityDiscoveryApi, sp_blockchain::HeaderBackend, @@ -68,6 +67,8 @@ use polkadot_subsystem::jaeger; use std::{sync::Arc, time::Duration}; use prometheus_endpoint::Registry; +#[cfg(feature = "full-node")] +use service::KeystoreContainer; use service::RpcHandlers; use telemetry::TelemetryWorker; #[cfg(feature = "full-node")] @@ -302,14 +303,15 @@ fn jaeger_launch_collector_with_agent( } #[cfg(feature = "full-node")] -type FullSelectChain = relay_chain_selection::SelectRelayChainWithFallback; +type FullSelectChain = relay_chain_selection::SelectRelayChain; #[cfg(feature = "full-node")] -type FullGrandpaBlockImport = grandpa::GrandpaBlockImport< - FullBackend, - Block, - FullClient, - FullSelectChain, ->; +type FullGrandpaBlockImport = + grandpa::GrandpaBlockImport< + FullBackend, + Block, + FullClient, + ChainSelection, + >; #[cfg(feature = "light-node")] type LightBackend = service::TLightBackendWithHash; @@ -319,36 +321,29 @@ type LightClient = service::TLightClientWithBackend; #[cfg(feature = "full-node")] -fn new_partial( +struct Basics +where + RuntimeApi: ConstructRuntimeApi> + + Send + + Sync + + 'static, + RuntimeApi::RuntimeApi: + RuntimeApiCollection>, + ExecutorDispatch: NativeExecutionDispatch + 'static, +{ + task_manager: TaskManager, + client: Arc>, + backend: Arc, + keystore_container: KeystoreContainer, + telemetry: Option, +} + +#[cfg(feature = "full-node")] +fn new_partial_basics( config: &mut Configuration, jaeger_agent: Option, telemetry_worker_handle: Option, -) -> Result< - service::PartialComponents< - FullClient, - FullBackend, - FullSelectChain, - sc_consensus::DefaultImportQueue>, - sc_transaction_pool::FullPool>, - ( - impl service::RpcExtensionBuilder, - ( - babe::BabeBlockImport< - Block, - FullClient, - FullGrandpaBlockImport, - >, - grandpa::LinkHalf, FullSelectChain>, - babe::BabeLink, - beefy_gadget::notification::BeefySignedCommitmentSender, - ), - grandpa::SharedVoterState, - std::time::Duration, // slot-duration - Option, - ), - >, - Error, -> +) -> Result, Error> where RuntimeApi: ConstructRuntimeApi> + Send @@ -400,12 +395,53 @@ where jaeger_launch_collector_with_agent(task_manager.spawn_handle(), &*config, jaeger_agent)?; - let select_chain = relay_chain_selection::SelectRelayChainWithFallback::new( - backend.clone(), - Handle::new_disconnected(), - polkadot_node_subsystem_util::metrics::Metrics::register(config.prometheus_registry())?, - ); + Ok(Basics { task_manager, client, backend, keystore_container, telemetry }) +} +#[cfg(feature = "full-node")] +fn new_partial( + config: &mut Configuration, + Basics { task_manager, backend, client, keystore_container, telemetry }: Basics< + RuntimeApi, + ExecutorDispatch, + >, + select_chain: ChainSelection, +) -> Result< + service::PartialComponents< + FullClient, + FullBackend, + ChainSelection, + sc_consensus::DefaultImportQueue>, + sc_transaction_pool::FullPool>, + ( + impl service::RpcExtensionBuilder, + ( + babe::BabeBlockImport< + Block, + FullClient, + FullGrandpaBlockImport, + >, + grandpa::LinkHalf, ChainSelection>, + babe::BabeLink, + beefy_gadget::notification::BeefySignedCommitmentSender, + ), + grandpa::SharedVoterState, + std::time::Duration, // slot-duration + Option, + ), + >, + Error, +> +where + RuntimeApi: ConstructRuntimeApi> + + Send + + Sync + + 'static, + RuntimeApi::RuntimeApi: + RuntimeApiCollection>, + ExecutorDispatch: NativeExecutionDispatch + 'static, + ChainSelection: 'static + SelectChain, +{ let transaction_pool = sc_transaction_pool::BasicPool::new_full( config.transaction_pool.clone(), config.role.is_authority().into(), @@ -674,23 +710,53 @@ where let disable_grandpa = config.disable_grandpa; let name = config.network.node_name.clone(); - let service::PartialComponents { + let basics = new_partial_basics::( + &mut config, + jaeger_agent, + telemetry_worker_handle, + )?; + + let prometheus_registry = config.prometheus_registry().cloned(); + + let overseer_connector = OverseerConnector::default(); + let overseer_handle = Handle::new(overseer_connector.handle()); + + let chain_spec = config.chain_spec.cloned_box(); + + // we should remove this check before we deploy parachains on polkadot + // TODO: https://github.com/paritytech/polkadot/issues/3326 + let is_relay_chain = chain_spec.is_kusama() || + chain_spec.is_westend() || + chain_spec.is_rococo() || + chain_spec.is_wococo(); + + let local_keystore = basics.keystore_container.local_keystore(); + let requires_overseer_for_chain_sel = local_keystore.is_some() && + is_relay_chain && + (role.is_authority() || is_collator.is_collator()); + + let select_chain = SelectRelayChain::new( + basics.backend.clone(), + overseer_handle.clone(), + requires_overseer_for_chain_sel, + polkadot_node_subsystem_util::metrics::Metrics::register(prometheus_registry.as_ref())?, + ); + + let service::PartialComponents::<_, _, SelectRelayChain<_>, _, _, _> { client, backend, mut task_manager, keystore_container, - mut select_chain, + select_chain, import_queue, transaction_pool, other: (rpc_extensions_builder, import_setup, rpc_setup, slot_duration, mut telemetry), - } = new_partial::( + } = new_partial::>( &mut config, - jaeger_agent, - telemetry_worker_handle, + basics, + select_chain, )?; - let prometheus_registry = config.prometheus_registry().cloned(); - let shared_voter_state = rpc_setup; let auth_disc_publish_non_global_ips = config.network.allow_non_globals_in_dht; @@ -699,7 +765,7 @@ where // Substrate nodes. config.network.extra_sets.push(grandpa::grandpa_peers_set_config()); - if config.chain_spec.is_rococo() || config.chain_spec.is_wococo() { + if chain_spec.is_rococo() || chain_spec.is_wococo() { config.network.extra_sets.push(beefy_gadget::beefy_peers_set_config()); } @@ -784,7 +850,6 @@ where col_data: crate::parachains_db::REAL_COLUMNS.col_dispute_coordinator_data, }; - let chain_spec = config.chain_spec.cloned_box(); let rpc_handlers = service::spawn_tasks(service::SpawnTasksParams { config, backend: backend.clone(), @@ -804,7 +869,10 @@ where let overseer_client = client.clone(); let spawner = task_manager.spawn_handle(); - let active_leaves = futures::executor::block_on(active_leaves(&select_chain, &*client))?; + // Cannot use the `RelayChainSelection`, since that'd require a setup _and running_ overseer + // which we are about to setup. + let active_leaves = + futures::executor::block_on(active_leaves(select_chain.as_longest_chain(), &*client))?; let authority_discovery_service = if role.is_authority() || is_collator.is_collator() { use futures::StreamExt; @@ -841,7 +909,6 @@ where None }; - let local_keystore = keystore_container.local_keystore(); if local_keystore.is_none() { tracing::info!("Cannot run as validator without local keystore."); } @@ -852,6 +919,7 @@ where let overseer_handle = if let Some((authority_discovery_service, keystore)) = maybe_params { let (overseer, overseer_handle) = overseer_gen .generate::>( + overseer_connector, OverseerGenArgs { leaves: active_leaves, keystore, @@ -879,43 +947,37 @@ where tracing::error!("Failed to init overseer: {}", e); e })?; - let handle = Handle::Connected(overseer_handle.clone()); - let handle_clone = handle.clone(); - - task_manager.spawn_essential_handle().spawn_blocking( - "overseer", - Box::pin(async move { - use futures::{pin_mut, select, FutureExt}; - - let forward = polkadot_overseer::forward_events(overseer_client, handle_clone); - - let forward = forward.fuse(); - let overseer_fut = overseer.run().fuse(); - - pin_mut!(overseer_fut); - pin_mut!(forward); - - select! { - _ = forward => (), - _ = overseer_fut => (), - complete => (), - } - }), - ); - // we should remove this check before we deploy parachains on polkadot - // TODO: https://github.com/paritytech/polkadot/issues/3326 - let should_connect_overseer = chain_spec.is_kusama() || - chain_spec.is_westend() || - chain_spec.is_rococo() || - chain_spec.is_wococo(); - - if should_connect_overseer { - select_chain.connect_to_overseer(overseer_handle.clone()); - } else { - tracing::info!("Overseer is running in the disconnected state"); + let handle = Handle::new(overseer_handle.clone()); + + { + let handle = handle.clone(); + task_manager.spawn_essential_handle().spawn_blocking( + "overseer", + Box::pin(async move { + use futures::{pin_mut, select, FutureExt}; + + let forward = polkadot_overseer::forward_events(overseer_client, handle); + + let forward = forward.fuse(); + let overseer_fut = overseer.run().fuse(); + + pin_mut!(overseer_fut); + pin_mut!(forward); + + select! { + _ = forward => (), + _ = overseer_fut => (), + complete => (), + } + }), + ); } Some(handle) } else { + assert!( + !requires_overseer_for_chain_sel, + "Precondition congruence (false) is guaranteed by manual checking. qed" + ); None }; @@ -1232,6 +1294,32 @@ where Ok((task_manager, rpc_handlers)) } +#[cfg(feature = "full-node")] +macro_rules! chain_ops { + ($config:expr, $jaeger_agent:expr, $telemetry_worker_handle:expr; $scope:ident, $executor:ident, $variant:ident) => {{ + let telemetry_worker_handle = $telemetry_worker_handle; + let jaeger_agent = $jaeger_agent; + let mut config = $config; + let basics = new_partial_basics::<$scope::RuntimeApi, $executor>( + config, + jaeger_agent, + telemetry_worker_handle, + )?; + + use ::sc_consensus::LongestChain; + // use the longest chain selection, since there is no overseer available + let chain_selection = LongestChain::new(basics.backend.clone()); + + let service::PartialComponents { client, backend, import_queue, task_manager, .. } = + new_partial::<$scope::RuntimeApi, $executor, LongestChain<_, Block>>( + &mut config, + basics, + chain_selection, + )?; + Ok((Arc::new(Client::$variant(client)), backend, import_queue, task_manager)) + }}; +} + /// Builds a new object suitable for chain operations. #[cfg(feature = "full-node")] pub fn new_chain_ops( @@ -1248,50 +1336,27 @@ pub fn new_chain_ops( > { config.keystore = service::config::KeystoreConfig::InMemory; + let telemetry_worker_handle = None; + #[cfg(feature = "rococo-native")] if config.chain_spec.is_rococo() || config.chain_spec.is_wococo() { - let service::PartialComponents { client, backend, import_queue, task_manager, .. } = - new_partial::( - config, - jaeger_agent, - None, - )?; - return Ok((Arc::new(Client::Rococo(client)), backend, import_queue, task_manager)) + return chain_ops!(config, jaeger_agent, telemetry_worker_handle; rococo_runtime, RococoExecutorDispatch, Rococo) } #[cfg(feature = "kusama-native")] if config.chain_spec.is_kusama() { - let service::PartialComponents { client, backend, import_queue, task_manager, .. } = - new_partial::( - config, - jaeger_agent, - None, - )?; - return Ok((Arc::new(Client::Kusama(client)), backend, import_queue, task_manager)) + return chain_ops!(config, jaeger_agent, telemetry_worker_handle; kusama_runtime, KusamaExecutorDispatch, Kusama) } #[cfg(feature = "westend-native")] if config.chain_spec.is_westend() { - let service::PartialComponents { client, backend, import_queue, task_manager, .. } = - new_partial::( - config, - jaeger_agent, - None, - )?; - return Ok((Arc::new(Client::Westend(client)), backend, import_queue, task_manager)) + return chain_ops!(config, jaeger_agent, telemetry_worker_handle; westend_runtime, WestendExecutorDispatch, Westend) } #[cfg(feature = "polkadot-native")] { - let service::PartialComponents { client, backend, import_queue, task_manager, .. } = - new_partial::( - config, - jaeger_agent, - None, - )?; - return Ok((Arc::new(Client::Polkadot(client)), backend, import_queue, task_manager)) + return chain_ops!(config, jaeger_agent, telemetry_worker_handle; polkadot_runtime, PolkadotExecutorDispatch, Polkadot) } - #[cfg(not(feature = "polkadot-native"))] Err(Error::NoRuntime) } diff --git a/node/service/src/overseer.rs b/node/service/src/overseer.rs index 66156fd18298..4651626d46b5 100644 --- a/node/service/src/overseer.rs +++ b/node/service/src/overseer.rs @@ -15,6 +15,7 @@ // along with Polkadot. If not, see . use super::{AuthorityDiscoveryApi, Block, Error, Hash, IsCollator, Registry, SpawnNamed}; +use lru::LruCache; use polkadot_availability_distribution::IncomingRequestReceivers; use polkadot_node_core_approval_voting::Config as ApprovalVotingConfig; use polkadot_node_core_av_store::Config as AvailabilityConfig; @@ -22,7 +23,16 @@ use polkadot_node_core_candidate_validation::Config as CandidateValidationConfig use polkadot_node_core_chain_selection::Config as ChainSelectionConfig; use polkadot_node_core_dispute_coordinator::Config as DisputeCoordinatorConfig; use polkadot_node_network_protocol::request_response::{v1 as request_v1, IncomingRequestReceiver}; -use polkadot_overseer::{AllSubsystems, BlockInfo, Overseer, OverseerHandle}; +#[cfg(any(feature = "malus", test))] +pub use polkadot_overseer::{ + dummy::{dummy_overseer_builder, DummySubsystem}, + HeadSupportsParachains, +}; +use polkadot_overseer::{ + metrics::Metrics as OverseerMetrics, BlockInfo, MetricsTrait, Overseer, OverseerBuilder, + OverseerConnector, OverseerHandle, +}; + use polkadot_primitives::v1::ParachainHost; use sc_authority_discovery::Service as AuthorityDiscoveryService; use sc_client_api::AuxStore; @@ -99,12 +109,11 @@ where pub dispute_coordinator_config: DisputeCoordinatorConfig, } -/// Create a default, unaltered set of subsystems. -/// -/// A convenience for usage with malus, to avoid -/// repetitive code across multiple behavior strain implementations. -pub fn create_default_subsystems<'a, Spawner, RuntimeClient>( +/// Obtain a prepared `OverseerBuilder`, that is initialized +/// with all default values. +pub fn prepared_overseer_builder<'a, Spawner, RuntimeClient>( OverseerGenArgs { + leaves, keystore, runtime_client, parachains_db, @@ -124,10 +133,11 @@ pub fn create_default_subsystems<'a, Spawner, RuntimeClient>( candidate_validation_config, chain_selection_config, dispute_coordinator_config, - .. }: OverseerGenArgs<'a, Spawner, RuntimeClient>, ) -> Result< - AllSubsystems< + OverseerBuilder< + Spawner, + Arc, CandidateValidationSubsystem, CandidateBackingSubsystem, StatementDistributionSubsystem, @@ -147,7 +157,7 @@ pub fn create_default_subsystems<'a, Spawner, RuntimeClient>( CollatorProtocolSubsystem, ApprovalDistributionSubsystem, ApprovalVotingSubsystem, - GossipSupportSubsystem, + GossipSupportSubsystem, DisputeCoordinatorSubsystem, DisputeParticipationSubsystem, DisputeDistributionSubsystem, @@ -161,41 +171,44 @@ where Spawner: 'static + SpawnNamed + Clone + Unpin, { use polkadot_node_subsystem_util::metrics::Metrics; + use std::iter::FromIterator; - let all_subsystems = AllSubsystems { - availability_distribution: AvailabilityDistributionSubsystem::new( + let metrics = ::register(registry)?; + + let builder = Overseer::builder() + .availability_distribution(AvailabilityDistributionSubsystem::new( keystore.clone(), IncomingRequestReceivers { pov_req_receiver, chunk_req_receiver }, Metrics::register(registry)?, - ), - availability_recovery: AvailabilityRecoverySubsystem::with_chunks_only( + )) + .availability_recovery(AvailabilityRecoverySubsystem::with_chunks_only( available_data_req_receiver, Metrics::register(registry)?, - ), - availability_store: AvailabilityStoreSubsystem::new( + )) + .availability_store(AvailabilityStoreSubsystem::new( parachains_db.clone(), availability_config, Metrics::register(registry)?, - ), - bitfield_distribution: BitfieldDistributionSubsystem::new(Metrics::register(registry)?), - bitfield_signing: BitfieldSigningSubsystem::new( + )) + .bitfield_distribution(BitfieldDistributionSubsystem::new(Metrics::register(registry)?)) + .bitfield_signing(BitfieldSigningSubsystem::new( spawner.clone(), keystore.clone(), Metrics::register(registry)?, - ), - candidate_backing: CandidateBackingSubsystem::new( + )) + .candidate_backing(CandidateBackingSubsystem::new( spawner.clone(), keystore.clone(), Metrics::register(registry)?, - ), - candidate_validation: CandidateValidationSubsystem::with_config( + )) + .candidate_validation(CandidateValidationSubsystem::with_config( candidate_validation_config, Metrics::register(registry)?, // candidate-validation metrics Metrics::register(registry)?, // validation host metrics - ), - chain_api: ChainApiSubsystem::new(runtime_client.clone(), Metrics::register(registry)?), - collation_generation: CollationGenerationSubsystem::new(Metrics::register(registry)?), - collator_protocol: { + )) + .chain_api(ChainApiSubsystem::new(runtime_client.clone(), Metrics::register(registry)?)) + .collation_generation(CollationGenerationSubsystem::new(Metrics::register(registry)?)) + .collator_protocol({ let side = match is_collator { IsCollator::Yes(collator_pair) => ProtocolSide::Collator( network_service.local_peer_id().clone(), @@ -210,49 +223,63 @@ where }, }; CollatorProtocolSubsystem::new(side) - }, - network_bridge: NetworkBridgeSubsystem::new( + }) + .network_bridge(NetworkBridgeSubsystem::new( network_service.clone(), authority_discovery_service.clone(), Box::new(network_service.clone()), Metrics::register(registry)?, - ), - provisioner: ProvisionerSubsystem::new(spawner.clone(), (), Metrics::register(registry)?), - runtime_api: RuntimeApiSubsystem::new( + )) + .provisioner(ProvisionerSubsystem::new(spawner.clone(), (), Metrics::register(registry)?)) + .runtime_api(RuntimeApiSubsystem::new( runtime_client.clone(), Metrics::register(registry)?, spawner.clone(), - ), - statement_distribution: StatementDistributionSubsystem::new( + )) + .statement_distribution(StatementDistributionSubsystem::new( keystore.clone(), statement_req_receiver, Metrics::register(registry)?, - ), - approval_distribution: ApprovalDistributionSubsystem::new(Metrics::register(registry)?), - approval_voting: ApprovalVotingSubsystem::with_config( + )) + .approval_distribution(ApprovalDistributionSubsystem::new(Metrics::register(registry)?)) + .approval_voting(ApprovalVotingSubsystem::with_config( approval_voting_config, parachains_db.clone(), keystore.clone(), Box::new(network_service.clone()), Metrics::register(registry)?, - ), - gossip_support: GossipSupportSubsystem::new(keystore.clone()), - dispute_coordinator: DisputeCoordinatorSubsystem::new( + )) + .gossip_support(GossipSupportSubsystem::new( + keystore.clone(), + authority_discovery_service.clone(), + )) + .dispute_coordinator(DisputeCoordinatorSubsystem::new( parachains_db.clone(), dispute_coordinator_config, keystore.clone(), Metrics::register(registry)?, - ), - dispute_participation: DisputeParticipationSubsystem::new(), - dispute_distribution: DisputeDistributionSubsystem::new( + )) + .dispute_participation(DisputeParticipationSubsystem::new()) + .dispute_distribution(DisputeDistributionSubsystem::new( keystore.clone(), dispute_req_receiver, authority_discovery_service.clone(), Metrics::register(registry)?, - ), - chain_selection: ChainSelectionSubsystem::new(chain_selection_config, parachains_db), - }; - Ok(all_subsystems) + )) + .chain_selection(ChainSelectionSubsystem::new(chain_selection_config, parachains_db)) + .leaves(Vec::from_iter( + leaves + .into_iter() + .map(|BlockInfo { hash, parent_hash: _, number }| (hash, number)), + )) + .activation_external_listeners(Default::default()) + .span_per_active_leaf(Default::default()) + .active_leaves(Default::default()) + .supports_parachains(runtime_client) + .known_leaves(LruCache::new(KNOWN_LEAVES_CACHE_SIZE)) + .metrics(metrics) + .spawner(spawner); + Ok(builder) } /// Trait for the `fn` generating the overseer. @@ -263,6 +290,7 @@ pub trait OverseerGen { /// Overwrite the full generation of the overseer, including the subsystems. fn generate<'a, Spawner, RuntimeClient>( &self, + connector: OverseerConnector, args: OverseerGenArgs<'a, Spawner, RuntimeClient>, ) -> Result<(Overseer>, OverseerHandle), Error> where @@ -271,19 +299,22 @@ pub trait OverseerGen { Spawner: 'static + SpawnNamed + Clone + Unpin, { let gen = RealOverseerGen; - RealOverseerGen::generate::(&gen, args) + RealOverseerGen::generate::(&gen, connector, args) } // It would be nice to make `create_subsystems` part of this trait, // but the amount of generic arguments that would be required as // as consequence make this rather annoying to implement and use. } +use polkadot_overseer::KNOWN_LEAVES_CACHE_SIZE; + /// The regular set of subsystems. pub struct RealOverseerGen; impl OverseerGen for RealOverseerGen { fn generate<'a, Spawner, RuntimeClient>( &self, + connector: OverseerConnector, args: OverseerGenArgs<'a, Spawner, RuntimeClient>, ) -> Result<(Overseer>, OverseerHandle), Error> where @@ -291,14 +322,8 @@ impl OverseerGen for RealOverseerGen { RuntimeClient::Api: ParachainHost + BabeApi + AuthorityDiscoveryApi, Spawner: 'static + SpawnNamed + Clone + Unpin, { - let spawner = args.spawner.clone(); - let leaves = args.leaves.clone(); - let runtime_client = args.runtime_client.clone(); - let registry = args.registry.clone(); - - let all_subsystems = create_default_subsystems::(args)?; - - Overseer::new(leaves, all_subsystems, registry, runtime_client, spawner) + prepared_overseer_builder(args)? + .build_with_connector(connector) .map_err(|e| e.into()) } } diff --git a/node/service/src/relay_chain_selection.rs b/node/service/src/relay_chain_selection.rs index 184d526eac47..31d878218e8f 100644 --- a/node/service/src/relay_chain_selection.rs +++ b/node/service/src/relay_chain_selection.rs @@ -39,7 +39,7 @@ use super::{HeaderProvider, HeaderProviderProvider}; use consensus_common::{Error as ConsensusError, SelectChain}; use futures::channel::oneshot; use polkadot_node_subsystem_util::metrics::{self, prometheus}; -use polkadot_overseer::{AllMessages, Handle, OverseerHandle}; +use polkadot_overseer::{AllMessages, Handle}; use polkadot_primitives::v1::{ Block as PolkadotBlock, BlockNumber, Hash, Header as PolkadotHeader, }; @@ -109,66 +109,67 @@ impl Metrics { } /// A chain-selection implementation which provides safety for relay chains. -pub struct SelectRelayChainWithFallback> { - // A fallback to use in case the overseer is disconnected. - // - // This is used on relay chains which have not yet enabled - // parachains as well as situations where the node is offline. - fallback: sc_consensus::LongestChain, - selection: SelectRelayChain, +pub struct SelectRelayChain> { + is_relay_chain: bool, + longest_chain: sc_consensus::LongestChain, + selection: SelectRelayChainInner, } -impl Clone for SelectRelayChainWithFallback +impl Clone for SelectRelayChain where B: sc_client_api::Backend, - SelectRelayChain: Clone, + SelectRelayChainInner: Clone, { fn clone(&self) -> Self { - Self { fallback: self.fallback.clone(), selection: self.selection.clone() } + Self { + longest_chain: self.longest_chain.clone(), + is_relay_chain: self.is_relay_chain, + selection: self.selection.clone(), + } } } -impl SelectRelayChainWithFallback +impl SelectRelayChain where B: sc_client_api::Backend + 'static, { - /// Create a new [`SelectRelayChainWithFallback`] wrapping the given chain backend + /// Create a new [`SelectRelayChain`] wrapping the given chain backend /// and a handle to the overseer. - pub fn new(backend: Arc, overseer: Handle, metrics: Metrics) -> Self { - SelectRelayChainWithFallback { - fallback: sc_consensus::LongestChain::new(backend.clone()), - selection: SelectRelayChain::new(backend, overseer, metrics), + pub fn new(backend: Arc, overseer: Handle, is_relay_chain: bool, metrics: Metrics) -> Self { + tracing::debug!( + target: LOG_TARGET, + "Using {} as chain selection algorithm", + if is_relay_chain { "dispute aware relay" } else { "longest" } + ); + SelectRelayChain { + longest_chain: sc_consensus::LongestChain::new(backend.clone()), + selection: SelectRelayChainInner::new(backend, overseer, metrics), + is_relay_chain, } } -} -impl SelectRelayChainWithFallback -where - B: sc_client_api::Backend + 'static, -{ - /// Given an overseer handle, this connects the [`SelectRelayChainWithFallback`]'s - /// internal handle and its clones to the same overseer. - pub fn connect_to_overseer(&mut self, handle: OverseerHandle) { - self.selection.overseer.connect_to_overseer(handle); + /// Allow access to the inner chain, for usage during the node setup. + pub fn as_longest_chain(&self) -> &sc_consensus::LongestChain { + &self.longest_chain } } #[async_trait::async_trait] -impl SelectChain for SelectRelayChainWithFallback +impl SelectChain for SelectRelayChain where B: sc_client_api::Backend + 'static, { async fn leaves(&self) -> Result, ConsensusError> { - if self.selection.overseer.is_disconnected() { - return self.fallback.leaves().await + if !self.is_relay_chain { + return self.longest_chain.leaves().await } self.selection.leaves().await } async fn best_chain(&self) -> Result { - if self.selection.overseer.is_disconnected() { - return self.fallback.best_chain().await + if !self.is_relay_chain { + return self.longest_chain.best_chain().await } self.selection.best_chain().await } @@ -177,36 +178,36 @@ where &self, target_hash: Hash, maybe_max_number: Option, - ) -> Result, ConsensusError> { + ) -> Result { let longest_chain_best = - self.fallback.finality_target(target_hash, maybe_max_number).await?; + self.longest_chain.finality_target(target_hash, maybe_max_number).await?; - if self.selection.overseer.is_disconnected() { + if !self.is_relay_chain { return Ok(longest_chain_best) } self.selection - .finality_target_with_fallback(target_hash, longest_chain_best, maybe_max_number) + .finality_target_with_longest_chain(target_hash, longest_chain_best, maybe_max_number) .await } } /// A chain-selection implementation which provides safety for relay chains /// but does not handle situations where the overseer is not yet connected. -pub struct SelectRelayChain { +pub struct SelectRelayChainInner { backend: Arc, overseer: OH, metrics: Metrics, } -impl SelectRelayChain +impl SelectRelayChainInner where B: HeaderProviderProvider, OH: OverseerHandleT, { - /// Create a new [`SelectRelayChain`] wrapping the given chain backend + /// Create a new [`SelectRelayChainInner`] wrapping the given chain backend /// and a handle to the overseer. pub fn new(backend: Arc, overseer: OH, metrics: Metrics) -> Self { - SelectRelayChain { backend, overseer, metrics } + SelectRelayChainInner { backend, overseer, metrics } } fn block_header(&self, hash: Hash) -> Result { @@ -234,13 +235,13 @@ where } } -impl Clone for SelectRelayChain +impl Clone for SelectRelayChainInner where B: HeaderProviderProvider + Send + Sync, OH: OverseerHandleT, { fn clone(&self) -> Self { - SelectRelayChain { + SelectRelayChainInner { backend: self.backend.clone(), overseer: self.overseer.clone(), metrics: self.metrics.clone(), @@ -273,7 +274,7 @@ impl OverseerHandleT for Handle { } } -impl SelectRelayChain +impl SelectRelayChainInner where B: HeaderProviderProvider, OH: OverseerHandleT, @@ -288,9 +289,14 @@ where .send_msg(ChainSelectionMessage::Leaves(tx), std::any::type_name::()) .await; - rx.await + let leaves = rx + .await .map_err(Error::OverseerDisconnected) - .map_err(|e| ConsensusError::Other(Box::new(e))) + .map_err(|e| ConsensusError::Other(Box::new(e)))?; + + tracing::trace!(target: LOG_TARGET, ?leaves, "Chain selection leaves"); + + Ok(leaves) } /// Among all leaves, pick the one which is the best chain to build upon. @@ -305,6 +311,8 @@ where .ok_or_else(|| ConsensusError::Other(Box::new(Error::EmptyLeaves)))? .clone(); + tracing::trace!(target: LOG_TARGET, ?best_leaf, "Best chain"); + self.block_header(best_leaf) } @@ -317,13 +325,14 @@ where /// /// It will also constrain the chain to only chains which are fully /// approved, and chains which contain no disputes. - pub(crate) async fn finality_target_with_fallback( + pub(crate) async fn finality_target_with_longest_chain( &self, target_hash: Hash, - best_leaf: Option, + best_leaf: Hash, maybe_max_number: Option, - ) -> Result, ConsensusError> { + ) -> Result { let mut overseer = self.overseer.clone(); + tracing::trace!(target: LOG_TARGET, ?best_leaf, "Longest chain"); let subchain_head = if cfg!(feature = "disputes") { let (tx, rx) = oneshot::channel(); @@ -339,15 +348,19 @@ where .map_err(Error::OverseerDisconnected) .map_err(|e| ConsensusError::Other(Box::new(e)))?; + tracing::trace!(target: LOG_TARGET, ?best, "Best leaf containing"); + match best { // No viable leaves containing the block. - None => return Ok(Some(target_hash)), + None => return Ok(target_hash), Some(best) => best, } } else { - match best_leaf { - None => return Ok(Some(target_hash)), - Some(best_leaf) => best_leaf, + tracing::trace!(target: LOG_TARGET, ?best_leaf, "Dummy disputes active"); + if best_leaf == target_hash { + return Ok(target_hash) + } else { + best_leaf } }; @@ -366,12 +379,13 @@ where "`finality_target` max number is less than target number", ); } - return Ok(Some(target_hash)) + return Ok(target_hash) } // find the current number. let subchain_header = self.block_header(subchain_head)?; if subchain_header.number <= max { + tracing::trace!(target: LOG_TARGET, ?best_leaf, "Constrained sub-chain head",); subchain_head } else { let (ancestor_hash, _) = @@ -381,7 +395,11 @@ where &subchain_header, ) .map_err(|e| ConsensusError::ChainLookup(format!("{:?}", e)))?; - + tracing::trace!( + target: LOG_TARGET, + ?ancestor_hash, + "Grandpa walk backwards sub-chain head" + ); ancestor_hash } }, @@ -412,6 +430,12 @@ where } }; + tracing::trace!( + target: LOG_TARGET, + ?subchain_head, + "Ancestor approval restriction applied", + ); + let lag = initial_leaf_number.saturating_sub(subchain_number); self.metrics.note_approval_checking_finality_lag(lag); @@ -427,7 +451,7 @@ where subchain_number, "Mismatch of anticipated block descriptions and block number difference.", ); - return Ok(Some(target_hash)) + return Ok(target_hash) } // 3. Constrain according to disputes: let (tx, rx) = oneshot::channel(); @@ -454,6 +478,12 @@ where (lag, subchain_head) }; + tracing::trace!( + target: LOG_TARGET, + ?subchain_head, + "Disputed blocks in ancestry restriction applied", + ); + // 4. Apply the maximum safeguard to the finality lag. if lag > MAX_FINALITY_LAG { // We need to constrain our vote as a safety net to @@ -461,8 +491,9 @@ where let safe_target = initial_leaf_number - MAX_FINALITY_LAG; if safe_target <= target_number { + tracing::warn!(target: LOG_TARGET, ?target_hash, "Safeguard enforced finalization"); // Minimal vote needs to be on the target number. - Ok(Some(target_hash)) + Ok(target_hash) } else { // Otherwise we're looking for a descendant. let initial_leaf_header = self.block_header(initial_leaf)?; @@ -473,10 +504,16 @@ where ) .map_err(|e| ConsensusError::ChainLookup(format!("{:?}", e)))?; - Ok(Some(forced_target)) + tracing::warn!( + target: LOG_TARGET, + ?forced_target, + "Safeguard enforced finalization of child" + ); + + Ok(forced_target) } } else { - Ok(Some(subchain_head)) + Ok(subchain_head) } } } diff --git a/node/service/src/tests.rs b/node/service/src/tests.rs index 34ac69d78cc7..22eeeacb051b 100644 --- a/node/service/src/tests.rs +++ b/node/service/src/tests.rs @@ -79,7 +79,7 @@ fn test_harness>( let (finality_target_tx, finality_target_rx) = oneshot::channel::>(); - let select_relay_chain = SelectRelayChain::::new( + let select_relay_chain = SelectRelayChainInner::::new( Arc::new(case_vars.chain.clone()), context.sender().clone(), Default::default(), @@ -88,10 +88,10 @@ fn test_harness>( let target_hash = case_vars.target_block.clone(); let selection_process = async move { let best = select_relay_chain - .finality_target_with_fallback(target_hash, Some(target_hash), None) + .finality_target_with_longest_chain(target_hash, target_hash, None) .await .unwrap(); - finality_target_tx.send(best).unwrap(); + finality_target_tx.send(Some(best)).unwrap(); () }; diff --git a/node/subsystem-test-helpers/Cargo.toml b/node/subsystem-test-helpers/Cargo.toml index f6b82257c346..e17ce65a763f 100644 --- a/node/subsystem-test-helpers/Cargo.toml +++ b/node/subsystem-test-helpers/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-subsystem-test-helpers" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" description = "Subsystem traits and message definitions" diff --git a/node/subsystem-test-helpers/src/lib.rs b/node/subsystem-test-helpers/src/lib.rs index 80dae08825b0..0d155dc1384e 100644 --- a/node/subsystem-test-helpers/src/lib.rs +++ b/node/subsystem-test-helpers/src/lib.rs @@ -372,7 +372,7 @@ mod tests { use super::*; use futures::executor::block_on; use polkadot_node_subsystem::messages::CollatorProtocolMessage; - use polkadot_overseer::{AllSubsystems, Handle, HeadSupportsParachains, Overseer}; + use polkadot_overseer::{dummy::dummy_overseer_builder, Handle, HeadSupportsParachains}; use polkadot_primitives::v1::Hash; struct AlwaysSupportsParachains; @@ -386,17 +386,15 @@ mod tests { fn forward_subsystem_works() { let spawner = sp_core::testing::TaskExecutor::new(); let (tx, rx) = mpsc::channel(2); - let all_subsystems = - AllSubsystems::<()>::dummy().replace_collator_protocol(|_| ForwardSubsystem(tx)); - let (overseer, handle) = Overseer::new( - Vec::new(), - all_subsystems, - None, - AlwaysSupportsParachains, - spawner.clone(), - ) - .unwrap(); - let mut handle = Handle::Connected(handle); + let (overseer, handle) = + dummy_overseer_builder(spawner.clone(), AlwaysSupportsParachains, None) + .unwrap() + .replace_collator_protocol(|_| ForwardSubsystem(tx)) + .leaves(vec![]) + .build() + .unwrap(); + + let mut handle = Handle::new(handle); spawner.spawn("overseer", overseer.run().then(|_| async { () }).boxed()); diff --git a/node/subsystem-types/Cargo.toml b/node/subsystem-types/Cargo.toml index fb7a1088820b..0fa9a96f1a43 100644 --- a/node/subsystem-types/Cargo.toml +++ b/node/subsystem-types/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-subsystem-types" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" description = "Subsystem traits and message definitions" diff --git a/node/subsystem-types/src/messages.rs b/node/subsystem-types/src/messages.rs index 691289614d14..c6fb92736c51 100644 --- a/node/subsystem-types/src/messages.rs +++ b/node/subsystem-types/src/messages.rs @@ -23,6 +23,7 @@ //! Subsystems' APIs are defined separately from their implementation, leading to easier mocking. use futures::channel::oneshot; +use sc_network::Multiaddr; use thiserror::Error; pub use sc_network::IfDisconnected; @@ -345,6 +346,14 @@ pub enum NetworkBridgeMessage { /// authority discovery has failed to resolve. failed: oneshot::Sender, }, + /// Alternative to `ConnectToValidators` in case you already know the `Multiaddrs` you want to be + /// connected to. + ConnectToResolvedValidators { + /// Each entry corresponds to the addresses of an already resolved validator. + validator_addrs: Vec>, + /// The peer set we want the connection on. + peer_set: PeerSet, + }, /// Inform the distribution subsystems about the new /// gossip network topology formed. NewGossipTopology { @@ -365,6 +374,7 @@ impl NetworkBridgeMessage { Self::SendValidationMessages(_) => None, Self::SendCollationMessages(_) => None, Self::ConnectToValidators { .. } => None, + Self::ConnectToResolvedValidators { .. } => None, Self::SendRequests { .. } => None, Self::NewGossipTopology { .. } => None, } @@ -476,17 +486,19 @@ pub enum AvailabilityStoreMessage { tx: oneshot::Sender>, }, - /// Store a `AvailableData` in the AV store. - /// If `ValidatorIndex` is present store corresponding chunk also. + /// Store a `AvailableData` and all of its chunks in the AV store. /// /// Return `Ok(())` if the store operation succeeded, `Err(())` if it failed. - StoreAvailableData( - CandidateHash, - Option, - u32, - AvailableData, - oneshot::Sender>, - ), + StoreAvailableData { + /// A hash of the candidate this `available_data` belongs to. + candidate_hash: CandidateHash, + /// The number of validators in the session. + n_validators: u32, + /// The `AvailableData` itself. + available_data: AvailableData, + /// Sending side of the channel to send result to. + tx: oneshot::Sender>, + }, } impl AvailabilityStoreMessage { @@ -513,7 +525,7 @@ pub enum ChainApiMessage { /// Get the cumulative weight of the given block, by hash. /// If the block or weight is unknown, this returns `None`. /// - /// Note: this the weight within the low-level fork-choice rule, + /// Note: this is the weight within the low-level fork-choice rule, /// not the high-level one implemented in the chain-selection subsystem. /// /// Weight is used for comparing blocks in a fork-choice rule. @@ -850,5 +862,9 @@ pub enum ApprovalDistributionMessage { } /// Message to the Gossip Support subsystem. -#[derive(Debug)] -pub enum GossipSupportMessage {} +#[derive(Debug, derive_more::From)] +pub enum GossipSupportMessage { + /// Dummy constructor, so we can receive networking events. + #[from] + NetworkBridgeUpdateV1(NetworkBridgeEvent), +} diff --git a/node/subsystem-util/Cargo.toml b/node/subsystem-util/Cargo.toml index 5bcf8b4658a4..8fb43e7946f7 100644 --- a/node/subsystem-util/Cargo.toml +++ b/node/subsystem-util/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-subsystem-util" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" description = "Subsystem traits and message definitions" @@ -9,11 +9,11 @@ description = "Subsystem traits and message definitions" async-trait = "0.1.51" futures = "0.3.17" itertools = "0.10" -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] } pin-project = "1.0.8" rand = "0.8.3" thiserror = "1.0.26" -tracing = "0.1.27" +tracing = "0.1.28" derive_more = "0.99.11" lru = "0.6.6" diff --git a/node/subsystem-util/src/rolling_session_window.rs b/node/subsystem-util/src/rolling_session_window.rs index a7afc4f8c949..fc2957b7ea23 100644 --- a/node/subsystem-util/src/rolling_session_window.rs +++ b/node/subsystem-util/src/rolling_session_window.rs @@ -19,7 +19,7 @@ //! This is useful for consensus components which need to stay up-to-date about recent sessions but don't //! care about the state of particular blocks. -use polkadot_primitives::v1::{Hash, Header, SessionIndex, SessionInfo}; +use polkadot_primitives::v1::{Hash, SessionIndex, SessionInfo}; use futures::channel::oneshot; use polkadot_node_subsystem::{ @@ -131,7 +131,7 @@ impl RollingSessionWindow { } /// When inspecting a new import notification, updates the session info cache to match - /// the session of the imported block. + /// the session of the imported block's child. /// /// this only needs to be called on heads where we are directly notified about import, as sessions do /// not change often and import notifications are expected to be typically increasing in session number. @@ -141,7 +141,6 @@ impl RollingSessionWindow { &mut self, ctx: &mut (impl SubsystemContext + overseer::SubsystemContext), block_hash: Hash, - block_header: &Header, ) -> Result { if self.window_size == 0 { return Ok(SessionWindowUpdate::Unchanged) @@ -150,11 +149,9 @@ impl RollingSessionWindow { let session_index = { let (s_tx, s_rx) = oneshot::channel(); - // The genesis is guaranteed to be at the beginning of the session and its parent state - // is non-existent. Therefore if we're at the genesis, we request using its state and - // not the parent. + // We're requesting session index of a child to populate the cache in advance. ctx.send_message(RuntimeApiMessage::Request( - if block_header.number == 0 { block_hash } else { block_header.parent_hash }, + block_hash, RuntimeApiRequest::SessionIndexForChild(s_tx), )) .await; @@ -289,6 +286,7 @@ mod tests { use assert_matches::assert_matches; use polkadot_node_subsystem::messages::{AllMessages, AvailabilityRecoveryMessage}; use polkadot_node_subsystem_test_helpers::make_subsystem_context; + use polkadot_primitives::v1::Header; use sp_core::testing::TaskExecutor; const TEST_WINDOW_SIZE: SessionIndex = 6; @@ -329,9 +327,8 @@ mod tests { let hash = header.hash(); let test_fut = { - let header = header.clone(); Box::pin(async move { - window.cache_session_info_for_head(&mut ctx, hash, &header).await.unwrap(); + window.cache_session_info_for_head(&mut ctx, hash).await.unwrap(); assert_eq!(window.earliest_session, Some(expected_start_session)); assert_eq!( @@ -348,7 +345,7 @@ mod tests { h, RuntimeApiRequest::SessionIndexForChild(s_tx), )) => { - assert_eq!(h, header.parent_hash); + assert_eq!(h, hash); let _ = s_tx.send(Ok(session)); } ); @@ -497,9 +494,8 @@ mod tests { let hash = header.hash(); let test_fut = { - let header = header.clone(); Box::pin(async move { - let res = window.cache_session_info_for_head(&mut ctx, hash, &header).await; + let res = window.cache_session_info_for_head(&mut ctx, hash).await; assert!(res.is_err()); }) @@ -512,7 +508,7 @@ mod tests { h, RuntimeApiRequest::SessionIndexForChild(s_tx), )) => { - assert_eq!(h, header.parent_hash); + assert_eq!(h, hash); let _ = s_tx.send(Ok(session)); } ); @@ -559,9 +555,8 @@ mod tests { let hash = header.hash(); let test_fut = { - let header = header.clone(); Box::pin(async move { - window.cache_session_info_for_head(&mut ctx, hash, &header).await.unwrap(); + window.cache_session_info_for_head(&mut ctx, hash).await.unwrap(); assert_eq!(window.earliest_session, Some(session)); assert_eq!(window.session_info, vec![dummy_session_info(session)]); diff --git a/node/subsystem/Cargo.toml b/node/subsystem/Cargo.toml index 19a8ea469db6..5f6f1f2ca4a7 100644 --- a/node/subsystem/Cargo.toml +++ b/node/subsystem/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-node-subsystem" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" description = "Subsystem traits and message definitions and the generated overseer" diff --git a/node/subsystem/src/lib.rs b/node/subsystem/src/lib.rs index f0918ab1dc02..054f0d5997bb 100644 --- a/node/subsystem/src/lib.rs +++ b/node/subsystem/src/lib.rs @@ -24,7 +24,9 @@ pub use jaeger::*; pub use polkadot_node_jaeger as jaeger; -pub use polkadot_overseer::{self as overseer, ActiveLeavesUpdate, DummySubsystem, OverseerSignal}; +pub use polkadot_overseer::{ + self as overseer, ActiveLeavesUpdate, OverseerConnector, OverseerSignal, +}; pub use polkadot_node_subsystem_types::{ errors::{self, *}, diff --git a/node/test/client/Cargo.toml b/node/test/client/Cargo.toml index bae3ef3fb70e..b6aa140fece6 100644 --- a/node/test/client/Cargo.toml +++ b/node/test/client/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "polkadot-test-client" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" [dependencies] -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] } # Polkadot dependencies polkadot-test-runtime = { path = "../../../runtime/test-runtime" } diff --git a/node/test/polkadot-simnet/common/Cargo.toml b/node/test/polkadot-simnet/common/Cargo.toml index 232413df67d7..70a788e33640 100644 --- a/node/test/polkadot-simnet/common/Cargo.toml +++ b/node/test/polkadot-simnet/common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-simnet" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/test/polkadot-simnet/node/Cargo.toml b/node/test/polkadot-simnet/node/Cargo.toml index 0bb23500a466..6cf6ed9990c6 100644 --- a/node/test/polkadot-simnet/node/Cargo.toml +++ b/node/test/polkadot-simnet/node/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-simnet-node" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/test/polkadot-simnet/test/Cargo.toml b/node/test/polkadot-simnet/test/Cargo.toml index d73b1c990c63..18b41010f6ac 100644 --- a/node/test/polkadot-simnet/test/Cargo.toml +++ b/node/test/polkadot-simnet/test/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-simnet-test" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" diff --git a/node/test/service/Cargo.toml b/node/test/service/Cargo.toml index 56517c89a52a..97b885f9dc49 100644 --- a/node/test/service/Cargo.toml +++ b/node/test/service/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-test-service" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" @@ -8,10 +8,10 @@ edition = "2018" futures = "0.3.17" futures01 = { package = "futures", version = "0.1.29" } hex = "0.4.3" -tracing = "0.1.27" +tracing = "0.1.28" rand = "0.8.3" tempfile = "3.2.0" -tokio = "1.10.0" +tokio = "1.12.0" # Polkadot dependencies polkadot-overseer = { path = "../../overseer" } @@ -60,4 +60,4 @@ substrate-test-client = { git = "https://github.com/paritytech/substrate", branc pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } serde_json = "1.0.67" substrate-test-utils = { git = "https://github.com/paritytech/substrate", branch = "master" } -tokio = { version = "1.11", features = ["macros"] } +tokio = { version = "1.12", features = ["macros"] } diff --git a/parachain/Cargo.toml b/parachain/Cargo.toml index 97ce76d38f0f..5a09573f7926 100644 --- a/parachain/Cargo.toml +++ b/parachain/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-parachain" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] description = "Types and utilities for creating and working with parachains" edition = "2018" diff --git a/parachain/src/lib.rs b/parachain/src/lib.rs index 2cf441e88c9f..e73103d5578d 100644 --- a/parachain/src/lib.rs +++ b/parachain/src/lib.rs @@ -47,6 +47,7 @@ pub mod primitives; +#[cfg(all(not(feature = "std"), feature = "wasm-api"))] mod wasm_api; #[cfg(all(not(feature = "std"), feature = "wasm-api"))] diff --git a/parachain/test-parachains/Cargo.toml b/parachain/test-parachains/Cargo.toml index 13b9febd2f1c..cf2f4415628d 100644 --- a/parachain/test-parachains/Cargo.toml +++ b/parachain/test-parachains/Cargo.toml @@ -1,13 +1,13 @@ [package] name = "test-parachains" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] description = "Integration tests using the test-parachains" edition = "2018" [dependencies] tiny-keccak = "2.0.2" -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] } adder = { package = "test-parachain-adder", path = "adder" } halt = { package = "test-parachain-halt", path = "halt" } diff --git a/parachain/test-parachains/adder/Cargo.toml b/parachain/test-parachains/adder/Cargo.toml index 80cd51ea8de5..fbc6bc24613d 100644 --- a/parachain/test-parachains/adder/Cargo.toml +++ b/parachain/test-parachains/adder/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "test-parachain-adder" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] description = "Test parachain which adds to a number as its state transition" edition = "2018" @@ -8,7 +8,7 @@ build = "build.rs" [dependencies] parachain = { package = "polkadot-parachain", path = "../../", default-features = false, features = [ "wasm-api" ] } -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] } sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } tiny-keccak = { version = "2.0.2", features = ["keccak"] } dlmalloc = { version = "0.2.1", features = [ "global" ] } diff --git a/parachain/test-parachains/adder/collator/Cargo.toml b/parachain/test-parachains/adder/collator/Cargo.toml index b193fb608575..4315051ff9a9 100644 --- a/parachain/test-parachains/adder/collator/Cargo.toml +++ b/parachain/test-parachains/adder/collator/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "test-parachain-adder-collator" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] description = "Collator for the adder test parachain" edition = "2018" @@ -14,7 +14,7 @@ name = "adder_collator_puppet_worker" path = "bin/puppet_worker.rs" [dependencies] -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] } futures = "0.3.17" futures-timer = "3.0.2" log = "0.4.13" @@ -44,4 +44,4 @@ substrate-test-utils = { git = "https://github.com/paritytech/substrate", branch sc-service = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" } -tokio = { version = "1.11", features = ["macros"] } +tokio = { version = "1.12", features = ["macros"] } diff --git a/parachain/test-parachains/adder/collator/README.md b/parachain/test-parachains/adder/collator/README.md index be5922b9f95a..4347a9a8ced7 100644 --- a/parachain/test-parachains/adder/collator/README.md +++ b/parachain/test-parachains/adder/collator/README.md @@ -1,12 +1,14 @@ # How to run this collator First start two validators that will run for the relay chain: + ```sh cargo run --release -- -d alice --chain rococo-local --validator --alice --port 50551 cargo run --release -- -d bob --chain rococo-local --validator --bob --port 50552 ``` Next start the collator that will collate for the adder parachain: + ```sh cargo run --release -p test-parachain-adder-collator -- --tmp --chain rococo-local --port 50553 ``` diff --git a/parachain/test-parachains/halt/Cargo.toml b/parachain/test-parachains/halt/Cargo.toml index c191cce20d06..dd9a087928cf 100644 --- a/parachain/test-parachains/halt/Cargo.toml +++ b/parachain/test-parachains/halt/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "test-parachain-halt" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] description = "Test parachain which executes forever" edition = "2018" diff --git a/parachain/test-parachains/halt/src/lib.rs b/parachain/test-parachains/halt/src/lib.rs index 0c56cfe6393e..3c1416f3c6e9 100644 --- a/parachain/test-parachains/halt/src/lib.rs +++ b/parachain/test-parachains/halt/src/lib.rs @@ -39,20 +39,18 @@ pub fn wasm_binary_unwrap() -> &'static [u8] { #[panic_handler] #[no_mangle] pub fn panic(_info: &core::panic::PanicInfo) -> ! { - unsafe { core::intrinsics::abort() } + core::intrinsics::abort() } #[cfg(not(feature = "std"))] #[alloc_error_handler] #[no_mangle] pub fn oom(_: core::alloc::Layout) -> ! { - unsafe { - core::intrinsics::abort(); - } + core::intrinsics::abort(); } #[cfg(not(feature = "std"))] #[no_mangle] -pub extern "C" fn validate_block(params: *const u8, len: usize) -> u64 { +pub extern "C" fn validate_block(_params: *const u8, _len: usize) -> u64 { loop {} } diff --git a/primitives/Cargo.toml b/primitives/Cargo.toml index 4b2065d4cb6b..4aa5d00a3a7c 100644 --- a/primitives/Cargo.toml +++ b/primitives/Cargo.toml @@ -1,13 +1,13 @@ [package] name = "polkadot-primitives" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" [dependencies] serde = { version = "1.0.130", optional = true, features = ["derive"] } scale-info = { version = "1.0", default-features = false, features = ["bit-vec", "derive"] } -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["bit-vec", "derive"] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = ["bit-vec", "derive"] } primitives = { package = "sp-core", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } inherents = { package = "sp-inherents", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } application-crypto = { package = "sp-application-crypto", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } diff --git a/primitives/src/v1/mod.rs b/primitives/src/v1/mod.rs index e32fb68f79db..40ca368fc6e9 100644 --- a/primitives/src/v1/mod.rs +++ b/primitives/src/v1/mod.rs @@ -237,6 +237,13 @@ pub const ASSIGNMENT_KEY_TYPE_ID: KeyTypeId = KeyTypeId(*b"asgn"); /// * when detecting a code decompression bomb in the client pub const MAX_CODE_SIZE: u32 = 3 * 1024 * 1024; +/// Maximum head data size we support right now. +/// +/// Used for: +/// * initial genesis for the Parachains configuration +/// * checking updates to this stored runtime configuration do not exceed this limit +pub const MAX_HEAD_DATA_SIZE: u32 = 1 * 1024 * 1024; + /// Maximum PoV size we support right now. /// /// Used for: diff --git a/roadmap/implementers-guide/src/node/approval/approval-voting.md b/roadmap/implementers-guide/src/node/approval/approval-voting.md index 2366d7281d9e..c6367c050a04 100644 --- a/roadmap/implementers-guide/src/node/approval/approval-voting.md +++ b/roadmap/implementers-guide/src/node/approval/approval-voting.md @@ -111,6 +111,9 @@ CandidateHash => CandidateEntry ```rust const APPROVAL_SESSIONS: SessionIndex = 6; + +// The minimum amount of ticks that an assignment must have been known for. +const APPROVAL_DELAY: Tick = 2; ``` In-memory state: @@ -268,7 +271,7 @@ On receiving an `ApprovedAncestor(Hash, BlockNumber, response_channel)`: * If the `approval_entry` is approved, this doesn't need to be woken up again. * If `RequiredTranches::All` - no wakeup. We assume other incoming votes will trigger wakeup and potentially re-schedule. * If `RequiredTranches::Pending { considered, next_no_show, uncovered, maximum_broadcast, clock_drift }` - schedule at the lesser of the next no-show tick, or the tick, offset positively by `clock_drift` of the next non-empty tranche we are aware of after `considered`, including any tranche containing our own unbroadcast assignment. This can lead to no wakeup in the case that we have already broadcast our assignment and there are no pending no-shows; that is, we have approval votes for every assignment we've received that is not already a no-show. In this case, we will be re-triggered by other validators broadcasting their assignments. - * If `RequiredTranches::Exact { next_no_show, .. }` - set a wakeup for the next no-show tick. + * If `RequiredTranches::Exact { next_no_show, latest_assignment_tick, .. }` - set a wakeup for the earlier of the next no-show tick or the latest assignment tick + `APPROVAL_DELAY`. #### Launch Approval Work @@ -335,6 +338,8 @@ enum RequiredTranches { /// event that there are some assignments that don't have corresponding approval votes. If this /// is `None`, all assignments have approvals. next_no_show: Option, + /// The last tick at which a needed assignment was received. + last_assignment_tick: Option, } } ``` @@ -355,8 +360,9 @@ Likewise, when considering how many tranches to take, the no-show depth should b * Set a clock drift of `depth * no_show_duration` * Take tranches up to `tranche_now - clock_drift` until all needed assignments are met. * Keep track of the `next_no_show` according to the clock drift, as we go. + * Keep track of the `last_assignment_tick` as we go. * If running out of tranches before then, return `Pending { considered, next_no_show, maximum_broadcast, clock_drift }` - * If there are no no-shows, return `Exact { needed, tolerated_missing, next_no_show }` + * If there are no no-shows, return `Exact { needed, tolerated_missing, next_no_show, last_assignment_tick }` * `maximum_broadcast` is either `DelayTranche::max_value()` at tranche 0 or otherwise by the last considered tranche + the number of uncovered no-shows at this point. * If there are no-shows, return to the beginning, incrementing `depth` and attempting to cover the number of no-shows. Each no-show must be covered by a non-empty tranche, which are tranches that have at least one assignment. Each non-empty tranche covers exactly one no-show. * If at any point, it seems that all validators are required, do an early return with `RequiredTranches::All` which indicates that everyone should broadcast. @@ -367,7 +373,9 @@ Likewise, when considering how many tranches to take, the no-show depth should b * If we have `3 * n_approvals > n_validators`, return true. This is because any set with f+1 validators must have at least one honest validator, who has approved the candidate. * If `n_tranches` is `RequiredTranches::Pending`, return false * If `n_tranches` is `RequiredTranches::All`, return false. - * If `n_tranches` is `RequiredTranches::Exact { tranche, tolerated_missing, .. }`, then we return whether all assigned validators up to `tranche` less `tolerated_missing` have approved. e.g. if we had 5 tranches and 1 tolerated missing, we would accept only if all but 1 of assigned validators in tranches 0..=5 have approved. In that example, we also accept all validators in tranches 0..=5 having approved, but that would indicate that the `RequiredTranches` value was incorrectly constructed, so it is not realistic. `tolerated_missing` actually represents covered no-shows. If there are more missing approvals than there are tolerated missing, that indicates that there are some assignments which are not yet no-shows, but may become no-shows, and we should wait for the validators to either approve or become no-shows. + * If `n_tranches` is `RequiredTranches::Exact { tranche, tolerated_missing, latest_assignment_tick, .. }`, then we return whether all assigned validators up to `tranche` less `tolerated_missing` have approved and `latest_assignment_tick + APPROVAL_DELAY >= tick_now`. + * e.g. if we had 5 tranches and 1 tolerated missing, we would accept only if all but 1 of assigned validators in tranches 0..=5 have approved. In that example, we also accept all validators in tranches 0..=5 having approved, but that would indicate that the `RequiredTranches` value was incorrectly constructed, so it is not realistic. `tolerated_missing` actually represents covered no-shows. If there are more missing approvals than there are tolerated missing, that indicates that there are some assignments which are not yet no-shows, but may become no-shows, and we should wait for the validators to either approve or become no-shows. + * e.g. If the above passes and the `latest_assignment_tick` was 5 and the current tick was 6, then we'd return false. ### Time diff --git a/roadmap/implementers-guide/src/runtime/disputes.md b/roadmap/implementers-guide/src/runtime/disputes.md index 4fb70eb93d03..83ca86b36b04 100644 --- a/roadmap/implementers-guide/src/runtime/disputes.md +++ b/roadmap/implementers-guide/src/runtime/disputes.md @@ -101,7 +101,7 @@ Frozen: Option, 1. If there is a dispute under `(Sessionindex, CandidateHash)` with fewer than `byzantine_threshold + 1` participating validators, decrease `SpamSlots` by 1 for each validator in the `DisputeState`. 1. If there is a dispute under `(SessionIndex, CandidateHash)` that has concluded against the candidate, invoke `revert_and_freeze` with the stored block number. -* `could_be_invalid(SessionIndex, CandidateHash) -> bool`: Returns whether a candidate has a live dispute ongoing or a dispute which has already concluded in the negative. +* `concluded_invalid(SessionIndex, CandidateHash) -> bool`: Returns whether a candidate has already concluded a dispute in the negative. * `is_frozen()`: Load the value of `Frozen` from storage. Return true if `Some` and false if `None`. @@ -109,4 +109,5 @@ Frozen: Option, * `revert_and_freeze(BlockNumber)`: 1. If `is_frozen()` return. - 1. Set `Frozen` to `Some(BlockNumber)` to indicate a rollback to the given block number is necessary. + 1. Set `Frozen` to `Some(BlockNumber)` to indicate a rollback to the block number. + 1. Issue a `Revert(BlockNumber + 1)` log to indicate a rollback of the block's child in the header chain, which is the same as a rollback to the block number. diff --git a/roadmap/implementers-guide/src/runtime/parainherent.md b/roadmap/implementers-guide/src/runtime/parainherent.md index ed4d6fe7d90b..cb5bb45d8d81 100644 --- a/roadmap/implementers-guide/src/runtime/parainherent.md +++ b/roadmap/implementers-guide/src/runtime/parainherent.md @@ -1,4 +1,4 @@ -# ParaInherent +# `ParaInherent` This module is responsible for providing all data given to the runtime by the block author to the various parachains modules. The entry-point is mandatory, in that it must be invoked exactly once within every block, and it is also "inherent", in that it is provided with no origin by the block author. The data within it carries its own authentication; i.e. the data takes the form of signed statements by validators. If any of the steps within fails, the entry-point is considered as having failed and the block will be invalid. @@ -26,7 +26,7 @@ Included: Option<()>, 1. Hash the parent header and make sure that it corresponds to the block hash of the parent (tracked by the `frame_system` FRAME module), 1. Invoke `Disputes::provide_multi_dispute_data`. 1. If `Disputes::is_frozen`, return and set `Included` to `Some(())`. - 1. If there are any created disputes from the current session, invoke `Inclusion::collect_disputed` with the disputed candidates. Annotate each returned core with `FreedReason::Concluded`. + 1. If there are any concluded disputes from the current session, invoke `Inclusion::collect_disputed` with the disputed candidates. Annotate each returned core with `FreedReason::Concluded`. 1. The `Bitfields` are first forwarded to the `Inclusion::process_bitfields` routine, returning a set of freed cores. Provide the number of availability cores (`Scheduler::availability_cores().len()`) as the expected number of bits and a `Scheduler::core_para` as a core-lookup to the `process_bitfields` routine. Annotate each of these freed cores with `FreedReason::Concluded`. 1. For each freed candidate from the `Inclusion::process_bitfields` call, invoke `Disputes::note_included(current_session, candidate)`. 1. If `Scheduler::availability_timeout_predicate` is `Some`, invoke `Inclusion::collect_pending` using it and annotate each of those freed cores with `FreedReason::TimedOut`. @@ -34,7 +34,7 @@ Included: Option<()>, 1. Invoke `Scheduler::clear` 1. Invoke `Scheduler::schedule(freed_cores, System::current_block())` 1. Extract `parent_storage_root` from the parent header, - 1. If `Disputes::could_be_invalid(current_session, candidate)` is true for any of the `backed_candidates`, fail. + 1. If `Disputes::concluded_invalid(current_session, candidate)` is true for any of the `backed_candidates`, fail. 1. Invoke the `Inclusion::process_candidates` routine with the parameters `(parent_storage_root, backed_candidates, Scheduler::scheduled(), Scheduler::group_validators)`. 1. Call `Scheduler::occupied` using the return value of the `Inclusion::process_candidates` call above, first sorting the list of assigned core indices. 1. Call the `Ump::process_pending_upward_messages` routine to execute all messages in upward dispatch queues. diff --git a/rpc/Cargo.toml b/rpc/Cargo.toml index 775afe61dfb7..a6a49f333562 100644 --- a/rpc/Cargo.toml +++ b/rpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polkadot-rpc" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" @@ -27,5 +27,5 @@ frame-rpc-system = { package = "substrate-frame-rpc-system", git = "https://gith pallet-mmr-rpc = { git = "https://github.com/paritytech/substrate", branch = "master" } pallet-transaction-payment-rpc = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-block-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } -beefy-gadget = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master" } -beefy-gadget-rpc = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master" } +beefy-gadget = { git = "https://github.com/paritytech/substrate", branch = "master" } +beefy-gadget-rpc = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/runtime/common/Cargo.toml b/runtime/common/Cargo.toml index 8388f2cc2016..48ba8d36055e 100644 --- a/runtime/common/Cargo.toml +++ b/runtime/common/Cargo.toml @@ -1,13 +1,13 @@ [package] name = "polkadot-runtime-common" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" [dependencies] impl-trait-for-tuples = "0.2.0" bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] } log = { version = "0.4.13", default-features = false } rustc-hex = { version = "2.1.0", default-features = false } scale-info = { version = "1.0", default-features = false, features = ["derive"] } @@ -15,7 +15,7 @@ serde = { version = "1.0.130", default-features = false } serde_derive = { version = "1.0.117", optional = true } static_assertions = "1.1.0" -beefy-primitives = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master", default-features = false } +beefy-primitives = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } sp-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } inherents = { package = "sp-inherents", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } sp-std = { package = "sp-std", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } @@ -37,7 +37,7 @@ pallet-vesting = { git = "https://github.com/paritytech/substrate", branch = "ma pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-treasury = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-election-provider-multi-phase = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-beefy-mmr = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master", default-features = false } +pallet-beefy-mmr = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } frame-election-provider-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-bags-list = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } @@ -45,7 +45,7 @@ frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = pallet-babe = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } primitives = { package = "polkadot-primitives", path = "../../primitives", default-features = false } -libsecp256k1 = { version = "0.6.0", default-features = false } +libsecp256k1 = { version = "0.7.0", default-features = false } runtime-parachains = { package = "polkadot-runtime-parachains", path = "../parachains", default-features = false } slot-range-helper = { path = "slot_range_helper", default-features = false } @@ -58,7 +58,7 @@ pallet-babe = { git = "https://github.com/paritytech/substrate", branch = "maste pallet-treasury = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } serde_json = "1.0.67" -libsecp256k1 = "0.6.0" +libsecp256k1 = "0.7.0" [features] default = ["std"] diff --git a/runtime/common/slot_range_helper/Cargo.toml b/runtime/common/slot_range_helper/Cargo.toml index 54d1fe693d0b..aec6b69355fe 100644 --- a/runtime/common/slot_range_helper/Cargo.toml +++ b/runtime/common/slot_range_helper/Cargo.toml @@ -1,13 +1,13 @@ [package] name = "slot-range-helper" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" [dependencies] paste = "1.0" enumn = "0.1.3" -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] } sp-std = { package = "sp-std", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } diff --git a/runtime/common/src/crowdloan.rs b/runtime/common/src/crowdloan.rs index a97825d445c2..c45f9750f631 100644 --- a/runtime/common/src/crowdloan.rs +++ b/runtime/common/src/crowdloan.rs @@ -275,7 +275,7 @@ pub mod pallet { FirstPeriodTooFarInFuture, /// Last lease period must be greater than first lease period. LastPeriodBeforeFirstPeriod, - /// The last lease period cannot be more then 3 periods after the first period. + /// The last lease period cannot be more than 3 periods after the first period. LastPeriodTooFarInFuture, /// The campaign ends before the current block number. The end must be in the future. CannotEndInPast, @@ -1942,6 +1942,7 @@ mod benchmarking { } // Worst case: Refund removes `RemoveKeysLimit` keys, and is fully refunded. + #[skip_meta] refund { let k in 0 .. T::RemoveKeysLimit::get(); let fund_index = create_fund::(1337, 100u32.into()); diff --git a/runtime/common/src/elections.rs b/runtime/common/src/elections.rs index f26b2f014451..03989a64b439 100644 --- a/runtime/common/src/elections.rs +++ b/runtime/common/src/elections.rs @@ -45,17 +45,18 @@ parameter_types! { .get(DispatchClass::Normal); } -/// The numbers configured here should always be more than the the maximum limits of staking pallet -/// to ensure election snapshot will not run out of memory. +/// The numbers configured here could always be more than the the maximum limits of staking pallet +/// to ensure election snapshot will not run out of memory. For now, we set them to smaller values +/// since the staking is bounded and the weight pipeline takes hours for this single pallet. pub struct BenchmarkConfig; impl pallet_election_provider_multi_phase::BenchmarkingConfig for BenchmarkConfig { - const VOTERS: [u32; 2] = [5_000, 10_000]; - const TARGETS: [u32; 2] = [1_000, 2_000]; - const ACTIVE_VOTERS: [u32; 2] = [1000, 4_000]; - const DESIRED_TARGETS: [u32; 2] = [400, 800]; - const SNAPSHOT_MAXIMUM_VOTERS: u32 = 25_000; - const MINER_MAXIMUM_VOTERS: u32 = 15_000; - const MAXIMUM_TARGETS: u32 = 2000; + const VOTERS: [u32; 2] = [1000, 2000]; + const TARGETS: [u32; 2] = [500, 1000]; + const ACTIVE_VOTERS: [u32; 2] = [500, 800]; + const DESIRED_TARGETS: [u32; 2] = [200, 400]; + const SNAPSHOT_MAXIMUM_VOTERS: u32 = 1000; + const MINER_MAXIMUM_VOTERS: u32 = 1000; + const MAXIMUM_TARGETS: u32 = 300; } /// The accuracy type used for genesis election provider; diff --git a/runtime/common/src/integration_tests.rs b/runtime/common/src/integration_tests.rs index c0e1615599e7..5653100815aa 100644 --- a/runtime/common/src/integration_tests.rs +++ b/runtime/common/src/integration_tests.rs @@ -108,6 +108,7 @@ parameter_types! { pub const EpochDuration: u64 = 10; pub const ExpectedBlockTime: Moment = 6_000; pub const ReportLongevity: u64 = 10; + pub const MaxAuthorities: u32 = 100_000; } impl pallet_babe::Config for Test { @@ -126,6 +127,7 @@ impl pallet_babe::Config for Test { )>>::IdentificationTuple; type HandleEquivocation = (); type WeightInfo = (); + type MaxAuthorities = MaxAuthorities; } parameter_types! { @@ -165,6 +167,7 @@ impl shared::Config for Test {} impl paras::Config for Test { type Origin = Origin; type Event = Event; + type WeightInfo = paras::weights::WeightInfo; } parameter_types! { diff --git a/runtime/common/src/paras_registrar.rs b/runtime/common/src/paras_registrar.rs index ee595cd0df05..448bc5092403 100644 --- a/runtime/common/src/paras_registrar.rs +++ b/runtime/common/src/paras_registrar.rs @@ -657,6 +657,7 @@ mod tests { impl paras::Config for Test { type Origin = Origin; type Event = Event; + type WeightInfo = paras::weights::WeightInfo; } impl configuration::Config for Test { diff --git a/runtime/common/src/purchase.rs b/runtime/common/src/purchase.rs index 5f86bf4226d5..42a545730c94 100644 --- a/runtime/common/src/purchase.rs +++ b/runtime/common/src/purchase.rs @@ -34,7 +34,7 @@ use sp_std::prelude::*; type BalanceOf = <::Currency as Currency<::AccountId>>::Balance; -/// The kind of a statement an account needs to make for a claim to be valid. +/// The kind of statement an account needs to make for a claim to be valid. #[derive(Encode, Decode, Clone, Copy, Eq, PartialEq, RuntimeDebug, TypeInfo)] pub enum AccountValidity { /// Account is not valid. diff --git a/runtime/common/src/traits.rs b/runtime/common/src/traits.rs index eb5e0eda517b..938fefd963c0 100644 --- a/runtime/common/src/traits.rs +++ b/runtime/common/src/traits.rs @@ -127,7 +127,7 @@ pub trait Leaser { ) -> Result<(), LeaseError>; /// Return the amount of balance currently held in reserve on `leaser`'s account for leasing `para`. This won't - /// go down outside of a lease period. + /// go down outside a lease period. fn deposit_held( para: ParaId, leaser: &Self::AccountId, diff --git a/runtime/common/src/xcm_sender.rs b/runtime/common/src/xcm_sender.rs index af1f783cfa9a..2d75edfd4571 100644 --- a/runtime/common/src/xcm_sender.rs +++ b/runtime/common/src/xcm_sender.rs @@ -27,7 +27,8 @@ pub struct ChildParachainRouter(PhantomData<(T, W)>); impl SendXcm for ChildParachainRouter { - fn send_xcm(dest: MultiLocation, msg: Xcm<()>) -> SendResult { + fn send_xcm(dest: impl Into, msg: Xcm<()>) -> SendResult { + let dest = dest.into(); match dest { MultiLocation { parents: 0, interior: X1(Parachain(id)) } => { // Downward message passing. diff --git a/runtime/kusama/Cargo.toml b/runtime/kusama/Cargo.toml index 4c2fa8743903..1e04a113bdfa 100644 --- a/runtime/kusama/Cargo.toml +++ b/runtime/kusama/Cargo.toml @@ -1,13 +1,13 @@ [package] name = "kusama-runtime" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" [dependencies] bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } -parity-scale-codec = { version = "2.2.0", default-features = false, features = ["derive", "max-encoded-len"] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive", "max-encoded-len"] } scale-info = { version = "1.0", default-features = false, features = ["derive"] } log = { version = "0.4.14", default-features = false } rustc-hex = { version = "2.1.0", default-features = false } @@ -18,7 +18,7 @@ smallvec = "1.6.1" authority-discovery-primitives = { package = "sp-authority-discovery", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } babe-primitives = { package = "sp-consensus-babe", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -beefy-primitives = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master", default-features = false } +beefy-primitives = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } sp-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } inherents = { package = "sp-inherents", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } offchain-primitives = { package = "sp-offchain", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } diff --git a/runtime/kusama/src/lib.rs b/runtime/kusama/src/lib.rs index 39a532b47512..ad97e499e958 100644 --- a/runtime/kusama/src/lib.rs +++ b/runtime/kusama/src/lib.rs @@ -118,13 +118,13 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("kusama"), impl_name: create_runtime_str!("parity-kusama"), authoring_version: 2, - spec_version: 9100, + spec_version: 9110, impl_version: 0, #[cfg(not(feature = "disable-runtime-api"))] apis: RUNTIME_API_VERSIONS, #[cfg(feature = "disable-runtime-api")] apis: version::create_apis_vec![[]], - transaction_version: 5, + transaction_version: 7, }; /// The BABE epoch configuration at genesis. @@ -240,6 +240,8 @@ impl pallet_babe::Config for Runtime { pallet_babe::EquivocationHandler; type WeightInfo = (); + + type MaxAuthorities = MaxAuthorities; } parameter_types! { @@ -803,6 +805,7 @@ impl pallet_grandpa::Config for Runtime { >; type WeightInfo = (); + type MaxAuthorities = MaxAuthorities; } /// Submits transaction with the node's public and signature type. Adheres to the signed extension @@ -1149,6 +1152,7 @@ impl parachains_inclusion::Config for Runtime { impl parachains_paras::Config for Runtime { type Origin = Origin; type Event = Event; + type WeightInfo = weights::runtime_parachains_paras::WeightInfo; } parameter_types! { @@ -1177,6 +1181,7 @@ impl parachains_scheduler::Config for Runtime {} impl parachains_initializer::Config for Runtime { type Randomness = pallet_babe::RandomnessFromOneEpochAgo; type ForceOrigin = EnsureRoot; + type WeightInfo = weights::runtime_parachains_initializer::WeightInfo; } parameter_types! { @@ -1555,12 +1560,50 @@ pub type Executive = frame_executive::Executive< TechnicalCommitteeStoragePrefixMigration, TechnicalMembershipStoragePrefixMigration, MigrateTipsPalletPrefix, + BountiesPrefixMigration, StakingBagsListMigrationV8, ), >; /// The payload being signed in the transactions. pub type SignedPayload = generic::SignedPayload; +const BOUNTIES_OLD_PREFIX: &str = "Treasury"; + +/// Migrate from 'Treasury' to the new prefix 'Bounties' +pub struct BountiesPrefixMigration; + +impl OnRuntimeUpgrade for BountiesPrefixMigration { + fn on_runtime_upgrade() -> frame_support::weights::Weight { + use frame_support::traits::PalletInfo; + let name = ::PalletInfo::name::() + .expect("Bounties is part of runtime, so it has a name; qed"); + pallet_bounties::migrations::v4::migrate::(BOUNTIES_OLD_PREFIX, name) + } + #[cfg(feature = "try-runtime")] + fn pre_upgrade() -> Result<(), &'static str> { + use frame_support::traits::PalletInfo; + let name = ::PalletInfo::name::() + .expect("Bounties is part of runtime, so it has a name; qed"); + pallet_bounties::migrations::v4::pre_migration::( + BOUNTIES_OLD_PREFIX, + name, + ); + Ok(()) + } + + #[cfg(feature = "try-runtime")] + fn post_upgrade() -> Result<(), &'static str> { + use frame_support::traits::PalletInfo; + let name = ::PalletInfo::name::() + .expect("Bounties is part of runtime, so it has a name; qed"); + pallet_bounties::migrations::v4::post_migration::( + BOUNTIES_OLD_PREFIX, + name, + ); + Ok(()) + } +} + const COUNCIL_OLD_PREFIX: &str = "Instance1Collective"; /// Migrate from `Instance1Collective` to the new pallet prefix `Council` pub struct CouncilStoragePrefixMigration; @@ -1898,7 +1941,7 @@ sp_api::impl_runtime_apis! { slot_duration: Babe::slot_duration(), epoch_length: EpochDuration::get(), c: BABE_GENESIS_EPOCH_CONFIG.c, - genesis_authorities: Babe::authorities(), + genesis_authorities: Babe::authorities().to_vec(), randomness: Babe::randomness(), allowed_slots: BABE_GENESIS_EPOCH_CONFIG.allowed_slots, } @@ -1978,10 +2021,13 @@ sp_api::impl_runtime_apis! { #[cfg(feature = "try-runtime")] impl frame_try_runtime::TryRuntime for Runtime { - fn on_runtime_upgrade() -> Result<(Weight, Weight), sp_runtime::RuntimeString> { + fn on_runtime_upgrade() -> (Weight, Weight) { log::info!("try-runtime::on_runtime_upgrade kusama."); - let weight = Executive::try_runtime_upgrade()?; - Ok((weight, BlockWeights::get().max_block)) + let weight = Executive::try_runtime_upgrade().unwrap(); + (weight, BlockWeights::get().max_block) + } + fn execute_block_no_check(block: Block) -> Weight { + Executive::execute_block_no_check(block) } } @@ -2009,6 +2055,8 @@ sp_api::impl_runtime_apis! { list_benchmark!(list, extra, runtime_common::slots, Slots); list_benchmark!(list, extra, runtime_common::paras_registrar, Registrar); list_benchmark!(list, extra, runtime_parachains::configuration, Configuration); + list_benchmark!(list, extra, runtime_parachains::initializer, Initializer); + list_benchmark!(list, extra, runtime_parachains::paras, Paras); // Substrate list_benchmark!(list, extra, pallet_bags_list, BagsList); list_benchmark!(list, extra, pallet_balances, Balances); @@ -2084,6 +2132,8 @@ sp_api::impl_runtime_apis! { add_benchmark!(params, batches, runtime_common::slots, Slots); add_benchmark!(params, batches, runtime_common::paras_registrar, Registrar); add_benchmark!(params, batches, runtime_parachains::configuration, Configuration); + add_benchmark!(params, batches, runtime_parachains::initializer, Initializer); + add_benchmark!(params, batches, runtime_parachains::paras, Paras); // Substrate add_benchmark!(params, batches, pallet_balances, Balances); add_benchmark!(params, batches, pallet_bags_list, BagsList); diff --git a/runtime/kusama/src/weights/mod.rs b/runtime/kusama/src/weights/mod.rs index adb103ad4eee..ea8c2fc7f58d 100644 --- a/runtime/kusama/src/weights/mod.rs +++ b/runtime/kusama/src/weights/mod.rs @@ -45,3 +45,5 @@ pub mod runtime_common_crowdloan; pub mod runtime_common_paras_registrar; pub mod runtime_common_slots; pub mod runtime_parachains_configuration; +pub mod runtime_parachains_initializer; +pub mod runtime_parachains_paras; diff --git a/runtime/kusama/src/weights/pallet_bags_list.rs b/runtime/kusama/src/weights/pallet_bags_list.rs index 6792d0d5d689..38285f4c2145 100644 --- a/runtime/kusama/src/weights/pallet_bags_list.rs +++ b/runtime/kusama/src/weights/pallet_bags_list.rs @@ -1,30 +1,28 @@ -// This file is part of Substrate. +// Copyright 2017-2021 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. -// Copyright (C) 2021 Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. -//! Autogenerated weights for pallet_bags_list +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . +//! Autogenerated weights for `pallet_bags_list` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2021-09-02, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 128 +//! DATE: 2021-09-17, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 // Executed Command: -// target/release/substrate +// target/release/polkadot // benchmark -// --chain=dev +// --chain=kusama-dev // --steps=50 // --repeat=20 // --pallet=pallet_bags_list @@ -32,34 +30,35 @@ // --execution=wasm // --wasm-execution=compiled // --heap-pages=4096 -// --output=./frame/bags-list/src/weights.rs -// --template=./.maintain/frame-weight-template.hbs +// --header=./file_header.txt +// --output=./runtime/kusama/src/weights/ -// NOTE: this is copy pasta from substrate % some tweaks #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] -use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; +use frame_support::{traits::Get, weights::Weight}; use sp_std::marker::PhantomData; -/// Weight functions needed for pallet_bags_list. - -/// Weights for pallet_bags_list using the Substrate node and recommended hardware. +/// Weight functions for `pallet_bags_list`. pub struct WeightInfo(PhantomData); impl pallet_bags_list::WeightInfo for WeightInfo { + // Storage: Staking Bonded (r:1 w:0) + // Storage: Staking Ledger (r:1 w:0) + // Storage: BagsList ListNodes (r:4 w:4) + // Storage: BagsList ListBags (r:1 w:1) fn rebag_non_terminal() -> Weight { - (75_718_000 as Weight) + (65_491_000 as Weight) .saturating_add(T::DbWeight::get().reads(7 as Weight)) .saturating_add(T::DbWeight::get().writes(5 as Weight)) } // Storage: Staking Bonded (r:1 w:0) // Storage: Staking Ledger (r:1 w:0) - // Storage: BagsList ListNodes (r:4 w:4) - // Storage: BagsList ListBags (r:1 w:1) + // Storage: BagsList ListNodes (r:3 w:3) + // Storage: BagsList ListBags (r:2 w:2) fn rebag_terminal() -> Weight { - (75_718_000 as Weight) + (64_253_000 as Weight) .saturating_add(T::DbWeight::get().reads(7 as Weight)) .saturating_add(T::DbWeight::get().writes(5 as Weight)) } diff --git a/runtime/kusama/src/weights/pallet_democracy.rs b/runtime/kusama/src/weights/pallet_democracy.rs index f6a4991a3fbb..4063e31905c2 100644 --- a/runtime/kusama/src/weights/pallet_democracy.rs +++ b/runtime/kusama/src/weights/pallet_democracy.rs @@ -129,6 +129,13 @@ impl pallet_democracy::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(r as Weight))) } + fn on_initialize_base_with_launch_period(r: u32) -> Weight { + (7_295_000 as Weight) + // Standard Error: 4_000 + .saturating_add((5_093_000 as Weight).saturating_mul(r as Weight)) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(r as Weight))) + } fn delegate(r: u32) -> Weight { (54_128_000 as Weight) // Standard Error: 5_000 diff --git a/runtime/kusama/src/weights/pallet_election_provider_multi_phase.rs b/runtime/kusama/src/weights/pallet_election_provider_multi_phase.rs index 913050e48491..c9219a954918 100644 --- a/runtime/kusama/src/weights/pallet_election_provider_multi_phase.rs +++ b/runtime/kusama/src/weights/pallet_election_provider_multi_phase.rs @@ -83,7 +83,7 @@ impl pallet_election_provider_multi_phase::WeightInfo f // Storage: ElectionProviderMultiPhase SnapshotMetadata (r:0 w:1) // Storage: ElectionProviderMultiPhase DesiredTargets (r:0 w:1) // Storage: ElectionProviderMultiPhase Snapshot (r:0 w:1) - fn create_snapshot_internal() -> Weight { + fn create_snapshot_internal(_: u32, _: u32) -> Weight { (8_835_233_000 as Weight).saturating_add(T::DbWeight::get().writes(3 as Weight)) } // Storage: ElectionProviderMultiPhase SignedSubmissionIndices (r:1 w:1) diff --git a/runtime/kusama/src/weights/pallet_staking.rs b/runtime/kusama/src/weights/pallet_staking.rs index ff7f8b9fb837..5f385be7167e 100644 --- a/runtime/kusama/src/weights/pallet_staking.rs +++ b/runtime/kusama/src/weights/pallet_staking.rs @@ -1,4 +1,4 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. +// Copyright 2017-2021 Parity Technologies (UK) Ltd. // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify @@ -15,8 +15,8 @@ // along with Polkadot. If not, see . //! Autogenerated weights for `pallet_staking` //! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-07-07, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2021-09-17, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 // Executed Command: @@ -31,8 +31,10 @@ // --wasm-execution=compiled // --heap-pages=4096 // --header=./file_header.txt -// --output=runtime/kusama/src/weights/ +// --output=./runtime/kusama/src/weights/ + +#![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] @@ -42,181 +44,368 @@ use sp_std::marker::PhantomData; /// Weight functions for `pallet_staking`. pub struct WeightInfo(PhantomData); impl pallet_staking::WeightInfo for WeightInfo { + // Storage: Staking Bonded (r:1 w:1) + // Storage: Staking Ledger (r:1 w:1) + // Storage: Staking CurrentEra (r:1 w:0) + // Storage: Staking HistoryDepth (r:1 w:0) + // Storage: Balances Locks (r:1 w:1) + // Storage: Staking Payee (r:0 w:1) fn bond() -> Weight { - (68_673_000 as Weight) + (66_934_000 as Weight) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } + // Storage: Staking Bonded (r:1 w:0) + // Storage: Staking Ledger (r:1 w:1) + // Storage: Balances Locks (r:1 w:1) + // Storage: BagsList ListNodes (r:3 w:3) + // Storage: BagsList ListBags (r:2 w:2) fn bond_extra() -> Weight { - (57_515_000 as Weight) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) + (106_496_000 as Weight) + .saturating_add(T::DbWeight::get().reads(8 as Weight)) + .saturating_add(T::DbWeight::get().writes(7 as Weight)) } + // Storage: Staking Ledger (r:1 w:1) + // Storage: Staking Nominators (r:1 w:0) + // Storage: Staking MinNominatorBond (r:1 w:0) + // Storage: Staking CurrentEra (r:1 w:0) + // Storage: Balances Locks (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: BagsList ListNodes (r:3 w:3) + // Storage: Staking Bonded (r:1 w:0) + // Storage: BagsList ListBags (r:2 w:2) fn unbond() -> Weight { - (56_018_000 as Weight) - .saturating_add(T::DbWeight::get().reads(6 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + (115_916_000 as Weight) + .saturating_add(T::DbWeight::get().reads(12 as Weight)) + .saturating_add(T::DbWeight::get().writes(8 as Weight)) } - fn withdraw_unbonded_update(s: u32) -> Weight { - (49_532_000 as Weight) + // Storage: Staking Ledger (r:1 w:1) + // Storage: Staking CurrentEra (r:1 w:0) + // Storage: Balances Locks (r:1 w:1) + // Storage: System Account (r:1 w:1) + fn withdraw_unbonded_update(s: u32, ) -> Weight { + (47_633_000 as Weight) // Standard Error: 0 - .saturating_add((29_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((25_000 as Weight).saturating_mul(s as Weight)) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } - fn withdraw_unbonded_kill(s: u32) -> Weight { - (81_722_000 as Weight) - // Standard Error: 1_000 - .saturating_add((2_331_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(8 as Weight)) - .saturating_add(T::DbWeight::get().writes(6 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) + // Storage: Staking Ledger (r:1 w:1) + // Storage: Staking CurrentEra (r:1 w:0) + // Storage: Staking Bonded (r:1 w:1) + // Storage: Staking SlashingSpans (r:1 w:0) + // Storage: Staking Validators (r:1 w:0) + // Storage: Staking Nominators (r:1 w:1) + // Storage: Staking CounterForNominators (r:1 w:1) + // Storage: BagsList ListNodes (r:2 w:2) + // Storage: BagsList ListBags (r:1 w:1) + // Storage: BagsList CounterForListNodes (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: Balances Locks (r:1 w:1) + // Storage: Staking Payee (r:0 w:1) + fn withdraw_unbonded_kill(_s: u32, ) -> Weight { + (94_253_000 as Weight) + .saturating_add(T::DbWeight::get().reads(13 as Weight)) + .saturating_add(T::DbWeight::get().writes(11 as Weight)) } + // Storage: Staking Ledger (r:1 w:0) + // Storage: Staking MinValidatorBond (r:1 w:0) + // Storage: Staking Validators (r:1 w:1) + // Storage: Staking MaxValidatorsCount (r:1 w:0) + // Storage: Staking Nominators (r:1 w:1) + // Storage: Staking CounterForNominators (r:1 w:1) + // Storage: BagsList ListNodes (r:2 w:2) + // Storage: BagsList ListBags (r:1 w:1) + // Storage: BagsList CounterForListNodes (r:1 w:1) + // Storage: Staking CounterForValidators (r:1 w:1) fn validate() -> Weight { - (64_915_000 as Weight) - .saturating_add(T::DbWeight::get().reads(10 as Weight)) - .saturating_add(T::DbWeight::get().writes(6 as Weight)) + (63_555_000 as Weight) + .saturating_add(T::DbWeight::get().reads(11 as Weight)) + .saturating_add(T::DbWeight::get().writes(8 as Weight)) } - fn kick(k: u32) -> Weight { - (10_120_000 as Weight) - // Standard Error: 6_000 - .saturating_add((18_142_000 as Weight).saturating_mul(k as Weight)) + // Storage: Staking Ledger (r:1 w:0) + // Storage: Staking Nominators (r:1 w:1) + fn kick(k: u32, ) -> Weight { + (9_518_000 as Weight) + // Standard Error: 11_000 + .saturating_add((16_662_000 as Weight).saturating_mul(k as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(k as Weight))) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(k as Weight))) } - fn nominate(n: u32) -> Weight { - (37_716_000 as Weight) - // Standard Error: 6_000 - .saturating_add((5_240_000 as Weight).saturating_mul(n as Weight)) - .saturating_add(T::DbWeight::get().reads(7 as Weight)) + // Storage: Staking Ledger (r:1 w:0) + // Storage: Staking MinNominatorBond (r:1 w:0) + // Storage: Staking Nominators (r:1 w:1) + // Storage: Staking MaxNominatorsCount (r:1 w:0) + // Storage: Staking Validators (r:2 w:0) + // Storage: Staking CurrentEra (r:1 w:0) + // Storage: Staking CounterForNominators (r:1 w:1) + // Storage: Staking Bonded (r:1 w:0) + // Storage: BagsList ListNodes (r:2 w:2) + // Storage: BagsList ListBags (r:1 w:1) + // Storage: BagsList CounterForListNodes (r:1 w:1) + fn nominate(n: u32, ) -> Weight { + (74_049_000 as Weight) + // Standard Error: 16_000 + .saturating_add((5_118_000 as Weight).saturating_mul(n as Weight)) + .saturating_add(T::DbWeight::get().reads(12 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(n as Weight))) - .saturating_add(T::DbWeight::get().writes(7 as Weight)) + .saturating_add(T::DbWeight::get().writes(6 as Weight)) } + // Storage: Staking Ledger (r:1 w:0) + // Storage: Staking Validators (r:1 w:0) + // Storage: Staking Nominators (r:1 w:1) + // Storage: Staking CounterForNominators (r:1 w:1) + // Storage: BagsList ListNodes (r:2 w:2) + // Storage: BagsList ListBags (r:1 w:1) + // Storage: BagsList CounterForListNodes (r:1 w:1) fn chill() -> Weight { - (16_594_000 as Weight).saturating_add(T::DbWeight::get().reads(3 as Weight)) + (62_972_000 as Weight) + .saturating_add(T::DbWeight::get().reads(8 as Weight)) + .saturating_add(T::DbWeight::get().writes(6 as Weight)) } + // Storage: Staking Ledger (r:1 w:0) + // Storage: Staking Payee (r:0 w:1) fn set_payee() -> Weight { (10_848_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Staking Bonded (r:1 w:1) + // Storage: Staking Ledger (r:2 w:2) fn set_controller() -> Weight { - (23_658_000 as Weight) + (23_892_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } + // Storage: Staking ValidatorCount (r:0 w:1) fn set_validator_count() -> Weight { - (2_123_000 as Weight).saturating_add(T::DbWeight::get().writes(1 as Weight)) + (2_279_000 as Weight) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Staking ForceEra (r:0 w:1) fn force_no_eras() -> Weight { - (2_458_000 as Weight).saturating_add(T::DbWeight::get().writes(1 as Weight)) + (2_614_000 as Weight) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Staking ForceEra (r:0 w:1) fn force_new_era() -> Weight { - (2_428_000 as Weight).saturating_add(T::DbWeight::get().writes(1 as Weight)) + (2_592_000 as Weight) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Staking ForceEra (r:0 w:1) fn force_new_era_always() -> Weight { - (2_435_000 as Weight).saturating_add(T::DbWeight::get().writes(1 as Weight)) + (2_572_000 as Weight) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) } - fn set_invulnerables(v: u32) -> Weight { - (2_524_000 as Weight) + // Storage: Staking Invulnerables (r:0 w:1) + fn set_invulnerables(v: u32, ) -> Weight { + (2_700_000 as Weight) // Standard Error: 0 - .saturating_add((5_000 as Weight).saturating_mul(v as Weight)) + .saturating_add((57_000 as Weight).saturating_mul(v as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } - fn force_unstake(s: u32) -> Weight { - (57_861_000 as Weight) + // Storage: Staking Bonded (r:1 w:1) + // Storage: Staking SlashingSpans (r:1 w:0) + // Storage: Staking Validators (r:1 w:0) + // Storage: Staking Nominators (r:1 w:1) + // Storage: Staking CounterForNominators (r:1 w:1) + // Storage: BagsList ListNodes (r:2 w:2) + // Storage: BagsList ListBags (r:1 w:1) + // Storage: BagsList CounterForListNodes (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: Balances Locks (r:1 w:1) + // Storage: Staking Ledger (r:0 w:1) + // Storage: Staking Payee (r:0 w:1) + // Storage: Staking SpanSlash (r:0 w:2) + fn force_unstake(s: u32, ) -> Weight { + (90_113_000 as Weight) // Standard Error: 1_000 - .saturating_add((2_315_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(6 as Weight)) - .saturating_add(T::DbWeight::get().writes(6 as Weight)) + .saturating_add((2_230_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().reads(11 as Weight)) + .saturating_add(T::DbWeight::get().writes(12 as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) } - fn cancel_deferred_slash(s: u32) -> Weight { - (3_460_645_000 as Weight) - // Standard Error: 221_000 - .saturating_add((19_673_000 as Weight).saturating_mul(s as Weight)) + // Storage: Staking UnappliedSlashes (r:1 w:1) + fn cancel_deferred_slash(s: u32, ) -> Weight { + (2_809_466_000 as Weight) + // Standard Error: 181_000 + .saturating_add((16_204_000 as Weight).saturating_mul(s as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } - fn payout_stakers_dead_controller(n: u32) -> Weight { - (108_055_000 as Weight) - // Standard Error: 15_000 - .saturating_add((49_008_000 as Weight).saturating_mul(n as Weight)) + // Storage: Staking CurrentEra (r:1 w:0) + // Storage: Staking HistoryDepth (r:1 w:0) + // Storage: Staking ErasValidatorReward (r:1 w:0) + // Storage: Staking Bonded (r:2 w:0) + // Storage: Staking Ledger (r:1 w:1) + // Storage: Staking ErasStakersClipped (r:1 w:0) + // Storage: Staking ErasRewardPoints (r:1 w:0) + // Storage: Staking ErasValidatorPrefs (r:1 w:0) + // Storage: Staking Payee (r:2 w:0) + // Storage: System Account (r:2 w:2) + fn payout_stakers_dead_controller(n: u32, ) -> Weight { + (113_536_000 as Weight) + // Standard Error: 16_000 + .saturating_add((45_494_000 as Weight).saturating_mul(n as Weight)) .saturating_add(T::DbWeight::get().reads(10 as Weight)) .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(n as Weight))) .saturating_add(T::DbWeight::get().writes(2 as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(n as Weight))) } - fn payout_stakers_alive_staked(n: u32) -> Weight { - (122_624_000 as Weight) - // Standard Error: 22_000 - .saturating_add((60_815_000 as Weight).saturating_mul(n as Weight)) + // Storage: Staking CurrentEra (r:1 w:0) + // Storage: Staking HistoryDepth (r:1 w:0) + // Storage: Staking ErasValidatorReward (r:1 w:0) + // Storage: Staking Bonded (r:2 w:0) + // Storage: Staking Ledger (r:2 w:2) + // Storage: Staking ErasStakersClipped (r:1 w:0) + // Storage: Staking ErasRewardPoints (r:1 w:0) + // Storage: Staking ErasValidatorPrefs (r:1 w:0) + // Storage: Staking Payee (r:2 w:0) + // Storage: System Account (r:2 w:2) + // Storage: Balances Locks (r:2 w:2) + fn payout_stakers_alive_staked(n: u32, ) -> Weight { + (134_960_000 as Weight) + // Standard Error: 25_000 + .saturating_add((58_130_000 as Weight).saturating_mul(n as Weight)) .saturating_add(T::DbWeight::get().reads(11 as Weight)) .saturating_add(T::DbWeight::get().reads((5 as Weight).saturating_mul(n as Weight))) .saturating_add(T::DbWeight::get().writes(3 as Weight)) .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(n as Weight))) } - fn rebond(l: u32) -> Weight { - (46_725_000 as Weight) - // Standard Error: 1_000 - .saturating_add((61_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + // Storage: Staking Ledger (r:1 w:1) + // Storage: Balances Locks (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: BagsList ListNodes (r:3 w:3) + // Storage: Staking Bonded (r:1 w:0) + // Storage: BagsList ListBags (r:2 w:2) + fn rebond(l: u32, ) -> Weight { + (103_717_000 as Weight) + // Standard Error: 4_000 + .saturating_add((65_000 as Weight).saturating_mul(l as Weight)) + .saturating_add(T::DbWeight::get().reads(9 as Weight)) + .saturating_add(T::DbWeight::get().writes(8 as Weight)) } - fn set_history_depth(e: u32) -> Weight { + // Storage: Staking CurrentEra (r:1 w:0) + // Storage: Staking HistoryDepth (r:1 w:1) + // Storage: Staking ErasStakersClipped (r:0 w:2) + // Storage: Staking ErasValidatorPrefs (r:0 w:2) + // Storage: Staking ErasValidatorReward (r:0 w:1) + // Storage: Staking ErasRewardPoints (r:0 w:1) + // Storage: Staking ErasStakers (r:0 w:2) + // Storage: Staking ErasTotalStake (r:0 w:1) + // Storage: Staking ErasStartSessionIndex (r:0 w:1) + fn set_history_depth(e: u32, ) -> Weight { (0 as Weight) - // Standard Error: 70_000 - .saturating_add((33_332_000 as Weight).saturating_mul(e as Weight)) + // Standard Error: 69_000 + .saturating_add((31_059_000 as Weight).saturating_mul(e as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) .saturating_add(T::DbWeight::get().writes((7 as Weight).saturating_mul(e as Weight))) } - fn reap_stash(s: u32) -> Weight { - (68_887_000 as Weight) - // Standard Error: 0 - .saturating_add((2_318_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(7 as Weight)) - .saturating_add(T::DbWeight::get().writes(8 as Weight)) + // Storage: System Account (r:1 w:1) + // Storage: Staking Bonded (r:1 w:1) + // Storage: Staking SlashingSpans (r:1 w:1) + // Storage: Staking Validators (r:1 w:0) + // Storage: Staking Nominators (r:1 w:1) + // Storage: Staking CounterForNominators (r:1 w:1) + // Storage: BagsList ListNodes (r:2 w:2) + // Storage: BagsList ListBags (r:1 w:1) + // Storage: BagsList CounterForListNodes (r:1 w:1) + // Storage: Balances Locks (r:1 w:1) + // Storage: Staking Ledger (r:0 w:1) + // Storage: Staking Payee (r:0 w:1) + // Storage: Staking SpanSlash (r:0 w:1) + fn reap_stash(s: u32, ) -> Weight { + (93_312_000 as Weight) + // Standard Error: 1_000 + .saturating_add((2_226_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().reads(11 as Weight)) + .saturating_add(T::DbWeight::get().writes(12 as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) } - fn new_era(v: u32, n: u32) -> Weight { + // Storage: Staking CounterForNominators (r:1 w:0) + // Storage: Staking CounterForValidators (r:1 w:0) + // Storage: Staking Validators (r:2 w:0) + // Storage: Staking Bonded (r:101 w:0) + // Storage: Staking Ledger (r:101 w:0) + // Storage: Staking SlashingSpans (r:1 w:0) + // Storage: Staking Nominators (r:101 w:0) + // Storage: System BlockWeight (r:1 w:1) + // Storage: Staking ValidatorCount (r:1 w:0) + // Storage: Staking MinimumValidatorCount (r:1 w:0) + // Storage: Staking CurrentEra (r:1 w:1) + // Storage: Staking HistoryDepth (r:1 w:0) + // Storage: Staking ErasStakersClipped (r:0 w:1) + // Storage: Staking ErasValidatorPrefs (r:0 w:1) + // Storage: Staking ErasStakers (r:0 w:1) + // Storage: Staking ErasTotalStake (r:0 w:1) + // Storage: Staking ErasStartSessionIndex (r:0 w:1) + fn new_era(v: u32, n: u32, ) -> Weight { (0 as Weight) - // Standard Error: 765_000 - .saturating_add((309_896_000 as Weight).saturating_mul(v as Weight)) - // Standard Error: 38_000 - .saturating_add((53_011_000 as Weight).saturating_mul(n as Weight)) - .saturating_add(T::DbWeight::get().reads(192 as Weight)) - .saturating_add(T::DbWeight::get().reads((4 as Weight).saturating_mul(v as Weight))) - .saturating_add(T::DbWeight::get().reads((4 as Weight).saturating_mul(n as Weight))) + // Standard Error: 724_000 + .saturating_add((300_240_000 as Weight).saturating_mul(v as Weight)) + // Standard Error: 36_000 + .saturating_add((49_412_000 as Weight).saturating_mul(n as Weight)) + .saturating_add(T::DbWeight::get().reads(10 as Weight)) + .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(v as Weight))) + .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(n as Weight))) .saturating_add(T::DbWeight::get().writes(4 as Weight)) .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(v as Weight))) } - fn get_npos_voters(v: u32, n: u32, s: u32) -> Weight { + // Storage: Staking CounterForNominators (r:1 w:0) + // Storage: Staking CounterForValidators (r:1 w:0) + // Storage: Staking Validators (r:501 w:0) + // Storage: Staking Bonded (r:1500 w:0) + // Storage: Staking Ledger (r:1500 w:0) + // Storage: Staking SlashingSpans (r:21 w:0) + // Storage: Staking Nominators (r:1001 w:0) + // Storage: System BlockWeight (r:1 w:1) + fn get_npos_voters(v: u32, n: u32, s: u32, ) -> Weight { (0 as Weight) - // Standard Error: 92_000 - .saturating_add((24_187_000 as Weight).saturating_mul(v as Weight)) - // Standard Error: 92_000 - .saturating_add((27_771_000 as Weight).saturating_mul(n as Weight)) - // Standard Error: 3_152_000 - .saturating_add((40_493_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) + // Standard Error: 83_000 + .saturating_add((23_656_000 as Weight).saturating_mul(v as Weight)) + // Standard Error: 83_000 + .saturating_add((31_191_000 as Weight).saturating_mul(n as Weight)) + // Standard Error: 2_847_000 + .saturating_add((37_983_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().reads(6 as Weight)) .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(v as Weight))) - .saturating_add(T::DbWeight::get().reads((4 as Weight).saturating_mul(n as Weight))) + .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(n as Weight))) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) } - fn get_npos_targets(v: u32) -> Weight { + // Storage: Staking Validators (r:501 w:0) + // Storage: System BlockWeight (r:1 w:1) + fn get_npos_targets(v: u32, ) -> Weight { (0 as Weight) - // Standard Error: 50_000 - .saturating_add((10_984_000 as Weight).saturating_mul(v as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) + // Standard Error: 27_000 + .saturating_add((9_398_000 as Weight).saturating_mul(v as Weight)) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(v as Weight))) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Staking MinValidatorBond (r:0 w:1) + // Storage: Staking MaxValidatorsCount (r:0 w:1) + // Storage: Staking ChillThreshold (r:0 w:1) + // Storage: Staking MaxNominatorsCount (r:0 w:1) + // Storage: Staking MinNominatorBond (r:0 w:1) fn set_staking_limits() -> Weight { - (5_708_000 as Weight).saturating_add(T::DbWeight::get().writes(5 as Weight)) + (5_996_000 as Weight) + .saturating_add(T::DbWeight::get().writes(5 as Weight)) } + // Storage: Staking Ledger (r:1 w:0) + // Storage: Staking ChillThreshold (r:1 w:0) + // Storage: Staking Nominators (r:1 w:1) + // Storage: Staking MaxNominatorsCount (r:1 w:0) + // Storage: Staking CounterForNominators (r:1 w:1) + // Storage: Staking MinNominatorBond (r:1 w:0) + // Storage: Staking Validators (r:1 w:0) + // Storage: BagsList ListNodes (r:2 w:2) + // Storage: BagsList ListBags (r:1 w:1) + // Storage: BagsList CounterForListNodes (r:1 w:1) fn chill_other() -> Weight { - (84_065_000 as Weight) + (76_568_000 as Weight) .saturating_add(T::DbWeight::get().reads(11 as Weight)) .saturating_add(T::DbWeight::get().writes(6 as Weight)) } diff --git a/runtime/kusama/src/weights/runtime_parachains_initializer.rs b/runtime/kusama/src/weights/runtime_parachains_initializer.rs new file mode 100644 index 000000000000..6b41892d3e45 --- /dev/null +++ b/runtime/kusama/src/weights/runtime_parachains_initializer.rs @@ -0,0 +1,55 @@ +// Copyright 2017-2021 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . +//! Autogenerated weights for `runtime_parachains::initializer` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2021-09-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 + +// Executed Command: +// target/release/polkadot +// benchmark +// --chain=kusama-dev +// --steps=50 +// --repeat=20 +// --pallet=runtime_parachains::initializer +// --extrinsic=* +// --execution=wasm +// --wasm-execution=compiled +// --heap-pages=4096 +// --header=./file_header.txt +// --output=./runtime/kusama/src/weights/runtime_parachains_initializer.rs + + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `runtime_parachains::initializer`. +pub struct WeightInfo(PhantomData); +impl runtime_parachains::initializer::WeightInfo for WeightInfo { + // Storage: System Digest (r:1 w:1) + fn force_approve(d: u32, ) -> Weight { + (5_156_000 as Weight) + // Standard Error: 0 + .saturating_add((2_000 as Weight).saturating_mul(d as Weight)) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } +} diff --git a/runtime/kusama/src/weights/runtime_parachains_paras.rs b/runtime/kusama/src/weights/runtime_parachains_paras.rs new file mode 100644 index 000000000000..728d95561bfc --- /dev/null +++ b/runtime/kusama/src/weights/runtime_parachains_paras.rs @@ -0,0 +1,106 @@ +// Copyright 2017-2021 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . +//! Autogenerated weights for `runtime_parachains::paras` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2021-09-21, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 + +// Executed Command: +// target/release/polkadot +// benchmark +// --chain=kusama-dev +// --steps=50 +// --repeat=20 +// --pallet=runtime_parachains::paras +// --extrinsic=* +// --execution=wasm +// --wasm-execution=compiled +// --heap-pages=4096 +// --header=./file_header.txt +// --output=./runtime/kusama/src/weights/runtime_parachains_paras.rs + + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `runtime_parachains::paras`. +pub struct WeightInfo(PhantomData); +impl runtime_parachains::paras::WeightInfo for WeightInfo { + // Storage: Paras CurrentCodeHash (r:1 w:1) + // Storage: Paras CodeByHashRefs (r:1 w:1) + // Storage: Paras PastCodeMeta (r:1 w:1) + // Storage: Paras PastCodePruning (r:1 w:1) + // Storage: Paras PastCodeHash (r:0 w:1) + // Storage: Paras CodeByHash (r:0 w:1) + fn force_set_current_code(c: u32, ) -> Weight { + (0 as Weight) + // Standard Error: 0 + .saturating_add((3_000 as Weight).saturating_mul(c as Weight)) + .saturating_add(T::DbWeight::get().reads(4 as Weight)) + .saturating_add(T::DbWeight::get().writes(6 as Weight)) + } + // Storage: Paras Heads (r:0 w:1) + fn force_set_current_head(s: u32, ) -> Weight { + (16_088_000 as Weight) + // Standard Error: 0 + .saturating_add((1_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: Configuration ActiveConfig (r:1 w:0) + // Storage: Paras FutureCodeUpgrades (r:1 w:1) + // Storage: Paras UpcomingUpgrades (r:1 w:1) + // Storage: Paras UpgradeCooldowns (r:1 w:1) + // Storage: System Digest (r:1 w:1) + // Storage: Paras CodeByHashRefs (r:1 w:1) + // Storage: Paras CodeByHash (r:0 w:1) + // Storage: Paras FutureCodeHash (r:0 w:1) + // Storage: Paras UpgradeRestrictionSignal (r:0 w:1) + fn force_schedule_code_upgrade(c: u32, ) -> Weight { + (0 as Weight) + // Standard Error: 0 + .saturating_add((3_000 as Weight).saturating_mul(c as Weight)) + .saturating_add(T::DbWeight::get().reads(6 as Weight)) + .saturating_add(T::DbWeight::get().writes(8 as Weight)) + } + // Storage: Paras FutureCodeUpgrades (r:1 w:1) + // Storage: Paras FutureCodeHash (r:1 w:1) + // Storage: Paras CurrentCodeHash (r:1 w:1) + // Storage: System Digest (r:1 w:1) + // Storage: Paras PastCodeMeta (r:1 w:1) + // Storage: Paras PastCodePruning (r:1 w:1) + // Storage: Paras Heads (r:0 w:1) + // Storage: Paras PastCodeHash (r:0 w:1) + // Storage: Paras UpgradeGoAheadSignal (r:0 w:1) + fn force_note_new_head(s: u32, ) -> Weight { + (69_114_000 as Weight) + // Standard Error: 0 + .saturating_add((1_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().reads(6 as Weight)) + .saturating_add(T::DbWeight::get().writes(9 as Weight)) + } + // Storage: ParasShared CurrentSessionIndex (r:1 w:0) + // Storage: Paras ActionsQueue (r:1 w:1) + fn force_queue_action() -> Weight { + (26_752_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } +} diff --git a/runtime/parachains/Cargo.toml b/runtime/parachains/Cargo.toml index 3b75b95619fe..c281269b8682 100644 --- a/runtime/parachains/Cargo.toml +++ b/runtime/parachains/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "polkadot-runtime-parachains" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" [dependencies] bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] } log = { version = "0.4.14", default-features = false } rustc-hex = { version = "2.1.0", default-features = false } scale-info = { version = "1.0", default-features = false, features = ["derive"] } diff --git a/runtime/parachains/src/configuration.rs b/runtime/parachains/src/configuration.rs index bcfc05e1a6c5..69ff43615678 100644 --- a/runtime/parachains/src/configuration.rs +++ b/runtime/parachains/src/configuration.rs @@ -22,7 +22,7 @@ use crate::shared; use frame_support::{pallet_prelude::*, weights::constants::WEIGHT_PER_MILLIS}; use frame_system::pallet_prelude::*; use parity_scale_codec::{Decode, Encode}; -use primitives::v1::{Balance, SessionIndex, MAX_CODE_SIZE, MAX_POV_SIZE}; +use primitives::v1::{Balance, SessionIndex, MAX_CODE_SIZE, MAX_HEAD_DATA_SIZE, MAX_POV_SIZE}; use sp_runtime::traits::Zero; use sp_std::prelude::*; @@ -256,6 +256,13 @@ impl HostConfiguration { ) } + if self.max_head_data_size > MAX_HEAD_DATA_SIZE { + panic!( + "`max_head_data_size` ({}) is bigger than allowed by the client ({})", + self.max_head_data_size, MAX_HEAD_DATA_SIZE + ) + } + if self.max_pov_size > MAX_POV_SIZE { panic!("`max_pov_size` is bigger than allowed by the client") } @@ -326,7 +333,10 @@ pub mod pallet { #[pallet::call] impl Pallet { /// Set the validation upgrade frequency. - #[pallet::weight(T::WeightInfo::set_config_with_block_number())] + #[pallet::weight(( + T::WeightInfo::set_config_with_block_number(), + DispatchClass::Operational, + ))] pub fn set_validation_upgrade_frequency( origin: OriginFor, new: T::BlockNumber, @@ -339,7 +349,10 @@ pub mod pallet { } /// Set the validation upgrade delay. - #[pallet::weight(T::WeightInfo::set_config_with_block_number())] + #[pallet::weight(( + T::WeightInfo::set_config_with_block_number(), + DispatchClass::Operational, + ))] pub fn set_validation_upgrade_delay( origin: OriginFor, new: T::BlockNumber, @@ -352,7 +365,10 @@ pub mod pallet { } /// Set the acceptance period for an included candidate. - #[pallet::weight(T::WeightInfo::set_config_with_block_number())] + #[pallet::weight(( + T::WeightInfo::set_config_with_block_number(), + DispatchClass::Operational, + ))] pub fn set_code_retention_period( origin: OriginFor, new: T::BlockNumber, @@ -365,7 +381,10 @@ pub mod pallet { } /// Set the max validation code size for incoming upgrades. - #[pallet::weight(T::WeightInfo::set_config_with_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_u32(), + DispatchClass::Operational, + ))] pub fn set_max_code_size(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; ensure!(new <= MAX_CODE_SIZE, Error::::InvalidNewValue); @@ -376,7 +395,10 @@ pub mod pallet { } /// Set the max POV block size for incoming upgrades. - #[pallet::weight(T::WeightInfo::set_config_with_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_u32(), + DispatchClass::Operational, + ))] pub fn set_max_pov_size(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; ensure!(new <= MAX_POV_SIZE, Error::::InvalidNewValue); @@ -387,9 +409,13 @@ pub mod pallet { } /// Set the max head data size for paras. - #[pallet::weight(T::WeightInfo::set_config_with_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_u32(), + DispatchClass::Operational, + ))] pub fn set_max_head_data_size(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; + ensure!(new <= MAX_HEAD_DATA_SIZE, Error::::InvalidNewValue); Self::update_config_member(|config| { sp_std::mem::replace(&mut config.max_head_data_size, new) != new }); @@ -397,7 +423,10 @@ pub mod pallet { } /// Set the number of parathread execution cores. - #[pallet::weight(T::WeightInfo::set_config_with_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_u32(), + DispatchClass::Operational, + ))] pub fn set_parathread_cores(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -407,7 +436,10 @@ pub mod pallet { } /// Set the number of retries for a particular parathread. - #[pallet::weight(T::WeightInfo::set_config_with_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_u32(), + DispatchClass::Operational, + ))] pub fn set_parathread_retries(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -417,7 +449,10 @@ pub mod pallet { } /// Set the parachain validator-group rotation frequency - #[pallet::weight(T::WeightInfo::set_config_with_block_number())] + #[pallet::weight(( + T::WeightInfo::set_config_with_block_number(), + DispatchClass::Operational, + ))] pub fn set_group_rotation_frequency( origin: OriginFor, new: T::BlockNumber, @@ -433,7 +468,10 @@ pub mod pallet { } /// Set the availability period for parachains. - #[pallet::weight(T::WeightInfo::set_config_with_block_number())] + #[pallet::weight(( + T::WeightInfo::set_config_with_block_number(), + DispatchClass::Operational, + ))] pub fn set_chain_availability_period( origin: OriginFor, new: T::BlockNumber, @@ -449,7 +487,10 @@ pub mod pallet { } /// Set the availability period for parathreads. - #[pallet::weight(T::WeightInfo::set_config_with_block_number())] + #[pallet::weight(( + T::WeightInfo::set_config_with_block_number(), + DispatchClass::Operational, + ))] pub fn set_thread_availability_period( origin: OriginFor, new: T::BlockNumber, @@ -465,7 +506,10 @@ pub mod pallet { } /// Set the scheduling lookahead, in expected number of blocks at peak throughput. - #[pallet::weight(T::WeightInfo::set_config_with_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_u32(), + DispatchClass::Operational, + ))] pub fn set_scheduling_lookahead(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -475,7 +519,10 @@ pub mod pallet { } /// Set the maximum number of validators to assign to any core. - #[pallet::weight(T::WeightInfo::set_config_with_option_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_option_u32(), + DispatchClass::Operational, + ))] pub fn set_max_validators_per_core( origin: OriginFor, new: Option, @@ -488,7 +535,10 @@ pub mod pallet { } /// Set the maximum number of validators to use in parachain consensus. - #[pallet::weight(T::WeightInfo::set_config_with_option_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_option_u32(), + DispatchClass::Operational, + ))] pub fn set_max_validators(origin: OriginFor, new: Option) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -498,7 +548,10 @@ pub mod pallet { } /// Set the dispute period, in number of sessions to keep for disputes. - #[pallet::weight(T::WeightInfo::set_config_with_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_u32(), + DispatchClass::Operational, + ))] pub fn set_dispute_period(origin: OriginFor, new: SessionIndex) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -508,7 +561,10 @@ pub mod pallet { } /// Set the dispute post conclusion acceptance period. - #[pallet::weight(T::WeightInfo::set_config_with_block_number())] + #[pallet::weight(( + T::WeightInfo::set_config_with_block_number(), + DispatchClass::Operational, + ))] pub fn set_dispute_post_conclusion_acceptance_period( origin: OriginFor, new: T::BlockNumber, @@ -522,7 +578,10 @@ pub mod pallet { } /// Set the maximum number of dispute spam slots. - #[pallet::weight(T::WeightInfo::set_config_with_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_u32(), + DispatchClass::Operational, + ))] pub fn set_dispute_max_spam_slots(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -532,7 +591,10 @@ pub mod pallet { } /// Set the dispute conclusion by time out period. - #[pallet::weight(T::WeightInfo::set_config_with_block_number())] + #[pallet::weight(( + T::WeightInfo::set_config_with_block_number(), + DispatchClass::Operational, + ))] pub fn set_dispute_conclusion_by_time_out_period( origin: OriginFor, new: T::BlockNumber, @@ -546,7 +608,10 @@ pub mod pallet { /// Set the no show slots, in number of number of consensus slots. /// Must be at least 1. - #[pallet::weight(T::WeightInfo::set_config_with_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_u32(), + DispatchClass::Operational, + ))] pub fn set_no_show_slots(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; @@ -559,7 +624,10 @@ pub mod pallet { } /// Set the total number of delay tranches. - #[pallet::weight(T::WeightInfo::set_config_with_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_u32(), + DispatchClass::Operational, + ))] pub fn set_n_delay_tranches(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -569,7 +637,10 @@ pub mod pallet { } /// Set the zeroth delay tranche width. - #[pallet::weight(T::WeightInfo::set_config_with_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_u32(), + DispatchClass::Operational, + ))] pub fn set_zeroth_delay_tranche_width(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -579,7 +650,10 @@ pub mod pallet { } /// Set the number of validators needed to approve a block. - #[pallet::weight(T::WeightInfo::set_config_with_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_u32(), + DispatchClass::Operational, + ))] pub fn set_needed_approvals(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -589,7 +663,10 @@ pub mod pallet { } /// Set the number of samples to do of the `RelayVRFModulo` approval assignment criterion. - #[pallet::weight(T::WeightInfo::set_config_with_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_u32(), + DispatchClass::Operational, + ))] pub fn set_relay_vrf_modulo_samples(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -599,7 +676,10 @@ pub mod pallet { } /// Sets the maximum items that can present in a upward dispatch queue at once. - #[pallet::weight(T::WeightInfo::set_config_with_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_u32(), + DispatchClass::Operational, + ))] pub fn set_max_upward_queue_count(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -609,7 +689,10 @@ pub mod pallet { } /// Sets the maximum total size of items that can present in a upward dispatch queue at once. - #[pallet::weight(T::WeightInfo::set_config_with_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_u32(), + DispatchClass::Operational, + ))] pub fn set_max_upward_queue_size(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -619,7 +702,10 @@ pub mod pallet { } /// Set the critical downward message size. - #[pallet::weight(T::WeightInfo::set_config_with_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_u32(), + DispatchClass::Operational, + ))] pub fn set_max_downward_message_size(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -629,7 +715,10 @@ pub mod pallet { } /// Sets the soft limit for the phase of dispatching dispatchable upward messages. - #[pallet::weight(T::WeightInfo::set_config_with_weight())] + #[pallet::weight(( + T::WeightInfo::set_config_with_weight(), + DispatchClass::Operational, + ))] pub fn set_ump_service_total_weight(origin: OriginFor, new: Weight) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -639,7 +728,10 @@ pub mod pallet { } /// Sets the maximum size of an upward message that can be sent by a candidate. - #[pallet::weight(T::WeightInfo::set_config_with_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_u32(), + DispatchClass::Operational, + ))] pub fn set_max_upward_message_size(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -649,7 +741,10 @@ pub mod pallet { } /// Sets the maximum number of messages that a candidate can contain. - #[pallet::weight(T::WeightInfo::set_config_with_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_u32(), + DispatchClass::Operational, + ))] pub fn set_max_upward_message_num_per_candidate( origin: OriginFor, new: u32, @@ -662,7 +757,10 @@ pub mod pallet { } /// Sets the number of sessions after which an HRMP open channel request expires. - #[pallet::weight(T::WeightInfo::set_hrmp_open_request_ttl())] + #[pallet::weight(( + T::WeightInfo::set_hrmp_open_request_ttl(), + DispatchClass::Operational, + ))] // Deprecated, but is not marked as such, because that would trigger warnings coming from // the macro. pub fn set_hrmp_open_request_ttl(_origin: OriginFor, _new: u32) -> DispatchResult { @@ -670,7 +768,10 @@ pub mod pallet { } /// Sets the amount of funds that the sender should provide for opening an HRMP channel. - #[pallet::weight(T::WeightInfo::set_config_with_balance())] + #[pallet::weight(( + T::WeightInfo::set_config_with_balance(), + DispatchClass::Operational, + ))] pub fn set_hrmp_sender_deposit(origin: OriginFor, new: Balance) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -681,7 +782,10 @@ pub mod pallet { /// Sets the amount of funds that the recipient should provide for accepting opening an HRMP /// channel. - #[pallet::weight(T::WeightInfo::set_config_with_balance())] + #[pallet::weight(( + T::WeightInfo::set_config_with_balance(), + DispatchClass::Operational, + ))] pub fn set_hrmp_recipient_deposit(origin: OriginFor, new: Balance) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -691,7 +795,10 @@ pub mod pallet { } /// Sets the maximum number of messages allowed in an HRMP channel at once. - #[pallet::weight(T::WeightInfo::set_config_with_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_u32(), + DispatchClass::Operational, + ))] pub fn set_hrmp_channel_max_capacity(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -701,7 +808,10 @@ pub mod pallet { } /// Sets the maximum total size of messages in bytes allowed in an HRMP channel at once. - #[pallet::weight(T::WeightInfo::set_config_with_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_u32(), + DispatchClass::Operational, + ))] pub fn set_hrmp_channel_max_total_size(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -711,7 +821,10 @@ pub mod pallet { } /// Sets the maximum number of inbound HRMP channels a parachain is allowed to accept. - #[pallet::weight(T::WeightInfo::set_config_with_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_u32(), + DispatchClass::Operational, + ))] pub fn set_hrmp_max_parachain_inbound_channels( origin: OriginFor, new: u32, @@ -724,7 +837,10 @@ pub mod pallet { } /// Sets the maximum number of inbound HRMP channels a parathread is allowed to accept. - #[pallet::weight(T::WeightInfo::set_config_with_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_u32(), + DispatchClass::Operational, + ))] pub fn set_hrmp_max_parathread_inbound_channels( origin: OriginFor, new: u32, @@ -737,7 +853,10 @@ pub mod pallet { } /// Sets the maximum size of a message that could ever be put into an HRMP channel. - #[pallet::weight(T::WeightInfo::set_config_with_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_u32(), + DispatchClass::Operational, + ))] pub fn set_hrmp_channel_max_message_size(origin: OriginFor, new: u32) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { @@ -747,7 +866,10 @@ pub mod pallet { } /// Sets the maximum number of outbound HRMP channels a parachain is allowed to open. - #[pallet::weight(T::WeightInfo::set_config_with_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_u32(), + DispatchClass::Operational, + ))] pub fn set_hrmp_max_parachain_outbound_channels( origin: OriginFor, new: u32, @@ -760,7 +882,10 @@ pub mod pallet { } /// Sets the maximum number of outbound HRMP channels a parathread is allowed to open. - #[pallet::weight(T::WeightInfo::set_config_with_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_u32(), + DispatchClass::Operational, + ))] pub fn set_hrmp_max_parathread_outbound_channels( origin: OriginFor, new: u32, @@ -773,7 +898,10 @@ pub mod pallet { } /// Sets the maximum number of outbound HRMP messages can be sent by a candidate. - #[pallet::weight(T::WeightInfo::set_config_with_u32())] + #[pallet::weight(( + T::WeightInfo::set_config_with_u32(), + DispatchClass::Operational, + ))] pub fn set_hrmp_max_message_num_per_candidate( origin: OriginFor, new: u32, @@ -786,7 +914,10 @@ pub mod pallet { } /// Sets the maximum amount of weight any individual upward message may consume. - #[pallet::weight(T::WeightInfo::set_config_with_weight())] + #[pallet::weight(( + T::WeightInfo::set_config_with_weight(), + DispatchClass::Operational, + ))] pub fn set_ump_max_individual_weight(origin: OriginFor, new: Weight) -> DispatchResult { ensure_root(origin)?; Self::update_config_member(|config| { diff --git a/runtime/parachains/src/disputes.rs b/runtime/parachains/src/disputes.rs index b3bd5a3ed68d..1ec5515667fb 100644 --- a/runtime/parachains/src/disputes.rs +++ b/runtime/parachains/src/disputes.rs @@ -23,6 +23,7 @@ use crate::{ }; use bitvec::{bitvec, order::Lsb0 as BitOrderLsb0}; use frame_support::{ensure, traits::Get, weights::Weight}; +use frame_system::pallet_prelude::*; use parity_scale_codec::{Decode, Encode}; use primitives::v1::{ byzantine_threshold, supermajority_threshold, ApprovalVote, CandidateHash, CompactStatement, @@ -37,6 +38,11 @@ use sp_runtime::{ }; use sp_std::{collections::btree_set::BTreeSet, prelude::*}; +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + +pub use crate::Origin as ParachainOrigin; + /// Whether the dispute is local or remote. #[derive(Encode, Decode, Clone, PartialEq, Eq, RuntimeDebug, TypeInfo)] pub enum DisputeLocation { @@ -123,9 +129,8 @@ pub trait DisputesHandler { included_in: BlockNumber, ); - /// Whether the given candidate could be invalid, i.e. there is an ongoing - /// or concluded dispute with supermajority-against. - fn could_be_invalid(session: SessionIndex, candidate_hash: CandidateHash) -> bool; + /// Whether the given candidate concluded invalid in a dispute with supermajority. + fn concluded_invalid(session: SessionIndex, candidate_hash: CandidateHash) -> bool; /// Called by the initializer to initialize the configuration module. fn initializer_initialize(now: BlockNumber) -> Weight; @@ -159,7 +164,7 @@ impl DisputesHandler for () { ) { } - fn could_be_invalid(_session: SessionIndex, _candidate_hash: CandidateHash) -> bool { + fn concluded_invalid(_session: SessionIndex, _candidate_hash: CandidateHash) -> bool { false } @@ -195,8 +200,8 @@ impl DisputesHandler for pallet::Pallet { pallet::Pallet::::note_included(session, candidate_hash, included_in) } - fn could_be_invalid(session: SessionIndex, candidate_hash: CandidateHash) -> bool { - pallet::Pallet::::could_be_invalid(session, candidate_hash) + fn concluded_invalid(session: SessionIndex, candidate_hash: CandidateHash) -> bool { + pallet::Pallet::::concluded_invalid(session, candidate_hash) } fn initializer_initialize(now: T::BlockNumber) -> Weight { @@ -212,6 +217,17 @@ impl DisputesHandler for pallet::Pallet { } } +pub trait WeightInfo { + fn force_unfreeze() -> Weight; +} + +pub struct TestWeightInfo; +impl WeightInfo for TestWeightInfo { + fn force_unfreeze() -> Weight { + 0 + } +} + pub use pallet::*; #[frame_support::pallet] pub mod pallet { @@ -223,6 +239,9 @@ pub mod pallet { type Event: From> + IsType<::Event>; type RewardValidators: RewardValidators; type PunishValidators: PunishValidators; + + /// Weight information for extrinsics in this pallet. + type WeightInfo: WeightInfo; } #[pallet::pallet] @@ -285,8 +304,8 @@ pub mod pallet { DisputeTimedOut(CandidateHash), /// A dispute has concluded with supermajority against a candidate. /// Block authors should no longer build on top of this head and should - /// instead revert to the block at the given height which is the last - /// known valid block in this chain. + /// instead revert the block at the given height. This should be the + /// number of the child of the last known valid block in the chain. Revert(T::BlockNumber), } @@ -304,6 +323,21 @@ pub mod pallet { DuplicateStatement, /// Too many spam slots used by some specific validator. PotentialSpam, + /// A dispute where there are only votes on one side. + SingleSidedDispute, + } + + #[pallet::origin] + pub type Origin = ParachainOrigin; + + #[pallet::call] + impl Pallet { + #[pallet::weight(::WeightInfo::force_unfreeze())] + pub fn force_unfreeze(origin: OriginFor) -> DispatchResult { + ensure_root(origin)?; + Frozen::::set(None); + Ok(()) + } } } @@ -381,6 +415,13 @@ impl From for Error { } } +#[derive(RuntimeDebug, PartialEq, Eq)] +struct ImportUndo { + validator_index: ValidatorIndex, + valid: bool, + new_participant: bool, +} + struct DisputeStateImporter { state: DisputeState, now: BlockNumber, @@ -396,7 +437,11 @@ impl DisputeStateImporter { DisputeStateImporter { state, now, new_participants, pre_flags } } - fn import(&mut self, validator: ValidatorIndex, valid: bool) -> Result<(), VoteImportError> { + fn import( + &mut self, + validator: ValidatorIndex, + valid: bool, + ) -> Result { let (bits, other_bits) = if valid { (&mut self.state.validators_for, &mut self.state.validators_against) } else { @@ -415,16 +460,31 @@ impl DisputeStateImporter { return Err(VoteImportError::ValidatorIndexOutOfBounds) } + let mut undo = ImportUndo { validator_index: validator, valid, new_participant: false }; + bits.set(validator.0 as usize, true); // New participants tracks those which didn't appear on either // side of the dispute until now. So we check the other side // and checked the first side before. if other_bits.get(validator.0 as usize).map_or(false, |b| !*b) { + undo.new_participant = true; self.new_participants.set(validator.0 as usize, true); } - Ok(()) + Ok(undo) + } + + fn undo(&mut self, undo: ImportUndo) { + if undo.valid { + self.state.validators_for.set(undo.validator_index.0 as usize, false); + } else { + self.state.validators_against.set(undo.validator_index.0 as usize, false); + } + + if undo.new_participant { + self.new_participants.set(undo.validator_index.0 as usize, false); + } } fn finish(mut self) -> ImportSummary { @@ -758,10 +818,13 @@ impl Pallet { let valid = statement.indicates_validity(); - if let Err(_) = importer.import(*validator_index, valid) { - filter.remove_index(i); - continue - } + let undo = match importer.import(*validator_index, valid) { + Ok(u) => u, + Err(_) => { + filter.remove_index(i); + continue + }, + }; // Check signature after attempting import. // @@ -779,6 +842,7 @@ impl Pallet { statement, signature, ) { + importer.undo(undo); filter.remove_index(i); continue } @@ -787,6 +851,13 @@ impl Pallet { importer.finish() }; + // Reject disputes which don't have at least one vote on each side. + if summary.state.validators_for.count_ones() == 0 || + summary.state.validators_against.count_ones() == 0 + { + return StatementSetFilter::RemoveAll + } + // Apply spam slot changes. Bail early if too many occupied. let is_local = >::contains_key(&set.session, &set.candidate_hash); if !is_local { @@ -919,6 +990,13 @@ impl Pallet { importer.finish() }; + // Reject disputes which don't have at least one vote on each side. + ensure!( + summary.state.validators_for.count_ones() > 0 && + summary.state.validators_against.count_ones() > 0, + Error::::SingleSidedDispute, + ); + // Apply spam slot changes. Bail early if too many occupied. let is_local = >::contains_key(&set.session, &set.candidate_hash); if !is_local { @@ -1035,10 +1113,10 @@ impl Pallet { } } - pub(crate) fn could_be_invalid(session: SessionIndex, candidate_hash: CandidateHash) -> bool { + pub(crate) fn concluded_invalid(session: SessionIndex, candidate_hash: CandidateHash) -> bool { >::get(&session, &candidate_hash).map_or(false, |dispute| { - // A dispute that is ongoing or has concluded with supermajority-against. - dispute.concluded_at.is_none() || has_supermajority_against(&dispute) + // A dispute that has concluded with supermajority-against. + has_supermajority_against(&dispute) }) } @@ -1049,9 +1127,14 @@ impl Pallet { pub(crate) fn revert_and_freeze(revert_to: T::BlockNumber) { if Self::last_valid_block().map_or(true, |last| last > revert_to) { Frozen::::set(Some(revert_to)); - Self::deposit_event(Event::Revert(revert_to)); + + // The `Revert` log is about reverting a block, not reverting to a block. + // If we want to revert to block X in the current chain, we need to revert + // block X+1. + let revert = revert_to + One::one(); + Self::deposit_event(Event::Revert(revert)); frame_system::Pallet::::deposit_log( - ConsensusLog::Revert(revert_to.saturated_into()).into(), + ConsensusLog::Revert(revert.saturated_into()).into(), ); } } @@ -1383,15 +1466,14 @@ mod tests { }; new_test_ext(mock_genesis_config).execute_with(|| { + // We need 6 validators for the byzantine threshold to be 2 let v0 = ::Pair::generate().0; let v1 = ::Pair::generate().0; let v2 = ::Pair::generate().0; let v3 = ::Pair::generate().0; - - // NOTE: v0 index will be 0 - // NOTE: v1 index will be 3 - // NOTE: v2 index will be 2 - // NOTE: v3 index will be 1 + let v4 = ::Pair::generate().0; + let v5 = ::Pair::generate().0; + let v6 = ::Pair::generate().0; run_to_block(start, |b| { // a new session at each block @@ -1403,52 +1485,72 @@ mod tests { (&1, v1.public()), (&2, v2.public()), (&3, v3.public()), + (&4, v4.public()), + (&5, v5.public()), + (&6, v6.public()), ], Some(vec![ (&0, v0.public()), (&1, v1.public()), (&2, v2.public()), (&3, v3.public()), + (&4, v4.public()), + (&5, v5.public()), + (&6, v6.public()), ]), )) }); let candidate_hash = CandidateHash(sp_core::H256::repeat_byte(1)); - // v0 votes for 3 + // v0 votes for 3, v6 against. let stmts = vec![DisputeStatementSet { candidate_hash: candidate_hash.clone(), session: start - 1, - statements: vec![( - DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), - ValidatorIndex(0), - v0.sign( - &ExplicitDisputeStatement { - valid: true, - candidate_hash: candidate_hash.clone(), - session: start - 1, - } - .signing_payload(), + statements: vec![ + ( + DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), + ValidatorIndex(0), + v0.sign( + &ExplicitDisputeStatement { + valid: true, + candidate_hash: candidate_hash.clone(), + session: start - 1, + } + .signing_payload(), + ), ), - )], + ( + DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), + ValidatorIndex(6), + v2.sign( + &ExplicitDisputeStatement { + valid: false, + candidate_hash: candidate_hash.clone(), + session: start - 1, + } + .signing_payload(), + ), + ), + ], }]; assert_ok!( Pallet::::provide_multi_dispute_data(stmts), vec![(9, candidate_hash.clone())], ); - assert_eq!(SpamSlots::::get(start - 1), Some(vec![1, 0, 0, 0])); + assert_eq!(SpamSlots::::get(start - 1), Some(vec![1, 0, 0, 0, 0, 0, 1])); // Run to timeout period run_to_block(start + dispute_conclusion_by_time_out_period, |_| None); - assert_eq!(SpamSlots::::get(start - 1), Some(vec![1, 0, 0, 0])); + assert_eq!(SpamSlots::::get(start - 1), Some(vec![1, 0, 0, 0, 0, 0, 1])); // Run to timeout + 1 in order to executive on_finalize(timeout) run_to_block(start + dispute_conclusion_by_time_out_period + 1, |_| None); - assert_eq!(SpamSlots::::get(start - 1), Some(vec![0, 0, 0, 0])); + assert_eq!(SpamSlots::::get(start - 1), Some(vec![0, 0, 0, 0, 0, 0, 0])); assert_eq!( PUNISH_VALIDATORS_INCONCLUSIVE.with(|r| r.borrow()[0].clone()), - (9, vec![ValidatorIndex(0)]), + (9, vec![ValidatorIndex(0), ValidatorIndex(6)]), ); }); } @@ -1539,7 +1641,12 @@ mod tests { run_to_block(3, |b| { // a new session at each block if b == 1 { - Some((true, b, vec![(&0, v0.public())], Some(vec![(&0, v0.public())]))) + Some(( + true, + b, + vec![(&0, v0.public()), (&1, v1.public())], + Some(vec![(&0, v0.public()), (&1, v1.public())]), + )) } else { Some((true, b, vec![(&1, v1.public())], Some(vec![(&1, v1.public())]))) } @@ -1549,18 +1656,32 @@ mod tests { let stmts = vec![DisputeStatementSet { candidate_hash: candidate_hash.clone(), session: 1, - statements: vec![( - DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), - ValidatorIndex(0), - v0.sign( - &ExplicitDisputeStatement { - valid: true, - candidate_hash: candidate_hash.clone(), - session: 1, - } - .signing_payload(), + statements: vec![ + ( + DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), + ValidatorIndex(0), + v0.sign( + &ExplicitDisputeStatement { + valid: true, + candidate_hash: candidate_hash.clone(), + session: 1, + } + .signing_payload(), + ), ), - )], + ( + DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), + ValidatorIndex(1), + v1.sign( + &ExplicitDisputeStatement { + valid: false, + candidate_hash: candidate_hash.clone(), + session: 1, + } + .signing_payload(), + ), + ), + ], }]; assert_ok!( @@ -1597,10 +1718,16 @@ mod tests { fn test_freeze_on_note_included() { new_test_ext(Default::default()).execute_with(|| { let v0 = ::Pair::generate().0; + let v1 = ::Pair::generate().0; run_to_block(6, |b| { // a new session at each block - Some((true, b, vec![(&0, v0.public())], Some(vec![(&0, v0.public())]))) + Some(( + true, + b, + vec![(&0, v0.public()), (&1, v1.public())], + Some(vec![(&0, v0.public()), (&1, v1.public())]), + )) }); let candidate_hash = CandidateHash(sp_core::H256::repeat_byte(1)); @@ -1609,18 +1736,44 @@ mod tests { let stmts = vec![DisputeStatementSet { candidate_hash: candidate_hash.clone(), session: 3, - statements: vec![( - DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), - ValidatorIndex(0), - v0.sign( - &ExplicitDisputeStatement { - valid: false, - candidate_hash: candidate_hash.clone(), - session: 3, - } - .signing_payload(), + statements: vec![ + ( + DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), + ValidatorIndex(0), + v0.sign( + &ExplicitDisputeStatement { + valid: false, + candidate_hash: candidate_hash.clone(), + session: 3, + } + .signing_payload(), + ), ), - )], + ( + DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), + ValidatorIndex(1), + v1.sign( + &ExplicitDisputeStatement { + valid: false, + candidate_hash: candidate_hash.clone(), + session: 3, + } + .signing_payload(), + ), + ), + ( + DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), + ValidatorIndex(1), + v1.sign( + &ExplicitDisputeStatement { + valid: true, + candidate_hash: candidate_hash.clone(), + session: 3, + } + .signing_payload(), + ), + ), + ], }]; assert!(Pallet::::provide_multi_dispute_data(stmts).is_ok()); @@ -1633,35 +1786,66 @@ mod tests { fn test_freeze_provided_against_supermajority_for_included() { new_test_ext(Default::default()).execute_with(|| { let v0 = ::Pair::generate().0; + let v1 = ::Pair::generate().0; run_to_block(6, |b| { // a new session at each block - Some((true, b, vec![(&0, v0.public())], Some(vec![(&0, v0.public())]))) + Some(( + true, + b, + vec![(&0, v0.public()), (&1, v1.public())], + Some(vec![(&0, v0.public()), (&1, v1.public())]), + )) }); let candidate_hash = CandidateHash(sp_core::H256::repeat_byte(1)); - Pallet::::note_included(3, candidate_hash.clone(), 3); - // v0 votes for 3 let stmts = vec![DisputeStatementSet { candidate_hash: candidate_hash.clone(), session: 3, - statements: vec![( - DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), - ValidatorIndex(0), - v0.sign( - &ExplicitDisputeStatement { - valid: false, - candidate_hash: candidate_hash.clone(), - session: 3, - } - .signing_payload(), + statements: vec![ + ( + DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), + ValidatorIndex(0), + v0.sign( + &ExplicitDisputeStatement { + valid: false, + candidate_hash: candidate_hash.clone(), + session: 3, + } + .signing_payload(), + ), ), - )], + ( + DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), + ValidatorIndex(1), + v1.sign( + &ExplicitDisputeStatement { + valid: false, + candidate_hash: candidate_hash.clone(), + session: 3, + } + .signing_payload(), + ), + ), + ( + DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), + ValidatorIndex(1), + v1.sign( + &ExplicitDisputeStatement { + valid: true, + candidate_hash: candidate_hash.clone(), + session: 3, + } + .signing_payload(), + ), + ), + ], }]; - assert!(Pallet::::provide_multi_dispute_data(stmts).is_ok()); + Pallet::::note_included(3, candidate_hash.clone(), 3); + assert!(Pallet::::provide_multi_dispute_data(stmts).is_ok()); assert_eq!(Frozen::::get(), Some(2)); }); } @@ -1676,15 +1860,22 @@ mod tests { #[test] fn test_provide_multi_dispute_success_and_other() { new_test_ext(Default::default()).execute_with(|| { + // 7 validators needed for byzantine threshold of 2. let v0 = ::Pair::generate().0; let v1 = ::Pair::generate().0; let v2 = ::Pair::generate().0; let v3 = ::Pair::generate().0; - - // NOTE: v0 index will be 0 - // NOTE: v1 index will be 3 - // NOTE: v2 index will be 2 - // NOTE: v3 index will be 1 + let v4 = ::Pair::generate().0; + let v5 = ::Pair::generate().0; + let v6 = ::Pair::generate().0; + + // v0 -> 0 + // v1 -> 3 + // v2 -> 6 + // v3 -> 5 + // v4 -> 1 + // v5 -> 4 + // v6 -> 2 run_to_block(6, |b| { // a new session at each block @@ -1696,47 +1887,97 @@ mod tests { (&1, v1.public()), (&2, v2.public()), (&3, v3.public()), + (&4, v4.public()), + (&5, v5.public()), + (&6, v6.public()), ], Some(vec![ (&0, v0.public()), (&1, v1.public()), (&2, v2.public()), (&3, v3.public()), + (&4, v4.public()), + (&5, v5.public()), + (&6, v6.public()), ]), )) }); let candidate_hash = CandidateHash(sp_core::H256::repeat_byte(1)); - // v0 votes for 3 + // v0 votes for 3, v6 votes against let stmts = vec![DisputeStatementSet { candidate_hash: candidate_hash.clone(), session: 3, - statements: vec![( - DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), - ValidatorIndex(0), - v0.sign( - &ExplicitDisputeStatement { - valid: true, - candidate_hash: candidate_hash.clone(), - session: 3, - } - .signing_payload(), + statements: vec![ + ( + DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), + ValidatorIndex(0), + v0.sign( + &ExplicitDisputeStatement { + valid: true, + candidate_hash: candidate_hash.clone(), + session: 3, + } + .signing_payload(), + ), ), - )], + ( + DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), + ValidatorIndex(2), + v6.sign( + &ExplicitDisputeStatement { + valid: false, + candidate_hash: candidate_hash.clone(), + session: 3, + } + .signing_payload(), + ), + ), + ], }]; assert_ok!( Pallet::::provide_multi_dispute_data(stmts), vec![(3, candidate_hash.clone())], ); - assert_eq!(SpamSlots::::get(3), Some(vec![1, 0, 0, 0])); + assert_eq!(SpamSlots::::get(3), Some(vec![1, 0, 1, 0, 0, 0, 0])); - // v1 votes for 4 and for 3 + // v1 votes for 4 and for 3, v6 votes against 4. let stmts = vec![ DisputeStatementSet { candidate_hash: candidate_hash.clone(), session: 4, + statements: vec![ + ( + DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), + ValidatorIndex(3), + v1.sign( + &ExplicitDisputeStatement { + valid: true, + candidate_hash: candidate_hash.clone(), + session: 4, + } + .signing_payload(), + ), + ), + ( + DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), + ValidatorIndex(2), + v6.sign( + &ExplicitDisputeStatement { + valid: false, + candidate_hash: candidate_hash.clone(), + session: 4, + } + .signing_payload(), + ), + ), + ], + }, + DisputeStatementSet { + candidate_hash: candidate_hash.clone(), + session: 3, statements: vec![( DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), ValidatorIndex(3), @@ -1744,23 +1985,7 @@ mod tests { &ExplicitDisputeStatement { valid: true, candidate_hash: candidate_hash.clone(), - session: 4, - } - .signing_payload(), - ), - )], - }, - DisputeStatementSet { - candidate_hash: candidate_hash.clone(), - session: 3, - statements: vec![( - DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), - ValidatorIndex(3), - v1.sign( - &ExplicitDisputeStatement { - valid: true, - candidate_hash: candidate_hash.clone(), - session: 3, + session: 3, } .signing_payload(), ), @@ -1772,17 +1997,17 @@ mod tests { Pallet::::provide_multi_dispute_data(stmts), vec![(4, candidate_hash.clone())], ); - assert_eq!(SpamSlots::::get(3), Some(vec![0, 0, 0, 0])); // Confirmed as no longer spam - assert_eq!(SpamSlots::::get(4), Some(vec![0, 0, 0, 1])); + assert_eq!(SpamSlots::::get(3), Some(vec![0, 0, 0, 0, 0, 0, 0])); // Confirmed as no longer spam + assert_eq!(SpamSlots::::get(4), Some(vec![0, 0, 1, 1, 0, 0, 0])); - // v3 votes against 3 and for 5 + // v3 votes against 3 and for 5, v6 votes against 5. let stmts = vec![ DisputeStatementSet { candidate_hash: candidate_hash.clone(), session: 3, statements: vec![( DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), - ValidatorIndex(1), + ValidatorIndex(5), v3.sign( &ExplicitDisputeStatement { valid: false, @@ -1796,36 +2021,50 @@ mod tests { DisputeStatementSet { candidate_hash: candidate_hash.clone(), session: 5, - statements: vec![( - DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), - ValidatorIndex(1), - v3.sign( - &ExplicitDisputeStatement { - valid: true, - candidate_hash: candidate_hash.clone(), - session: 5, - } - .signing_payload(), + statements: vec![ + ( + DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), + ValidatorIndex(5), + v3.sign( + &ExplicitDisputeStatement { + valid: true, + candidate_hash: candidate_hash.clone(), + session: 5, + } + .signing_payload(), + ), ), - )], + ( + DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), + ValidatorIndex(2), + v6.sign( + &ExplicitDisputeStatement { + valid: false, + candidate_hash: candidate_hash.clone(), + session: 5, + } + .signing_payload(), + ), + ), + ], }, ]; assert_ok!( Pallet::::provide_multi_dispute_data(stmts), vec![(5, candidate_hash.clone())], ); - assert_eq!(SpamSlots::::get(3), Some(vec![0, 0, 0, 0])); - assert_eq!(SpamSlots::::get(4), Some(vec![0, 0, 0, 1])); - assert_eq!(SpamSlots::::get(5), Some(vec![0, 1, 0, 0])); + assert_eq!(SpamSlots::::get(3), Some(vec![0, 0, 0, 0, 0, 0, 0])); + assert_eq!(SpamSlots::::get(4), Some(vec![0, 0, 1, 1, 0, 0, 0])); + assert_eq!(SpamSlots::::get(5), Some(vec![0, 0, 1, 0, 0, 1, 0])); - // v2 votes for 3 and againt 5 + // v2 votes for 3 and against 5 let stmts = vec![ DisputeStatementSet { candidate_hash: candidate_hash.clone(), session: 3, statements: vec![( DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), - ValidatorIndex(2), + ValidatorIndex(6), v2.sign( &ExplicitDisputeStatement { valid: true, @@ -1841,7 +2080,7 @@ mod tests { session: 5, statements: vec![( DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), - ValidatorIndex(2), + ValidatorIndex(6), v2.sign( &ExplicitDisputeStatement { valid: false, @@ -1854,55 +2093,87 @@ mod tests { }, ]; assert_ok!(Pallet::::provide_multi_dispute_data(stmts), vec![]); - assert_eq!(SpamSlots::::get(3), Some(vec![0, 0, 0, 0])); - assert_eq!(SpamSlots::::get(4), Some(vec![0, 0, 0, 1])); - assert_eq!(SpamSlots::::get(5), Some(vec![0, 0, 0, 0])); - - // v0 votes for 5 - let stmts = vec![DisputeStatementSet { - candidate_hash: candidate_hash.clone(), - session: 5, - statements: vec![( - DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), - ValidatorIndex(0), - v0.sign( - &ExplicitDisputeStatement { - valid: false, - candidate_hash: candidate_hash.clone(), - session: 5, - } - .signing_payload(), - ), - )], - }]; - - assert_ok!(Pallet::::provide_multi_dispute_data(stmts), vec![]); - assert_eq!(SpamSlots::::get(3), Some(vec![0, 0, 0, 0])); - assert_eq!(SpamSlots::::get(4), Some(vec![0, 0, 0, 1])); - assert_eq!(SpamSlots::::get(5), Some(vec![0, 0, 0, 0])); - - // v1 votes for 5 - let stmts = vec![DisputeStatementSet { - candidate_hash: candidate_hash.clone(), - session: 5, - statements: vec![( - DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), - ValidatorIndex(3), - v1.sign( - &ExplicitDisputeStatement { - valid: false, - candidate_hash: candidate_hash.clone(), - session: 5, - } - .signing_payload(), - ), - )], - }]; + assert_eq!(SpamSlots::::get(3), Some(vec![0, 0, 0, 0, 0, 0, 0])); + assert_eq!(SpamSlots::::get(4), Some(vec![0, 0, 1, 1, 0, 0, 0])); + assert_eq!(SpamSlots::::get(5), Some(vec![0, 0, 0, 0, 0, 0, 0])); + let stmts = vec![ + // 0, 4, and 5 vote against 5 + DisputeStatementSet { + candidate_hash: candidate_hash.clone(), + session: 5, + statements: vec![ + ( + DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), + ValidatorIndex(0), + v0.sign( + &ExplicitDisputeStatement { + valid: false, + candidate_hash: candidate_hash.clone(), + session: 5, + } + .signing_payload(), + ), + ), + ( + DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), + ValidatorIndex(1), + v4.sign( + &ExplicitDisputeStatement { + valid: false, + candidate_hash: candidate_hash.clone(), + session: 5, + } + .signing_payload(), + ), + ), + ( + DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), + ValidatorIndex(4), + v5.sign( + &ExplicitDisputeStatement { + valid: false, + candidate_hash: candidate_hash.clone(), + session: 5, + } + .signing_payload(), + ), + ), + ], + }, + // 4 and 5 vote for 3 + DisputeStatementSet { + candidate_hash: candidate_hash.clone(), + session: 3, + statements: vec![ + ( + DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), + ValidatorIndex(1), + v4.sign( + &ExplicitDisputeStatement { + valid: true, + candidate_hash: candidate_hash.clone(), + session: 3, + } + .signing_payload(), + ), + ), + ( + DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), + ValidatorIndex(4), + v5.sign( + &ExplicitDisputeStatement { + valid: true, + candidate_hash: candidate_hash.clone(), + session: 3, + } + .signing_payload(), + ), + ), + ], + }, + ]; assert_ok!(Pallet::::provide_multi_dispute_data(stmts), vec![]); - assert_eq!(SpamSlots::::get(3), Some(vec![0, 0, 0, 0])); - assert_eq!(SpamSlots::::get(4), Some(vec![0, 0, 0, 1])); - assert_eq!(SpamSlots::::get(5), Some(vec![0, 0, 0, 0])); assert_eq!( Pallet::::disputes(), @@ -1911,28 +2182,28 @@ mod tests { 5, candidate_hash.clone(), DisputeState { - validators_for: bitvec![BitOrderLsb0, u8; 0, 1, 0, 0], - validators_against: bitvec![BitOrderLsb0, u8; 1, 0, 1, 1], + validators_for: bitvec![BitOrderLsb0, u8; 0, 0, 0, 0, 0, 1, 0], + validators_against: bitvec![BitOrderLsb0, u8; 1, 1, 1, 0, 1, 0, 1], start: 6, - concluded_at: Some(6), // 3 vote against + concluded_at: Some(6), // 5 vote against } ), ( 3, candidate_hash.clone(), DisputeState { - validators_for: bitvec![BitOrderLsb0, u8; 1, 0, 1, 1], - validators_against: bitvec![BitOrderLsb0, u8; 0, 1, 0, 0], + validators_for: bitvec![BitOrderLsb0, u8; 1, 1, 0, 1, 1, 0, 1], + validators_against: bitvec![BitOrderLsb0, u8; 0, 0, 1, 0, 0, 1, 0], start: 6, - concluded_at: Some(6), // 3 vote for + concluded_at: Some(6), // 5 vote for } ), ( 4, candidate_hash.clone(), DisputeState { - validators_for: bitvec![BitOrderLsb0, u8; 0, 0, 0, 1], - validators_against: bitvec![BitOrderLsb0, u8; 0, 0, 0, 0], + validators_for: bitvec![BitOrderLsb0, u8; 0, 0, 0, 1, 0, 0, 0], + validators_against: bitvec![BitOrderLsb0, u8; 0, 0, 1, 0, 0, 0, 0], start: 6, concluded_at: None, } @@ -1940,28 +2211,28 @@ mod tests { ] ); - assert_eq!(Pallet::::could_be_invalid(3, candidate_hash.clone()), false); // It has 3 votes for - assert_eq!(Pallet::::could_be_invalid(4, candidate_hash.clone()), true); - assert_eq!(Pallet::::could_be_invalid(5, candidate_hash.clone()), true); + assert!(!Pallet::::concluded_invalid(3, candidate_hash.clone())); + assert!(!Pallet::::concluded_invalid(4, candidate_hash.clone())); + assert!(Pallet::::concluded_invalid(5, candidate_hash.clone())); // Ensure inclusion removes spam slots - assert_eq!(SpamSlots::::get(4), Some(vec![0, 0, 0, 1])); + assert_eq!(SpamSlots::::get(4), Some(vec![0, 0, 1, 1, 0, 0, 0])); Pallet::::note_included(4, candidate_hash.clone(), 4); - assert_eq!(SpamSlots::::get(4), Some(vec![0, 0, 0, 0])); + assert_eq!(SpamSlots::::get(4), Some(vec![0, 0, 0, 0, 0, 0, 0])); // Ensure the reward_validator function was correctly called assert_eq!( REWARD_VALIDATORS.with(|r| r.borrow().clone()), vec![ - (3, vec![ValidatorIndex(0)]), - (4, vec![ValidatorIndex(3)]), + (3, vec![ValidatorIndex(0), ValidatorIndex(2)]), + (4, vec![ValidatorIndex(2), ValidatorIndex(3)]), (3, vec![ValidatorIndex(3)]), - (3, vec![ValidatorIndex(1)]), - (5, vec![ValidatorIndex(1)]), - (3, vec![ValidatorIndex(2)]), - (5, vec![ValidatorIndex(2)]), - (5, vec![ValidatorIndex(0)]), - (5, vec![ValidatorIndex(3)]), + (3, vec![ValidatorIndex(5)]), + (5, vec![ValidatorIndex(2), ValidatorIndex(5)]), + (3, vec![ValidatorIndex(6)]), + (5, vec![ValidatorIndex(6)]), + (5, vec![ValidatorIndex(0), ValidatorIndex(1), ValidatorIndex(4)]), + (3, vec![ValidatorIndex(1), ValidatorIndex(4)]), ], ); @@ -1974,10 +2245,10 @@ mod tests { (3, vec![]), (3, vec![]), (5, vec![]), - (3, vec![ValidatorIndex(1)]), - (5, vec![]), + (3, vec![]), (5, vec![]), (5, vec![]), + (3, vec![ValidatorIndex(2), ValidatorIndex(5)]), ], ); @@ -1992,8 +2263,8 @@ mod tests { (5, vec![]), (3, vec![]), (5, vec![]), - (5, vec![]), - (5, vec![ValidatorIndex(1)]), + (5, vec![ValidatorIndex(5)]), + (3, vec![]), ], ); }) @@ -2018,8 +2289,8 @@ mod tests { Pallet::::revert_and_freeze(0); assert_eq!(Frozen::::get(), Some(0)); - assert_eq!(System::digest().logs[0], ConsensusLog::Revert(0).into()); - System::assert_has_event(Event::Revert(0).into()); + assert_eq!(System::digest().logs[0], ConsensusLog::Revert(1).into()); + System::assert_has_event(Event::Revert(1).into()); }) } @@ -2505,10 +2776,16 @@ mod tests { fn filter_removes_duplicates_within_set() { new_test_ext(Default::default()).execute_with(|| { let v0 = ::Pair::generate().0; + let v1 = ::Pair::generate().0; run_to_block(3, |b| { // a new session at each block - Some((true, b, vec![(&0, v0.public())], Some(vec![(&0, v0.public())]))) + Some(( + true, + b, + vec![(&0, v0.public()), (&1, v1.public())], + Some(vec![(&0, v0.public()), (&1, v1.public())]), + )) }); let candidate_hash = CandidateHash(sp_core::H256::repeat_byte(1)); @@ -2520,9 +2797,17 @@ mod tests { } .signing_payload(); + let payload_against = ExplicitDisputeStatement { + valid: false, + candidate_hash: candidate_hash.clone(), + session: 1, + } + .signing_payload(); + let sig_a = v0.sign(&payload); let sig_b = v0.sign(&payload); let sig_c = v0.sign(&payload); + let sig_d = v1.sign(&payload_against); let mut statements = vec![DisputeStatementSet { candidate_hash: candidate_hash.clone(), @@ -2543,6 +2828,11 @@ mod tests { ValidatorIndex(0), sig_c, ), + ( + DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), + ValidatorIndex(1), + sig_d.clone(), + ), ], }]; @@ -2553,16 +2843,87 @@ mod tests { vec![DisputeStatementSet { candidate_hash: candidate_hash.clone(), session: 1, - statements: vec![( - DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), - ValidatorIndex(0), - sig_a, - ),] + statements: vec![ + ( + DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), + ValidatorIndex(0), + sig_a, + ), + ( + DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), + ValidatorIndex(1), + sig_d, + ), + ] }] ) }) } + #[test] + fn filter_bad_signatures_correctly_detects_single_sided() { + new_test_ext(Default::default()).execute_with(|| { + let v0 = ::Pair::generate().0; + let v1 = ::Pair::generate().0; + let v2 = ::Pair::generate().0; + let v3 = ::Pair::generate().0; + + run_to_block(3, |b| { + // a new session at each block + Some(( + true, + b, + vec![ + (&0, v0.public()), + (&1, v1.public()), + (&2, v2.public()), + (&3, v3.public()), + ], + Some(vec![ + (&0, v0.public()), + (&1, v1.public()), + (&2, v2.public()), + (&3, v3.public()), + ]), + )) + }); + + let candidate_hash_a = CandidateHash(sp_core::H256::repeat_byte(1)); + + let payload = |c_hash: &CandidateHash, valid| { + ExplicitDisputeStatement { valid, candidate_hash: c_hash.clone(), session: 1 } + .signing_payload() + }; + + let payload_a = payload(&candidate_hash_a, true); + let payload_a_bad = payload(&candidate_hash_a, false); + + let sig_0 = v0.sign(&payload_a); + let sig_1 = v1.sign(&payload_a_bad); + + let mut statements = vec![DisputeStatementSet { + candidate_hash: candidate_hash_a.clone(), + session: 1, + statements: vec![ + ( + DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), + ValidatorIndex(0), + sig_0.clone(), + ), + ( + DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), + ValidatorIndex(2), + sig_1.clone(), + ), + ], + }]; + + Pallet::::filter_multi_dispute_data(&mut statements); + + assert!(statements.is_empty()); + }) + } + #[test] fn filter_correctly_accounts_spam_slots() { let dispute_max_spam_slots = 2; @@ -2576,10 +2937,14 @@ mod tests { }; new_test_ext(mock_genesis_config).execute_with(|| { + // We need 7 validators for the byzantine threshold to be 2 let v0 = ::Pair::generate().0; let v1 = ::Pair::generate().0; let v2 = ::Pair::generate().0; let v3 = ::Pair::generate().0; + let v4 = ::Pair::generate().0; + let v5 = ::Pair::generate().0; + let v6 = ::Pair::generate().0; run_to_block(3, |b| { // a new session at each block @@ -2591,12 +2956,18 @@ mod tests { (&1, v1.public()), (&2, v2.public()), (&3, v3.public()), + (&4, v4.public()), + (&5, v5.public()), + (&6, v6.public()), ], Some(vec![ (&0, v0.public()), (&1, v1.public()), (&2, v2.public()), (&3, v3.public()), + (&4, v4.public()), + (&5, v5.public()), + (&6, v6.public()), ]), )) }); @@ -2605,26 +2976,18 @@ mod tests { let candidate_hash_b = CandidateHash(sp_core::H256::repeat_byte(2)); let candidate_hash_c = CandidateHash(sp_core::H256::repeat_byte(3)); - let payload_a = ExplicitDisputeStatement { - valid: true, - candidate_hash: candidate_hash_a.clone(), - session: 1, - } - .signing_payload(); + let payload = |c_hash: &CandidateHash, valid| { + ExplicitDisputeStatement { valid, candidate_hash: c_hash.clone(), session: 1 } + .signing_payload() + }; - let payload_b = ExplicitDisputeStatement { - valid: true, - candidate_hash: candidate_hash_b.clone(), - session: 1, - } - .signing_payload(); + let payload_a = payload(&candidate_hash_a, true); + let payload_b = payload(&candidate_hash_b, true); + let payload_c = payload(&candidate_hash_c, true); - let payload_c = ExplicitDisputeStatement { - valid: true, - candidate_hash: candidate_hash_c.clone(), - session: 1, - } - .signing_payload(); + let payload_a_bad = payload(&candidate_hash_a, false); + let payload_b_bad = payload(&candidate_hash_b, false); + let payload_c_bad = payload(&candidate_hash_c, false); let sig_0a = v0.sign(&payload_a); let sig_0b = v0.sign(&payload_b); @@ -2632,16 +2995,29 @@ mod tests { let sig_1b = v1.sign(&payload_b); + let sig_2a = v2.sign(&payload_a_bad); + let sig_2b = v2.sign(&payload_b_bad); + let sig_2c = v2.sign(&payload_c_bad); + let mut statements = vec![ + // validators 0 and 2 get 1 spam slot from this. DisputeStatementSet { candidate_hash: candidate_hash_a.clone(), session: 1, - statements: vec![( - DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), - ValidatorIndex(0), - sig_0a.clone(), - )], + statements: vec![ + ( + DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), + ValidatorIndex(0), + sig_0a.clone(), + ), + ( + DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), + ValidatorIndex(6), + sig_2a.clone(), + ), + ], }, + // Validators 0, 2, and 3 get no spam slots for this DisputeStatementSet { candidate_hash: candidate_hash_b.clone(), session: 1, @@ -2656,16 +3032,29 @@ mod tests { ValidatorIndex(3), sig_1b.clone(), ), + ( + DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), + ValidatorIndex(6), + sig_2b.clone(), + ), ], }, + // Validators 0 and 2 get an extra spam slot for this. DisputeStatementSet { candidate_hash: candidate_hash_c.clone(), session: 1, - statements: vec![( - DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), - ValidatorIndex(0), - sig_0c.clone(), - )], + statements: vec![ + ( + DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), + ValidatorIndex(0), + sig_0c.clone(), + ), + ( + DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), + ValidatorIndex(6), + sig_2c.clone(), + ), + ], }, ]; @@ -2744,7 +3133,7 @@ mod tests { &candidate_hash_a, DisputeState { validators_for: bitvec![BitOrderLsb0, u8; 0; 4], - validators_against: bitvec![BitOrderLsb0, u8; 0; 4], + validators_against: bitvec![BitOrderLsb0, u8; 1; 4], start: 0, concluded_at: Some(0), }, @@ -2755,7 +3144,7 @@ mod tests { &candidate_hash_b, DisputeState { validators_for: bitvec![BitOrderLsb0, u8; 0; 4], - validators_against: bitvec![BitOrderLsb0, u8; 0; 4], + validators_against: bitvec![BitOrderLsb0, u8; 1; 4], start: 0, concluded_at: Some(1), }, @@ -2820,10 +3209,16 @@ mod tests { fn filter_removes_duplicate_statements_sets() { new_test_ext(Default::default()).execute_with(|| { let v0 = ::Pair::generate().0; + let v1 = ::Pair::generate().0; run_to_block(3, |b| { // a new session at each block - Some((true, b, vec![(&0, v0.public())], Some(vec![(&0, v0.public())]))) + Some(( + true, + b, + vec![(&0, v0.public()), (&1, v1.public())], + Some(vec![(&0, v0.public()), (&1, v1.public())]), + )) }); let candidate_hash_a = CandidateHash(sp_core::H256::repeat_byte(1)); @@ -2835,27 +3230,51 @@ mod tests { } .signing_payload(); + let payload_against = ExplicitDisputeStatement { + valid: false, + candidate_hash: candidate_hash_a.clone(), + session: 1, + } + .signing_payload(); + let sig_a = v0.sign(&payload); + let sig_a_against = v1.sign(&payload_against); + let sig_b = v0.sign(&payload); + let sig_b_against = v1.sign(&payload_against); let mut statements = vec![ DisputeStatementSet { candidate_hash: candidate_hash_a.clone(), session: 1, - statements: vec![( - DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), - ValidatorIndex(0), - sig_a.clone(), - )], + statements: vec![ + ( + DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), + ValidatorIndex(0), + sig_a.clone(), + ), + ( + DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), + ValidatorIndex(1), + sig_a_against.clone(), + ), + ], }, DisputeStatementSet { candidate_hash: candidate_hash_a.clone(), session: 1, - statements: vec![( - DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), - ValidatorIndex(0), - sig_b.clone(), - )], + statements: vec![ + ( + DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), + ValidatorIndex(0), + sig_b.clone(), + ), + ( + DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), + ValidatorIndex(1), + sig_b_against.clone(), + ), + ], }, ]; @@ -2866,13 +3285,95 @@ mod tests { vec![DisputeStatementSet { candidate_hash: candidate_hash_a.clone(), session: 1, - statements: vec![( - DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), - ValidatorIndex(0), - sig_a, - ),] + statements: vec![ + ( + DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), + ValidatorIndex(0), + sig_a.clone(), + ), + ( + DisputeStatement::Invalid(InvalidDisputeStatementKind::Explicit), + ValidatorIndex(1), + sig_a_against.clone(), + ), + ], }] ); }) } + + #[test] + fn filter_ignores_single_sided() { + new_test_ext(Default::default()).execute_with(|| { + let v0 = ::Pair::generate().0; + + run_to_block(3, |b| { + // a new session at each block + Some((true, b, vec![(&0, v0.public())], Some(vec![(&0, v0.public())]))) + }); + + let candidate_hash_a = CandidateHash(sp_core::H256::repeat_byte(1)); + + let payload = ExplicitDisputeStatement { + valid: true, + candidate_hash: candidate_hash_a.clone(), + session: 1, + } + .signing_payload(); + + let sig_a = v0.sign(&payload); + + let mut statements = vec![DisputeStatementSet { + candidate_hash: candidate_hash_a.clone(), + session: 1, + statements: vec![( + DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), + ValidatorIndex(0), + sig_a.clone(), + )], + }]; + + Pallet::::filter_multi_dispute_data(&mut statements); + + assert!(statements.is_empty()); + }) + } + + #[test] + fn import_ignores_single_sided() { + new_test_ext(Default::default()).execute_with(|| { + let v0 = ::Pair::generate().0; + + run_to_block(3, |b| { + // a new session at each block + Some((true, b, vec![(&0, v0.public())], Some(vec![(&0, v0.public())]))) + }); + + let candidate_hash_a = CandidateHash(sp_core::H256::repeat_byte(1)); + + let payload = ExplicitDisputeStatement { + valid: true, + candidate_hash: candidate_hash_a.clone(), + session: 1, + } + .signing_payload(); + + let sig_a = v0.sign(&payload); + + let statements = vec![DisputeStatementSet { + candidate_hash: candidate_hash_a.clone(), + session: 1, + statements: vec![( + DisputeStatement::Valid(ValidDisputeStatementKind::Explicit), + ValidatorIndex(0), + sig_a.clone(), + )], + }]; + + assert_err!( + Pallet::::provide_multi_dispute_data(statements), + DispatchError::from(Error::::SingleSidedDispute), + ); + }) + } } diff --git a/runtime/parachains/src/disputes/benchmarking.rs b/runtime/parachains/src/disputes/benchmarking.rs new file mode 100644 index 000000000000..b884d1a6e799 --- /dev/null +++ b/runtime/parachains/src/disputes/benchmarking.rs @@ -0,0 +1,36 @@ +// Copyright 2021 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +use super::*; + +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite}; +use frame_system::RawOrigin; +use sp_runtime::traits::One; + +benchmarks! { + force_unfreeze { + Frozen::::set(Some(One::one())); + }: _(RawOrigin::Root) + verify { + assert!(Frozen::::get().is_none()) + } +} + +impl_benchmark_test_suite!( + Pallet, + crate::mock::new_test_ext(Default::default()), + crate::mock::Test +); diff --git a/runtime/parachains/src/hrmp.rs b/runtime/parachains/src/hrmp.rs index f087dfd3a405..7e489ba73cf0 100644 --- a/runtime/parachains/src/hrmp.rs +++ b/runtime/parachains/src/hrmp.rs @@ -143,8 +143,9 @@ impl fmt::Debug for OutboundHrmpAcceptanceErr { "more HRMP messages than permitted by config ({} > {})", sent, permitted, ), - NotSorted { idx } => - write!(fmt, "the HRMP messages are not sorted (first unsorted is at index {})", idx,), + NotSorted { idx } => { + write!(fmt, "the HRMP messages are not sorted (first unsorted is at index {})", idx,) + }, NoSuchChannel { idx, channel_id } => write!( fmt, "the HRMP message at index {} is sent to a non existent channel {:?}->{:?}", @@ -386,7 +387,7 @@ pub mod pallet { /// parameters. /// /// - `proposed_max_capacity` - specifies how many messages can be in the channel at once. - /// - `proposed_max_message_size` - specifies the maximum size of any of the messages. + /// - `proposed_max_message_size` - specifies the maximum size of the messages. /// /// These numbers are a subject to the relay-chain configuration limits. /// diff --git a/runtime/parachains/src/inclusion.rs b/runtime/parachains/src/inclusion.rs index a8702c873c2f..5240b99bbe3d 100644 --- a/runtime/parachains/src/inclusion.rs +++ b/runtime/parachains/src/inclusion.rs @@ -240,8 +240,10 @@ impl Pallet { for _ in >::drain() {} } - /// Process a set of incoming bitfields. Return a `vec` of cores freed by candidates - /// becoming available. + /// Process a set of incoming bitfields. + /// + /// Returns a `Vec` of `CandidateHash`es and their respective `AvailabilityCore`s that became available, + /// and cores free. pub(crate) fn process_bitfields( expected_bits: usize, unchecked_bitfields: UncheckedSignedAvailabilityBitfields, @@ -250,10 +252,12 @@ impl Pallet { let validators = shared::Pallet::::active_validator_keys(); let session_index = shared::Pallet::::session_index(); - let mut assigned_paras_record: Vec<_> = (0..expected_bits) + let mut assigned_paras_record = (0..expected_bits) .map(|bit_index| core_lookup(CoreIndex::from(bit_index as u32))) - .map(|core_para| core_para.map(|p| (p, PendingAvailability::::get(&p)))) - .collect(); + .map(|opt_para_id| { + opt_para_id.map(|para_id| (para_id, PendingAvailability::::get(¶_id))) + }) + .collect::>(); // do sanity checks on the bitfields: // 1. no more than one bitfield per validator @@ -320,17 +324,25 @@ impl Pallet { for (bit_idx, _) in signed_bitfield.payload().0.iter().enumerate().filter(|(_, is_av)| **is_av) { - let (_, pending_availability) = assigned_paras_record[bit_idx] - .as_mut() - .expect("validator bitfields checked not to contain bits corresponding to unoccupied cores; qed"); + let pending_availability = if let Some((_, pending_availability)) = + assigned_paras_record[bit_idx].as_mut() + { + pending_availability + } else { + // For honest validators, this happens in case of unoccupied cores, + // which in turn happens in case of a disputed candidate. + // A malicious one might include arbitrary indices, but they are represented + // by `None` values and will be sorted out in the next if case. + continue + }; // defensive check - this is constructed by loading the availability bitfield record, // which is always `Some` if the core is occupied - that's why we're here. let val_idx = signed_bitfield.validator_index().0 as usize; - if let Some(mut bit) = pending_availability - .as_mut() - .and_then(|r| r.availability_votes.get_mut(val_idx)) - { + if let Some(mut bit) = + pending_availability.as_mut().and_then(|candidate_pending_availability| { + candidate_pending_availability.availability_votes.get_mut(val_idx) + }) { *bit = true; } else if cfg!(debug_assertions) { ensure!(false, Error::::InternalError); diff --git a/runtime/parachains/src/initializer.rs b/runtime/parachains/src/initializer.rs index 6958d754c462..ebaa68b46ba5 100644 --- a/runtime/parachains/src/initializer.rs +++ b/runtime/parachains/src/initializer.rs @@ -24,12 +24,19 @@ use crate::{ disputes::DisputesHandler, dmp, hrmp, inclusion, paras, scheduler, session_info, shared, ump, }; -use frame_support::traits::{OneSessionHandler, Randomness}; +use frame_support::{ + traits::{OneSessionHandler, Randomness}, + weights::Weight, +}; +use frame_system::limits::BlockWeights; use parity_scale_codec::{Decode, Encode}; use primitives::v1::{BlockNumber, ConsensusLog, SessionIndex, ValidatorId}; use scale_info::TypeInfo; use sp_std::prelude::*; +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; + pub use pallet::*; /// Information about a session change that has just occurred. @@ -69,6 +76,16 @@ struct BufferedSessionChange { session_index: SessionIndex, } +pub trait WeightInfo { + fn force_approve(d: u32) -> Weight; +} + +impl WeightInfo for () { + fn force_approve(_: u32) -> Weight { + BlockWeights::default().max_block + } +} + #[frame_support::pallet] pub mod pallet { use super::*; @@ -96,6 +113,8 @@ pub mod pallet { type Randomness: Randomness; /// An origin which is allowed to force updates to parachains. type ForceOrigin: EnsureOrigin<::Origin>; + /// Weight information for extrinsics in this pallet. + type WeightInfo: WeightInfo; } /// Whether the parachains modules have been initialized within this block. @@ -181,7 +200,12 @@ pub mod pallet { /// Issue a signal to the consensus engine to forcibly act as though all parachain /// blocks in all relay chain blocks up to and including the given number in the current /// chain are valid and should be finalized. - #[pallet::weight((0, DispatchClass::Operational))] + #[pallet::weight(( + ::WeightInfo::force_approve( + frame_system::Pallet::::digest().logs.len() as u32, + ), + DispatchClass::Operational, + ))] pub fn force_approve(origin: OriginFor, up_to: BlockNumber) -> DispatchResult { T::ForceOrigin::ensure_origin(origin)?; diff --git a/runtime/parachains/src/initializer/benchmarking.rs b/runtime/parachains/src/initializer/benchmarking.rs new file mode 100644 index 000000000000..d73c427f133d --- /dev/null +++ b/runtime/parachains/src/initializer/benchmarking.rs @@ -0,0 +1,44 @@ +// Copyright 2021 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +use super::*; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite}; +use frame_system::{DigestItemOf, RawOrigin}; +use primitives::v1::ConsensusLog; + +// Random large number for the digest +const DIGEST_MAX_LEN: u32 = 65536; + +benchmarks! { + force_approve { + let d in 0 .. DIGEST_MAX_LEN; + for _ in 0 .. d { + >::deposit_log(ConsensusLog::ForceApprove(d).into()); + } + }: _(RawOrigin::Root, d + 1) + verify { + assert_eq!( + >::digest().logs.last().unwrap(), + &>::from(ConsensusLog::ForceApprove(d + 1)), + ); + } +} + +impl_benchmark_test_suite!( + Pallet, + crate::mock::new_test_ext(Default::default()), + crate::mock::Test +); diff --git a/runtime/parachains/src/mock.rs b/runtime/parachains/src/mock.rs index c4da0991de18..9e646dbbc1ca 100644 --- a/runtime/parachains/src/mock.rs +++ b/runtime/parachains/src/mock.rs @@ -112,6 +112,7 @@ impl pallet_balances::Config for Test { impl crate::initializer::Config for Test { type Randomness = TestRandomness; type ForceOrigin = frame_system::EnsureRoot; + type WeightInfo = (); } impl crate::configuration::Config for Test { @@ -123,6 +124,7 @@ impl crate::shared::Config for Test {} impl crate::paras::Config for Test { type Origin = Origin; type Event = Event; + type WeightInfo = crate::paras::weights::WeightInfo; } impl crate::dmp::Config for Test {} @@ -148,6 +150,7 @@ impl crate::disputes::Config for Test { type Event = Event; type RewardValidators = Self; type PunishValidators = Self; + type WeightInfo = crate::disputes::TestWeightInfo; } thread_local! { diff --git a/runtime/parachains/src/paras.rs b/runtime/parachains/src/paras.rs index 9a840837ae94..666012a3b4e3 100644 --- a/runtime/parachains/src/paras.rs +++ b/runtime/parachains/src/paras.rs @@ -41,6 +41,10 @@ use serde::{Deserialize, Serialize}; pub use crate::Origin as ParachainOrigin; +#[cfg(feature = "runtime-benchmarks")] +mod benchmarking; +pub mod weights; + pub use pallet::*; // the two key times necessary to track for every code replacement. @@ -267,6 +271,14 @@ pub struct ParaGenesisArgs { pub parachain: bool, } +pub trait WeightInfo { + fn force_set_current_code(c: u32) -> Weight; + fn force_set_current_head(s: u32) -> Weight; + fn force_schedule_code_upgrade(c: u32) -> Weight; + fn force_note_new_head(s: u32) -> Weight; + fn force_queue_action() -> Weight; +} + #[frame_support::pallet] pub mod pallet { use super::*; @@ -283,6 +295,9 @@ pub mod pallet { + Into::Origin>>; type Event: From + IsType<::Event>; + + /// Weight information for extrinsics in this pallet. + type WeightInfo: WeightInfo; } #[pallet::event] @@ -490,7 +505,7 @@ pub mod pallet { #[pallet::call] impl Pallet { /// Set the storage for the parachain validation code immediately. - #[pallet::weight(0)] + #[pallet::weight(::WeightInfo::force_set_current_code(new_code.0.len() as u32))] pub fn force_set_current_code( origin: OriginFor, para: ParaId, @@ -509,7 +524,7 @@ pub mod pallet { } /// Set the storage for the current parachain head data immediately. - #[pallet::weight(0)] + #[pallet::weight(::WeightInfo::force_set_current_head(new_head.0.len() as u32))] pub fn force_set_current_head( origin: OriginFor, para: ParaId, @@ -522,7 +537,7 @@ pub mod pallet { } /// Schedule an upgrade as if it was scheduled in the given relay parent block. - #[pallet::weight(0)] + #[pallet::weight(::WeightInfo::force_schedule_code_upgrade(new_code.0.len() as u32))] pub fn force_schedule_code_upgrade( origin: OriginFor, para: ParaId, @@ -537,7 +552,7 @@ pub mod pallet { } /// Note a new block head for para within the context of the current block. - #[pallet::weight(0)] + #[pallet::weight(::WeightInfo::force_note_new_head(new_head.0.len() as u32))] pub fn force_note_new_head( origin: OriginFor, para: ParaId, @@ -553,7 +568,7 @@ pub mod pallet { /// Put a parachain directly into the next session's action queue. /// We can't queue it any sooner than this without going into the /// initializer... - #[pallet::weight(0)] + #[pallet::weight(::WeightInfo::force_queue_action())] pub fn force_queue_action(origin: OriginFor, para: ParaId) -> DispatchResult { ensure_root(origin)?; let next_session = shared::Pallet::::session_index().saturating_add(One::one()); diff --git a/runtime/parachains/src/paras/benchmarking.rs b/runtime/parachains/src/paras/benchmarking.rs new file mode 100644 index 000000000000..2e9a26c260a3 --- /dev/null +++ b/runtime/parachains/src/paras/benchmarking.rs @@ -0,0 +1,135 @@ +// Copyright 2021 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +use super::*; +use crate::{configuration::HostConfiguration, shared}; +use frame_benchmarking::{benchmarks, impl_benchmark_test_suite}; +use frame_system::RawOrigin; +use primitives::v1::{HeadData, Id as ParaId, ValidationCode, MAX_CODE_SIZE, MAX_HEAD_DATA_SIZE}; +use sp_runtime::traits::{One, Saturating}; + +// 2 ^ 10, because binary search time complexity is O(log(2, n)) and n = 1024 gives us a big and +// round number. +// Due to the limited number of parachains, the number of pruning, upcoming upgrades and cooldowns +// shouldn't exceed this number. +const SAMPLE_SIZE: u32 = 1024; + +fn assert_last_event(generic_event: ::Event) { + let events = frame_system::Pallet::::events(); + let system_event: ::Event = generic_event.into(); + // compare to the last event record + let frame_system::EventRecord { event, .. } = &events[events.len() - 1]; + assert_eq!(event, &system_event); +} + +fn generate_disordered_pruning() { + let mut needs_pruning = Vec::new(); + + for i in 0..SAMPLE_SIZE { + let id = ParaId::from(i); + let block_number = T::BlockNumber::from(1000u32); + needs_pruning.push((id, block_number)); + } + + as Store>::PastCodePruning::put(needs_pruning); +} + +fn generate_disordered_upgrades() { + let mut upgrades = Vec::new(); + let mut cooldowns = Vec::new(); + + for i in 0..SAMPLE_SIZE { + let id = ParaId::from(i); + let block_number = T::BlockNumber::from(1000u32); + upgrades.push((id, block_number)); + cooldowns.push((id, block_number)); + } + + as Store>::UpcomingUpgrades::put(upgrades); + as Store>::UpgradeCooldowns::put(cooldowns); +} + +fn generate_disordered_actions_queue() { + let mut queue = Vec::new(); + let next_session = shared::Pallet::::session_index().saturating_add(One::one()); + + for _ in 0..SAMPLE_SIZE { + let id = ParaId::from(1000); + queue.push(id); + } + + as Store>::ActionsQueue::mutate(next_session, |v| { + *v = queue; + }); +} + +benchmarks! { + force_set_current_code { + let c in 1 .. MAX_CODE_SIZE; + let new_code = ValidationCode(vec![0; c as usize]); + let para_id = ParaId::from(c as u32); + generate_disordered_pruning::(); + }: _(RawOrigin::Root, para_id, new_code) + verify { + assert_last_event::(Event::CurrentCodeUpdated(para_id).into()); + } + force_set_current_head { + let s in 1 .. MAX_HEAD_DATA_SIZE; + let new_head = HeadData(vec![0; s as usize]); + let para_id = ParaId::from(1000); + }: _(RawOrigin::Root, para_id, new_head) + verify { + assert_last_event::(Event::CurrentHeadUpdated(para_id).into()); + } + force_schedule_code_upgrade { + let c in 1 .. MAX_CODE_SIZE; + let new_code = ValidationCode(vec![0; c as usize]); + let para_id = ParaId::from(c as u32); + let block = T::BlockNumber::from(c); + generate_disordered_upgrades::(); + }: _(RawOrigin::Root, para_id, new_code, block) + verify { + assert_last_event::(Event::CodeUpgradeScheduled(para_id).into()); + } + force_note_new_head { + let s in 1 .. MAX_HEAD_DATA_SIZE; + let para_id = ParaId::from(1000); + let new_head = HeadData(vec![0; s as usize]); + // schedule an expired code upgrade for this para_id so that force_note_new_head would use + // the worst possible code path + let expired = frame_system::Pallet::::block_number().saturating_sub(One::one()); + let config = HostConfiguration::::default(); + generate_disordered_pruning::(); + Pallet::::schedule_code_upgrade(para_id, ValidationCode(vec![0]), expired, &config); + }: _(RawOrigin::Root, para_id, new_head) + verify { + assert_last_event::(Event::NewHeadNoted(para_id).into()); + } + force_queue_action { + let para_id = ParaId::from(1000); + generate_disordered_actions_queue::(); + }: _(RawOrigin::Root, para_id) + verify { + let next_session = crate::shared::Pallet::::session_index().saturating_add(One::one()); + assert_last_event::(Event::ActionQueued(para_id, next_session).into()); + } +} + +impl_benchmark_test_suite!( + Pallet, + crate::mock::new_test_ext(Default::default()), + crate::mock::Test +); diff --git a/runtime/parachains/src/paras/weights.rs b/runtime/parachains/src/paras/weights.rs new file mode 100644 index 000000000000..d02acf4bc687 --- /dev/null +++ b/runtime/parachains/src/paras/weights.rs @@ -0,0 +1,97 @@ + +//! Autogenerated weights for `runtime_parachains::paras` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2021-09-21, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 + +// Executed Command: +// ./target/release/polkadot +// benchmark +// --chain +// westend-dev +// --execution=wasm +// --wasm-execution=compiled +// --pallet +// runtime_parachains::paras +// --steps +// 50 +// --repeat +// 20 +// --raw +// --extrinsic +// * +// --output +// runtime/parachains/src/paras/weights.rs + + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `runtime_parachains::paras`. +pub struct WeightInfo(PhantomData); +impl super::WeightInfo for WeightInfo { + // Storage: Paras CurrentCodeHash (r:1 w:1) + // Storage: Paras CodeByHashRefs (r:1 w:1) + // Storage: Paras PastCodeMeta (r:1 w:1) + // Storage: Paras PastCodePruning (r:1 w:1) + // Storage: Paras PastCodeHash (r:0 w:1) + // Storage: Paras CodeByHash (r:0 w:1) + fn force_set_current_code(c: u32, ) -> Weight { + (14_669_000 as Weight) + // Standard Error: 0 + .saturating_add((3_000 as Weight).saturating_mul(c as Weight)) + .saturating_add(T::DbWeight::get().reads(4 as Weight)) + .saturating_add(T::DbWeight::get().writes(6 as Weight)) + } + // Storage: Paras Heads (r:0 w:1) + fn force_set_current_head(s: u32, ) -> Weight { + (0 as Weight) + // Standard Error: 0 + .saturating_add((2_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: Configuration ActiveConfig (r:1 w:0) + // Storage: Paras FutureCodeUpgrades (r:1 w:1) + // Storage: Paras UpcomingUpgrades (r:1 w:1) + // Storage: Paras UpgradeCooldowns (r:1 w:1) + // Storage: System Digest (r:1 w:1) + // Storage: Paras CodeByHashRefs (r:1 w:1) + // Storage: Paras CodeByHash (r:0 w:1) + // Storage: Paras FutureCodeHash (r:0 w:1) + // Storage: Paras UpgradeRestrictionSignal (r:0 w:1) + fn force_schedule_code_upgrade(c: u32, ) -> Weight { + (37_383_000 as Weight) + // Standard Error: 0 + .saturating_add((3_000 as Weight).saturating_mul(c as Weight)) + .saturating_add(T::DbWeight::get().reads(6 as Weight)) + .saturating_add(T::DbWeight::get().writes(8 as Weight)) + } + // Storage: Paras FutureCodeUpgrades (r:1 w:1) + // Storage: Paras FutureCodeHash (r:1 w:1) + // Storage: Paras CurrentCodeHash (r:1 w:1) + // Storage: System Digest (r:1 w:1) + // Storage: Paras PastCodeMeta (r:1 w:1) + // Storage: Paras PastCodePruning (r:1 w:1) + // Storage: Paras Heads (r:0 w:1) + // Storage: Paras PastCodeHash (r:0 w:1) + // Storage: Paras UpgradeGoAheadSignal (r:0 w:1) + fn force_note_new_head(s: u32, ) -> Weight { + (60_855_000 as Weight) + // Standard Error: 0 + .saturating_add((2_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().reads(6 as Weight)) + .saturating_add(T::DbWeight::get().writes(9 as Weight)) + } + // Storage: ParasShared CurrentSessionIndex (r:1 w:0) + // Storage: Paras ActionsQueue (r:1 w:1) + fn force_queue_action() -> Weight { + (32_014_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } +} diff --git a/runtime/parachains/src/paras_inherent.rs b/runtime/parachains/src/paras_inherent.rs index e2dd357658df..ea480ad7c96a 100644 --- a/runtime/parachains/src/paras_inherent.rs +++ b/runtime/parachains/src/paras_inherent.rs @@ -66,8 +66,8 @@ pub mod pallet { /// The hash of the submitted parent header doesn't correspond to the saved block hash of /// the parent. InvalidParentHeader, - /// Potentially invalid candidate. - CandidateCouldBeInvalid, + /// Disputed candidate that was concluded invalid. + CandidateConcludedInvalid, } /// Whether the paras inherent was included within this block. @@ -123,7 +123,7 @@ pub mod pallet { target: LOG_TARGET, "dropping signed_bitfields and backed_candidates because they produced \ an invalid paras inherent: {:?}", - err, + err.error, ); ParachainsInherentData { @@ -174,24 +174,27 @@ pub mod pallet { // Handle disputes logic. let current_session = >::session_index(); let freed_disputed: Vec<(_, FreedReason)> = { - let fresh_disputes = T::DisputesHandler::provide_multi_dispute_data(disputes)?; + let new_current_dispute_sets: Vec<_> = disputes + .iter() + .filter(|s| s.session == current_session) + .map(|s| (s.session, s.candidate_hash)) + .collect(); + + let _ = T::DisputesHandler::provide_multi_dispute_data(disputes)?; if T::DisputesHandler::is_frozen() { // The relay chain we are currently on is invalid. Proceed no further on parachains. Included::::set(Some(())); return Ok(Some(MINIMAL_INCLUSION_INHERENT_WEIGHT).into()) } - let any_current_session_disputes = - fresh_disputes.iter().any(|(s, _)| s == ¤t_session); - - if any_current_session_disputes { - let current_session_disputes: Vec<_> = fresh_disputes + if !new_current_dispute_sets.is_empty() { + let concluded_invalid_disputes: Vec<_> = new_current_dispute_sets .iter() - .filter(|(s, _)| s == ¤t_session) + .filter(|(s, c)| T::DisputesHandler::concluded_invalid(*s, *c)) .map(|(_, c)| *c) .collect(); - >::collect_disputed(current_session_disputes) + >::collect_disputed(concluded_invalid_disputes) .into_iter() .map(|core| (core, FreedReason::Concluded)) .collect() @@ -238,14 +241,14 @@ pub mod pallet { let backed_candidates = limit_backed_candidates::(backed_candidates); let backed_candidates_len = backed_candidates.len() as Weight; - // Refuse to back any candidates that are disputed or invalid. + // Refuse to back any candidates that were disputed and are concluded invalid. for candidate in &backed_candidates { ensure!( - !T::DisputesHandler::could_be_invalid( + !T::DisputesHandler::concluded_invalid( current_session, candidate.candidate.hash(), ), - Error::::CandidateCouldBeInvalid, + Error::::CandidateConcludedInvalid, ); } diff --git a/runtime/parachains/src/ump.rs b/runtime/parachains/src/ump.rs index a4f046024802..b7a1c9f508fd 100644 --- a/runtime/parachains/src/ump.rs +++ b/runtime/parachains/src/ump.rs @@ -91,7 +91,7 @@ impl, C: Config> UmpSink for XcmSi ) -> Result { use parity_scale_codec::DecodeLimit; use xcm::{ - latest::{Error as XcmError, Junction, MultiLocation, Xcm}, + latest::{Error as XcmError, Junction, Xcm}, VersionedXcm, }; @@ -111,9 +111,8 @@ impl, C: Config> UmpSink for XcmSi Ok(0) }, Ok(Ok(xcm_message)) => { - let xcm_junction: Junction = Junction::Parachain(origin.into()); - let xcm_location: MultiLocation = xcm_junction.into(); - let outcome = XcmExecutor::execute_xcm(xcm_location, xcm_message, max_weight); + let xcm_junction = Junction::Parachain(origin.into()); + let outcome = XcmExecutor::execute_xcm(xcm_junction, xcm_message, max_weight); match outcome { Outcome::Error(XcmError::WeightLimitReached(required)) => Err((id, required)), outcome => { diff --git a/runtime/polkadot/Cargo.toml b/runtime/polkadot/Cargo.toml index 0a4532100951..07558ef8881d 100644 --- a/runtime/polkadot/Cargo.toml +++ b/runtime/polkadot/Cargo.toml @@ -1,13 +1,13 @@ [package] name = "polkadot-runtime" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" [dependencies] bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } -parity-scale-codec = { version = "2.2.0", default-features = false, features = ["derive", "max-encoded-len"] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive", "max-encoded-len"] } scale-info = { version = "1.0", default-features = false, features = ["derive"] } log = { version = "0.4.14", default-features = false } rustc-hex = { version = "2.1.0", default-features = false } @@ -18,7 +18,7 @@ smallvec = "1.6.1" authority-discovery-primitives = { package = "sp-authority-discovery", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } babe-primitives = { package = "sp-consensus-babe", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -beefy-primitives = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master", default-features = false } +beefy-primitives = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } block-builder-api = { package = "sp-block-builder", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } inherents = { package = "sp-inherents", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } offchain-primitives = { package = "sp-offchain", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } @@ -77,6 +77,7 @@ pallet-session-benchmarking = { git = "https://github.com/paritytech/substrate", hex-literal = { version = "0.3.3", optional = true } runtime-common = { package = "polkadot-runtime-common", path = "../common", default-features = false } +runtime-parachains = { package = "polkadot-runtime-parachains", path = "../parachains", default-features = false } primitives = { package = "polkadot-primitives", path = "../../primitives", default-features = false } [dev-dependencies] diff --git a/runtime/polkadot/src/constants.rs b/runtime/polkadot/src/constants.rs index cd3a6927d23a..3b53a55d6990 100644 --- a/runtime/polkadot/src/constants.rs +++ b/runtime/polkadot/src/constants.rs @@ -39,6 +39,7 @@ pub mod time { pub const MINUTES: BlockNumber = 60_000 / (MILLISECS_PER_BLOCK as BlockNumber); pub const HOURS: BlockNumber = MINUTES * 60; pub const DAYS: BlockNumber = HOURS * 24; + pub const WEEKS: BlockNumber = DAYS * 7; // 1 in 4 blocks (on average, not counting collisions) will be primary babe blocks. pub const PRIMARY_PROBABILITY: (u64, u64) = (1, 4); diff --git a/runtime/polkadot/src/lib.rs b/runtime/polkadot/src/lib.rs index 72a5c7488409..3addbf6932d7 100644 --- a/runtime/polkadot/src/lib.rs +++ b/runtime/polkadot/src/lib.rs @@ -22,9 +22,18 @@ use pallet_transaction_payment::CurrencyAdapter; use runtime_common::{ - claims, impls::DealWithFees, AssignmentSessionKeyPlaceholder, BlockHashCount, BlockLength, - BlockWeights, CurrencyToVote, OffchainSolutionLengthLimit, OffchainSolutionWeightLimit, - ParachainSessionKeyPlaceholder, RocksDbWeight, SlowAdjustingFeeUpdate, + auctions, claims, crowdloan, impls::DealWithFees, paras_registrar, slots, BlockHashCount, + BlockLength, BlockWeights, CurrencyToVote, OffchainSolutionLengthLimit, + OffchainSolutionWeightLimit, RocksDbWeight, SlowAdjustingFeeUpdate, +}; + +use runtime_parachains::{ + configuration as parachains_configuration, dmp as parachains_dmp, hrmp as parachains_hrmp, + inclusion as parachains_inclusion, initializer as parachains_initializer, + origin as parachains_origin, paras as parachains_paras, + paras_inherent as parachains_paras_inherent, reward_points as parachains_reward_points, + runtime_api_impl::v1 as parachains_runtime_api_impl, scheduler as parachains_scheduler, + session_info as parachains_session_info, shared as parachains_shared, ump as parachains_ump, }; use authority_discovery_primitives::AuthorityId as AuthorityDiscoveryId; @@ -32,7 +41,7 @@ use beefy_primitives::crypto::AuthorityId as BeefyId; use frame_support::{ construct_runtime, parameter_types, traits::{Contains, KeyOwnerProofSystem, LockIdentifier, OnRuntimeUpgrade}, - weights::Weight, + weights::{constants::WEIGHT_PER_MILLIS, Weight}, PalletId, RuntimeDebug, }; use frame_system::{EnsureOneOf, EnsureRoot}; @@ -44,9 +53,9 @@ use pallet_transaction_payment::{FeeDetails, RuntimeDispatchInfo}; use parity_scale_codec::{Decode, Encode, MaxEncodedLen}; use primitives::v1::{ AccountId, AccountIndex, Balance, BlockNumber, CandidateEvent, CommittedCandidateReceipt, - CoreState, GroupRotationInfo, Hash, Id, InboundDownwardMessage, InboundHrmpMessage, Moment, - Nonce, OccupiedCoreAssumption, PersistedValidationData, SessionInfo, Signature, ValidationCode, - ValidationCodeHash, ValidatorId, ValidatorIndex, + CoreState, GroupRotationInfo, Hash, Id as ParaId, InboundDownwardMessage, InboundHrmpMessage, + Moment, Nonce, OccupiedCoreAssumption, PersistedValidationData, SessionInfo, Signature, + ValidationCode, ValidationCodeHash, ValidatorId, ValidatorIndex, }; use sp_core::{ u32_trait::{_1, _2, _3, _4, _5}, @@ -96,13 +105,13 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("polkadot"), impl_name: create_runtime_str!("parity-polkadot"), authoring_version: 0, - spec_version: 9100, + spec_version: 9110, impl_version: 0, #[cfg(not(feature = "disable-runtime-api"))] apis: RUNTIME_API_VERSIONS, #[cfg(feature = "disable-runtime-api")] apis: version::create_apis_vec![[]], - transaction_version: 7, + transaction_version: 8, }; /// The BABE epoch configuration at genesis. @@ -148,7 +157,19 @@ impl Contains for BaseFilter { Call::Multisig(_) | Call::Bounties(_) | Call::Tips(_) | - Call::ElectionProviderMultiPhase(_) => true, + Call::ElectionProviderMultiPhase(_) | + Call::Configuration(_) | + Call::ParasShared(_) | + Call::ParaInclusion(_) | + Call::Paras(_) | + Call::Initializer(_) | + Call::ParaInherent(_) | + Call::Dmp(_) | + Call::Ump(_) | + Call::Hrmp(_) | + Call::Slots(_) => true, + // Disable paras registration, crowdloans, and auctions for now. + Call::Registrar(_) | Call::Auctions(_) | Call::Crowdloan(_) => false, } } } @@ -245,6 +266,8 @@ impl pallet_babe::Config for Runtime { pallet_babe::EquivocationHandler; type WeightInfo = (); + + type MaxAuthorities = MaxAuthorities; } parameter_types! { @@ -315,8 +338,8 @@ impl_opaque_keys! { pub grandpa: Grandpa, pub babe: Babe, pub im_online: ImOnline, - pub para_validator: ParachainSessionKeyPlaceholder, - pub para_assignment: AssignmentSessionKeyPlaceholder, + pub para_validator: Initializer, + pub para_assignment: ParaSessionInfo, pub authority_discovery: AuthorityDiscovery, } } @@ -789,6 +812,7 @@ impl pallet_grandpa::Config for Runtime { >; type WeightInfo = (); + type MaxAuthorities = MaxAuthorities; } /// Submits a transaction with the node's public and signature type. Adheres to the signed extension @@ -941,6 +965,7 @@ pub enum ProxyType { // Skip 4 as it is now removed (was SudoBalances) IdentityJudgement = 5, CancelProxy = 6, + Auction = 7, } #[cfg(test)] @@ -1014,7 +1039,14 @@ impl InstanceFilter for ProxyType { Call::Utility(..) | Call::Identity(..) | Call::Proxy(..) | - Call::Multisig(..) + Call::Multisig(..) | + Call::Registrar(paras_registrar::Call::register {..}) | + Call::Registrar(paras_registrar::Call::deregister {..}) | + // Specifically omitting Registrar `swap` + Call::Registrar(paras_registrar::Call::reserve {..}) | + Call::Crowdloan(..) | + Call::Slots(..) | + Call::Auctions(..) // Specifically omitting the entire XCM Pallet ), ProxyType::Governance => matches!( c, @@ -1034,6 +1066,10 @@ impl InstanceFilter for ProxyType { ProxyType::CancelProxy => { matches!(c, Call::Proxy(pallet_proxy::Call::reject_announcement { .. })) }, + ProxyType::Auction => matches!( + c, + Call::Auctions(..) | Call::Crowdloan(..) | Call::Registrar(..) | Call::Slots(..) + ), } } fn is_superset(&self, o: &Self) -> bool { @@ -1062,6 +1098,136 @@ impl pallet_proxy::Config for Runtime { type AnnouncementDepositFactor = AnnouncementDepositFactor; } +impl parachains_origin::Config for Runtime {} + +impl parachains_configuration::Config for Runtime { + type WeightInfo = weights::runtime_parachains_configuration::WeightInfo; +} + +impl parachains_shared::Config for Runtime {} + +impl parachains_session_info::Config for Runtime {} + +impl parachains_inclusion::Config for Runtime { + type Event = Event; + type DisputesHandler = (); + type RewardValidators = parachains_reward_points::RewardValidatorsWithEraPoints; +} + +impl parachains_paras::Config for Runtime { + type Origin = Origin; + type Event = Event; + type WeightInfo = weights::runtime_parachains_paras::WeightInfo; +} + +parameter_types! { + pub const FirstMessageFactorPercent: u64 = 100; +} + +impl parachains_ump::Config for Runtime { + type Event = Event; + type UmpSink = (); + type FirstMessageFactorPercent = FirstMessageFactorPercent; + type ExecuteOverweightOrigin = EnsureRoot; +} + +impl parachains_dmp::Config for Runtime {} + +impl parachains_hrmp::Config for Runtime { + type Event = Event; + type Origin = Origin; + type Currency = Balances; +} + +impl parachains_paras_inherent::Config for Runtime {} + +impl parachains_scheduler::Config for Runtime {} + +impl parachains_initializer::Config for Runtime { + type Randomness = pallet_babe::RandomnessFromOneEpochAgo; + type ForceOrigin = EnsureRoot; + type WeightInfo = weights::runtime_parachains_initializer::WeightInfo; +} + +parameter_types! { + // Mostly arbitrary deposit price, but should provide an adequate incentive not to spam reserve + // `ParaId`s. + pub const ParaDeposit: Balance = 100 * DOLLARS; + pub const ParaDataByteDeposit: Balance = deposit(0, 1); +} + +impl paras_registrar::Config for Runtime { + type Event = Event; + type Origin = Origin; + type Currency = Balances; + type OnSwap = (Crowdloan, Slots); + type ParaDeposit = ParaDeposit; + type DataDepositPerByte = ParaDataByteDeposit; + type WeightInfo = weights::runtime_common_paras_registrar::WeightInfo; +} + +parameter_types! { + // 12 weeks = 3 months per lease period -> 8 lease periods ~ 2 years + pub const LeasePeriod: BlockNumber = 12 * WEEKS; +} + +impl slots::Config for Runtime { + type Event = Event; + type Currency = Balances; + type Registrar = Registrar; + type LeasePeriod = LeasePeriod; + type WeightInfo = weights::runtime_common_slots::WeightInfo; +} + +parameter_types! { + pub const CrowdloanId: PalletId = PalletId(*b"py/cfund"); + // Accounts for 10_000 contributions, each using 48 bytes (16 bytes for balance, and 32 bytes + // for a memo). + pub const SubmissionDeposit: Balance = deposit(1, 480_000); + // The minimum crowdloan contribution. + pub const MinContribution: Balance = 5 * DOLLARS; + pub const RemoveKeysLimit: u32 = 1000; + // Allow 32 bytes for an additional memo to a crowdloan. + pub const MaxMemoLength: u8 = 32; +} + +impl crowdloan::Config for Runtime { + type Event = Event; + type PalletId = CrowdloanId; + type SubmissionDeposit = SubmissionDeposit; + type MinContribution = MinContribution; + type RemoveKeysLimit = RemoveKeysLimit; + type Registrar = Registrar; + type Auctioneer = Auctions; + type MaxMemoLength = MaxMemoLength; + type WeightInfo = weights::runtime_common_crowdloan::WeightInfo; +} + +parameter_types! { + // The average auction is 7 days long, so this will be 70% for ending period. + // 5 Days = 72000 Blocks @ 6 sec per block + pub const EndingPeriod: BlockNumber = 5 * DAYS; + // ~ 1000 samples per day -> ~ 20 blocks per sample -> 2 minute samples + pub const SampleLength: BlockNumber = 2 * MINUTES; +} + +type AuctionInitiate = EnsureOneOf< + AccountId, + EnsureRoot, + pallet_collective::EnsureProportionAtLeast<_2, _3, AccountId, CouncilCollective>, +>; + +impl auctions::Config for Runtime { + type Event = Event; + type Leaser = Slots; + type Registrar = Registrar; + type EndingPeriod = EndingPeriod; + type SampleLength = SampleLength; + type Randomness = pallet_babe::RandomnessFromOneEpochAgo; + type InitiateOrigin = AuctionInitiate; + type WeightInfo = weights::runtime_common_auctions::WeightInfo; +} + construct_runtime! { pub enum Runtime where Block = Block, @@ -1122,6 +1288,26 @@ construct_runtime! { // Election pallet. Only works with staking, but placed here to maintain indices. ElectionProviderMultiPhase: pallet_election_provider_multi_phase::{Pallet, Call, Storage, Event, ValidateUnsigned} = 36, + + // Parachains pallets. Start indices at 50 to leave room. + ParachainsOrigin: parachains_origin::{Pallet, Origin} = 50, + Configuration: parachains_configuration::{Pallet, Call, Storage, Config} = 51, + ParasShared: parachains_shared::{Pallet, Call, Storage} = 52, + ParaInclusion: parachains_inclusion::{Pallet, Call, Storage, Event} = 53, + ParaInherent: parachains_paras_inherent::{Pallet, Call, Storage, Inherent} = 54, + ParaScheduler: parachains_scheduler::{Pallet, Storage} = 55, + Paras: parachains_paras::{Pallet, Call, Storage, Event, Config} = 56, + Initializer: parachains_initializer::{Pallet, Call, Storage} = 57, + Dmp: parachains_dmp::{Pallet, Call, Storage} = 58, + Ump: parachains_ump::{Pallet, Call, Storage, Event} = 59, + Hrmp: parachains_hrmp::{Pallet, Call, Storage, Event} = 60, + ParaSessionInfo: parachains_session_info::{Pallet, Storage} = 61, + + // Parachain Onboarding Pallets. Start indices at 70 to leave room. + Registrar: paras_registrar::{Pallet, Call, Storage, Event} = 70, + Slots: slots::{Pallet, Call, Storage, Event} = 71, + Auctions: auctions::{Pallet, Call, Storage, Event} = 72, + Crowdloan: crowdloan::{Pallet, Call, Storage, Event} = 73, } } @@ -1156,6 +1342,8 @@ pub type Executive = frame_executive::Executive< Runtime, AllPallets, ( + SetInitialHostConfiguration, + BountiesPrefixMigration, CouncilStoragePrefixMigration, TechnicalCommitteeStoragePrefixMigration, TechnicalMembershipStoragePrefixMigration, @@ -1165,6 +1353,44 @@ pub type Executive = frame_executive::Executive< /// The payload being signed in transactions. pub type SignedPayload = generic::SignedPayload; +const BOUNTIES_OLD_PREFIX: &str = "Treasury"; + +/// Migrate from 'Treasury' to the new prefix 'Bounties' +pub struct BountiesPrefixMigration; + +impl OnRuntimeUpgrade for BountiesPrefixMigration { + fn on_runtime_upgrade() -> frame_support::weights::Weight { + use frame_support::traits::PalletInfo; + let name = ::PalletInfo::name::() + .expect("Bounties is part of runtime, so it has a name; qed"); + pallet_bounties::migrations::v4::migrate::(BOUNTIES_OLD_PREFIX, name) + } + + #[cfg(feature = "try-runtime")] + fn pre_upgrade() -> Result<(), &'static str> { + use frame_support::traits::PalletInfo; + let name = ::PalletInfo::name::() + .expect("Bounties is part of runtime, so it has a name; qed"); + pallet_bounties::migrations::v4::pre_migration::( + BOUNTIES_OLD_PREFIX, + name, + ); + Ok(()) + } + + #[cfg(feature = "try-runtime")] + fn post_upgrade() -> Result<(), &'static str> { + use frame_support::traits::PalletInfo; + let name = ::PalletInfo::name::() + .expect("Bounties is part of runtime, so it has a name; qed"); + pallet_bounties::migrations::v4::post_migration::( + BOUNTIES_OLD_PREFIX, + name, + ); + Ok(()) + } +} + const COUNCIL_OLD_PREFIX: &str = "Instance1Collective"; /// Migrate from `Instance1Collective` to the new pallet prefix `Council` pub struct CouncilStoragePrefixMigration; @@ -1188,7 +1414,7 @@ impl OnRuntimeUpgrade for CouncilStoragePrefixMigration { } const TECHNICAL_COMMITTEE_OLD_PREFIX: &str = "Instance2Collective"; -/// Migrate from 'Instance2Collective' to the new pallet prefix `TechnicalCommittee` +/// Migrate from `Instance2Collective` to the new pallet prefix `TechnicalCommittee` pub struct TechnicalCommitteeStoragePrefixMigration; impl OnRuntimeUpgrade for TechnicalCommitteeStoragePrefixMigration { @@ -1255,6 +1481,64 @@ impl OnRuntimeUpgrade for TechnicalMembershipStoragePrefixMigration { } } +/// Set the initial host configuration for Polkadot. +pub struct SetInitialHostConfiguration; +impl OnRuntimeUpgrade for SetInitialHostConfiguration { + fn on_runtime_upgrade() -> frame_support::weights::Weight { + use parachains_configuration::HostConfiguration; + + let active_config: HostConfiguration = HostConfiguration { + max_code_size: 10_485_760, + max_head_data_size: 20_480, + max_upward_queue_count: 10, + max_upward_queue_size: 51_200, + max_upward_message_size: 51_200, + max_upward_message_num_per_candidate: 10, + hrmp_max_message_num_per_candidate: 10, + validation_upgrade_frequency: 14_400, + validation_upgrade_delay: 600, + max_pov_size: 5_242_880, + max_downward_message_size: 51_200, + ump_service_total_weight: 100_000_000_000, + hrmp_max_parachain_outbound_channels: 10, + hrmp_max_parathread_outbound_channels: 0, + hrmp_sender_deposit: deposit(1004, 100 * 1024), + hrmp_recipient_deposit: deposit(1004, 100 * 1024), + hrmp_channel_max_capacity: 1_000, + hrmp_channel_max_total_size: 102_400, + hrmp_max_parachain_inbound_channels: 10, + hrmp_max_parathread_inbound_channels: 0, + hrmp_channel_max_message_size: 102_400, + code_retention_period: EPOCH_DURATION_IN_SLOTS * 6, + parathread_cores: 0, + parathread_retries: 0, + group_rotation_frequency: 10, + chain_availability_period: 10, + thread_availability_period: 10, + scheduling_lookahead: 1, + max_validators_per_core: Some(5), + max_validators: Some(200), + dispute_period: 6, + dispute_post_conclusion_acceptance_period: 600, + dispute_max_spam_slots: 2, + dispute_conclusion_by_time_out_period: 600, + no_show_slots: 2, + n_delay_tranches: 89, + zeroth_delay_tranche_width: 0, + needed_approvals: 30, + relay_vrf_modulo_samples: 40, + ump_max_individual_weight: 20 * WEIGHT_PER_MILLIS, + }; + + // Only set the config if it's needed to be set explicitly. + if Configuration::config() == Default::default() { + Configuration::force_set_active_config(active_config); + } + + RocksDbWeight::get().reads(1) + RocksDbWeight::get().writes(1) + } +} + const TIPS_OLD_PREFIX: &str = "Treasury"; /// Migrate pallet-tips from `Treasury` to the new pallet prefix `Tips` pub struct MigrateTipsPalletPrefix; @@ -1338,60 +1622,69 @@ sp_api::impl_runtime_apis! { impl primitives::v1::ParachainHost for Runtime { fn validators() -> Vec { - Vec::new() + parachains_runtime_api_impl::validators::() } fn validator_groups() -> (Vec>, GroupRotationInfo) { - (Vec::new(), GroupRotationInfo { session_start_block: 0, group_rotation_frequency: 0, now: 0 }) + parachains_runtime_api_impl::validator_groups::() } fn availability_cores() -> Vec> { - Vec::new() + parachains_runtime_api_impl::availability_cores::() } - fn persisted_validation_data(_: Id, _: OccupiedCoreAssumption) + fn persisted_validation_data(para_id: ParaId, assumption: OccupiedCoreAssumption) -> Option> { - None + parachains_runtime_api_impl::persisted_validation_data::(para_id, assumption) } - fn check_validation_outputs(_: Id, _: primitives::v1::CandidateCommitments) -> bool { - false + fn check_validation_outputs( + para_id: ParaId, + outputs: primitives::v1::CandidateCommitments, + ) -> bool { + parachains_runtime_api_impl::check_validation_outputs::(para_id, outputs) } fn session_index_for_child() -> SessionIndex { - 0 + parachains_runtime_api_impl::session_index_for_child::() } - fn session_info(_: SessionIndex) -> Option { - None + fn validation_code(para_id: ParaId, assumption: OccupiedCoreAssumption) + -> Option { + parachains_runtime_api_impl::validation_code::(para_id, assumption) } - fn validation_code(_: Id, _: OccupiedCoreAssumption) -> Option { - None + fn candidate_pending_availability(para_id: ParaId) -> Option> { + parachains_runtime_api_impl::candidate_pending_availability::(para_id) } - fn candidate_pending_availability(_: Id) -> Option> { - None + fn candidate_events() -> Vec> { + parachains_runtime_api_impl::candidate_events::(|ev| { + match ev { + Event::ParaInclusion(ev) => { + Some(ev) + } + _ => None, + } + }) } - fn candidate_events() -> Vec> { - Vec::new() + fn session_info(index: SessionIndex) -> Option { + parachains_runtime_api_impl::session_info::(index) } - fn dmq_contents( - _recipient: Id, - ) -> Vec> { - Vec::new() + fn dmq_contents(recipient: ParaId) -> Vec> { + parachains_runtime_api_impl::dmq_contents::(recipient) } fn inbound_hrmp_channels_contents( - _recipient: Id - ) -> BTreeMap>> { - BTreeMap::new() + recipient: ParaId + ) -> BTreeMap>> { + parachains_runtime_api_impl::inbound_hrmp_channels_contents::(recipient) } - fn validation_code_by_hash(_hash: ValidationCodeHash) -> Option { - None + fn validation_code_by_hash(hash: ValidationCodeHash) -> Option { + parachains_runtime_api_impl::validation_code_by_hash::(hash) } } @@ -1474,7 +1767,7 @@ sp_api::impl_runtime_apis! { slot_duration: Babe::slot_duration(), epoch_length: EpochDuration::get(), c: BABE_GENESIS_EPOCH_CONFIG.c, - genesis_authorities: Babe::authorities(), + genesis_authorities: Babe::authorities().to_vec(), randomness: Babe::randomness(), allowed_slots: BABE_GENESIS_EPOCH_CONFIG.allowed_slots, } @@ -1554,10 +1847,14 @@ sp_api::impl_runtime_apis! { #[cfg(feature = "try-runtime")] impl frame_try_runtime::TryRuntime for Runtime { - fn on_runtime_upgrade() -> Result<(Weight, Weight), sp_runtime::RuntimeString> { + fn on_runtime_upgrade() -> (Weight, Weight) { log::info!("try-runtime::on_runtime_upgrade polkadot."); - let weight = Executive::try_runtime_upgrade()?; - Ok((weight, BlockWeights::get().max_block)) + let weight = Executive::try_runtime_upgrade().unwrap(); + (weight, BlockWeights::get().max_block) + } + + fn execute_block_no_check(block: Block) -> Weight { + Executive::execute_block_no_check(block) } } @@ -1580,6 +1877,10 @@ sp_api::impl_runtime_apis! { // NOTE: Make sure to prefix these `runtime_common::` so that path resolves correctly // in the generated file. list_benchmark!(list, extra, runtime_common::claims, Claims); + list_benchmark!(list, extra, runtime_common::crowdloan, Crowdloan); + list_benchmark!(list, extra, runtime_common::claims, Claims); + list_benchmark!(list, extra, runtime_common::slots, Slots); + list_benchmark!(list, extra, runtime_common::paras_registrar, Registrar); // Substrate list_benchmark!(list, extra, pallet_balances, Balances); list_benchmark!(list, extra, pallet_bounties, Bounties); @@ -1648,6 +1949,10 @@ sp_api::impl_runtime_apis! { // NOTE: Make sure to prefix these `runtime_common::` so that path resolves correctly // in the generated file. add_benchmark!(params, batches, runtime_common::claims, Claims); + add_benchmark!(params, batches, runtime_common::crowdloan, Crowdloan); + add_benchmark!(params, batches, runtime_common::claims, Claims); + add_benchmark!(params, batches, runtime_common::slots, Slots); + add_benchmark!(params, batches, runtime_common::paras_registrar, Registrar); // Substrate add_benchmark!(params, batches, pallet_balances, Balances); add_benchmark!(params, batches, pallet_bounties, Bounties); diff --git a/runtime/polkadot/src/weights/mod.rs b/runtime/polkadot/src/weights/mod.rs index 046bc9f0a4c1..19842799a533 100644 --- a/runtime/polkadot/src/weights/mod.rs +++ b/runtime/polkadot/src/weights/mod.rs @@ -37,4 +37,11 @@ pub mod pallet_tips; pub mod pallet_treasury; pub mod pallet_utility; pub mod pallet_vesting; +pub mod runtime_common_auctions; pub mod runtime_common_claims; +pub mod runtime_common_crowdloan; +pub mod runtime_common_paras_registrar; +pub mod runtime_common_slots; +pub mod runtime_parachains_configuration; +pub mod runtime_parachains_initializer; +pub mod runtime_parachains_paras; diff --git a/runtime/polkadot/src/weights/pallet_democracy.rs b/runtime/polkadot/src/weights/pallet_democracy.rs index 868ff527ec1d..f5af1c433b95 100644 --- a/runtime/polkadot/src/weights/pallet_democracy.rs +++ b/runtime/polkadot/src/weights/pallet_democracy.rs @@ -129,6 +129,13 @@ impl pallet_democracy::WeightInfo for WeightInfo { .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(r as Weight))) } + fn on_initialize_base_with_launch_period(r: u32) -> Weight { + (7_728_000 as Weight) + // Standard Error: 4_000 + .saturating_add((5_099_000 as Weight).saturating_mul(r as Weight)) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(r as Weight))) + } fn delegate(r: u32) -> Weight { (53_667_000 as Weight) // Standard Error: 4_000 diff --git a/runtime/polkadot/src/weights/pallet_election_provider_multi_phase.rs b/runtime/polkadot/src/weights/pallet_election_provider_multi_phase.rs index 82de96068ff0..a4af284de9ad 100644 --- a/runtime/polkadot/src/weights/pallet_election_provider_multi_phase.rs +++ b/runtime/polkadot/src/weights/pallet_election_provider_multi_phase.rs @@ -83,7 +83,7 @@ impl pallet_election_provider_multi_phase::WeightInfo f // Storage: ElectionProviderMultiPhase SnapshotMetadata (r:0 w:1) // Storage: ElectionProviderMultiPhase DesiredTargets (r:0 w:1) // Storage: ElectionProviderMultiPhase Snapshot (r:0 w:1) - fn create_snapshot_internal() -> Weight { + fn create_snapshot_internal(_: u32, _: u32) -> Weight { (8_835_233_000 as Weight).saturating_add(T::DbWeight::get().writes(3 as Weight)) } // Storage: ElectionProviderMultiPhase SignedSubmissionIndices (r:1 w:1) diff --git a/runtime/polkadot/src/weights/pallet_staking.rs b/runtime/polkadot/src/weights/pallet_staking.rs index 66b10f9758c6..2e30aabcbf09 100644 --- a/runtime/polkadot/src/weights/pallet_staking.rs +++ b/runtime/polkadot/src/weights/pallet_staking.rs @@ -1,4 +1,4 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. +// Copyright 2017-2021 Parity Technologies (UK) Ltd. // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify @@ -15,8 +15,8 @@ // along with Polkadot. If not, see . //! Autogenerated weights for `pallet_staking` //! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-07-07, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2021-09-17, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("polkadot-dev"), DB CACHE: 128 // Executed Command: @@ -31,8 +31,10 @@ // --wasm-execution=compiled // --heap-pages=4096 // --header=./file_header.txt -// --output=runtime/polkadot/src/weights/ +// --output=./runtime/polkadot/src/weights/ + +#![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] @@ -42,180 +44,344 @@ use sp_std::marker::PhantomData; /// Weight functions for `pallet_staking`. pub struct WeightInfo(PhantomData); impl pallet_staking::WeightInfo for WeightInfo { + // Storage: Staking Bonded (r:1 w:1) + // Storage: Staking Ledger (r:1 w:1) + // Storage: Staking CurrentEra (r:1 w:0) + // Storage: Staking HistoryDepth (r:1 w:0) + // Storage: Balances Locks (r:1 w:1) + // Storage: Staking Payee (r:0 w:1) fn bond() -> Weight { - (70_233_000 as Weight) + (64_842_000 as Weight) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } + // Storage: Staking Bonded (r:1 w:0) + // Storage: Staking Ledger (r:1 w:1) + // Storage: Balances Locks (r:1 w:1) + // Storage: Staking Nominators (r:1 w:0) fn bond_extra() -> Weight { - (58_956_000 as Weight) + (63_943_000 as Weight) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } + // Storage: Staking Ledger (r:1 w:1) + // Storage: Staking Nominators (r:1 w:0) + // Storage: Staking MinNominatorBond (r:1 w:0) + // Storage: Staking CurrentEra (r:1 w:0) + // Storage: Balances Locks (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: Staking Bonded (r:1 w:0) fn unbond() -> Weight { - (56_669_000 as Weight) - .saturating_add(T::DbWeight::get().reads(6 as Weight)) + (67_903_000 as Weight) + .saturating_add(T::DbWeight::get().reads(7 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } - fn withdraw_unbonded_update(s: u32) -> Weight { - (49_182_000 as Weight) + // Storage: Staking Ledger (r:1 w:1) + // Storage: Staking CurrentEra (r:1 w:0) + // Storage: Balances Locks (r:1 w:1) + // Storage: System Account (r:1 w:1) + fn withdraw_unbonded_update(s: u32, ) -> Weight { + (46_134_000 as Weight) // Standard Error: 0 - .saturating_add((28_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((36_000 as Weight).saturating_mul(s as Weight)) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } - fn withdraw_unbonded_kill(s: u32) -> Weight { - (81_006_000 as Weight) - // Standard Error: 1_000 - .saturating_add((2_258_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(10 as Weight)) + // Storage: Staking Ledger (r:1 w:1) + // Storage: Staking CurrentEra (r:1 w:0) + // Storage: Staking Bonded (r:1 w:1) + // Storage: Staking SlashingSpans (r:1 w:0) + // Storage: Staking Validators (r:1 w:0) + // Storage: Staking Nominators (r:1 w:1) + // Storage: Staking CounterForNominators (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: Balances Locks (r:1 w:1) + // Storage: Staking Payee (r:0 w:1) + fn withdraw_unbonded_kill(_s: u32, ) -> Weight { + (67_717_000 as Weight) + .saturating_add(T::DbWeight::get().reads(9 as Weight)) .saturating_add(T::DbWeight::get().writes(7 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) } + // Storage: Staking Ledger (r:1 w:0) + // Storage: Staking MinValidatorBond (r:1 w:0) + // Storage: Staking Validators (r:1 w:1) + // Storage: Staking MaxValidatorsCount (r:1 w:0) + // Storage: Staking Nominators (r:1 w:1) + // Storage: Staking CounterForNominators (r:1 w:1) + // Storage: Staking CounterForValidators (r:1 w:1) fn validate() -> Weight { - (65_617_000 as Weight) - .saturating_add(T::DbWeight::get().reads(10 as Weight)) - .saturating_add(T::DbWeight::get().writes(6 as Weight)) + (36_901_000 as Weight) + .saturating_add(T::DbWeight::get().reads(7 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) } - fn kick(k: u32) -> Weight { - (10_487_000 as Weight) - // Standard Error: 7_000 - .saturating_add((16_334_000 as Weight).saturating_mul(k as Weight)) + // Storage: Staking Ledger (r:1 w:0) + // Storage: Staking Nominators (r:1 w:1) + fn kick(k: u32, ) -> Weight { + (9_945_000 as Weight) + // Standard Error: 10_000 + .saturating_add((15_330_000 as Weight).saturating_mul(k as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(k as Weight))) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(k as Weight))) } - fn nominate(n: u32) -> Weight { - (38_083_000 as Weight) - // Standard Error: 10_000 - .saturating_add((5_185_000 as Weight).saturating_mul(n as Weight)) - .saturating_add(T::DbWeight::get().reads(7 as Weight)) + // Storage: Staking Ledger (r:1 w:0) + // Storage: Staking MinNominatorBond (r:1 w:0) + // Storage: Staking Nominators (r:1 w:1) + // Storage: Staking MaxNominatorsCount (r:1 w:0) + // Storage: Staking Validators (r:2 w:0) + // Storage: Staking CurrentEra (r:1 w:0) + // Storage: Staking CounterForNominators (r:1 w:1) + // Storage: Staking Bonded (r:1 w:0) + fn nominate(n: u32, ) -> Weight { + (48_492_000 as Weight) + // Standard Error: 14_000 + .saturating_add((4_775_000 as Weight).saturating_mul(n as Weight)) + .saturating_add(T::DbWeight::get().reads(8 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(n as Weight))) - .saturating_add(T::DbWeight::get().writes(7 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) } + // Storage: Staking Ledger (r:1 w:0) + // Storage: Staking Validators (r:1 w:0) + // Storage: Staking Nominators (r:1 w:1) + // Storage: Staking CounterForNominators (r:1 w:1) fn chill() -> Weight { - (16_783_000 as Weight).saturating_add(T::DbWeight::get().reads(3 as Weight)) + (36_148_000 as Weight) + .saturating_add(T::DbWeight::get().reads(4 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) } + // Storage: Staking Ledger (r:1 w:0) + // Storage: Staking Payee (r:0 w:1) fn set_payee() -> Weight { - (11_087_000 as Weight) + (10_737_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Staking Bonded (r:1 w:1) + // Storage: Staking Ledger (r:2 w:2) fn set_controller() -> Weight { - (24_640_000 as Weight) + (23_913_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } + // Storage: Staking ValidatorCount (r:0 w:1) fn set_validator_count() -> Weight { - (1_879_000 as Weight).saturating_add(T::DbWeight::get().writes(1 as Weight)) + (2_027_000 as Weight) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Staking ForceEra (r:0 w:1) fn force_no_eras() -> Weight { - (2_139_000 as Weight).saturating_add(T::DbWeight::get().writes(1 as Weight)) + (2_343_000 as Weight) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Staking ForceEra (r:0 w:1) fn force_new_era() -> Weight { - (2_096_000 as Weight).saturating_add(T::DbWeight::get().writes(1 as Weight)) + (2_369_000 as Weight) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Staking ForceEra (r:0 w:1) fn force_new_era_always() -> Weight { - (2_089_000 as Weight).saturating_add(T::DbWeight::get().writes(1 as Weight)) + (2_400_000 as Weight) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) } - fn set_invulnerables(v: u32) -> Weight { - (2_143_000 as Weight) + // Storage: Staking Invulnerables (r:0 w:1) + fn set_invulnerables(v: u32, ) -> Weight { + (2_197_000 as Weight) // Standard Error: 0 - .saturating_add((6_000 as Weight).saturating_mul(v as Weight)) + .saturating_add((56_000 as Weight).saturating_mul(v as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } - fn force_unstake(s: u32) -> Weight { - (58_264_000 as Weight) - // Standard Error: 1_000 - .saturating_add((2_252_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(8 as Weight)) - .saturating_add(T::DbWeight::get().writes(7 as Weight)) + // Storage: Staking Bonded (r:1 w:1) + // Storage: Staking SlashingSpans (r:1 w:0) + // Storage: Staking Validators (r:1 w:0) + // Storage: Staking Nominators (r:1 w:1) + // Storage: Staking CounterForNominators (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: Balances Locks (r:1 w:1) + // Storage: Staking Ledger (r:0 w:1) + // Storage: Staking Payee (r:0 w:1) + // Storage: Staking SpanSlash (r:0 w:2) + fn force_unstake(s: u32, ) -> Weight { + (62_032_000 as Weight) + // Standard Error: 2_000 + .saturating_add((2_220_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().reads(7 as Weight)) + .saturating_add(T::DbWeight::get().writes(8 as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) } - fn cancel_deferred_slash(s: u32) -> Weight { - (3_444_385_000 as Weight) - // Standard Error: 224_000 - .saturating_add((19_743_000 as Weight).saturating_mul(s as Weight)) + // Storage: Staking UnappliedSlashes (r:1 w:1) + fn cancel_deferred_slash(s: u32, ) -> Weight { + (2_811_250_000 as Weight) + // Standard Error: 182_000 + .saturating_add((16_184_000 as Weight).saturating_mul(s as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } - fn payout_stakers_dead_controller(n: u32) -> Weight { - (106_496_000 as Weight) - // Standard Error: 13_000 - .saturating_add((46_186_000 as Weight).saturating_mul(n as Weight)) + // Storage: Staking CurrentEra (r:1 w:0) + // Storage: Staking HistoryDepth (r:1 w:0) + // Storage: Staking ErasValidatorReward (r:1 w:0) + // Storage: Staking Bonded (r:2 w:0) + // Storage: Staking Ledger (r:1 w:1) + // Storage: Staking ErasStakersClipped (r:1 w:0) + // Storage: Staking ErasRewardPoints (r:1 w:0) + // Storage: Staking ErasValidatorPrefs (r:1 w:0) + // Storage: Staking Payee (r:2 w:0) + // Storage: System Account (r:2 w:2) + fn payout_stakers_dead_controller(n: u32, ) -> Weight { + (118_075_000 as Weight) + // Standard Error: 20_000 + .saturating_add((44_116_000 as Weight).saturating_mul(n as Weight)) .saturating_add(T::DbWeight::get().reads(10 as Weight)) .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(n as Weight))) .saturating_add(T::DbWeight::get().writes(2 as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(n as Weight))) } - fn payout_stakers_alive_staked(n: u32) -> Weight { - (131_706_000 as Weight) - // Standard Error: 20_000 - .saturating_add((60_519_000 as Weight).saturating_mul(n as Weight)) + // Storage: Staking CurrentEra (r:1 w:0) + // Storage: Staking HistoryDepth (r:1 w:0) + // Storage: Staking ErasValidatorReward (r:1 w:0) + // Storage: Staking Bonded (r:2 w:0) + // Storage: Staking Ledger (r:2 w:2) + // Storage: Staking ErasStakersClipped (r:1 w:0) + // Storage: Staking ErasRewardPoints (r:1 w:0) + // Storage: Staking ErasValidatorPrefs (r:1 w:0) + // Storage: Staking Payee (r:2 w:0) + // Storage: System Account (r:2 w:2) + // Storage: Balances Locks (r:2 w:2) + fn payout_stakers_alive_staked(n: u32, ) -> Weight { + (126_296_000 as Weight) + // Standard Error: 27_000 + .saturating_add((57_142_000 as Weight).saturating_mul(n as Weight)) .saturating_add(T::DbWeight::get().reads(11 as Weight)) .saturating_add(T::DbWeight::get().reads((5 as Weight).saturating_mul(n as Weight))) .saturating_add(T::DbWeight::get().writes(3 as Weight)) .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(n as Weight))) } - fn rebond(l: u32) -> Weight { - (46_089_000 as Weight) + // Storage: Staking Ledger (r:1 w:1) + // Storage: Balances Locks (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: Staking Nominators (r:1 w:0) + // Storage: Staking Bonded (r:1 w:0) + fn rebond(l: u32, ) -> Weight { + (60_559_000 as Weight) // Standard Error: 1_000 - .saturating_add((64_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) + .saturating_add((63_000 as Weight).saturating_mul(l as Weight)) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } - fn set_history_depth(e: u32) -> Weight { + // Storage: Staking CurrentEra (r:1 w:0) + // Storage: Staking HistoryDepth (r:1 w:1) + // Storage: Staking ErasStakersClipped (r:0 w:2) + // Storage: Staking ErasValidatorPrefs (r:0 w:2) + // Storage: Staking ErasValidatorReward (r:0 w:1) + // Storage: Staking ErasRewardPoints (r:0 w:1) + // Storage: Staking ErasStakers (r:0 w:2) + // Storage: Staking ErasTotalStake (r:0 w:1) + // Storage: Staking ErasStartSessionIndex (r:0 w:1) + fn set_history_depth(e: u32, ) -> Weight { (0 as Weight) - // Standard Error: 75_000 - .saturating_add((32_680_000 as Weight).saturating_mul(e as Weight)) + // Standard Error: 68_000 + .saturating_add((30_894_000 as Weight).saturating_mul(e as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) .saturating_add(T::DbWeight::get().writes((7 as Weight).saturating_mul(e as Weight))) } - fn reap_stash(s: u32) -> Weight { - (69_019_000 as Weight) - // Standard Error: 0 - .saturating_add((2_317_000 as Weight).saturating_mul(s as Weight)) + // Storage: System Account (r:1 w:1) + // Storage: Staking Bonded (r:1 w:1) + // Storage: Staking SlashingSpans (r:1 w:1) + // Storage: Staking Validators (r:1 w:0) + // Storage: Staking Nominators (r:1 w:1) + // Storage: Staking CounterForNominators (r:1 w:1) + // Storage: Balances Locks (r:1 w:1) + // Storage: Staking Ledger (r:0 w:1) + // Storage: Staking Payee (r:0 w:1) + // Storage: Staking SpanSlash (r:0 w:1) + fn reap_stash(s: u32, ) -> Weight { + (65_173_000 as Weight) + // Standard Error: 1_000 + .saturating_add((2_213_000 as Weight).saturating_mul(s as Weight)) .saturating_add(T::DbWeight::get().reads(7 as Weight)) .saturating_add(T::DbWeight::get().writes(8 as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) } - fn new_era(v: u32, n: u32) -> Weight { + // Storage: Staking CounterForNominators (r:1 w:0) + // Storage: Staking CounterForValidators (r:1 w:0) + // Storage: Staking Validators (r:2 w:0) + // Storage: Staking Bonded (r:101 w:0) + // Storage: Staking Ledger (r:101 w:0) + // Storage: Staking SlashingSpans (r:1 w:0) + // Storage: Staking Nominators (r:101 w:0) + // Storage: System BlockWeight (r:1 w:1) + // Storage: Staking ValidatorCount (r:1 w:0) + // Storage: Staking MinimumValidatorCount (r:1 w:0) + // Storage: Staking CurrentEra (r:1 w:1) + // Storage: Staking HistoryDepth (r:1 w:0) + // Storage: Staking ErasStakersClipped (r:0 w:1) + // Storage: Staking ErasValidatorPrefs (r:0 w:1) + // Storage: Staking ErasStakers (r:0 w:1) + // Storage: Staking ErasTotalStake (r:0 w:1) + // Storage: Staking ErasStartSessionIndex (r:0 w:1) + fn new_era(v: u32, n: u32, ) -> Weight { (0 as Weight) - // Standard Error: 1_020_000 - .saturating_add((329_151_000 as Weight).saturating_mul(v as Weight)) - // Standard Error: 51_000 - .saturating_add((53_726_000 as Weight).saturating_mul(n as Weight)) - .saturating_add(T::DbWeight::get().reads(187 as Weight)) - .saturating_add(T::DbWeight::get().reads((4 as Weight).saturating_mul(v as Weight))) - .saturating_add(T::DbWeight::get().reads((4 as Weight).saturating_mul(n as Weight))) + // Standard Error: 811_000 + .saturating_add((298_100_000 as Weight).saturating_mul(v as Weight)) + // Standard Error: 40_000 + .saturating_add((49_163_000 as Weight).saturating_mul(n as Weight)) + .saturating_add(T::DbWeight::get().reads(10 as Weight)) + .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(v as Weight))) + .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(n as Weight))) .saturating_add(T::DbWeight::get().writes(4 as Weight)) .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(v as Weight))) } - fn get_npos_voters(v: u32, n: u32, s: u32) -> Weight { + // Storage: Staking CounterForNominators (r:1 w:0) + // Storage: Staking CounterForValidators (r:1 w:0) + // Storage: Staking Validators (r:501 w:0) + // Storage: Staking Bonded (r:1500 w:0) + // Storage: Staking Ledger (r:1500 w:0) + // Storage: Staking SlashingSpans (r:21 w:0) + // Storage: Staking Nominators (r:1001 w:0) + // Storage: System BlockWeight (r:1 w:1) + fn get_npos_voters(v: u32, n: u32, s: u32, ) -> Weight { (0 as Weight) - // Standard Error: 108_000 - .saturating_add((24_576_000 as Weight).saturating_mul(v as Weight)) - // Standard Error: 108_000 - .saturating_add((33_364_000 as Weight).saturating_mul(n as Weight)) - .saturating_add(T::DbWeight::get().reads(179 as Weight)) + // Standard Error: 101_000 + .saturating_add((23_378_000 as Weight).saturating_mul(v as Weight)) + // Standard Error: 101_000 + .saturating_add((29_757_000 as Weight).saturating_mul(n as Weight)) + // Standard Error: 3_446_000 + .saturating_add((45_519_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().reads(6 as Weight)) .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(v as Weight))) - .saturating_add(T::DbWeight::get().reads((4 as Weight).saturating_mul(n as Weight))) + .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(n as Weight))) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) } - fn get_npos_targets(v: u32) -> Weight { + // Storage: Staking Validators (r:501 w:0) + // Storage: System BlockWeight (r:1 w:1) + fn get_npos_targets(v: u32, ) -> Weight { (0 as Weight) - // Standard Error: 26_000 - .saturating_add((10_139_000 as Weight).saturating_mul(v as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) + // Standard Error: 30_000 + .saturating_add((9_490_000 as Weight).saturating_mul(v as Weight)) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(v as Weight))) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Staking MinValidatorBond (r:0 w:1) + // Storage: Staking MaxValidatorsCount (r:0 w:1) + // Storage: Staking ChillThreshold (r:0 w:1) + // Storage: Staking MaxNominatorsCount (r:0 w:1) + // Storage: Staking MinNominatorBond (r:0 w:1) fn set_staking_limits() -> Weight { - (5_584_000 as Weight).saturating_add(T::DbWeight::get().writes(5 as Weight)) + (5_680_000 as Weight) + .saturating_add(T::DbWeight::get().writes(5 as Weight)) } + // Storage: Staking Ledger (r:1 w:0) + // Storage: Staking ChillThreshold (r:1 w:0) + // Storage: Staking Nominators (r:1 w:1) + // Storage: Staking MaxNominatorsCount (r:1 w:0) + // Storage: Staking CounterForNominators (r:1 w:1) + // Storage: Staking MinNominatorBond (r:1 w:0) + // Storage: Staking Validators (r:1 w:0) fn chill_other() -> Weight { - (80_902_000 as Weight) - .saturating_add(T::DbWeight::get().reads(11 as Weight)) - .saturating_add(T::DbWeight::get().writes(6 as Weight)) + (48_185_000 as Weight) + .saturating_add(T::DbWeight::get().reads(7 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) } } diff --git a/runtime/polkadot/src/weights/runtime_common_auctions.rs b/runtime/polkadot/src/weights/runtime_common_auctions.rs new file mode 100644 index 000000000000..6e81685ad718 --- /dev/null +++ b/runtime/polkadot/src/weights/runtime_common_auctions.rs @@ -0,0 +1,65 @@ +// Copyright 2017-2020 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . +//! Autogenerated weights for `runtime_common::auctions` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 +//! DATE: 2021-07-01, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 + +// Executed Command: +// target/release/polkadot +// benchmark +// --chain=kusama-dev +// --steps=50 +// --repeat=20 +// --pallet=runtime_common::auctions +// --extrinsic=* +// --execution=wasm +// --wasm-execution=compiled +// --heap-pages=4096 +// --header=./file_header.txt +// --output=./runtime/kusama/src/weights/ + +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `runtime_common::auctions`. +pub struct WeightInfo(PhantomData); +impl runtime_common::auctions::WeightInfo for WeightInfo { + fn new_auction() -> Weight { + (24_436_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) + } + fn bid() -> Weight { + (137_499_000 as Weight) + .saturating_add(T::DbWeight::get().reads(8 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) + } + fn on_initialize() -> Weight { + (23_555_687_000 as Weight) + .saturating_add(T::DbWeight::get().reads(3688 as Weight)) + .saturating_add(T::DbWeight::get().writes(3683 as Weight)) + } + fn cancel_auction() -> Weight { + (5_007_594_000 as Weight) + .saturating_add(T::DbWeight::get().reads(73 as Weight)) + .saturating_add(T::DbWeight::get().writes(3673 as Weight)) + } +} diff --git a/runtime/polkadot/src/weights/runtime_common_crowdloan.rs b/runtime/polkadot/src/weights/runtime_common_crowdloan.rs new file mode 100644 index 000000000000..7929c8c16754 --- /dev/null +++ b/runtime/polkadot/src/weights/runtime_common_crowdloan.rs @@ -0,0 +1,132 @@ +// Copyright 2017-2021 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . +//! Autogenerated weights for `runtime_common::crowdloan` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2021-09-15, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("polkadot-dev"), DB CACHE: 128 + +// Executed Command: +// target/release/polkadot +// benchmark +// --chain=polkadot-dev +// --steps=50 +// --repeat=20 +// --pallet=runtime_common::crowdloan +// --extrinsic=* +// --execution=wasm +// --wasm-execution=compiled +// --heap-pages=4096 +// --header=./file_header.txt +// --output=./runtime/polkadot/src/weights/runtime_common_crowdloan.rs + + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `runtime_common::crowdloan`. +pub struct WeightInfo(PhantomData); +impl runtime_common::crowdloan::WeightInfo for WeightInfo { + // Storage: Crowdloan Funds (r:1 w:1) + // Storage: Registrar Paras (r:1 w:1) + // Storage: Paras ParaLifecycles (r:1 w:0) + // Storage: Crowdloan NextTrieIndex (r:1 w:1) + fn create() -> Weight { + (78_186_000 as Weight) + .saturating_add(T::DbWeight::get().reads(4 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) + } + // Storage: Crowdloan Funds (r:1 w:1) + // Storage: Slots Leases (r:1 w:0) + // Storage: Auctions AuctionInfo (r:1 w:0) + // Storage: System Account (r:1 w:1) + // Storage: Crowdloan EndingsCount (r:1 w:0) + // Storage: Crowdloan NewRaise (r:1 w:1) + // Storage: unknown [0xd861ea1ebf4800d4b89f4ff787ad79ee96d9a708c85b57da7eb8f9ddeda61291] (r:1 w:1) + fn contribute() -> Weight { + (294_308_000 as Weight) + .saturating_add(T::DbWeight::get().reads(7 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) + } + // Storage: Crowdloan Funds (r:1 w:1) + // Storage: System Account (r:2 w:2) + // Storage: unknown [0xc85982571aa615c788ef9b2c16f54f25773fd439e8ee1ed2aa3ae43d48e880f0] (r:1 w:1) + fn withdraw() -> Weight { + (102_518_000 as Weight) + .saturating_add(T::DbWeight::get().reads(4 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) + } + // Storage: Skipped Metadata (r:0 w:0) + fn refund(k: u32, ) -> Weight { + (0 as Weight) + // Standard Error: 22_000 + .saturating_add((38_550_000 as Weight).saturating_mul(k as Weight)) + .saturating_add(T::DbWeight::get().reads(3 as Weight)) + .saturating_add(T::DbWeight::get().reads((2 as Weight).saturating_mul(k as Weight))) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) + .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(k as Weight))) + } + // Storage: Crowdloan Funds (r:1 w:1) + // Storage: System Account (r:1 w:1) + fn dissolve() -> Weight { + (58_176_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) + } + // Storage: Crowdloan Funds (r:1 w:1) + fn edit() -> Weight { + (37_125_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: Crowdloan Funds (r:1 w:0) + // Storage: unknown [0xd861ea1ebf4800d4b89f4ff787ad79ee96d9a708c85b57da7eb8f9ddeda61291] (r:1 w:1) + fn add_memo() -> Weight { + (55_338_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: Crowdloan Funds (r:1 w:0) + // Storage: Crowdloan NewRaise (r:1 w:1) + fn poke() -> Weight { + (41_233_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: Auctions AuctionInfo (r:1 w:0) + // Storage: Crowdloan EndingsCount (r:1 w:1) + // Storage: Crowdloan NewRaise (r:1 w:1) + // Storage: Crowdloan Funds (r:2 w:0) + // Storage: Auctions AuctionCounter (r:1 w:0) + // Storage: Paras ParaLifecycles (r:2 w:0) + // Storage: Slots Leases (r:2 w:0) + // Storage: Auctions Winning (r:1 w:1) + // Storage: Auctions ReservedAmounts (r:2 w:2) + // Storage: System Account (r:2 w:2) + fn on_initialize(n: u32, ) -> Weight { + (0 as Weight) + // Standard Error: 25_000 + .saturating_add((98_572_000 as Weight).saturating_mul(n as Weight)) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().reads((5 as Weight).saturating_mul(n as Weight))) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) + .saturating_add(T::DbWeight::get().writes((2 as Weight).saturating_mul(n as Weight))) + } +} diff --git a/runtime/polkadot/src/weights/runtime_common_paras_registrar.rs b/runtime/polkadot/src/weights/runtime_common_paras_registrar.rs new file mode 100644 index 000000000000..84d3a89e92d0 --- /dev/null +++ b/runtime/polkadot/src/weights/runtime_common_paras_registrar.rs @@ -0,0 +1,99 @@ +// Copyright 2017-2021 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . +//! Autogenerated weights for `runtime_common::paras_registrar` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2021-09-16, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("polkadot-dev"), DB CACHE: 128 + +// Executed Command: +// target/release/polkadot +// benchmark +// --chain=polkadot-dev +// --steps=50 +// --repeat=20 +// --pallet=runtime_common::paras_registrar +// --extrinsic=* +// --execution=wasm +// --wasm-execution=compiled +// --heap-pages=4096 +// --header=./file_header.txt +// --output=./runtime/polkadot/src/weights/runtime_common_paras_registrar.rs + + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `runtime_common::paras_registrar`. +pub struct WeightInfo(PhantomData); +impl runtime_common::paras_registrar::WeightInfo for WeightInfo { + // Storage: Registrar NextFreeParaId (r:1 w:1) + // Storage: Registrar Paras (r:1 w:1) + // Storage: Paras ParaLifecycles (r:1 w:0) + fn reserve() -> Weight { + (43_636_000 as Weight) + .saturating_add(T::DbWeight::get().reads(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) + } + // Storage: Registrar Paras (r:1 w:1) + // Storage: Paras ParaLifecycles (r:1 w:1) + // Storage: Configuration ActiveConfig (r:1 w:0) + // Storage: ParasShared CurrentSessionIndex (r:1 w:0) + // Storage: Paras ActionsQueue (r:1 w:1) + // Storage: Paras UpcomingParasGenesis (r:0 w:1) + fn register() -> Weight { + (5_587_963_000 as Weight) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) + } + // Storage: Registrar Paras (r:1 w:1) + // Storage: Paras ParaLifecycles (r:1 w:1) + // Storage: Configuration ActiveConfig (r:1 w:0) + // Storage: ParasShared CurrentSessionIndex (r:1 w:0) + // Storage: Paras ActionsQueue (r:1 w:1) + // Storage: Paras UpcomingParasGenesis (r:0 w:1) + fn force_register() -> Weight { + (5_568_018_000 as Weight) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) + } + // Storage: Registrar Paras (r:1 w:1) + // Storage: Paras ParaLifecycles (r:1 w:1) + // Storage: ParasShared CurrentSessionIndex (r:1 w:0) + // Storage: Paras ActionsQueue (r:1 w:1) + // Storage: Registrar PendingSwap (r:0 w:1) + fn deregister() -> Weight { + (76_644_000 as Weight) + .saturating_add(T::DbWeight::get().reads(4 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) + } + // Storage: Registrar Paras (r:1 w:0) + // Storage: Registrar PendingSwap (r:1 w:1) + // Storage: Paras ParaLifecycles (r:2 w:2) + // Storage: ParasShared CurrentSessionIndex (r:1 w:0) + // Storage: Paras ActionsQueue (r:1 w:1) + // Storage: Crowdloan Funds (r:2 w:2) + // Storage: Slots Leases (r:2 w:2) + fn swap() -> Weight { + (68_141_000 as Weight) + .saturating_add(T::DbWeight::get().reads(10 as Weight)) + .saturating_add(T::DbWeight::get().writes(8 as Weight)) + } +} diff --git a/runtime/polkadot/src/weights/runtime_common_slots.rs b/runtime/polkadot/src/weights/runtime_common_slots.rs new file mode 100644 index 000000000000..07101259d100 --- /dev/null +++ b/runtime/polkadot/src/weights/runtime_common_slots.rs @@ -0,0 +1,73 @@ +// Copyright 2017-2020 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . +//! Autogenerated weights for `runtime_common::slots` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 +//! DATE: 2021-07-01, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 + +// Executed Command: +// target/release/polkadot +// benchmark +// --chain=kusama-dev +// --steps=50 +// --repeat=20 +// --pallet=runtime_common::slots +// --extrinsic=* +// --execution=wasm +// --wasm-execution=compiled +// --heap-pages=4096 +// --header=./file_header.txt +// --output=./runtime/kusama/src/weights/ + +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `runtime_common::slots`. +pub struct WeightInfo(PhantomData); +impl runtime_common::slots::WeightInfo for WeightInfo { + fn force_lease() -> Weight { + (92_502_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) + } + fn manage_lease_period_start(c: u32, t: u32) -> Weight { + (0 as Weight) + // Standard Error: 17_000 + .saturating_add((16_401_000 as Weight).saturating_mul(c as Weight)) + // Standard Error: 17_000 + .saturating_add((34_480_000 as Weight).saturating_mul(t as Weight)) + .saturating_add(T::DbWeight::get().reads(4 as Weight)) + .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(c as Weight))) + .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(t as Weight))) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(c as Weight))) + .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(t as Weight))) + } + fn clear_all_leases() -> Weight { + (194_756_000 as Weight) + .saturating_add(T::DbWeight::get().reads(9 as Weight)) + .saturating_add(T::DbWeight::get().writes(9 as Weight)) + } + fn trigger_onboard() -> Weight { + (41_785_000 as Weight) + .saturating_add(T::DbWeight::get().reads(5 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) + } +} diff --git a/runtime/polkadot/src/weights/runtime_parachains_configuration.rs b/runtime/polkadot/src/weights/runtime_parachains_configuration.rs new file mode 100644 index 000000000000..ae840f37752d --- /dev/null +++ b/runtime/polkadot/src/weights/runtime_parachains_configuration.rs @@ -0,0 +1,91 @@ +// Copyright 2017-2021 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . +//! Autogenerated weights for `runtime_parachains::configuration` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2021-09-17, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 + +// Executed Command: +// target/release/polkadot +// benchmark +// --chain=kusama-dev +// --steps=50 +// --repeat=20 +// --pallet=runtime_parachains::configuration +// --extrinsic=* +// --execution=wasm +// --wasm-execution=compiled +// --heap-pages=4096 +// --header=./file_header.txt +// --output=./runtime/kusama/src/weights/runtime_parachains_configuration.rs + + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `runtime_parachains::configuration`. +pub struct WeightInfo(PhantomData); +impl runtime_parachains::configuration::WeightInfo for WeightInfo { + // Storage: ParasShared CurrentSessionIndex (r:1 w:0) + // Storage: Configuration PendingConfig (r:1 w:1) + // Storage: Configuration ActiveConfig (r:1 w:0) + fn set_config_with_block_number() -> Weight { + (12_378_000 as Weight) + .saturating_add(T::DbWeight::get().reads(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: ParasShared CurrentSessionIndex (r:1 w:0) + // Storage: Configuration PendingConfig (r:1 w:1) + // Storage: Configuration ActiveConfig (r:1 w:0) + fn set_config_with_u32() -> Weight { + (12_384_000 as Weight) + .saturating_add(T::DbWeight::get().reads(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: ParasShared CurrentSessionIndex (r:1 w:0) + // Storage: Configuration PendingConfig (r:1 w:1) + // Storage: Configuration ActiveConfig (r:1 w:0) + fn set_config_with_option_u32() -> Weight { + (12_746_000 as Weight) + .saturating_add(T::DbWeight::get().reads(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: ParasShared CurrentSessionIndex (r:1 w:0) + // Storage: Configuration PendingConfig (r:1 w:1) + // Storage: Configuration ActiveConfig (r:1 w:0) + fn set_config_with_weight() -> Weight { + (12_563_000 as Weight) + .saturating_add(T::DbWeight::get().reads(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: Benchmark Override (r:0 w:0) + fn set_hrmp_open_request_ttl() -> Weight { + (2_000_000_000_000 as Weight) + } + // Storage: ParasShared CurrentSessionIndex (r:1 w:0) + // Storage: Configuration PendingConfig (r:1 w:1) + // Storage: Configuration ActiveConfig (r:1 w:0) + fn set_config_with_balance() -> Weight { + (12_644_000 as Weight) + .saturating_add(T::DbWeight::get().reads(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } +} diff --git a/runtime/polkadot/src/weights/runtime_parachains_initializer.rs b/runtime/polkadot/src/weights/runtime_parachains_initializer.rs new file mode 100644 index 000000000000..6b41892d3e45 --- /dev/null +++ b/runtime/polkadot/src/weights/runtime_parachains_initializer.rs @@ -0,0 +1,55 @@ +// Copyright 2017-2021 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . +//! Autogenerated weights for `runtime_parachains::initializer` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2021-09-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 + +// Executed Command: +// target/release/polkadot +// benchmark +// --chain=kusama-dev +// --steps=50 +// --repeat=20 +// --pallet=runtime_parachains::initializer +// --extrinsic=* +// --execution=wasm +// --wasm-execution=compiled +// --heap-pages=4096 +// --header=./file_header.txt +// --output=./runtime/kusama/src/weights/runtime_parachains_initializer.rs + + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `runtime_parachains::initializer`. +pub struct WeightInfo(PhantomData); +impl runtime_parachains::initializer::WeightInfo for WeightInfo { + // Storage: System Digest (r:1 w:1) + fn force_approve(d: u32, ) -> Weight { + (5_156_000 as Weight) + // Standard Error: 0 + .saturating_add((2_000 as Weight).saturating_mul(d as Weight)) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } +} diff --git a/runtime/polkadot/src/weights/runtime_parachains_paras.rs b/runtime/polkadot/src/weights/runtime_parachains_paras.rs new file mode 100644 index 000000000000..728d95561bfc --- /dev/null +++ b/runtime/polkadot/src/weights/runtime_parachains_paras.rs @@ -0,0 +1,106 @@ +// Copyright 2017-2021 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . +//! Autogenerated weights for `runtime_parachains::paras` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2021-09-21, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 128 + +// Executed Command: +// target/release/polkadot +// benchmark +// --chain=kusama-dev +// --steps=50 +// --repeat=20 +// --pallet=runtime_parachains::paras +// --extrinsic=* +// --execution=wasm +// --wasm-execution=compiled +// --heap-pages=4096 +// --header=./file_header.txt +// --output=./runtime/kusama/src/weights/runtime_parachains_paras.rs + + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `runtime_parachains::paras`. +pub struct WeightInfo(PhantomData); +impl runtime_parachains::paras::WeightInfo for WeightInfo { + // Storage: Paras CurrentCodeHash (r:1 w:1) + // Storage: Paras CodeByHashRefs (r:1 w:1) + // Storage: Paras PastCodeMeta (r:1 w:1) + // Storage: Paras PastCodePruning (r:1 w:1) + // Storage: Paras PastCodeHash (r:0 w:1) + // Storage: Paras CodeByHash (r:0 w:1) + fn force_set_current_code(c: u32, ) -> Weight { + (0 as Weight) + // Standard Error: 0 + .saturating_add((3_000 as Weight).saturating_mul(c as Weight)) + .saturating_add(T::DbWeight::get().reads(4 as Weight)) + .saturating_add(T::DbWeight::get().writes(6 as Weight)) + } + // Storage: Paras Heads (r:0 w:1) + fn force_set_current_head(s: u32, ) -> Weight { + (16_088_000 as Weight) + // Standard Error: 0 + .saturating_add((1_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: Configuration ActiveConfig (r:1 w:0) + // Storage: Paras FutureCodeUpgrades (r:1 w:1) + // Storage: Paras UpcomingUpgrades (r:1 w:1) + // Storage: Paras UpgradeCooldowns (r:1 w:1) + // Storage: System Digest (r:1 w:1) + // Storage: Paras CodeByHashRefs (r:1 w:1) + // Storage: Paras CodeByHash (r:0 w:1) + // Storage: Paras FutureCodeHash (r:0 w:1) + // Storage: Paras UpgradeRestrictionSignal (r:0 w:1) + fn force_schedule_code_upgrade(c: u32, ) -> Weight { + (0 as Weight) + // Standard Error: 0 + .saturating_add((3_000 as Weight).saturating_mul(c as Weight)) + .saturating_add(T::DbWeight::get().reads(6 as Weight)) + .saturating_add(T::DbWeight::get().writes(8 as Weight)) + } + // Storage: Paras FutureCodeUpgrades (r:1 w:1) + // Storage: Paras FutureCodeHash (r:1 w:1) + // Storage: Paras CurrentCodeHash (r:1 w:1) + // Storage: System Digest (r:1 w:1) + // Storage: Paras PastCodeMeta (r:1 w:1) + // Storage: Paras PastCodePruning (r:1 w:1) + // Storage: Paras Heads (r:0 w:1) + // Storage: Paras PastCodeHash (r:0 w:1) + // Storage: Paras UpgradeGoAheadSignal (r:0 w:1) + fn force_note_new_head(s: u32, ) -> Weight { + (69_114_000 as Weight) + // Standard Error: 0 + .saturating_add((1_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().reads(6 as Weight)) + .saturating_add(T::DbWeight::get().writes(9 as Weight)) + } + // Storage: ParasShared CurrentSessionIndex (r:1 w:0) + // Storage: Paras ActionsQueue (r:1 w:1) + fn force_queue_action() -> Weight { + (26_752_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } +} diff --git a/runtime/rococo/Cargo.toml b/runtime/rococo/Cargo.toml index d3fef706b679..294cb062a225 100644 --- a/runtime/rococo/Cargo.toml +++ b/runtime/rococo/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "rococo-runtime" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" [dependencies] -parity-scale-codec = { version = "2.2.0", default-features = false, features = ["derive", "max-encoded-len"] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive", "max-encoded-len"] } scale-info = { version = "1.0", default-features = false, features = ["derive"] } serde = { version = "1.0.130", default-features = false } serde_derive = { version = "1.0.117", optional = true } @@ -29,13 +29,13 @@ inherents = { package = "sp-inherents", git = "https://github.com/paritytech/sub offchain-primitives = { package = "sp-offchain", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } babe-primitives = { package = "sp-consensus-babe", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -beefy-primitives = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master", default-features = false } +beefy-primitives = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } frame-executive = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-authorship = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-babe = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -pallet-beefy = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master", default-features = false } -pallet-beefy-mmr = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master", default-features = false } +pallet-beefy = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-beefy-mmr = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-collective = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } @@ -44,6 +44,7 @@ pallet-indices = { git = "https://github.com/paritytech/substrate", branch = "ma pallet-membership = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-mmr = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-mmr-primitives = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-multisig = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-session = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } @@ -78,6 +79,10 @@ pallet-bridge-dispatch = { path = "../../bridges/modules/dispatch", default-feat pallet-bridge-grandpa = { path = "../../bridges/modules/grandpa", default-features = false } pallet-bridge-messages = { path = "../../bridges/modules/messages", default-features = false } +# Benchmarking Dependencies +frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } +hex-literal = { version = "0.3.3", optional = true } + [build-dependencies] substrate-wasm-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } @@ -146,6 +151,7 @@ std = [ "xcm-builder/std", "pallet-xcm/std", "log/std", + "pallet-multisig/std", ] # When enabled, the runtime API will not be build. # @@ -169,6 +175,9 @@ runtime-benchmarks = [ "pallet-timestamp/runtime-benchmarks", "pallet-xcm/runtime-benchmarks", "xcm-builder/runtime-benchmarks", + "pallet-multisig/runtime-benchmarks", + "frame-benchmarking", + "hex-literal" ] try-runtime = [ "frame-executive/try-runtime", @@ -191,4 +200,5 @@ try-runtime = [ "pallet-timestamp/try-runtime", "pallet-transaction-payment/try-runtime", "runtime-common/try-runtime", + "pallet-multisig/try-runtime", ] diff --git a/runtime/rococo/src/lib.rs b/runtime/rococo/src/lib.rs index b86314c50b9f..944455553b66 100644 --- a/runtime/rococo/src/lib.rs +++ b/runtime/rococo/src/lib.rs @@ -94,6 +94,7 @@ use xcm_executor::XcmExecutor; /// Constant values used within the runtime. pub mod constants; mod validator_manager; +mod weights; // Make the WASM binary available. #[cfg(feature = "std")] @@ -104,7 +105,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("rococo"), impl_name: create_runtime_str!("parity-rococo-v1.8"), authoring_version: 0, - spec_version: 9103, + spec_version: 9105, impl_version: 0, #[cfg(not(feature = "disable-runtime-api"))] apis: RUNTIME_API_VERSIONS, @@ -211,7 +212,7 @@ construct_runtime! { Ump: parachains_ump::{Pallet, Call, Storage, Event}, Hrmp: parachains_hrmp::{Pallet, Call, Storage, Event, Config}, ParaSessionInfo: parachains_session_info::{Pallet, Storage}, - ParasDisputes: parachains_disputes::{Pallet, Storage, Event}, + ParasDisputes: parachains_disputes::{Pallet, Call, Storage, Event}, // Parachain Onboarding Pallets Registrar: paras_registrar::{Pallet, Call, Storage, Event, Config}, @@ -250,9 +251,11 @@ construct_runtime! { Utility: pallet_utility::{Pallet, Call, Event} = 90, Proxy: pallet_proxy::{Pallet, Call, Storage, Event} = 91, + Multisig: pallet_multisig::{Pallet, Call, Storage, Event}, // Pallet for sending XCM. XcmPallet: pallet_xcm::{Pallet, Call, Storage, Event, Origin} = 99, + } } @@ -369,6 +372,7 @@ impl parachains_disputes::Config for Runtime { type Event = Event; type RewardValidators = (); type PunishValidators = (); + type WeightInfo = weights::runtime_parachains_disputes::WeightInfo; } parameter_types! { @@ -512,6 +516,8 @@ impl pallet_babe::Config for Runtime { pallet_babe::EquivocationHandler; type WeightInfo = (); + + type MaxAuthorities = MaxAuthorities; } parameter_types! { @@ -551,6 +557,7 @@ impl pallet_grandpa::Config for Runtime { >; type WeightInfo = (); + type MaxAuthorities = MaxAuthorities; } parameter_types! { @@ -588,6 +595,7 @@ impl parachains_inclusion::Config for Runtime { impl parachains_paras::Config for Runtime { type Origin = Origin; type Event = Event; + type WeightInfo = parachains_paras::weights::WeightInfo; } parameter_types! { @@ -621,7 +629,7 @@ type LocalOriginConverter = ( ); parameter_types! { - pub const BaseXcmWeight: Weight = 100_000; + pub const BaseXcmWeight: Weight = 1_000_000_000; } /// The XCM router. When we want to send an XCM message, we use this type. It amalgamates all of our @@ -745,6 +753,7 @@ impl parachains_scheduler::Config for Runtime {} impl parachains_initializer::Config for Runtime { type Randomness = pallet_babe::RandomnessFromOneEpochAgo; type ForceOrigin = EnsureRoot; + type WeightInfo = (); } impl paras_sudo_wrapper::Config for Runtime {} @@ -1076,7 +1085,7 @@ impl InstanceFilter for ProxyType { Call::Auctions { .. } | Call::Crowdloan { .. } | Call::Registrar { .. } | - Call::Slots { .. } + Call::Multisig(..) | Call::Slots { .. } ), } } @@ -1133,6 +1142,24 @@ impl pallet_membership::Config for Runtime { type WeightInfo = (); } +parameter_types! { + // One storage item; key size is 32; value is size 4+4+16+32 bytes = 56 bytes. + pub const DepositBase: Balance = deposit(1, 88); + // Additional storage item size of 32 bytes. + pub const DepositFactor: Balance = deposit(0, 32); + pub const MaxSignatories: u16 = 100; +} + +impl pallet_multisig::Config for Runtime { + type Event = Event; + type Call = Call; + type Currency = Balances; + type DepositBase = DepositBase; + type DepositFactor = DepositFactor; + type MaxSignatories = MaxSignatories; + type WeightInfo = (); +} + #[cfg(not(feature = "disable-runtime-api"))] sp_api::impl_runtime_apis! { impl sp_api::Core for Runtime { @@ -1307,7 +1334,7 @@ sp_api::impl_runtime_apis! { slot_duration: Babe::slot_duration(), epoch_length: EpochDurationInBlocks::get().into(), c: BABE_GENESIS_EPOCH_CONFIG.c, - genesis_authorities: Babe::authorities(), + genesis_authorities: Babe::authorities().to_vec(), randomness: Babe::randomness(), allowed_slots: BABE_GENESIS_EPOCH_CONFIG.allowed_slots, } @@ -1555,4 +1582,52 @@ sp_api::impl_runtime_apis! { TransactionPayment::query_fee_details(uxt, len) } } + + #[cfg(feature = "runtime-benchmarks")] + impl frame_benchmarking::Benchmark for Runtime { + fn benchmark_metadata(extra: bool) -> ( + Vec, + Vec, + ) { + use frame_benchmarking::{list_benchmark, Benchmarking, BenchmarkList}; + use frame_support::traits::StorageInfoTrait; + + let mut list = Vec::::new(); + + list_benchmark!(list, extra, runtime_parachains::disputes, ParasDisputes); + + let storage_info = AllPalletsWithSystem::storage_info(); + + return (list, storage_info) + } + + fn dispatch_benchmark( + config: frame_benchmarking::BenchmarkConfig, + ) -> Result< + Vec, + sp_runtime::RuntimeString, + > { + use frame_benchmarking::{Benchmarking, BenchmarkBatch, add_benchmark, TrackedStorageKey}; + + let mut batches = Vec::::new(); + let whitelist: Vec = vec![ + // Block Number + hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef702a5c1b19ab7a04f536c519aca4983ac").to_vec().into(), + // Total Issuance + hex_literal::hex!("c2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80").to_vec().into(), + // Execution Phase + hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7ff553b5a9862a516939d82b3d3d8661a").to_vec().into(), + // Event Count + hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef70a98fdbe9ce6c55837576c60c7af3850").to_vec().into(), + // System Events + hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef780d41e5e16056765bc8461851072c9d7").to_vec().into(), + ]; + let params = (&config, &whitelist); + + add_benchmark!(params, batches, runtime_parachains::disputes, ParasDisputes); + + if batches.is_empty() { return Err("Benchmark not found for this pallet.".into()) } + Ok(batches) + } + } } diff --git a/runtime/rococo/src/validator_manager.rs b/runtime/rococo/src/validator_manager.rs index a5fd2bb0a92b..763d12c73f5c 100644 --- a/runtime/rococo/src/validator_manager.rs +++ b/runtime/rococo/src/validator_manager.rs @@ -20,7 +20,7 @@ use frame_support::{decl_error, decl_event, decl_module, decl_storage, traits::E use sp_staking::SessionIndex; use sp_std::vec::Vec; -type Session = pallet_session::Module; +type Session = pallet_session::Pallet; /// Configuration for the parachain proposer. pub trait Config: pallet_session::Config { diff --git a/runtime/rococo/src/weights/mod.rs b/runtime/rococo/src/weights/mod.rs new file mode 100644 index 000000000000..bcd0ec248a5f --- /dev/null +++ b/runtime/rococo/src/weights/mod.rs @@ -0,0 +1 @@ +pub mod runtime_parachains_disputes; diff --git a/runtime/rococo/src/weights/runtime_parachains_disputes.rs b/runtime/rococo/src/weights/runtime_parachains_disputes.rs new file mode 100644 index 000000000000..37c0d4545c67 --- /dev/null +++ b/runtime/rococo/src/weights/runtime_parachains_disputes.rs @@ -0,0 +1,52 @@ +// Copyright 2017-2021 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . +//! Autogenerated weights for `runtime_parachains::disputes` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2021-09-23, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("rococo-dev"), DB CACHE: 128 + +// Executed Command: +// target/release/polkadot +// benchmark +// --chain=rococo-dev +// --steps=50 +// --repeat=20 +// --pallet=runtime_parachains::disputes +// --extrinsic=* +// --execution=wasm +// --wasm-execution=compiled +// --heap-pages=4096 +// --output=./runtime/parachains/src/disputes/weights.rs +// --header=./file_header.txt + + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `runtime_parachains::disputes`. +pub struct WeightInfo(PhantomData); +impl runtime_parachains::disputes::WeightInfo for WeightInfo { + // Storage: ParasDisputes Frozen (r:0 w:1) + fn force_unfreeze() -> Weight { + (2_022_000 as Weight) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } +} diff --git a/runtime/test-runtime/Cargo.toml b/runtime/test-runtime/Cargo.toml index 7a506849efc3..c621fbd3ca12 100644 --- a/runtime/test-runtime/Cargo.toml +++ b/runtime/test-runtime/Cargo.toml @@ -1,13 +1,13 @@ [package] name = "polkadot-test-runtime" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" [dependencies] bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] } log = { version = "0.4.14", default-features = false } rustc-hex = { version = "2.1.0", default-features = false } scale-info = { version = "1.0", default-features = false, features = ["derive"] } @@ -17,7 +17,7 @@ smallvec = "1.6.1" authority-discovery-primitives = { package = "sp-authority-discovery", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } babe-primitives = { package = "sp-consensus-babe", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -beefy-primitives = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master", default-features = false } +beefy-primitives = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } sp-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } inherents = { package = "sp-inherents", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } offchain-primitives = { package = "sp-offchain", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } diff --git a/runtime/test-runtime/src/lib.rs b/runtime/test-runtime/src/lib.rs index 58ccea45c249..842f451c40ed 100644 --- a/runtime/test-runtime/src/lib.rs +++ b/runtime/test-runtime/src/lib.rs @@ -188,6 +188,7 @@ impl pallet_babe::Config for Runtime { type HandleEquivocation = (); type WeightInfo = (); + type MaxAuthorities = MaxAuthorities; } parameter_types! { @@ -363,6 +364,7 @@ impl pallet_grandpa::Config for Runtime { type HandleEquivocation = (); type WeightInfo = (); + type MaxAuthorities = MaxAuthorities; } impl frame_system::offchain::CreateSignedTransaction for Runtime @@ -470,6 +472,7 @@ impl parachains_disputes::Config for Runtime { type Event = Event; type RewardValidators = (); type PunishValidators = (); + type WeightInfo = parachains_disputes::TestWeightInfo; } impl parachains_paras_inherent::Config for Runtime {} @@ -477,6 +480,7 @@ impl parachains_paras_inherent::Config for Runtime {} impl parachains_initializer::Config for Runtime { type Randomness = pallet_babe::RandomnessFromOneEpochAgo; type ForceOrigin = frame_system::EnsureRoot; + type WeightInfo = (); } impl parachains_session_info::Config for Runtime {} @@ -484,6 +488,7 @@ impl parachains_session_info::Config for Runtime {} impl parachains_paras::Config for Runtime { type Origin = Origin; type Event = Event; + type WeightInfo = parachains_paras::weights::WeightInfo; } impl parachains_dmp::Config for Runtime {} @@ -912,7 +917,7 @@ sp_api::impl_runtime_apis! { slot_duration: Babe::slot_duration(), epoch_length: EpochDuration::get(), c: BABE_GENESIS_EPOCH_CONFIG.c, - genesis_authorities: Babe::authorities(), + genesis_authorities: Babe::authorities().to_vec(), randomness: Babe::randomness(), allowed_slots: BABE_GENESIS_EPOCH_CONFIG.allowed_slots, } diff --git a/runtime/test-runtime/src/xcm_config.rs b/runtime/test-runtime/src/xcm_config.rs index 2b22989ea93d..3a3c762c6b03 100644 --- a/runtime/test-runtime/src/xcm_config.rs +++ b/runtime/test-runtime/src/xcm_config.rs @@ -36,7 +36,7 @@ pub type LocalOriginToLocation = ( pub struct DoNothingRouter; impl SendXcm for DoNothingRouter { - fn send_xcm(_dest: MultiLocation, _msg: Xcm<()>) -> SendResult { + fn send_xcm(_dest: impl Into, _msg: Xcm<()>) -> SendResult { Ok(()) } } diff --git a/runtime/westend/Cargo.toml b/runtime/westend/Cargo.toml index ab1375138dd4..356ecefc5d5c 100644 --- a/runtime/westend/Cargo.toml +++ b/runtime/westend/Cargo.toml @@ -1,13 +1,13 @@ [package] name = "westend-runtime" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" build = "build.rs" [dependencies] bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] } -parity-scale-codec = { version = "2.2.0", default-features = false, features = ["derive", "max-encoded-len"] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive", "max-encoded-len"] } scale-info = { version = "1.0", default-features = false, features = ["derive"] } log = { version = "0.4.14", default-features = false } rustc-hex = { version = "2.1.0", default-features = false } @@ -17,7 +17,7 @@ smallvec = "1.6.1" authority-discovery-primitives = { package = "sp-authority-discovery", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } babe-primitives = { package = "sp-consensus-babe", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } -beefy-primitives = { git = "https://github.com/paritytech/grandpa-bridge-gadget", branch = "master", default-features = false } +beefy-primitives = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } inherents = { package = "sp-inherents", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } offchain-primitives = { package = "sp-offchain", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } sp-api = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } @@ -40,6 +40,7 @@ frame-system-rpc-runtime-api = { git = "https://github.com/paritytech/substrate" pallet-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-authorship = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-babe = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-bags-list = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-collective = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-democracy = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } @@ -69,7 +70,7 @@ pallet-treasury = { git = "https://github.com/paritytech/substrate", branch = "m pallet-utility = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-vesting = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } pallet-xcm = { path = "../../xcm/pallet-xcm", default-features = false } -pallet-bags-list = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } +pallet-xcm-benchmarks = { path = "../../xcm/pallet-xcm-benchmarks", default-features = false, optional = true } frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } frame-try-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true } @@ -202,6 +203,7 @@ runtime-benchmarks = [ "frame-system-benchmarking", "hex-literal", "xcm-builder/runtime-benchmarks", + "pallet-xcm-benchmarks", "frame-election-provider-support/runtime-benchmarks", "pallet-bags-list/runtime-benchmarks", ] diff --git a/runtime/westend/src/lib.rs b/runtime/westend/src/lib.rs index 3ce1ef1defc0..41c9d98e4076 100644 --- a/runtime/westend/src/lib.rs +++ b/runtime/westend/src/lib.rs @@ -49,9 +49,9 @@ use xcm::latest::prelude::*; use xcm_builder::{ AccountId32Aliases, AllowTopLevelPaidExecutionFrom, AllowUnpaidExecutionFrom, ChildParachainAsNative, ChildParachainConvertsVia, ChildSystemParachainAsSuperuser, - CurrencyAdapter as XcmCurrencyAdapter, FixedWeightBounds, IsChildSystemParachain, IsConcrete, - LocationInverter, SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, - TakeWeightCredit, UsingComponents, + CurrencyAdapter as XcmCurrencyAdapter, IsChildSystemParachain, IsConcrete, LocationInverter, + SignedAccountId32AsNative, SignedToAccountId32, SovereignSignedViaLocation, TakeWeightCredit, + UsingComponents, WeightInfoBounds, }; use xcm_executor::XcmExecutor; @@ -116,13 +116,13 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("westend"), impl_name: create_runtime_str!("parity-westend"), authoring_version: 2, - spec_version: 9100, + spec_version: 9110, impl_version: 0, #[cfg(not(feature = "disable-runtime-api"))] apis: RUNTIME_API_VERSIONS, #[cfg(feature = "disable-runtime-api")] apis: version::create_apis_vec![[]], - transaction_version: 5, + transaction_version: 7, }; /// The BABE epoch configuration at genesis. @@ -226,6 +226,8 @@ impl pallet_babe::Config for Runtime { pallet_babe::EquivocationHandler; type WeightInfo = (); + + type MaxAuthorities = MaxAuthorities; } parameter_types! { @@ -522,6 +524,7 @@ impl pallet_grandpa::Config for Runtime { >; type WeightInfo = (); + type MaxAuthorities = MaxAuthorities; } /// Submits a transaction with the node's public and signature type. Adheres to the signed extension @@ -802,7 +805,7 @@ impl pallet_proxy::Config for Runtime { impl parachains_origin::Config for Runtime {} impl parachains_configuration::Config for Runtime { - type WeightInfo = parachains_configuration::weights::WeightInfo; + type WeightInfo = weights::runtime_parachains_configuration::WeightInfo; } impl parachains_shared::Config for Runtime {} @@ -818,6 +821,7 @@ impl parachains_inclusion::Config for Runtime { impl parachains_paras::Config for Runtime { type Origin = Origin; type Event = Event; + type WeightInfo = weights::runtime_parachains_paras::WeightInfo; } parameter_types! { @@ -846,6 +850,7 @@ impl parachains_scheduler::Config for Runtime {} impl parachains_initializer::Config for Runtime { type Randomness = pallet_babe::RandomnessFromOneEpochAgo; type ForceOrigin = EnsureRoot; + type WeightInfo = weights::runtime_parachains_initializer::WeightInfo; } impl paras_sudo_wrapper::Config for Runtime {} @@ -947,10 +952,6 @@ type LocalOriginConverter = ( ChildSystemParachainAsSuperuser, ); -parameter_types! { - pub const BaseXcmWeight: Weight = 10_000_000; -} - /// The XCM router. When we want to send an XCM message, we use this type. It amalgamates all of our /// individual routers. pub type XcmRouter = ( @@ -959,8 +960,9 @@ pub type XcmRouter = ( ); parameter_types! { + pub const Westmint: MultiLocation = Parachain(1000).into(); pub const WestendForWestmint: (MultiAssetFilter, MultiLocation) = - (Wild(AllOf { fun: WildFungible, id: Concrete(WndLocation::get()) }), Parachain(1000).into()); + (Wild(AllOf { fun: WildFungible, id: Concrete(WndLocation::get()) }), Westmint::get()); pub const MaxInstructions: u32 = 100; } pub type TrustedTeleporters = (xcm_builder::Case,); @@ -985,7 +987,7 @@ impl xcm_executor::Config for XcmConfig { type IsTeleporter = TrustedTeleporters; type LocationInverter = LocationInverter; type Barrier = Barrier; - type Weigher = FixedWeightBounds; + type Weigher = WeightInfoBounds, Call, MaxInstructions>; type Trader = UsingComponents>; type ResponseHandler = XcmPallet; type AssetTrap = XcmPallet; @@ -1011,7 +1013,7 @@ impl pallet_xcm::Config for Runtime { type XcmExecutor = XcmExecutor; type XcmTeleportFilter = Everything; type XcmReserveTransferFilter = Everything; - type Weigher = FixedWeightBounds; + type Weigher = WeightInfoBounds, Call, MaxInstructions>; type LocationInverter = LocationInverter; type Origin = Origin; type Call = Call; @@ -1361,7 +1363,7 @@ sp_api::impl_runtime_apis! { slot_duration: Babe::slot_duration(), epoch_length: EpochDuration::get(), c: BABE_GENESIS_EPOCH_CONFIG.c, - genesis_authorities: Babe::authorities(), + genesis_authorities: Babe::authorities().to_vec(), randomness: Babe::randomness(), allowed_slots: BABE_GENESIS_EPOCH_CONFIG.allowed_slots, } @@ -1441,10 +1443,13 @@ sp_api::impl_runtime_apis! { #[cfg(feature = "try-runtime")] impl frame_try_runtime::TryRuntime for Runtime { - fn on_runtime_upgrade() -> Result<(Weight, Weight), sp_runtime::RuntimeString> { + fn on_runtime_upgrade() -> (Weight, Weight) { log::info!("try-runtime::on_runtime_upgrade westend."); - let weight = Executive::try_runtime_upgrade()?; - Ok((weight, BlockWeights::get().max_block)) + let weight = Executive::try_runtime_upgrade().unwrap(); + (weight, BlockWeights::get().max_block) + } + fn execute_block_no_check(block: Block) -> Weight { + Executive::execute_block_no_check(block) } } @@ -1461,6 +1466,8 @@ sp_api::impl_runtime_apis! { use pallet_offences_benchmarking::Pallet as OffencesBench; use frame_system_benchmarking::Pallet as SystemBench; + type XcmBalances = pallet_xcm_benchmarks::fungible::Pallet::; + let mut list = Vec::::new(); // Polkadot @@ -1471,6 +1478,9 @@ sp_api::impl_runtime_apis! { list_benchmark!(list, extra, runtime_common::paras_registrar, Registrar); list_benchmark!(list, extra, runtime_common::slots, Slots); list_benchmark!(list, extra, runtime_parachains::configuration, Configuration); + list_benchmark!(list, extra, runtime_parachains::initializer, Initializer); + list_benchmark!(list, extra, runtime_parachains::paras, Paras); + // Substrate list_benchmark!(list, extra, pallet_bags_list, BagsList); list_benchmark!(list, extra, pallet_balances, Balances); @@ -1489,6 +1499,10 @@ sp_api::impl_runtime_apis! { list_benchmark!(list, extra, pallet_utility, Utility); list_benchmark!(list, extra, pallet_vesting, Vesting); + // XCM Benchmarks + // NOTE: Make sure you point to the individual modules below. + list_benchmark!(list, extra, pallet_xcm_benchmarks::fungible, XcmBalances); + let storage_info = AllPalletsWithSystem::storage_info(); return (list, storage_info) @@ -1511,6 +1525,39 @@ sp_api::impl_runtime_apis! { impl pallet_offences_benchmarking::Config for Runtime {} impl frame_system_benchmarking::Config for Runtime {} + use xcm::latest::MultiAsset; + + impl pallet_xcm_benchmarks::Config for Runtime { + type XcmConfig = XcmConfig; + type AccountIdConverter = LocationConverter; + fn valid_destination() -> Result { + Ok(Westmint::get()) + } + } + + parameter_types! { + pub const TrustedTeleporter: Option<(MultiLocation, MultiAsset)> = Some(( + Westmint::get(), + MultiAsset { fun: Fungible(1 * UNITS), id: Concrete(WndLocation::get()) }, + )); + } + + impl pallet_xcm_benchmarks::fungible::Config for Runtime { + type TransactAsset = Balances; + + type CheckedAccount = CheckAccount; + type TrustedTeleporter = TrustedTeleporter; + + fn get_multi_asset() -> MultiAsset { + MultiAsset { + id: Concrete(WndLocation::get()), + fun: Fungible(1 * UNITS), + } + } + } + + type XcmBalances = pallet_xcm_benchmarks::fungible::Pallet::; + let whitelist: Vec = vec![ // Block Number hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef702a5c1b19ab7a04f536c519aca4983ac").to_vec().into(), @@ -1524,6 +1571,12 @@ sp_api::impl_runtime_apis! { hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef780d41e5e16056765bc8461851072c9d7").to_vec().into(), // Treasury Account hex_literal::hex!("26aa394eea5630e07c48ae0c9558cef7b99d880ec681799c0cf30e8886371da95ecffd7b6c0f78751baa9d281e0bfa3a6d6f646c70792f74727372790000000000000000000000000000000000000000").to_vec().into(), + // Dmp DownwardMessageQueueHeads + hex_literal::hex!("63f78c98723ddc9073523ef3beefda0c4d7fefc408aac59dbfe80a72ac8e3ce5").to_vec().into(), + // Dmp DownwardMessageQueues + hex_literal::hex!("63f78c98723ddc9073523ef3beefda0ca95dac46c07a40d91506e7637ec4ba57").to_vec().into(), + // Configuration ActiveConfig + hex_literal::hex!("06de3d8a54d27e44a9d5ce189618f22db4b49d95320d9021994c850f25b8e385").to_vec().into(), ]; let mut batches = Vec::::new(); @@ -1537,6 +1590,9 @@ sp_api::impl_runtime_apis! { add_benchmark!(params, batches, runtime_common::paras_registrar, Registrar); add_benchmark!(params, batches, runtime_common::slots, Slots); add_benchmark!(params, batches, runtime_parachains::configuration, Configuration); + add_benchmark!(params, batches, runtime_parachains::initializer, Initializer); + add_benchmark!(params, batches, runtime_parachains::paras, Paras); + // Substrate add_benchmark!(params, batches, pallet_bags_list, BagsList); add_benchmark!(params, batches, pallet_balances, Balances); @@ -1555,6 +1611,10 @@ sp_api::impl_runtime_apis! { add_benchmark!(params, batches, pallet_utility, Utility); add_benchmark!(params, batches, pallet_vesting, Vesting); + // XCM Benchmarks + // NOTE: Make sure you point to the individual modules below. + add_benchmark!(params, batches, pallet_xcm_benchmarks::fungible, XcmBalances); + if batches.is_empty() { return Err("Benchmark not found for this pallet.".into()) } Ok(batches) } diff --git a/runtime/westend/src/weights/mod.rs b/runtime/westend/src/weights/mod.rs index 76e23ae5fb49..923245b2fc35 100644 --- a/runtime/westend/src/weights/mod.rs +++ b/runtime/westend/src/weights/mod.rs @@ -35,3 +35,6 @@ pub mod runtime_common_crowdloan; pub mod runtime_common_paras_registrar; pub mod runtime_common_slots; pub mod runtime_parachains_configuration; +pub mod runtime_parachains_initializer; +pub mod runtime_parachains_paras; +pub mod xcm; diff --git a/runtime/westend/src/weights/pallet_bags_list.rs b/runtime/westend/src/weights/pallet_bags_list.rs index 6792d0d5d689..5ba9cbe83b18 100644 --- a/runtime/westend/src/weights/pallet_bags_list.rs +++ b/runtime/westend/src/weights/pallet_bags_list.rs @@ -1,30 +1,28 @@ -// This file is part of Substrate. +// Copyright 2017-2021 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. -// Copyright (C) 2021 Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. -//! Autogenerated weights for pallet_bags_list +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . +//! Autogenerated weights for `pallet_bags_list` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2021-09-02, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` -//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 128 +//! DATE: 2021-09-17, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 // Executed Command: -// target/release/substrate +// target/release/polkadot // benchmark -// --chain=dev +// --chain=westend-dev // --steps=50 // --repeat=20 // --pallet=pallet_bags_list @@ -32,34 +30,35 @@ // --execution=wasm // --wasm-execution=compiled // --heap-pages=4096 -// --output=./frame/bags-list/src/weights.rs -// --template=./.maintain/frame-weight-template.hbs +// --header=./file_header.txt +// --output=./runtime/westend/src/weights/ -// NOTE: this is copy pasta from substrate % some tweaks #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] -use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; +use frame_support::{traits::Get, weights::Weight}; use sp_std::marker::PhantomData; -/// Weight functions needed for pallet_bags_list. - -/// Weights for pallet_bags_list using the Substrate node and recommended hardware. +/// Weight functions for `pallet_bags_list`. pub struct WeightInfo(PhantomData); impl pallet_bags_list::WeightInfo for WeightInfo { + // Storage: Staking Bonded (r:1 w:0) + // Storage: Staking Ledger (r:1 w:0) + // Storage: BagsList ListNodes (r:4 w:4) + // Storage: BagsList ListBags (r:1 w:1) fn rebag_non_terminal() -> Weight { - (75_718_000 as Weight) + (65_506_000 as Weight) .saturating_add(T::DbWeight::get().reads(7 as Weight)) .saturating_add(T::DbWeight::get().writes(5 as Weight)) } // Storage: Staking Bonded (r:1 w:0) // Storage: Staking Ledger (r:1 w:0) - // Storage: BagsList ListNodes (r:4 w:4) - // Storage: BagsList ListBags (r:1 w:1) + // Storage: BagsList ListNodes (r:3 w:3) + // Storage: BagsList ListBags (r:2 w:2) fn rebag_terminal() -> Weight { - (75_718_000 as Weight) + (65_008_000 as Weight) .saturating_add(T::DbWeight::get().reads(7 as Weight)) .saturating_add(T::DbWeight::get().writes(5 as Weight)) } diff --git a/runtime/westend/src/weights/pallet_election_provider_multi_phase.rs b/runtime/westend/src/weights/pallet_election_provider_multi_phase.rs index a285e77f01ce..cdfa4cbe08a5 100644 --- a/runtime/westend/src/weights/pallet_election_provider_multi_phase.rs +++ b/runtime/westend/src/weights/pallet_election_provider_multi_phase.rs @@ -83,7 +83,7 @@ impl pallet_election_provider_multi_phase::WeightInfo f // Storage: ElectionProviderMultiPhase SnapshotMetadata (r:0 w:1) // Storage: ElectionProviderMultiPhase DesiredTargets (r:0 w:1) // Storage: ElectionProviderMultiPhase Snapshot (r:0 w:1) - fn create_snapshot_internal() -> Weight { + fn create_snapshot_internal(_: u32, _: u32) -> Weight { (8_835_233_000 as Weight).saturating_add(T::DbWeight::get().writes(3 as Weight)) } // Storage: ElectionProviderMultiPhase SignedSubmissionIndices (r:1 w:1) diff --git a/runtime/westend/src/weights/pallet_staking.rs b/runtime/westend/src/weights/pallet_staking.rs index c80ec0799ab1..7392df46e267 100644 --- a/runtime/westend/src/weights/pallet_staking.rs +++ b/runtime/westend/src/weights/pallet_staking.rs @@ -1,4 +1,4 @@ -// Copyright 2017-2020 Parity Technologies (UK) Ltd. +// Copyright 2017-2021 Parity Technologies (UK) Ltd. // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify @@ -15,8 +15,8 @@ // along with Polkadot. If not, see . //! Autogenerated weights for `pallet_staking` //! -//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 3.0.0 -//! DATE: 2021-07-07, STEPS: `[50, ]`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2021-09-17, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 // Executed Command: @@ -31,8 +31,10 @@ // --wasm-execution=compiled // --heap-pages=4096 // --header=./file_header.txt -// --output=runtime/westend/src/weights/ +// --output=./runtime/westend/src/weights/ + +#![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] @@ -42,179 +44,368 @@ use sp_std::marker::PhantomData; /// Weight functions for `pallet_staking`. pub struct WeightInfo(PhantomData); impl pallet_staking::WeightInfo for WeightInfo { + // Storage: Staking Bonded (r:1 w:1) + // Storage: Staking Ledger (r:1 w:1) + // Storage: Staking CurrentEra (r:1 w:0) + // Storage: Staking HistoryDepth (r:1 w:0) + // Storage: Balances Locks (r:1 w:1) + // Storage: Staking Payee (r:0 w:1) fn bond() -> Weight { - (70_644_000 as Weight) + (67_211_000 as Weight) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } + // Storage: Staking Bonded (r:1 w:0) + // Storage: Staking Ledger (r:1 w:1) + // Storage: Balances Locks (r:1 w:1) + // Storage: BagsList ListNodes (r:3 w:3) + // Storage: BagsList ListBags (r:2 w:2) fn bond_extra() -> Weight { - (57_596_000 as Weight) - .saturating_add(T::DbWeight::get().reads(4 as Weight)) - .saturating_add(T::DbWeight::get().writes(2 as Weight)) + (107_863_000 as Weight) + .saturating_add(T::DbWeight::get().reads(8 as Weight)) + .saturating_add(T::DbWeight::get().writes(7 as Weight)) } + // Storage: Staking Ledger (r:1 w:1) + // Storage: Staking Nominators (r:1 w:0) + // Storage: Staking MinNominatorBond (r:1 w:0) + // Storage: Staking CurrentEra (r:1 w:0) + // Storage: Balances Locks (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: BagsList ListNodes (r:3 w:3) + // Storage: Staking Bonded (r:1 w:0) + // Storage: BagsList ListBags (r:2 w:2) fn unbond() -> Weight { - (57_410_000 as Weight) - .saturating_add(T::DbWeight::get().reads(6 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + (113_462_000 as Weight) + .saturating_add(T::DbWeight::get().reads(12 as Weight)) + .saturating_add(T::DbWeight::get().writes(8 as Weight)) } - fn withdraw_unbonded_update(s: u32) -> Weight { - (50_384_000 as Weight) + // Storage: Staking Ledger (r:1 w:1) + // Storage: Staking CurrentEra (r:1 w:0) + // Storage: Balances Locks (r:1 w:1) + // Storage: System Account (r:1 w:1) + fn withdraw_unbonded_update(s: u32, ) -> Weight { + (48_161_000 as Weight) // Standard Error: 0 - .saturating_add((33_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((20_000 as Weight).saturating_mul(s as Weight)) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } - fn withdraw_unbonded_kill(s: u32) -> Weight { - (82_905_000 as Weight) - // Standard Error: 1_000 - .saturating_add((2_287_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(8 as Weight)) - .saturating_add(T::DbWeight::get().writes(6 as Weight)) - .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) + // Storage: Staking Ledger (r:1 w:1) + // Storage: Staking CurrentEra (r:1 w:0) + // Storage: Staking Bonded (r:1 w:1) + // Storage: Staking SlashingSpans (r:1 w:0) + // Storage: Staking Validators (r:1 w:0) + // Storage: Staking Nominators (r:1 w:1) + // Storage: Staking CounterForNominators (r:1 w:1) + // Storage: BagsList ListNodes (r:2 w:2) + // Storage: BagsList ListBags (r:1 w:1) + // Storage: BagsList CounterForListNodes (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: Balances Locks (r:1 w:1) + // Storage: Staking Payee (r:0 w:1) + fn withdraw_unbonded_kill(_s: u32, ) -> Weight { + (95_012_000 as Weight) + .saturating_add(T::DbWeight::get().reads(13 as Weight)) + .saturating_add(T::DbWeight::get().writes(11 as Weight)) } + // Storage: Staking Ledger (r:1 w:0) + // Storage: Staking MinValidatorBond (r:1 w:0) + // Storage: Staking Validators (r:1 w:1) + // Storage: Staking MaxValidatorsCount (r:1 w:0) + // Storage: Staking Nominators (r:1 w:1) + // Storage: Staking CounterForNominators (r:1 w:1) + // Storage: BagsList ListNodes (r:2 w:2) + // Storage: BagsList ListBags (r:1 w:1) + // Storage: BagsList CounterForListNodes (r:1 w:1) + // Storage: Staking CounterForValidators (r:1 w:1) fn validate() -> Weight { - (69_191_000 as Weight) - .saturating_add(T::DbWeight::get().reads(10 as Weight)) - .saturating_add(T::DbWeight::get().writes(6 as Weight)) + (65_171_000 as Weight) + .saturating_add(T::DbWeight::get().reads(11 as Weight)) + .saturating_add(T::DbWeight::get().writes(8 as Weight)) } - fn kick(k: u32) -> Weight { - (11_371_000 as Weight) - // Standard Error: 7_000 - .saturating_add((16_959_000 as Weight).saturating_mul(k as Weight)) + // Storage: Staking Ledger (r:1 w:0) + // Storage: Staking Nominators (r:1 w:1) + fn kick(k: u32, ) -> Weight { + (9_070_000 as Weight) + // Standard Error: 12_000 + .saturating_add((15_429_000 as Weight).saturating_mul(k as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(k as Weight))) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(k as Weight))) } - fn nominate(n: u32) -> Weight { - (40_353_000 as Weight) - // Standard Error: 12_000 - .saturating_add((5_341_000 as Weight).saturating_mul(n as Weight)) - .saturating_add(T::DbWeight::get().reads(7 as Weight)) + // Storage: Staking Ledger (r:1 w:0) + // Storage: Staking MinNominatorBond (r:1 w:0) + // Storage: Staking Nominators (r:1 w:1) + // Storage: Staking MaxNominatorsCount (r:1 w:0) + // Storage: Staking Validators (r:2 w:0) + // Storage: Staking CurrentEra (r:1 w:0) + // Storage: Staking CounterForNominators (r:1 w:1) + // Storage: Staking Bonded (r:1 w:0) + // Storage: BagsList ListNodes (r:2 w:2) + // Storage: BagsList ListBags (r:1 w:1) + // Storage: BagsList CounterForListNodes (r:1 w:1) + fn nominate(n: u32, ) -> Weight { + (75_755_000 as Weight) + // Standard Error: 10_000 + .saturating_add((5_153_000 as Weight).saturating_mul(n as Weight)) + .saturating_add(T::DbWeight::get().reads(12 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(n as Weight))) - .saturating_add(T::DbWeight::get().writes(7 as Weight)) + .saturating_add(T::DbWeight::get().writes(6 as Weight)) } + // Storage: Staking Ledger (r:1 w:0) + // Storage: Staking Validators (r:1 w:0) + // Storage: Staking Nominators (r:1 w:1) + // Storage: Staking CounterForNominators (r:1 w:1) + // Storage: BagsList ListNodes (r:2 w:2) + // Storage: BagsList ListBags (r:1 w:1) + // Storage: BagsList CounterForListNodes (r:1 w:1) fn chill() -> Weight { - (17_740_000 as Weight).saturating_add(T::DbWeight::get().reads(3 as Weight)) + (64_425_000 as Weight) + .saturating_add(T::DbWeight::get().reads(8 as Weight)) + .saturating_add(T::DbWeight::get().writes(6 as Weight)) } + // Storage: Staking Ledger (r:1 w:0) + // Storage: Staking Payee (r:0 w:1) fn set_payee() -> Weight { - (11_867_000 as Weight) + (11_264_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Staking Bonded (r:1 w:1) + // Storage: Staking Ledger (r:2 w:2) fn set_controller() -> Weight { - (26_102_000 as Weight) + (24_783_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } + // Storage: Staking ValidatorCount (r:0 w:1) fn set_validator_count() -> Weight { - (2_082_000 as Weight).saturating_add(T::DbWeight::get().writes(1 as Weight)) + (2_355_000 as Weight) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Staking ForceEra (r:0 w:1) fn force_no_eras() -> Weight { - (2_311_000 as Weight).saturating_add(T::DbWeight::get().writes(1 as Weight)) + (2_566_000 as Weight) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Staking ForceEra (r:0 w:1) fn force_new_era() -> Weight { - (2_282_000 as Weight).saturating_add(T::DbWeight::get().writes(1 as Weight)) + (2_501_000 as Weight) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Staking ForceEra (r:0 w:1) fn force_new_era_always() -> Weight { - (2_230_000 as Weight).saturating_add(T::DbWeight::get().writes(1 as Weight)) + (2_542_000 as Weight) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) } - fn set_invulnerables(v: u32) -> Weight { - (2_352_000 as Weight) + // Storage: Staking Invulnerables (r:0 w:1) + fn set_invulnerables(v: u32, ) -> Weight { + (2_747_000 as Weight) // Standard Error: 0 - .saturating_add((5_000 as Weight).saturating_mul(v as Weight)) + .saturating_add((53_000 as Weight).saturating_mul(v as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } - fn force_unstake(s: u32) -> Weight { - (58_375_000 as Weight) - // Standard Error: 1_000 - .saturating_add((2_220_000 as Weight).saturating_mul(s as Weight)) - .saturating_add(T::DbWeight::get().reads(8 as Weight)) - .saturating_add(T::DbWeight::get().writes(7 as Weight)) + // Storage: Staking Bonded (r:1 w:1) + // Storage: Staking SlashingSpans (r:1 w:0) + // Storage: Staking Validators (r:1 w:0) + // Storage: Staking Nominators (r:1 w:1) + // Storage: Staking CounterForNominators (r:1 w:1) + // Storage: BagsList ListNodes (r:2 w:2) + // Storage: BagsList ListBags (r:1 w:1) + // Storage: BagsList CounterForListNodes (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: Balances Locks (r:1 w:1) + // Storage: Staking Ledger (r:0 w:1) + // Storage: Staking Payee (r:0 w:1) + // Storage: Staking SpanSlash (r:0 w:2) + fn force_unstake(s: u32, ) -> Weight { + (89_294_000 as Weight) + // Standard Error: 3_000 + .saturating_add((2_136_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().reads(11 as Weight)) + .saturating_add(T::DbWeight::get().writes(12 as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) } - fn cancel_deferred_slash(s: u32) -> Weight { - (3_430_757_000 as Weight) - // Standard Error: 222_000 - .saturating_add((19_760_000 as Weight).saturating_mul(s as Weight)) + // Storage: Staking UnappliedSlashes (r:1 w:1) + fn cancel_deferred_slash(s: u32, ) -> Weight { + (2_804_887_000 as Weight) + // Standard Error: 181_000 + .saturating_add((16_202_000 as Weight).saturating_mul(s as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } - fn payout_stakers_dead_controller(n: u32) -> Weight { - (103_686_000 as Weight) - // Standard Error: 17_000 - .saturating_add((47_044_000 as Weight).saturating_mul(n as Weight)) + // Storage: Staking CurrentEra (r:1 w:0) + // Storage: Staking HistoryDepth (r:1 w:0) + // Storage: Staking ErasValidatorReward (r:1 w:0) + // Storage: Staking Bonded (r:2 w:0) + // Storage: Staking Ledger (r:1 w:1) + // Storage: Staking ErasStakersClipped (r:1 w:0) + // Storage: Staking ErasRewardPoints (r:1 w:0) + // Storage: Staking ErasValidatorPrefs (r:1 w:0) + // Storage: Staking Payee (r:2 w:0) + // Storage: System Account (r:2 w:2) + fn payout_stakers_dead_controller(n: u32, ) -> Weight { + (108_674_000 as Weight) + // Standard Error: 27_000 + .saturating_add((43_449_000 as Weight).saturating_mul(n as Weight)) .saturating_add(T::DbWeight::get().reads(10 as Weight)) .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(n as Weight))) .saturating_add(T::DbWeight::get().writes(2 as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(n as Weight))) } - fn payout_stakers_alive_staked(n: u32) -> Weight { - (128_168_000 as Weight) - // Standard Error: 21_000 - .saturating_add((59_293_000 as Weight).saturating_mul(n as Weight)) + // Storage: Staking CurrentEra (r:1 w:0) + // Storage: Staking HistoryDepth (r:1 w:0) + // Storage: Staking ErasValidatorReward (r:1 w:0) + // Storage: Staking Bonded (r:2 w:0) + // Storage: Staking Ledger (r:2 w:2) + // Storage: Staking ErasStakersClipped (r:1 w:0) + // Storage: Staking ErasRewardPoints (r:1 w:0) + // Storage: Staking ErasValidatorPrefs (r:1 w:0) + // Storage: Staking Payee (r:2 w:0) + // Storage: System Account (r:2 w:2) + // Storage: Balances Locks (r:2 w:2) + fn payout_stakers_alive_staked(n: u32, ) -> Weight { + (133_185_000 as Weight) + // Standard Error: 30_000 + .saturating_add((55_519_000 as Weight).saturating_mul(n as Weight)) .saturating_add(T::DbWeight::get().reads(11 as Weight)) .saturating_add(T::DbWeight::get().reads((5 as Weight).saturating_mul(n as Weight))) .saturating_add(T::DbWeight::get().writes(3 as Weight)) .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(n as Weight))) } - fn rebond(l: u32) -> Weight { - (46_916_000 as Weight) - // Standard Error: 1_000 - .saturating_add((64_000 as Weight).saturating_mul(l as Weight)) - .saturating_add(T::DbWeight::get().reads(3 as Weight)) - .saturating_add(T::DbWeight::get().writes(3 as Weight)) + // Storage: Staking Ledger (r:1 w:1) + // Storage: Balances Locks (r:1 w:1) + // Storage: System Account (r:1 w:1) + // Storage: BagsList ListNodes (r:3 w:3) + // Storage: Staking Bonded (r:1 w:0) + // Storage: BagsList ListBags (r:2 w:2) + fn rebond(l: u32, ) -> Weight { + (103_089_000 as Weight) + // Standard Error: 4_000 + .saturating_add((73_000 as Weight).saturating_mul(l as Weight)) + .saturating_add(T::DbWeight::get().reads(9 as Weight)) + .saturating_add(T::DbWeight::get().writes(8 as Weight)) } - fn set_history_depth(e: u32) -> Weight { + // Storage: Staking CurrentEra (r:1 w:0) + // Storage: Staking HistoryDepth (r:1 w:1) + // Storage: Staking ErasStakersClipped (r:0 w:2) + // Storage: Staking ErasValidatorPrefs (r:0 w:2) + // Storage: Staking ErasValidatorReward (r:0 w:1) + // Storage: Staking ErasRewardPoints (r:0 w:1) + // Storage: Staking ErasStakers (r:0 w:2) + // Storage: Staking ErasTotalStake (r:0 w:1) + // Storage: Staking ErasStartSessionIndex (r:0 w:1) + fn set_history_depth(e: u32, ) -> Weight { (0 as Weight) - // Standard Error: 76_000 - .saturating_add((33_612_000 as Weight).saturating_mul(e as Weight)) + // Standard Error: 64_000 + .saturating_add((31_498_000 as Weight).saturating_mul(e as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) .saturating_add(T::DbWeight::get().writes((7 as Weight).saturating_mul(e as Weight))) } - fn reap_stash(s: u32) -> Weight { - (69_690_000 as Weight) + // Storage: System Account (r:1 w:1) + // Storage: Staking Bonded (r:1 w:1) + // Storage: Staking SlashingSpans (r:1 w:1) + // Storage: Staking Validators (r:1 w:0) + // Storage: Staking Nominators (r:1 w:1) + // Storage: Staking CounterForNominators (r:1 w:1) + // Storage: BagsList ListNodes (r:2 w:2) + // Storage: BagsList ListBags (r:1 w:1) + // Storage: BagsList CounterForListNodes (r:1 w:1) + // Storage: Balances Locks (r:1 w:1) + // Storage: Staking Ledger (r:0 w:1) + // Storage: Staking Payee (r:0 w:1) + // Storage: Staking SpanSlash (r:0 w:1) + fn reap_stash(s: u32, ) -> Weight { + (92_220_000 as Weight) // Standard Error: 1_000 - .saturating_add((2_214_000 as Weight).saturating_mul(s as Weight)) + .saturating_add((2_132_000 as Weight).saturating_mul(s as Weight)) .saturating_add(T::DbWeight::get().reads(11 as Weight)) .saturating_add(T::DbWeight::get().writes(12 as Weight)) .saturating_add(T::DbWeight::get().writes((1 as Weight).saturating_mul(s as Weight))) } - fn new_era(v: u32, n: u32) -> Weight { + // Storage: Staking CounterForNominators (r:1 w:0) + // Storage: Staking CounterForValidators (r:1 w:0) + // Storage: Staking Validators (r:2 w:0) + // Storage: Staking Bonded (r:101 w:0) + // Storage: Staking Ledger (r:101 w:0) + // Storage: Staking SlashingSpans (r:1 w:0) + // Storage: Staking Nominators (r:101 w:0) + // Storage: System BlockWeight (r:1 w:1) + // Storage: Staking ValidatorCount (r:1 w:0) + // Storage: Staking MinimumValidatorCount (r:1 w:0) + // Storage: Staking CurrentEra (r:1 w:1) + // Storage: Staking HistoryDepth (r:1 w:0) + // Storage: Staking ErasStakersClipped (r:0 w:1) + // Storage: Staking ErasValidatorPrefs (r:0 w:1) + // Storage: Staking ErasStakers (r:0 w:1) + // Storage: Staking ErasTotalStake (r:0 w:1) + // Storage: Staking ErasStartSessionIndex (r:0 w:1) + fn new_era(v: u32, n: u32, ) -> Weight { (0 as Weight) - // Standard Error: 1_065_000 - .saturating_add((309_528_000 as Weight).saturating_mul(v as Weight)) - // Standard Error: 53_000 - .saturating_add((52_832_000 as Weight).saturating_mul(n as Weight)) - .saturating_add(T::DbWeight::get().reads(187 as Weight)) - .saturating_add(T::DbWeight::get().reads((4 as Weight).saturating_mul(v as Weight))) - .saturating_add(T::DbWeight::get().reads((4 as Weight).saturating_mul(n as Weight))) + // Standard Error: 802_000 + .saturating_add((294_926_000 as Weight).saturating_mul(v as Weight)) + // Standard Error: 40_000 + .saturating_add((49_452_000 as Weight).saturating_mul(n as Weight)) + .saturating_add(T::DbWeight::get().reads(10 as Weight)) + .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(v as Weight))) + .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(n as Weight))) .saturating_add(T::DbWeight::get().writes(4 as Weight)) .saturating_add(T::DbWeight::get().writes((3 as Weight).saturating_mul(v as Weight))) } - fn get_npos_voters(v: u32, n: u32, s: u32) -> Weight { + // Storage: Staking CounterForNominators (r:1 w:0) + // Storage: Staking CounterForValidators (r:1 w:0) + // Storage: Staking Validators (r:501 w:0) + // Storage: Staking Bonded (r:1500 w:0) + // Storage: Staking Ledger (r:1500 w:0) + // Storage: Staking SlashingSpans (r:21 w:0) + // Storage: Staking Nominators (r:1001 w:0) + // Storage: System BlockWeight (r:1 w:1) + fn get_npos_voters(v: u32, n: u32, s: u32, ) -> Weight { (0 as Weight) - // Standard Error: 110_000 - .saturating_add((25_393_000 as Weight).saturating_mul(v as Weight)) - // Standard Error: 110_000 - .saturating_add((34_992_000 as Weight).saturating_mul(n as Weight)) - .saturating_add(T::DbWeight::get().reads(179 as Weight)) + // Standard Error: 106_000 + .saturating_add((25_237_000 as Weight).saturating_mul(v as Weight)) + // Standard Error: 106_000 + .saturating_add((31_267_000 as Weight).saturating_mul(n as Weight)) + // Standard Error: 3_621_000 + .saturating_add((51_975_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().reads(6 as Weight)) .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(v as Weight))) - .saturating_add(T::DbWeight::get().reads((4 as Weight).saturating_mul(n as Weight))) + .saturating_add(T::DbWeight::get().reads((3 as Weight).saturating_mul(n as Weight))) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(s as Weight))) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) } - fn get_npos_targets(v: u32) -> Weight { + // Storage: Staking Validators (r:501 w:0) + // Storage: System BlockWeight (r:1 w:1) + fn get_npos_targets(v: u32, ) -> Weight { (0 as Weight) - // Standard Error: 42_000 - .saturating_add((11_340_000 as Weight).saturating_mul(v as Weight)) - .saturating_add(T::DbWeight::get().reads(1 as Weight)) + // Standard Error: 34_000 + .saturating_add((9_890_000 as Weight).saturating_mul(v as Weight)) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(v as Weight))) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) } + // Storage: Staking MinValidatorBond (r:0 w:1) + // Storage: Staking MaxValidatorsCount (r:0 w:1) + // Storage: Staking ChillThreshold (r:0 w:1) + // Storage: Staking MaxNominatorsCount (r:0 w:1) + // Storage: Staking MinNominatorBond (r:0 w:1) fn set_staking_limits() -> Weight { - (5_696_000 as Weight).saturating_add(T::DbWeight::get().writes(5 as Weight)) + (5_641_000 as Weight) + .saturating_add(T::DbWeight::get().writes(5 as Weight)) } + // Storage: Staking Ledger (r:1 w:0) + // Storage: Staking ChillThreshold (r:1 w:0) + // Storage: Staking Nominators (r:1 w:1) + // Storage: Staking MaxNominatorsCount (r:1 w:0) + // Storage: Staking CounterForNominators (r:1 w:1) + // Storage: Staking MinNominatorBond (r:1 w:0) + // Storage: Staking Validators (r:1 w:0) + // Storage: BagsList ListNodes (r:2 w:2) + // Storage: BagsList ListBags (r:1 w:1) + // Storage: BagsList CounterForListNodes (r:1 w:1) fn chill_other() -> Weight { - (84_796_000 as Weight) + (76_657_000 as Weight) .saturating_add(T::DbWeight::get().reads(11 as Weight)) .saturating_add(T::DbWeight::get().writes(6 as Weight)) } diff --git a/runtime/westend/src/weights/runtime_parachains_initializer.rs b/runtime/westend/src/weights/runtime_parachains_initializer.rs new file mode 100644 index 000000000000..9877d23b93fa --- /dev/null +++ b/runtime/westend/src/weights/runtime_parachains_initializer.rs @@ -0,0 +1,55 @@ +// Copyright 2017-2021 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . +//! Autogenerated weights for `runtime_parachains::initializer` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2021-09-25, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 + +// Executed Command: +// target/release/polkadot +// benchmark +// --chain=westend-dev +// --steps=50 +// --repeat=20 +// --pallet=runtime_parachains::initializer +// --extrinsic=* +// --execution=wasm +// --wasm-execution=compiled +// --heap-pages=4096 +// --header=./file_header.txt +// --output=./runtime/westend/src/weights/runtime_parachains_initializer.rs + + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `runtime_parachains::initializer`. +pub struct WeightInfo(PhantomData); +impl runtime_parachains::initializer::WeightInfo for WeightInfo { + // Storage: System Digest (r:1 w:1) + fn force_approve(d: u32, ) -> Weight { + (6_607_000 as Weight) + // Standard Error: 0 + .saturating_add((1_000 as Weight).saturating_mul(d as Weight)) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } +} diff --git a/runtime/westend/src/weights/runtime_parachains_paras.rs b/runtime/westend/src/weights/runtime_parachains_paras.rs new file mode 100644 index 000000000000..f04f3162a263 --- /dev/null +++ b/runtime/westend/src/weights/runtime_parachains_paras.rs @@ -0,0 +1,106 @@ +// Copyright 2017-2021 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . +//! Autogenerated weights for `runtime_parachains::paras` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2021-09-21, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 + +// Executed Command: +// target/release/polkadot +// benchmark +// --chain=westend-dev +// --steps=50 +// --repeat=20 +// --pallet=runtime_parachains::paras +// --extrinsic=* +// --execution=wasm +// --wasm-execution=compiled +// --heap-pages=4096 +// --header=./file_header.txt +// --output=./runtime/westend/src/weights/runtime_parachains_paras.rs + + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weight functions for `runtime_parachains::paras`. +pub struct WeightInfo(PhantomData); +impl runtime_parachains::paras::WeightInfo for WeightInfo { + // Storage: Paras CurrentCodeHash (r:1 w:1) + // Storage: Paras CodeByHashRefs (r:1 w:1) + // Storage: Paras PastCodeMeta (r:1 w:1) + // Storage: Paras PastCodePruning (r:1 w:1) + // Storage: Paras PastCodeHash (r:0 w:1) + // Storage: Paras CodeByHash (r:0 w:1) + fn force_set_current_code(c: u32, ) -> Weight { + (0 as Weight) + // Standard Error: 0 + .saturating_add((3_000 as Weight).saturating_mul(c as Weight)) + .saturating_add(T::DbWeight::get().reads(4 as Weight)) + .saturating_add(T::DbWeight::get().writes(6 as Weight)) + } + // Storage: Paras Heads (r:0 w:1) + fn force_set_current_head(s: u32, ) -> Weight { + (17_522_000 as Weight) + // Standard Error: 0 + .saturating_add((1_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: Configuration ActiveConfig (r:1 w:0) + // Storage: Paras FutureCodeUpgrades (r:1 w:1) + // Storage: Paras UpcomingUpgrades (r:1 w:1) + // Storage: Paras UpgradeCooldowns (r:1 w:1) + // Storage: System Digest (r:1 w:1) + // Storage: Paras CodeByHashRefs (r:1 w:1) + // Storage: Paras CodeByHash (r:0 w:1) + // Storage: Paras FutureCodeHash (r:0 w:1) + // Storage: Paras UpgradeRestrictionSignal (r:0 w:1) + fn force_schedule_code_upgrade(c: u32, ) -> Weight { + (0 as Weight) + // Standard Error: 0 + .saturating_add((3_000 as Weight).saturating_mul(c as Weight)) + .saturating_add(T::DbWeight::get().reads(6 as Weight)) + .saturating_add(T::DbWeight::get().writes(8 as Weight)) + } + // Storage: Paras FutureCodeUpgrades (r:1 w:1) + // Storage: Paras FutureCodeHash (r:1 w:1) + // Storage: Paras CurrentCodeHash (r:1 w:1) + // Storage: System Digest (r:1 w:1) + // Storage: Paras PastCodeMeta (r:1 w:1) + // Storage: Paras PastCodePruning (r:1 w:1) + // Storage: Paras Heads (r:0 w:1) + // Storage: Paras PastCodeHash (r:0 w:1) + // Storage: Paras UpgradeGoAheadSignal (r:0 w:1) + fn force_note_new_head(s: u32, ) -> Weight { + (71_155_000 as Weight) + // Standard Error: 0 + .saturating_add((1_000 as Weight).saturating_mul(s as Weight)) + .saturating_add(T::DbWeight::get().reads(6 as Weight)) + .saturating_add(T::DbWeight::get().writes(9 as Weight)) + } + // Storage: ParasShared CurrentSessionIndex (r:1 w:0) + // Storage: Paras ActionsQueue (r:1 w:1) + fn force_queue_action() -> Weight { + (27_230_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } +} diff --git a/runtime/westend/src/weights/xcm/mod.rs b/runtime/westend/src/weights/xcm/mod.rs new file mode 100644 index 000000000000..1b0d7c1ef485 --- /dev/null +++ b/runtime/westend/src/weights/xcm/mod.rs @@ -0,0 +1,193 @@ +mod pallet_xcm_benchmarks_fungible; +mod pallet_xcm_benchmarks_generic; + +use crate::Runtime; +use frame_support::weights::Weight; +use sp_std::prelude::*; +use xcm::{latest::prelude::*, DoubleEncoded}; + +use pallet_xcm_benchmarks_fungible::WeightInfo as XcmBalancesWeight; +use pallet_xcm_benchmarks_generic::WeightInfo as XcmGeneric; + +/// Types of asset supported by the westend runtime. +pub enum AssetTypes { + /// An asset backed by `pallet-balances`. + Balances, + /// Unknown asset. + Unknown, +} + +impl From<&MultiAsset> for AssetTypes { + fn from(asset: &MultiAsset) -> Self { + match asset { + MultiAsset { id: Concrete(MultiLocation { parents: 0, interior: Here }), .. } => + AssetTypes::Balances, + _ => AssetTypes::Unknown, + } + } +} + +trait WeighMultiAssets { + fn weigh_multi_assets(&self, balances_weight: Weight) -> Weight; +} + +// TODO wild case +impl WeighMultiAssets for MultiAssetFilter { + fn weigh_multi_assets(&self, balances_weight: Weight) -> Weight { + match self { + Self::Definite(assets) => assets + .inner() + .into_iter() + .map(From::from) + .map(|t| match t { + AssetTypes::Balances => balances_weight, + AssetTypes::Unknown => Weight::MAX, + }) + .fold(0, |acc, x| acc.saturating_add(x)), + _ => Weight::MAX, + } + } +} + +impl WeighMultiAssets for MultiAssets { + fn weigh_multi_assets(&self, balances_weight: Weight) -> Weight { + self.inner() + .into_iter() + .map(|m| >::from(m)) + .map(|t| match t { + AssetTypes::Balances => balances_weight, + AssetTypes::Unknown => Weight::MAX, + }) + .fold(0, |acc, x| acc.saturating_add(x)) + } +} + +pub struct WestendXcmWeight(core::marker::PhantomData); +impl XcmWeightInfo for WestendXcmWeight { + fn withdraw_asset(assets: &MultiAssets) -> Weight { + assets.weigh_multi_assets(XcmBalancesWeight::::withdraw_asset()) + } + fn reserve_asset_deposited(assets: &MultiAssets) -> Weight { + assets.weigh_multi_assets(XcmGeneric::::reserve_asset_deposited()) + } + fn receive_teleported_asset(assets: &MultiAssets) -> Weight { + assets.weigh_multi_assets(XcmBalancesWeight::::receive_teleported_asset()) + } + fn query_response(_query_id: &u64, _response: &Response, max_weight: &u64) -> Weight { + *max_weight + } + fn transfer_asset(assets: &MultiAssets, _dest: &MultiLocation) -> Weight { + assets.weigh_multi_assets(XcmBalancesWeight::::transfer_asset()) + } + fn transfer_reserve_asset( + assets: &MultiAssets, + _dest: &MultiLocation, + _xcm: &Xcm<()>, + ) -> Weight { + assets.weigh_multi_assets(XcmBalancesWeight::::transfer_reserve_asset()) + } + fn transact( + _origin_type: &OriginKind, + _require_weight_at_most: &u64, + _call: &DoubleEncoded, + ) -> Weight { + XcmGeneric::::transact() + } + fn hrmp_new_channel_open_request( + _sender: &u32, + _max_message_size: &u32, + _max_capacity: &u32, + ) -> Weight { + XcmGeneric::::hrmp_new_channel_open_request() + } + fn hrmp_channel_accepted(_recipient: &u32) -> Weight { + XcmGeneric::::hrmp_channel_accepted() + } + fn hrmp_channel_closing(_initiator: &u32, _sender: &u32, _recipient: &u32) -> Weight { + XcmGeneric::::hrmp_channel_closing() + } + fn clear_origin() -> Weight { + XcmGeneric::::clear_origin() + } + fn descend_origin(who: &InteriorMultiLocation) -> Weight { + XcmGeneric::::descend_origin(who) + } + fn report_error( + _query_id: &QueryId, + _dest: &MultiLocation, + _max_response_weight: &u64, + ) -> Weight { + XcmGeneric::::report_error() + } + fn relayed_from(_who: &Junctions, _message: &Box>) -> Weight { + XcmGeneric::::relayed_from() + } + + fn deposit_asset( + assets: &MultiAssetFilter, + _max_assets: &u32, // TODO use max assets? + _dest: &MultiLocation, + ) -> Weight { + assets.weigh_multi_assets(XcmBalancesWeight::::deposit_asset()) + } + fn deposit_reserve_asset( + assets: &MultiAssetFilter, + _max_assets: &u32, // TODO use max assets? + _dest: &MultiLocation, + _xcm: &Xcm<()>, + ) -> Weight { + assets.weigh_multi_assets(XcmBalancesWeight::::deposit_reserve_asset()) + } + fn exchange_asset(_give: &MultiAssetFilter, _receive: &MultiAssets) -> Weight { + Weight::MAX // todo fix + } + fn initiate_reserve_withdraw( + assets: &MultiAssetFilter, + _reserve: &MultiLocation, + _xcm: &Xcm<()>, + ) -> Weight { + assets.weigh_multi_assets(XcmGeneric::::initiate_reserve_withdraw()) + } + fn initiate_teleport( + assets: &MultiAssetFilter, + _dest: &MultiLocation, + _xcm: &Xcm<()>, + ) -> Weight { + assets.weigh_multi_assets(XcmBalancesWeight::::initiate_teleport()) + } + fn query_holding( + _query_id: &u64, + _dest: &MultiLocation, + _assets: &MultiAssetFilter, + _max_response_weight: &u64, + ) -> Weight { + XcmGeneric::::query_holding() + } + fn buy_execution(_fees: &MultiAsset, _weight_limit: &WeightLimit) -> Weight { + XcmGeneric::::buy_execution() + } + fn refund_surplus() -> Weight { + XcmGeneric::::refund_surplus() + } + fn set_error_handler(_xcm: &Xcm) -> Weight { + XcmGeneric::::set_error_handler() + } + fn set_appendix(_xcm: &Xcm) -> Weight { + XcmGeneric::::set_appendix() + } + fn clear_error() -> Weight { + XcmGeneric::::clear_error() + } + fn claim_asset(assets: &MultiAssets, _ticket: &MultiLocation) -> Weight { + XcmGeneric::::claim_asset(assets) + } + fn trap(code: &u64) -> Weight { + XcmGeneric::::trap(code) + } + fn subscribe_version(_query_id: &QueryId, _max_response_weight: &u64) -> Weight { + XcmGeneric::::subscribe_version() + } + fn unsubscribe_version() -> Weight { + XcmGeneric::::unsubscribe_version() + } +} diff --git a/runtime/westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs b/runtime/westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs new file mode 100644 index 000000000000..869c1bca408f --- /dev/null +++ b/runtime/westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs @@ -0,0 +1,95 @@ +// Copyright 2017-2021 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Autogenerated weights for `pallet_xcm_benchmarks::fungible` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev +//! DATE: 2021-09-17, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("westend-dev"), DB CACHE: 128 + +// Executed Command: +// target/release/polkadot +// benchmark +// --chain=westend-dev +// --steps=50 +// --repeat=20 +// --pallet=pallet_xcm_benchmarks::fungible +// --extrinsic=* +// --execution=wasm +// --wasm-execution=compiled +// --heap-pages=4096 +// --header=./file_header.txt +// --template=./xcm/pallet-xcm-benchmarks/template.hbs +// --output=./runtime/westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs + + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weights for `pallet_xcm_benchmarks::fungible`. +pub struct WeightInfo(PhantomData); +impl WeightInfo { + // Storage: System Account (r:1 w:1) + pub(crate) fn withdraw_asset() -> Weight { + (39_691_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: System Account (r:2 w:2) + pub(crate) fn transfer_asset() -> Weight { + (62_616_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) + } + // Storage: System Account (r:2 w:2) + // Storage: Dmp DownwardMessageQueueHeads (r:1 w:1) + // Storage: Dmp DownwardMessageQueues (r:1 w:1) + pub(crate) fn transfer_reserve_asset() -> Weight { + (86_642_000 as Weight) + .saturating_add(T::DbWeight::get().reads(4 as Weight)) + .saturating_add(T::DbWeight::get().writes(4 as Weight)) + } + // Storage: Benchmark Override (r:0 w:0) + pub(crate) fn receive_teleported_asset() -> Weight { + (2_000_000_000_000 as Weight) + } + // Storage: System Account (r:1 w:1) + pub(crate) fn deposit_asset() -> Weight { + (49_745_000 as Weight) + .saturating_add(T::DbWeight::get().reads(1 as Weight)) + .saturating_add(T::DbWeight::get().writes(1 as Weight)) + } + // Storage: System Account (r:1 w:1) + // Storage: Dmp DownwardMessageQueueHeads (r:1 w:1) + // Storage: Dmp DownwardMessageQueues (r:1 w:1) + pub(crate) fn deposit_reserve_asset() -> Weight { + (75_318_000 as Weight) + .saturating_add(T::DbWeight::get().reads(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) + } + // Storage: System Account (r:1 w:1) + // Storage: Dmp DownwardMessageQueueHeads (r:1 w:1) + // Storage: Dmp DownwardMessageQueues (r:1 w:1) + pub(crate) fn initiate_teleport() -> Weight { + (75_467_000 as Weight) + .saturating_add(T::DbWeight::get().reads(3 as Weight)) + .saturating_add(T::DbWeight::get().writes(3 as Weight)) + } +} diff --git a/runtime/westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs b/runtime/westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs new file mode 100644 index 000000000000..5c8626f0b22a --- /dev/null +++ b/runtime/westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs @@ -0,0 +1,73 @@ +// this whole file is temp, and will be replaced in the future TODO + +use frame_support::dispatch::Weight; + +pub struct WeightInfo(sp_std::marker::PhantomData); +impl WeightInfo { + pub fn query_holding() -> Weight { + 1_000_000_000 + } + pub fn buy_execution() -> Weight { + 1_000_000_000 + } + pub fn transact() -> Weight { + 1_000_000_000 + } + pub fn reserve_asset_deposited() -> Weight { + 1_000_000_000 + } + pub fn hrmp_new_channel_open_request() -> Weight { + 1_000_000_000 + } + pub fn hrmp_channel_accepted() -> Weight { + 1_000_000_000 + } + pub fn hrmp_channel_closing() -> Weight { + 1_000_000_000 + } + pub fn relayed_from() -> Weight { + 1_000_000_000 + } + pub fn refund_surplus() -> Weight { + 1_000_000_000 + } + pub fn set_error_handler() -> Weight { + 1_000_000_000 + } + pub fn set_appendix() -> Weight { + 1_000_000_000 + } + pub fn clear_error() -> Weight { + 1_000_000_000 + } + pub fn claim_asset(_assets: &crate::MultiAssets) -> Weight { + 1_000_000_000 + } + pub fn trap(_code: &u64) -> Weight { + 1_000_000_000 + } + + pub fn subscribe_version() -> Weight { + 1_000_000_000 + } + + pub fn unsubscribe_version() -> Weight { + 1_000_000_000 + } + + pub fn clear_origin() -> Weight { + 1_000_000_000 + } + + pub fn descend_origin(_who: &crate::InteriorMultiLocation) -> Weight { + 1_000_000_000 + } + + pub fn initiate_reserve_withdraw() -> Weight { + 1_000_000_000 + } + + pub fn report_error() -> Weight { + 1_000_000_000 + } +} diff --git a/scripts/docker/collator.Dockerfile b/scripts/dockerfiles/collator_injected.Dockerfile similarity index 89% rename from scripts/docker/collator.Dockerfile rename to scripts/dockerfiles/collator_injected.Dockerfile index 7053459d1a18..12cc32220049 100644 --- a/scripts/docker/collator.Dockerfile +++ b/scripts/dockerfiles/collator_injected.Dockerfile @@ -9,8 +9,8 @@ ARG IMAGE_NAME LABEL io.parity.image.authors="devops-team@parity.io" \ io.parity.image.vendor="Parity Technologies" \ io.parity.image.title="${IMAGE_NAME}" \ - io.parity.image.description="adder-collator image" \ - io.parity.image.source="https://github.com/paritytech/polkadot/blob/${VCS_REF}/scripts/docker/collator.Dockerfile" \ + io.parity.image.description="Injected adder-collator Docker image" \ + io.parity.image.source="https://github.com/paritytech/polkadot/blob/${VCS_REF}/scripts/docker/collator_injected.Dockerfile" \ io.parity.image.revision="${VCS_REF}" \ io.parity.image.created="${BUILD_DATE}" \ io.parity.image.documentation="https://github.com/paritytech/polkadot/" @@ -22,8 +22,7 @@ ENV RUST_BACKTRACE 1 RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install -y \ libssl1.1 \ - ca-certificates \ - curl && \ + ca-certificates && \ # apt cleanup apt-get autoremove -y && \ apt-get clean && \ diff --git a/scripts/docker/malus.Dockerfile b/scripts/dockerfiles/malus.Dockerfile similarity index 100% rename from scripts/docker/malus.Dockerfile rename to scripts/dockerfiles/malus.Dockerfile diff --git a/docker/README.md b/scripts/dockerfiles/polkadot/README.md similarity index 100% rename from docker/README.md rename to scripts/dockerfiles/polkadot/README.md diff --git a/docker/build.sh b/scripts/dockerfiles/polkadot/build.sh similarity index 80% rename from docker/build.sh rename to scripts/dockerfiles/polkadot/build.sh index 6456383fcdea..ee4d29991a86 100755 --- a/docker/build.sh +++ b/scripts/dockerfiles/polkadot/build.sh @@ -14,7 +14,7 @@ GITREPO=polkadot # Build the image echo "Building ${GITUSER}/${GITREPO}:latest docker image, hang on!" -time docker build -f ./docker/Dockerfile --build-arg RUSTC_WRAPPER= --build-arg PROFILE=release -t ${GITUSER}/${GITREPO}:latest . +time docker build -f ./scripts/docker/polkadot/polkadot_builder.Dockerfile --build-arg RUSTC_WRAPPER= --build-arg PROFILE=release -t ${GITUSER}/${GITREPO}:latest . # Show the list of available images for this repo echo "Image is ready" diff --git a/docker/docker-compose-local.yml b/scripts/dockerfiles/polkadot/docker-compose-local.yml similarity index 92% rename from docker/docker-compose-local.yml rename to scripts/dockerfiles/polkadot/docker-compose-local.yml index 079d73825227..2c93799259ef 100644 --- a/docker/docker-compose-local.yml +++ b/scripts/dockerfiles/polkadot/docker-compose-local.yml @@ -3,6 +3,7 @@ services: node_alice: build: context: . + dockerfile: polkadot_builder.Dockerfile ports: - "30333:30333" - "9933:9933" @@ -18,6 +19,7 @@ services: node_bob: build: context: . + dockerfile: polkadot_builder.Dockerfile ports: - "30344:30344" - "9935:9935" diff --git a/docker/docker-compose.yml b/scripts/dockerfiles/polkadot/docker-compose.yml similarity index 85% rename from docker/docker-compose.yml rename to scripts/dockerfiles/polkadot/docker-compose.yml index b76d41da1d03..54fe158735d8 100644 --- a/docker/docker-compose.yml +++ b/scripts/dockerfiles/polkadot/docker-compose.yml @@ -3,6 +3,7 @@ services: polkadot: build: context: . + dockerfile: polkadot_builder.Dockerfile ports: - "127.0.0.1:30333:30333/tcp" - "127.0.0.1:9933:9933/tcp" diff --git a/docker/Dockerfile b/scripts/dockerfiles/polkadot/polkadot_builder.Dockerfile similarity index 53% rename from docker/Dockerfile rename to scripts/dockerfiles/polkadot/polkadot_builder.Dockerfile index e068ec086f2f..2fc5787e6cb0 100644 --- a/docker/Dockerfile +++ b/scripts/dockerfiles/polkadot/polkadot_builder.Dockerfile @@ -1,19 +1,18 @@ FROM docker.io/paritytech/ci-linux:production as builder -LABEL description="This is the build stage for Polkadot. Here we create the binary." +LABEL io.parity.image.description="This is the build stage for Polkadot. Here we create the binary." -ARG PROFILE=release WORKDIR /polkadot COPY . /polkadot -RUN cargo build --$PROFILE +RUN cargo build --release --locked # ===== SECOND STAGE ====== FROM docker.io/library/ubuntu:20.04 -LABEL description="This is the 2nd stage: a very small image where we copy the Polkadot binary." -ARG PROFILE=release -COPY --from=builder /polkadot/target/$PROFILE/polkadot /usr/local/bin +LABEL io.parity.image.description="Polkadot: a platform for web3. This is a self-buit multistage image." + +COPY --from=builder /polkadot/target/release/polkadot /usr/local/bin RUN useradd -m -u 1000 -U -s /bin/sh -d /polkadot polkadot && \ mkdir -p /polkadot/.local/share && \ @@ -23,7 +22,7 @@ RUN useradd -m -u 1000 -U -s /bin/sh -d /polkadot polkadot && \ rm -rf /usr/bin /usr/sbin USER polkadot -EXPOSE 30333 9933 9944 +EXPOSE 30333 9933 9944 9615 VOLUME ["/data"] -CMD ["/usr/local/bin/polkadot"] +ENTRYPOINT ["/usr/local/bin/polkadot"] diff --git a/scripts/docker/Dockerfile b/scripts/dockerfiles/polkadot_injected_debug.Dockerfile similarity index 93% rename from scripts/docker/Dockerfile rename to scripts/dockerfiles/polkadot_injected_debug.Dockerfile index 51f2b21b5fef..7ba312bf8b8f 100644 --- a/scripts/docker/Dockerfile +++ b/scripts/dockerfiles/polkadot_injected_debug.Dockerfile @@ -9,7 +9,7 @@ LABEL io.parity.image.authors="devops-team@parity.io" \ io.parity.image.vendor="Parity Technologies" \ io.parity.image.title="${IMAGE_NAME}" \ io.parity.image.description="Polkadot: a platform for web3" \ - io.parity.image.source="https://github.com/paritytech/polkadot/blob/${VCS_REF}/scripts/docker/Dockerfile" \ + io.parity.image.source="https://github.com/paritytech/polkadot/blob/${VCS_REF}/scripts/docker/polkadot_injected_debug.Dockerfile" \ io.parity.image.revision="${VCS_REF}" \ io.parity.image.created="${BUILD_DATE}" \ io.parity.image.documentation="https://github.com/paritytech/polkadot/" @@ -21,8 +21,7 @@ ENV RUST_BACKTRACE 1 RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install -y \ libssl1.1 \ - ca-certificates \ - curl && \ + ca-certificates && \ # apt cleanup apt-get autoremove -y && \ apt-get clean && \ diff --git a/scripts/docker/release.Dockerfile b/scripts/dockerfiles/polkadot_injected_release.Dockerfile similarity index 76% rename from scripts/docker/release.Dockerfile rename to scripts/dockerfiles/polkadot_injected_release.Dockerfile index 9188d6b260c4..c4c8aea182ed 100644 --- a/scripts/docker/release.Dockerfile +++ b/scripts/dockerfiles/polkadot_injected_release.Dockerfile @@ -4,12 +4,14 @@ FROM docker.io/library/ubuntu:20.04 ARG VCS_REF ARG BUILD_DATE ARG POLKADOT_VERSION +ARG POLKADOT_GPGKEY=9D4B2B6EB8F97156D19669A9FF0812D491B96798 +ARG GPG_KEYSERVER="hkps://keys.mailvelope.com" LABEL io.parity.image.authors="devops-team@parity.io" \ io.parity.image.vendor="Parity Technologies" \ io.parity.image.title="parity/polkadot" \ - io.parity.image.description="Polkadot: a platform for web3" \ - io.parity.image.source="https://github.com/paritytech/polkadot/blob/${VCS_REF}/scripts/docker/Dockerfile" \ + io.parity.image.description="Polkadot: a platform for web3. This is the official Parity image with an injected binary." \ + io.parity.image.source="https://github.com/paritytech/polkadot/blob/${VCS_REF}/scripts/docker/polkadot_injected_release.Dockerfile" \ io.parity.image.revision="${VCS_REF}" \ io.parity.image.created="${BUILD_DATE}" \ io.parity.image.documentation="https://github.com/paritytech/polkadot/" @@ -22,12 +24,11 @@ RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ libssl1.1 \ ca-certificates \ - curl \ gnupg && \ useradd -m -u 1000 -U -s /bin/sh -d /polkadot polkadot && \ # add repo's gpg keys and install the published polkadot binary - gpg --recv-keys --keyserver hkps://keys.mailvelope.com 9D4B2B6EB8F97156D19669A9FF0812D491B96798 && \ - gpg --export 9D4B2B6EB8F97156D19669A9FF0812D491B96798 > /usr/share/keyrings/parity.gpg && \ + gpg --recv-keys --keyserver ${GPG_KEYSERVER} ${POLKADOT_GPGKEY} && \ + gpg --export ${POLKADOT_GPGKEY} > /usr/share/keyrings/parity.gpg && \ echo 'deb [signed-by=/usr/share/keyrings/parity.gpg] https://releases.parity.io/deb release main' > /etc/apt/sources.list.d/parity.list && \ apt-get update && \ apt-get install -y --no-install-recommends polkadot=${POLKADOT_VERSION#?} && \ diff --git a/scripts/docker/staking-miner/staking_miner-builder.Dockerfile b/scripts/dockerfiles/staking-miner/staking-miner_builder.Dockerfile similarity index 90% rename from scripts/docker/staking-miner/staking_miner-builder.Dockerfile rename to scripts/dockerfiles/staking-miner/staking-miner_builder.Dockerfile index 4903fccee561..5208dfb65f27 100644 --- a/scripts/docker/staking-miner/staking_miner-builder.Dockerfile +++ b/scripts/dockerfiles/staking-miner/staking-miner_builder.Dockerfile @@ -19,8 +19,8 @@ LABEL description="This is the 2nd stage: a very small image where we copy the b LABEL io.parity.image.authors="devops-team@parity.io" \ io.parity.image.vendor="Parity Technologies" \ io.parity.image.title="${IMAGE_NAME}" \ - io.parity.image.description="staking-miner for substrate based chains" \ - io.parity.image.source="https://github.com/paritytech/polkadot/blob/${VCS_REF}/scripts/docker/staking-miner/staking_miner-builder.Dockerfile" \ + io.parity.image.description="${IMAGE_NAME} for substrate based chains" \ + io.parity.image.source="https://github.com/paritytech/polkadot/blob/${VCS_REF}/scripts/docker/${IMAGE_NAME}/${IMAGE_NAME}_builder.Dockerfile" \ io.parity.image.revision="${VCS_REF}" \ io.parity.image.created="${BUILD_DATE}" \ io.parity.image.documentation="https://github.com/paritytech/polkadot/" diff --git a/scripts/docker/staking-miner/staking_miner-injected.Dockerfile b/scripts/dockerfiles/staking-miner/staking-miner_injected.Dockerfile similarity index 89% rename from scripts/docker/staking-miner/staking_miner-injected.Dockerfile rename to scripts/dockerfiles/staking-miner/staking-miner_injected.Dockerfile index 547fea747bfd..2d98504b2c40 100644 --- a/scripts/docker/staking-miner/staking_miner-injected.Dockerfile +++ b/scripts/dockerfiles/staking-miner/staking-miner_injected.Dockerfile @@ -8,8 +8,8 @@ ARG IMAGE_NAME="staking-miner" LABEL io.parity.image.authors="devops-team@parity.io" \ io.parity.image.vendor="Parity Technologies" \ io.parity.image.title="${IMAGE_NAME}" \ - io.parity.image.description="staking-miner for substrate based chains" \ - io.parity.image.source="https://github.com/paritytech/polkadot/blob/${VCS_REF}/scripts/docker/staking-miner/staking_miner-injected.Dockerfile" \ + io.parity.image.description="${IMAGE_NAME} for substrate based chains" \ + io.parity.image.source="https://github.com/paritytech/polkadot/blob/${VCS_REF}/scripts/docker/${IMAGE_NAME}/${IMAGE_NAME}_injected.Dockerfile" \ io.parity.image.revision="${VCS_REF}" \ io.parity.image.created="${BUILD_DATE}" \ io.parity.image.documentation="https://github.com/paritytech/polkadot/" diff --git a/scripts/gitlab/lingua.dic b/scripts/gitlab/lingua.dic index 3085fbc3c32c..452cae8ab779 100644 --- a/scripts/gitlab/lingua.dic +++ b/scripts/gitlab/lingua.dic @@ -200,6 +200,7 @@ proxy/G proxying PRs PVF/S +p2p README/MS redhat/M register/CD @@ -227,7 +228,9 @@ shareable Simnet/MS spawn/SR spawner +SS58 sr25519 +SSL startup/MS stateful str @@ -237,6 +240,7 @@ substream subsystem/MS subsystems' supermajority +SURI systemwide taskmanager/MS TCP @@ -285,6 +289,7 @@ versa version/DMSG versioned VMP/SM +VPS VRF/SM w3f/MS wakeups @@ -295,9 +300,12 @@ Westend/M wildcard/MS WND/S Wococo +WS XCM/S XCMP/M yeet +yml decrement DM ParaId +functor diff --git a/scripts/gitlab/test_linux_stable.sh b/scripts/gitlab/test_linux_stable.sh index db362aa3b488..f7b36141af3a 100755 --- a/scripts/gitlab/test_linux_stable.sh +++ b/scripts/gitlab/test_linux_stable.sh @@ -4,4 +4,5 @@ set -e #shellcheck source=../common/lib.sh source "$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )/../common/lib.sh" -time cargo test --workspace --release --verbose --locked --features="runtime-benchmarks,disputes" +time cargo test --release --locked -p polkadot-node-core-dispute-coordinator --features disputes +time cargo test --workspace --release --verbose --locked --features=runtime-benchmarks diff --git a/statement-table/Cargo.toml b/statement-table/Cargo.toml index 4c94017dea6d..b6ae92a22c5b 100644 --- a/statement-table/Cargo.toml +++ b/statement-table/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "polkadot-statement-table" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" [dependencies] -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] } sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } primitives = { package = "polkadot-primitives", path = "../primitives" } diff --git a/utils/remote-ext-tests/bags-list/Cargo.toml b/utils/remote-ext-tests/bags-list/Cargo.toml index 7201215e78cd..6f97eabcf823 100644 --- a/utils/remote-ext-tests/bags-list/Cargo.toml +++ b/utils/remote-ext-tests/bags-list/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "remote-ext-tests-bags-list" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" diff --git a/utils/remote-ext-tests/bags-list/src/voter_bags.rs b/utils/remote-ext-tests/bags-list/src/voter_bags.rs index 94f7d605eae3..4b7d7d6ec88d 100644 --- a/utils/remote-ext-tests/bags-list/src/voter_bags.rs +++ b/utils/remote-ext-tests/bags-list/src/voter_bags.rs @@ -41,7 +41,7 @@ pub(crate) async fn test_voter_bags_migration< let mut ext = Builder::::new() .mode(Mode::Online(OnlineConfig { transport: ws_url.to_string().into(), - modules: vec!["Staking".to_string()], + pallets: vec!["Staking".to_string()], at: None, state_snapshot: None, })) diff --git a/utils/staking-miner/Cargo.toml b/utils/staking-miner/Cargo.toml index c1eccc1a8093..296240a705d3 100644 --- a/utils/staking-miner/Cargo.toml +++ b/utils/staking-miner/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "staking-miner" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] edition = "2018" [dependencies] codec = { package = "parity-scale-codec", version = "2.0.0" } -tokio = { version = "1.11", features = ["macros"] } +tokio = { version = "1.12", features = ["macros"] } log = "0.4.11" env_logger = "0.9.0" structopt = "0.3.23" diff --git a/utils/staking-miner/README.md b/utils/staking-miner/README.md index f5c68a648c45..944f870d6dfc 100644 --- a/utils/staking-miner/README.md +++ b/utils/staking-miner/README.md @@ -30,7 +30,7 @@ There are 2 options to build a staking-miner Docker image: First build the binary as documented [above](#building). You may then inject the binary into a Docker base image usingfrom the root of the Polkadot repository: ``` -docker build -t staking-miner -f scripts/docker/staking-miner/staking_miner-injected.Dockerfile target/release +docker build -t staking-miner -f scripts/docker/staking-miner/staking-miner_injected.Dockerfile target/release ``` ### Building the multi-stage image @@ -39,7 +39,7 @@ Unlike the injected image that requires a Linux pre-built binary, this option do The trade-off however is that it takes a little longer to build and this option is less ideal for CI tasks. You may build the multi-stage image the root of the Polkadot repository with: ``` -docker build -t staking-miner -f scripts/docker/staking-miner/staking_miner-builder.Dockerfile . +docker build -t staking-miner -f scripts/docker/staking-miner/staking-miner_builder.Dockerfile . ``` ### Running diff --git a/utils/staking-miner/src/main.rs b/utils/staking-miner/src/main.rs index 59c8846db28c..b3f504ff2d07 100644 --- a/utils/staking-miner/src/main.rs +++ b/utils/staking-miner/src/main.rs @@ -389,15 +389,15 @@ async fn create_election_ext( use frame_support::{storage::generator::StorageMap, traits::PalletInfo}; use sp_core::hashing::twox_128; - let mut modules = vec![::PalletInfo::name::>() + let mut pallets = vec![::PalletInfo::name::>() .expect("Pallet always has name; qed.") .to_string()]; - modules.extend(additional); + pallets.extend(additional); Builder::::new() .mode(Mode::Online(OnlineConfig { transport: uri.into(), at, - modules, + pallets, ..Default::default() })) .inject_hashed_prefix(&>::prefix_hash()) diff --git a/xcm/Cargo.toml b/xcm/Cargo.toml index 21becd6cb140..6c4c319170d0 100644 --- a/xcm/Cargo.toml +++ b/xcm/Cargo.toml @@ -1,13 +1,13 @@ [package] name = "xcm" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] description = "The basic XCM datastructures." edition = "2018" [dependencies] impl-trait-for-tuples = "0.2.0" -parity-scale-codec = { version = "2.0.0", default-features = false, features = [ "derive" ] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = [ "derive" ] } scale-info = { version = "1.0", default-features = false, features = ["derive"] } derivative = {version = "2.2.0", default-features = false, features = [ "use_core" ] } log = { version = "0.4.14", default-features = false } @@ -16,6 +16,7 @@ xcm-procedural = { path = "procedural" } [features] default = ["std"] wasm-api = [] +runtime-benchmarks = [] std = [ "parity-scale-codec/std", "scale-info/std", diff --git a/xcm/pallet-xcm-benchmarks/Cargo.toml b/xcm/pallet-xcm-benchmarks/Cargo.toml new file mode 100644 index 000000000000..f310bd0510a4 --- /dev/null +++ b/xcm/pallet-xcm-benchmarks/Cargo.toml @@ -0,0 +1,45 @@ +[package] +name = "pallet-xcm-benchmarks" +authors = ["Parity Technologies "] +edition = "2018" +version = "0.9.8" + +[package.metadata.docs.rs] +targets = ["x86_64-unknown-linux-gnu"] + +[dependencies] +codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false } +scale-info = { version = "1.0", default-features = false, features = ["derive"] } +frame-support = { version = "4.0.0-dev", default-features = false, branch = "master", git = "https://github.com/paritytech/substrate" } +frame-system = { version = "4.0.0-dev", default-features = false, branch = "master", git = "https://github.com/paritytech/substrate" } +sp-runtime = { version = "4.0.0-dev", default-features = false, branch = "master", git = "https://github.com/paritytech/substrate" } +sp-std = { version = "4.0.0-dev", default-features = false, branch = "master", git = "https://github.com/paritytech/substrate" } +xcm-executor = { path = "../xcm-executor", default-features = false, features = ["runtime-benchmarks"] } +frame-benchmarking = { version = "4.0.0-dev", default-features = false, branch = "master", git = "https://github.com/paritytech/substrate" } +xcm = { path = "..", default-features = false, features = ["runtime-benchmarks"] } +log = "0.4.0" + +[dev-dependencies] +pallet-balances = { version = "4.0.0-dev", branch = "master", git = "https://github.com/paritytech/substrate" } +pallet-assets = { version = "4.0.0-dev", branch = "master", git = "https://github.com/paritytech/substrate" } +sp-core = { version = "4.0.0-dev", branch = "master", git = "https://github.com/paritytech/substrate" } +sp-io = { version = "4.0.0-dev", branch = "master", git = "https://github.com/paritytech/substrate" } +sp-tracing = { version = "4.0.0-dev", branch = "master", git = "https://github.com/paritytech/substrate" } +xcm-builder = { path = "../xcm-builder" } +xcm = { path = ".." } +# temp +pallet-xcm = { path = "../pallet-xcm" } +polkadot-runtime-common = { path = "../../runtime/common" } +# westend-runtime = { path = "../../runtime/westend", features = ["runtime-benchmarks"] } +polkadot-primitives = { path = "../../primitives" } + +[features] +default = ["std"] +std = [ + "codec/std", + "frame-benchmarking/std", + "frame-support/std", + "frame-system/std", + "sp-runtime/std", + "sp-std/std" +] diff --git a/xcm/pallet-xcm-benchmarks/src/fungible/benchmarking.rs b/xcm/pallet-xcm-benchmarks/src/fungible/benchmarking.rs new file mode 100644 index 000000000000..b93184e0455d --- /dev/null +++ b/xcm/pallet-xcm-benchmarks/src/fungible/benchmarking.rs @@ -0,0 +1,219 @@ +// Copyright 2021 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +use super::*; +use crate::{account_and_location, new_executor, worst_case_holding, AssetTransactorOf, XcmCallOf}; +use frame_benchmarking::{ + benchmarks_instance_pallet, impl_benchmark_test_suite, BenchmarkError, BenchmarkResult, +}; +use frame_support::{pallet_prelude::Get, traits::fungible::Inspect}; +use sp_runtime::traits::Zero; +use sp_std::{convert::TryInto, prelude::*, vec}; +use xcm::latest::prelude::*; +use xcm_executor::traits::{Convert, TransactAsset}; + +benchmarks_instance_pallet! { + where_clause { where + < + < + T::TransactAsset + as + Inspect + >::Balance + as + TryInto + >::Error: sp_std::fmt::Debug, + } + + withdraw_asset { + let (sender_account, sender_location) = account_and_location::(1); + let worst_case_holding = worst_case_holding(); + let asset = T::get_multi_asset(); + + >::deposit_asset(&asset, &sender_location).unwrap(); + // check the assets of origin. + assert!(!T::TransactAsset::balance(&sender_account).is_zero()); + + let mut executor = new_executor::(sender_location); + executor.holding = worst_case_holding; + let instruction = Instruction::>::WithdrawAsset(vec![asset.clone()].into()); + let xcm = Xcm(vec![instruction]); + }: { + executor.execute(xcm)?; + } verify { + // check one of the assets of origin. + assert!(T::TransactAsset::balance(&sender_account).is_zero()); + assert!(executor.holding.ensure_contains(&vec![asset].into()).is_ok()); + } + + transfer_asset { + let (sender_account, sender_location) = account_and_location::(1); + let asset = T::get_multi_asset(); + let assets: MultiAssets = vec![ asset.clone() ].into(); + // this xcm doesn't use holding + + let dest_location = T::valid_destination()?; + let dest_account = T::AccountIdConverter::convert(dest_location.clone()).unwrap(); + + >::deposit_asset(&asset, &sender_location).unwrap(); + assert!(T::TransactAsset::balance(&dest_account).is_zero()); + + let mut executor = new_executor::(sender_location); + let instruction = Instruction::TransferAsset { assets, beneficiary: dest_location }; + let xcm = Xcm(vec![instruction]); + }: { + executor.execute(xcm)?; + } verify { + assert!(T::TransactAsset::balance(&sender_account).is_zero()); + assert!(!T::TransactAsset::balance(&dest_account).is_zero()); + } + + transfer_reserve_asset { + let (sender_account, sender_location) = account_and_location::(1); + let dest_location = T::valid_destination()?; + let dest_account = T::AccountIdConverter::convert(dest_location.clone()).unwrap(); + + let asset = T::get_multi_asset(); + >::deposit_asset(&asset, &sender_location).unwrap(); + let assets: MultiAssets = vec![ asset ].into(); + assert!(T::TransactAsset::balance(&dest_account).is_zero()); + + let mut executor = new_executor::(sender_location); + let instruction = Instruction::TransferReserveAsset { + assets, + dest: dest_location, + xcm: Xcm::new() + }; + let xcm = Xcm(vec![instruction]); + }: { + executor.execute(xcm)?; + } verify { + assert!(T::TransactAsset::balance(&sender_account).is_zero()); + assert!(!T::TransactAsset::balance(&dest_account).is_zero()); + // TODO: Check sender queue is not empty. + } + + receive_teleported_asset { + // If there is no trusted teleporter, then we skip this benchmark. + let (trusted_teleporter, teleportable_asset) = T::TrustedTeleporter::get().ok_or( + BenchmarkError::Override( + BenchmarkResult::from_weight(T::BlockWeights::get().max_block) + ) + )?; + + let assets: MultiAssets = vec![ teleportable_asset ].into(); + + let mut executor = new_executor::(trusted_teleporter); + let instruction = Instruction::ReceiveTeleportedAsset(assets.clone()); + let xcm = Xcm(vec![instruction]); + }: { + executor.execute(xcm).map_err(|_| { + BenchmarkError::Override( + BenchmarkResult::from_weight(T::BlockWeights::get().max_block) + ) + })?; + } verify { + assert!(executor.holding.ensure_contains(&assets).is_ok()); + } + + deposit_asset { + let asset = T::get_multi_asset(); + let mut holding = worst_case_holding(); + + // Add our asset to the holding. + holding.subsume(asset.clone()); + + // our dest must have no balance initially. + let dest_location = T::valid_destination()?; + let dest_account = T::AccountIdConverter::convert(dest_location.clone()).unwrap(); + assert!(T::TransactAsset::balance(&dest_account).is_zero()); + + let mut executor = new_executor::(Default::default()); + executor.holding = holding; + let instruction = Instruction::>::DepositAsset { + assets: asset.into(), + max_assets: 1, + beneficiary: dest_location, + }; + let xcm = Xcm(vec![instruction]); + }: { + executor.execute(xcm)?; + } verify { + // dest should have received some asset. + assert!(!T::TransactAsset::balance(&dest_account).is_zero()) + } + + deposit_reserve_asset { + let asset = T::get_multi_asset(); + let mut holding = worst_case_holding(); + + // Add our asset to the holding. + holding.subsume(asset.clone()); + + // our dest must have no balance initially. + let dest_location = T::valid_destination()?; + let dest_account = T::AccountIdConverter::convert(dest_location.clone()).unwrap(); + assert!(T::TransactAsset::balance(&dest_account).is_zero()); + + let mut executor = new_executor::(Default::default()); + executor.holding = holding; + let instruction = Instruction::>::DepositReserveAsset { + assets: asset.into(), + max_assets: 1, + dest: dest_location, + xcm: Xcm::new(), + }; + let xcm = Xcm(vec![instruction]); + }: { + executor.execute(xcm)?; + } verify { + // dest should have received some asset. + assert!(!T::TransactAsset::balance(&dest_account).is_zero()) + } + + initiate_teleport { + let asset = T::get_multi_asset(); + let mut holding = worst_case_holding(); + + // Add our asset to the holding. + holding.subsume(asset.clone()); + + // Checked account starts at zero + assert!(T::CheckedAccount::get().map_or(true, |c| T::TransactAsset::balance(&c).is_zero())); + + let mut executor = new_executor::(Default::default()); + executor.holding = holding; + let instruction = Instruction::>::InitiateTeleport { + assets: asset.into(), + dest: T::valid_destination()?, + xcm: Xcm::new(), + }; + let xcm = Xcm(vec![instruction]); + }: { + executor.execute(xcm)?; + } verify { + if let Some(checked_account) = T::CheckedAccount::get() { + // teleport checked account should have received some asset. + assert!(!T::TransactAsset::balance(&checked_account).is_zero()); + } + } +} + +impl_benchmark_test_suite!( + Pallet, + crate::fungible::mock::new_test_ext(), + crate::fungible::mock::Test +); diff --git a/xcm/pallet-xcm-benchmarks/src/fungible/mock.rs b/xcm/pallet-xcm-benchmarks/src/fungible/mock.rs new file mode 100644 index 000000000000..8666dc6caa4d --- /dev/null +++ b/xcm/pallet-xcm-benchmarks/src/fungible/mock.rs @@ -0,0 +1,180 @@ +// Copyright 2021 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! A mock runtime for XCM benchmarking. + +use crate::{fungible as xcm_balances_benchmark, mock::*}; +use frame_support::{parameter_types, traits::Everything}; +use sp_core::H256; +use sp_runtime::{ + testing::Header, + traits::{BlakeTwo256, IdentityLookup}, + BuildStorage, +}; +use xcm::latest::prelude::*; +use xcm_builder::AllowUnpaidExecutionFrom; + +type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; +type Block = frame_system::mocking::MockBlock; + +// For testing the pallet, we construct a mock runtime. +frame_support::construct_runtime!( + pub enum Test where + Block = Block, + NodeBlock = Block, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Balances: pallet_balances::{Pallet, Call, Storage, Config, Event}, + XcmBalancesBenchmark: xcm_balances_benchmark::{Pallet}, + } +); + +parameter_types! { + pub const BlockHashCount: u64 = 250; + pub BlockWeights: frame_system::limits::BlockWeights = + frame_system::limits::BlockWeights::simple_max(1024); +} +impl frame_system::Config for Test { + type BaseCallFilter = Everything; + type BlockWeights = (); + type BlockLength = (); + type DbWeight = (); + type Origin = Origin; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Call = Call; + type Hashing = BlakeTwo256; + type AccountId = u64; + type Lookup = IdentityLookup; + type Header = Header; + type Event = Event; + type BlockHashCount = BlockHashCount; + type Version = (); + type PalletInfo = PalletInfo; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type SystemWeightInfo = (); + type SS58Prefix = (); + type OnSetCode = (); +} + +parameter_types! { + pub const ExistentialDeposit: u64 = 7; +} + +impl pallet_balances::Config for Test { + type MaxLocks = (); + type MaxReserves = (); + type ReserveIdentifier = [u8; 8]; + type Balance = u64; + type DustRemoval = (); + type Event = Event; + type ExistentialDeposit = ExistentialDeposit; + type AccountStore = System; + type WeightInfo = (); +} + +parameter_types! { + pub const AssetDeposit: u64 = 100 * ExistentialDeposit::get(); + pub const ApprovalDeposit: u64 = 1 * ExistentialDeposit::get(); + pub const StringLimit: u32 = 50; + pub const MetadataDepositBase: u64 = 10 * ExistentialDeposit::get(); + pub const MetadataDepositPerByte: u64 = 1 * ExistentialDeposit::get(); +} + +pub struct MatchAnyFungible; +impl xcm_executor::traits::MatchesFungible for MatchAnyFungible { + fn matches_fungible(m: &MultiAsset) -> Option { + use sp_runtime::traits::SaturatedConversion; + match m { + MultiAsset { fun: Fungible(amount), .. } => Some((*amount).saturated_into::()), + _ => None, + } + } +} + +// Use balances as the asset transactor. +pub type AssetTransactor = xcm_builder::CurrencyAdapter< + Balances, + MatchAnyFungible, + AccountIdConverter, + u64, + CheckedAccount, +>; + +parameter_types! { + /// Maximum number of instructions in a single XCM fragment. A sanity check against weight + /// calculations getting too crazy. + pub const MaxInstructions: u32 = 100; +} + +pub struct XcmConfig; +impl xcm_executor::Config for XcmConfig { + type Call = Call; + type XcmSender = DevNull; + type AssetTransactor = AssetTransactor; + type OriginConverter = (); + type IsReserve = (); + type IsTeleporter = (); + type LocationInverter = xcm_builder::LocationInverter; + type Barrier = AllowUnpaidExecutionFrom; + type Weigher = xcm_builder::FixedWeightBounds; + type Trader = xcm_builder::FixedRateOfFungible; + type ResponseHandler = DevNull; + type AssetTrap = (); + type AssetClaims = (); + type SubscriptionService = (); +} + +impl crate::Config for Test { + type XcmConfig = XcmConfig; + type AccountIdConverter = AccountIdConverter; + fn valid_destination() -> Result { + let valid_destination: MultiLocation = + X1(AccountId32 { network: NetworkId::Any, id: [0u8; 32] }).into(); + + Ok(valid_destination) + } +} + +parameter_types! { + pub const CheckedAccount: Option = Some(100); + pub const TrustedTeleporter: Option<(MultiLocation, MultiAsset)> = Some(( + X1(OnlyChild).into(), + MultiAsset { id: Concrete(Here.into()), fun: Fungible(100) }, + )); +} + +impl xcm_balances_benchmark::Config for Test { + type TransactAsset = Balances; + type CheckedAccount = CheckedAccount; + type TrustedTeleporter = TrustedTeleporter; + + fn get_multi_asset() -> MultiAsset { + let amount = + >::minimum_balance() as u128; + MultiAsset { id: Concrete(Here.into()), fun: Fungible(amount) } + } +} + +pub fn new_test_ext() -> sp_io::TestExternalities { + let t = GenesisConfig { ..Default::default() }.build_storage().unwrap(); + sp_tracing::try_init_simple(); + t.into() +} diff --git a/xcm/pallet-xcm-benchmarks/src/fungible/mod.rs b/xcm/pallet-xcm-benchmarks/src/fungible/mod.rs new file mode 100644 index 000000000000..e5062c310494 --- /dev/null +++ b/xcm/pallet-xcm-benchmarks/src/fungible/mod.rs @@ -0,0 +1,47 @@ +// Copyright 2021 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +// Benchmarking for the `AssetTransactor` trait via `Fungible`. + +pub use pallet::*; + +pub mod benchmarking; +#[cfg(test)] +mod mock; + +#[frame_support::pallet] +pub mod pallet { + use frame_support::pallet_prelude::Get; + #[pallet::config] + pub trait Config: frame_system::Config + crate::Config { + /// The type of `fungible` that is being used under the hood. + /// + /// This is useful for testing and checking. + type TransactAsset: frame_support::traits::fungible::Mutate; + + /// The account used to check assets being teleported. + type CheckedAccount: Get>; + + /// A trusted location which we allow teleports from, and the asset we allow to teleport. + type TrustedTeleporter: Get>; + + /// Give me a fungible asset that your asset transactor is going to accept. + fn get_multi_asset() -> xcm::latest::MultiAsset; + } + + #[pallet::pallet] + pub struct Pallet(_); +} diff --git a/xcm/pallet-xcm-benchmarks/src/lib.rs b/xcm/pallet-xcm-benchmarks/src/lib.rs new file mode 100644 index 000000000000..cfbb3a478f67 --- /dev/null +++ b/xcm/pallet-xcm-benchmarks/src/lib.rs @@ -0,0 +1,108 @@ +// Copyright 2021 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Pallet that serves no other purpose than benchmarking raw messages [`Xcm`]. + +#![cfg_attr(not(feature = "std"), no_std)] + +use codec::Encode; +use frame_benchmarking::account; +use sp_std::prelude::*; +use xcm::latest::prelude::*; +use xcm_executor::{traits::Convert, Assets}; + +pub mod fungible; + +#[cfg(test)] +mod mock; + +/// A base trait for all individual pallets +pub trait Config: frame_system::Config { + /// The XCM configurations. + /// + /// These might affect the execution of XCM messages, such as defining how the + /// `TransactAsset` is implemented. + type XcmConfig: xcm_executor::Config; + + /// A converter between a multi-location to a sovereign account. + type AccountIdConverter: Convert; + + /// Does any necessary setup to create a valid destination for XCM messages. + /// Returns that destination's multi-location to be used in benchmarks. + fn valid_destination() -> Result; +} + +const SEED: u32 = 0; + +/// The XCM executor to use for doing stuff. +pub type ExecutorOf = xcm_executor::XcmExecutor<::XcmConfig>; +/// The overarching call type. +pub type OverArchingCallOf = ::Call; +/// The asset transactor of our executor +pub type AssetTransactorOf = <::XcmConfig as xcm_executor::Config>::AssetTransactor; +/// The call type of executor's config. Should eventually resolve to the same overarching call type. +pub type XcmCallOf = <::XcmConfig as xcm_executor::Config>::Call; + +/// The worst case number of assets in the holding. +const HOLDING_FUNGIBLES: u32 = 99; +const HOLDING_NON_FUNGIBLES: u32 = 99; + +pub fn worst_case_holding() -> Assets { + let fungibles_amount: u128 = 100; // TODO probably update + (0..HOLDING_FUNGIBLES) + .map(|i| { + MultiAsset { + id: Concrete(GeneralIndex(i as u128).into()), + fun: Fungible(fungibles_amount * i as u128), + } + .into() + }) + .chain(core::iter::once(MultiAsset { id: Concrete(Here.into()), fun: Fungible(u128::MAX) })) + .chain((0..HOLDING_NON_FUNGIBLES).map(|i| MultiAsset { + id: Concrete(GeneralIndex(i as u128).into()), + fun: NonFungible(asset_instance_from(i)), + })) + .collect::>() + .into() +} + +pub fn asset_instance_from(x: u32) -> AssetInstance { + let bytes = x.encode(); + let mut instance = [0u8; 4]; + instance.copy_from_slice(&bytes); + AssetInstance::Array4(instance) +} + +pub fn new_executor(origin: MultiLocation) -> ExecutorOf { + ExecutorOf::::new(origin) +} + +/// Build a multi-location from an account id. +fn account_id_junction(index: u32) -> Junction { + let account: T::AccountId = account("account", index, SEED); + let mut encoded = account.encode(); + encoded.resize(32, 0u8); + let mut id = [0u8; 32]; + id.copy_from_slice(&encoded); + Junction::AccountId32 { network: NetworkId::Any, id } +} + +pub fn account_and_location(index: u32) -> (T::AccountId, MultiLocation) { + let location: MultiLocation = account_id_junction::(index).into(); + let account = T::AccountIdConverter::convert(location.clone()).unwrap(); + + (account, location) +} diff --git a/xcm/pallet-xcm-benchmarks/src/mock.rs b/xcm/pallet-xcm-benchmarks/src/mock.rs new file mode 100644 index 000000000000..d59cf3387268 --- /dev/null +++ b/xcm/pallet-xcm-benchmarks/src/mock.rs @@ -0,0 +1,64 @@ +// Copyright 2021 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +use crate::*; +use frame_support::{parameter_types, weights::Weight}; +use xcm_executor::traits::FilterAssetLocation; + +// An xcm sender/receiver akin to > /dev/null +pub struct DevNull; +impl xcm::opaque::latest::SendXcm for DevNull { + fn send_xcm(_: impl Into, _: Xcm<()>) -> SendResult { + Ok(()) + } +} + +impl xcm_executor::traits::OnResponse for DevNull { + fn expecting_response(_: &MultiLocation, _: u64) -> bool { + false + } + fn on_response(_: &MultiLocation, _: u64, _: Response, _: Weight) -> Weight { + 0 + } +} + +pub struct AccountIdConverter; +impl xcm_executor::traits::Convert for AccountIdConverter { + fn convert(ml: MultiLocation) -> Result { + match ml { + MultiLocation { parents: 0, interior: X1(Junction::AccountId32 { id, .. }) } => + Ok(::decode(&mut &*id.to_vec()).unwrap()), + _ => Err(ml), + } + } + + fn reverse(acc: u64) -> Result { + Err(acc) + } +} + +parameter_types! { + pub Ancestry: MultiLocation = Junction::Parachain(101).into(); + pub UnitWeightCost: Weight = 10; + pub WeightPrice: (AssetId, u128) = (Concrete(Here.into()), 1_000_000); +} + +pub struct AllAssetLocationsPass; +impl FilterAssetLocation for AllAssetLocationsPass { + fn filter_asset_location(_: &MultiAsset, _: &MultiLocation) -> bool { + true + } +} diff --git a/xcm/pallet-xcm-benchmarks/template.hbs b/xcm/pallet-xcm-benchmarks/template.hbs new file mode 100644 index 000000000000..357fa7456aa0 --- /dev/null +++ b/xcm/pallet-xcm-benchmarks/template.hbs @@ -0,0 +1,66 @@ +// Copyright 2017-2021 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see . + +//! Autogenerated weights for `{{pallet}}` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION {{version}} +//! DATE: {{date}}, STEPS: `{{cmd.steps}}`, REPEAT: {{cmd.repeat}}, LOW RANGE: `{{cmd.lowest_range_values}}`, HIGH RANGE: `{{cmd.highest_range_values}}` +//! EXECUTION: {{cmd.execution}}, WASM-EXECUTION: {{cmd.wasm_execution}}, CHAIN: {{cmd.chain}}, DB CACHE: {{cmd.db_cache}} + +// Executed Command: +{{#each args as |arg|~}} +// {{arg}} +{{/each}} + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::Weight}; +use sp_std::marker::PhantomData; + +/// Weights for `{{pallet}}`. +pub struct WeightInfo(PhantomData); +impl WeightInfo { + {{~#each benchmarks as |benchmark|}} + {{~#each benchmark.comments as |comment|}} + // {{comment}} + {{~/each}} + pub(crate) fn {{benchmark.name~}} + ( + {{~#each benchmark.components as |c| ~}} + {{~#if (not c.is_used)}}_{{/if}}{{c.name}}: u32, {{/each~}} + ) -> Weight { + ({{underscore benchmark.base_weight}} as Weight) + {{~#each benchmark.component_weight as |cw|}} + // Standard Error: {{underscore cw.error}} + .saturating_add(({{underscore cw.slope}} as Weight).saturating_mul({{cw.name}} as Weight)) + {{~/each}} + {{~#if (ne benchmark.base_reads "0")}} + .saturating_add(T::DbWeight::get().reads({{benchmark.base_reads}} as Weight)) + {{~/if}} + {{~#each benchmark.component_reads as |cr|}} + .saturating_add(T::DbWeight::get().reads(({{cr.slope}} as Weight).saturating_mul({{cr.name}} as Weight))) + {{~/each}} + {{~#if (ne benchmark.base_writes "0")}} + .saturating_add(T::DbWeight::get().writes({{benchmark.base_writes}} as Weight)) + {{~/if}} + {{~#each benchmark.component_writes as |cw|}} + .saturating_add(T::DbWeight::get().writes(({{cw.slope}} as Weight).saturating_mul({{cw.name}} as Weight))) + {{~/each}} + } + {{~/each}} +} diff --git a/xcm/pallet-xcm/Cargo.toml b/xcm/pallet-xcm/Cargo.toml index 96c6e3d42a31..a9ff97ddc088 100644 --- a/xcm/pallet-xcm/Cargo.toml +++ b/xcm/pallet-xcm/Cargo.toml @@ -2,7 +2,7 @@ authors = ["Parity Technologies "] edition = "2018" name = "pallet-xcm" -version = "0.9.9" +version = "0.9.11" [dependencies] codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] } diff --git a/xcm/pallet-xcm/src/lib.rs b/xcm/pallet-xcm/src/lib.rs index 972e3f926829..0252e22cf450 100644 --- a/xcm/pallet-xcm/src/lib.rs +++ b/xcm/pallet-xcm/src/lib.rs @@ -79,7 +79,7 @@ pub mod pallet { /// The overarching event type. type Event: From> + IsType<::Event>; - /// Required origin for sending XCM messages. If successful, the it resolves to `MultiLocation` + /// Required origin for sending XCM messages. If successful, it resolves to `MultiLocation` /// which exists as an interior location within this chain's XCM context. type SendXcmOrigin: EnsureOrigin<::Origin, Success = MultiLocation>; @@ -328,7 +328,7 @@ pub mod pallet { #[pallet::storage] pub(super) type SafeXcmVersion = StorageValue<_, XcmVersion, OptionQuery>; - /// Latest versions that we know various locations support. + /// The Latest versions that we know various locations support. #[pallet::storage] pub(super) type SupportedVersion = StorageDoubleMap< _, @@ -426,7 +426,7 @@ pub mod pallet { weight_used += T::DbWeight::get().read + T::DbWeight::get().write; q.sort_by_key(|i| i.1); while let Some((versioned_dest, _)) = q.pop() { - if let Ok(dest) = versioned_dest.try_into() { + if let Ok(dest) = MultiLocation::try_from(versioned_dest) { if Self::request_version_notify(dest).is_ok() { // TODO: correct weights. weight_used += T::DbWeight::get().read + T::DbWeight::get().write; @@ -458,7 +458,7 @@ pub mod pallet { message: Box>, ) -> DispatchResult { let origin_location = T::SendXcmOrigin::ensure_origin(origin)?; - let interior = + let interior: Junctions = origin_location.clone().try_into().map_err(|_| Error::::InvalidOrigin)?; let dest = MultiLocation::try_from(*dest).map_err(|()| Error::::BadVersion)?; let message: Xcm<()> = (*message).try_into().map_err(|()| Error::::BadVersion)?; @@ -688,7 +688,8 @@ pub mod pallet { location: Box, ) -> DispatchResult { ensure_root(origin)?; - let location = (*location).try_into().map_err(|()| Error::::BadLocation)?; + let location: MultiLocation = + (*location).try_into().map_err(|()| Error::::BadLocation)?; Self::request_version_notify(location).map_err(|e| { match e { XcmError::InvalidLocation => Error::::AlreadySubscribed, @@ -710,7 +711,8 @@ pub mod pallet { location: Box, ) -> DispatchResult { ensure_root(origin)?; - let location = (*location).try_into().map_err(|()| Error::::BadLocation)?; + let location: MultiLocation = + (*location).try_into().map_err(|()| Error::::BadLocation)?; Self::unrequest_version_notify(location).map_err(|e| { match e { XcmError::InvalidLocation => Error::::NoSubscription, @@ -867,7 +869,8 @@ pub mod pallet { } /// Request that `dest` informs us of its version. - pub fn request_version_notify(dest: MultiLocation) -> XcmResult { + pub fn request_version_notify(dest: impl Into) -> XcmResult { + let dest = dest.into(); let versioned_dest = VersionedMultiLocation::from(dest.clone()); let already = VersionNotifiers::::contains_key(XCM_VERSION, &versioned_dest); ensure!(!already, XcmError::InvalidLocation); @@ -887,7 +890,8 @@ pub mod pallet { } /// Request that `dest` ceases informing us of its version. - pub fn unrequest_version_notify(dest: MultiLocation) -> XcmResult { + pub fn unrequest_version_notify(dest: impl Into) -> XcmResult { + let dest = dest.into(); let versioned_dest = LatestVersionedMultiLocation(&dest); let query_id = VersionNotifiers::::take(XCM_VERSION, versioned_dest) .ok_or(XcmError::InvalidLocation)?; @@ -899,10 +903,12 @@ pub mod pallet { /// Relay an XCM `message` from a given `interior` location in this context to a given `dest` /// location. A null `dest` is not handled. pub fn send_xcm( - interior: Junctions, - dest: MultiLocation, + interior: impl Into, + dest: impl Into, mut message: Xcm<()>, ) -> Result<(), SendError> { + let interior = interior.into(); + let dest = dest.into(); if interior != Junctions::Here { message.0.insert(0, DescendOrigin(interior)) }; @@ -916,7 +922,7 @@ pub mod pallet { } fn do_new_query( - responder: MultiLocation, + responder: impl Into, maybe_notify: Option<(u8, u8)>, timeout: T::BlockNumber, ) -> u64 { @@ -925,7 +931,11 @@ pub mod pallet { q.saturating_inc(); Queries::::insert( r, - QueryStatus::Pending { responder: responder.into(), maybe_notify, timeout }, + QueryStatus::Pending { + responder: responder.into().into(), + maybe_notify, + timeout, + }, ); r }) @@ -945,9 +955,10 @@ pub mod pallet { /// value. pub fn report_outcome( message: &mut Xcm<()>, - responder: MultiLocation, + responder: impl Into, timeout: T::BlockNumber, ) -> Result { + let responder = responder.into(); let dest = T::LocationInverter::invert_location(&responder) .map_err(|()| XcmError::MultiLocationNotInvertible)?; let query_id = Self::new_query(responder, timeout); @@ -978,10 +989,11 @@ pub mod pallet { /// may be put in the overweight queue and need to be manually executed. pub fn report_outcome_notify( message: &mut Xcm<()>, - responder: MultiLocation, + responder: impl Into, notify: impl Into<::Call>, timeout: T::BlockNumber, ) -> Result<(), XcmError> { + let responder = responder.into(); let dest = T::LocationInverter::invert_location(&responder) .map_err(|()| XcmError::MultiLocationNotInvertible)?; let notify: ::Call = notify.into(); @@ -993,14 +1005,14 @@ pub mod pallet { } /// Attempt to create a new query ID and register it as a query that is yet to respond. - pub fn new_query(responder: MultiLocation, timeout: T::BlockNumber) -> u64 { + pub fn new_query(responder: impl Into, timeout: T::BlockNumber) -> u64 { Self::do_new_query(responder, None, timeout) } /// Attempt to create a new query ID and register it as a query that is yet to respond, and /// which will call a dispatchable when a response happens. pub fn new_notify_query( - responder: MultiLocation, + responder: impl Into, notify: impl Into<::Call>, timeout: T::BlockNumber, ) -> u64 { @@ -1086,6 +1098,7 @@ pub mod pallet { Ok(()) } } + impl DropAssets for Pallet { fn drop_assets(origin: &MultiLocation, assets: Assets) -> Weight { if assets.is_empty() { @@ -1368,7 +1381,11 @@ where /// this crate's `Origin::Xcm` value. pub struct XcmPassthrough(PhantomData); impl> ConvertOrigin for XcmPassthrough { - fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result { + fn convert_origin( + origin: impl Into, + kind: OriginKind, + ) -> Result { + let origin = origin.into(); match kind { OriginKind::Xcm => Ok(crate::Origin::Xcm(origin).into()), _ => Err(origin), diff --git a/xcm/pallet-xcm/src/mock.rs b/xcm/pallet-xcm/src/mock.rs index d6ccbd4abfc9..7c5a835b7851 100644 --- a/xcm/pallet-xcm/src/mock.rs +++ b/xcm/pallet-xcm/src/mock.rs @@ -147,15 +147,16 @@ pub(crate) fn take_sent_xcm() -> Vec<(MultiLocation, Xcm<()>)> { /// Sender that never returns error, always sends pub struct TestSendXcm; impl SendXcm for TestSendXcm { - fn send_xcm(dest: MultiLocation, msg: Xcm<()>) -> SendResult { - SENT_XCM.with(|q| q.borrow_mut().push((dest, msg))); + fn send_xcm(dest: impl Into, msg: Xcm<()>) -> SendResult { + SENT_XCM.with(|q| q.borrow_mut().push((dest.into(), msg))); Ok(()) } } /// Sender that returns error if `X8` junction and stops routing pub struct TestSendXcmErrX8; impl SendXcm for TestSendXcmErrX8 { - fn send_xcm(dest: MultiLocation, msg: Xcm<()>) -> SendResult { + fn send_xcm(dest: impl Into, msg: Xcm<()>) -> SendResult { + let dest = dest.into(); if dest.len() == 8 { Err(SendError::Transport("Destination location full")) } else { diff --git a/xcm/pallet-xcm/src/tests.rs b/xcm/pallet-xcm/src/tests.rs index 82e6c524f269..5b9a3a177a36 100644 --- a/xcm/pallet-xcm/src/tests.rs +++ b/xcm/pallet-xcm/src/tests.rs @@ -74,7 +74,7 @@ fn report_outcome_notify_works() { Parachain(PARA_ID).into(), Xcm(vec![QueryResponse { query_id: 0, - response: Response::ExecutionResult(Ok(())), + response: Response::ExecutionResult(None), max_weight: 1_000_000, }]), 1_000_000_000, @@ -86,7 +86,7 @@ fn report_outcome_notify_works() { Event::TestNotifier(pallet_test_notifier::Event::ResponseReceived( Parachain(PARA_ID).into(), 0, - Response::ExecutionResult(Ok(())), + Response::ExecutionResult(None), )), Event::XcmPallet(crate::Event::Notified(0, 4, 2)), ] @@ -128,7 +128,7 @@ fn report_outcome_works() { Parachain(PARA_ID).into(), Xcm(vec![QueryResponse { query_id: 0, - response: Response::ExecutionResult(Ok(())), + response: Response::ExecutionResult(None), max_weight: 0, }]), 1_000_000_000, @@ -136,10 +136,10 @@ fn report_outcome_works() { assert_eq!(r, Outcome::Complete(1_000)); assert_eq!( last_event(), - Event::XcmPallet(crate::Event::ResponseReady(0, Response::ExecutionResult(Ok(())),)) + Event::XcmPallet(crate::Event::ResponseReady(0, Response::ExecutionResult(None),)) ); - let response = Some((Response::ExecutionResult(Ok(())), 1)); + let response = Some((Response::ExecutionResult(None), 1)); assert_eq!(XcmPallet::take_response(0), response); }); } diff --git a/xcm/procedural/Cargo.toml b/xcm/procedural/Cargo.toml index 0f4b929076f3..fde65dcdd51a 100644 --- a/xcm/procedural/Cargo.toml +++ b/xcm/procedural/Cargo.toml @@ -10,4 +10,4 @@ proc-macro = true [dependencies] proc-macro2 = "1.0.28" quote = "1.0.9" -syn = "1.0.76" +syn = "1.0.77" diff --git a/xcm/src/v1/multilocation.rs b/xcm/src/v1/multilocation.rs index 9c472553a37c..9931ba4a6137 100644 --- a/xcm/src/v1/multilocation.rs +++ b/xcm/src/v1/multilocation.rs @@ -99,7 +99,7 @@ impl MultiLocation { MultiLocation { parents, interior: Junctions::Here } } - /// Whether or not the `MultiLocation` has no parents and has a `Here` interior. + /// Whether the `MultiLocation` has no parents and has a `Here` interior. pub const fn is_here(&self) -> bool { self.parents == 0 && self.interior.len() == 0 } @@ -119,7 +119,7 @@ impl MultiLocation { self.parents } - /// Returns boolean indicating whether or not `self` contains only the specified amount of + /// Returns boolean indicating whether `self` contains only the specified amount of /// parents and no interior junctions. pub const fn contains_parents_only(&self, count: u8) -> bool { matches!(self.interior, Junctions::Here) && self.parents == count @@ -338,8 +338,8 @@ impl From for MultiLocation { #[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Debug)] pub struct ParentThen(Junctions); impl From for MultiLocation { - fn from(x: ParentThen) -> Self { - MultiLocation { parents: 1, interior: x.0 } + fn from(ParentThen(interior): ParentThen) -> Self { + MultiLocation { parents: 1, interior } } } @@ -347,8 +347,8 @@ impl From for MultiLocation { #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Debug)] pub struct Ancestor(u8); impl From for MultiLocation { - fn from(x: Ancestor) -> Self { - MultiLocation { parents: x.0, interior: Junctions::Here } + fn from(Ancestor(parents): Ancestor) -> Self { + MultiLocation { parents, interior: Junctions::Here } } } @@ -356,8 +356,8 @@ impl From for MultiLocation { #[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Debug)] pub struct AncestorThen(u8, Junctions); impl From for MultiLocation { - fn from(x: AncestorThen) -> Self { - MultiLocation { parents: x.0, interior: x.1 } + fn from(AncestorThen(parents, interior): AncestorThen) -> Self { + MultiLocation { parents, interior } } } diff --git a/xcm/src/v1/traits.rs b/xcm/src/v1/traits.rs index 445ab25d4c7f..d95d9e1eb84a 100644 --- a/xcm/src/v1/traits.rs +++ b/xcm/src/v1/traits.rs @@ -146,7 +146,12 @@ pub trait ExecuteXcm { /// Execute some XCM `message` from `origin` using no more than `weight_limit` weight. The weight limit is /// a basic hard-limit and the implementation may place further restrictions or requirements on weight and /// other aspects. - fn execute_xcm(origin: MultiLocation, message: Xcm, weight_limit: Weight) -> Outcome { + fn execute_xcm( + origin: impl Into, + message: Xcm, + weight_limit: Weight, + ) -> Outcome { + let origin = origin.into(); log::debug!( target: "xcm::execute_xcm", "origin: {:?}, message: {:?}, weight_limit: {:?}", @@ -162,7 +167,7 @@ pub trait ExecuteXcm { /// Some amount of `weight_credit` may be provided which, depending on the implementation, may allow /// execution without associated payment. fn execute_xcm_in_credit( - origin: MultiLocation, + origin: impl Into, message: Xcm, weight_limit: Weight, weight_credit: Weight, @@ -171,7 +176,7 @@ pub trait ExecuteXcm { impl ExecuteXcm for () { fn execute_xcm_in_credit( - _origin: MultiLocation, + _origin: impl Into, _message: Xcm, _weight_limit: Weight, _weight_credit: Weight, @@ -195,15 +200,16 @@ impl ExecuteXcm for () { /// /// A sender that only passes the message through and does nothing. /// struct Sender1; /// impl SendXcm for Sender1 { -/// fn send_xcm(destination: MultiLocation, message: Xcm<()>) -> Result { -/// return Err(Error::CannotReachDestination(destination, message)) +/// fn send_xcm(destination: impl Into, message: Xcm<()>) -> Result { +/// return Err(Error::CannotReachDestination(destination.into(), message)) /// } /// } /// /// /// A sender that accepts a message that has an X2 junction, otherwise stops the routing. /// struct Sender2; /// impl SendXcm for Sender2 { -/// fn send_xcm(destination: MultiLocation, message: Xcm<()>) -> Result { +/// fn send_xcm(destination: impl Into, message: Xcm<()>) -> Result { +/// let destination = destination.into(); /// if matches!(destination.interior(), Junctions::X2(j1, j2)) /// && destination.parent_count() == 0 /// { @@ -217,7 +223,8 @@ impl ExecuteXcm for () { /// /// A sender that accepts a message from an X1 parent junction, passing through otherwise. /// struct Sender3; /// impl SendXcm for Sender3 { -/// fn send_xcm(destination: MultiLocation, message: Xcm<()>) -> Result { +/// fn send_xcm(destination: impl Into, message: Xcm<()>) -> Result { +/// let destination = destination.into(); /// if matches!(destination.interior(), Junctions::Here) /// && destination.parent_count() == 1 /// { @@ -232,17 +239,16 @@ impl ExecuteXcm for () { /// # fn main() { /// let call: Vec = ().encode(); /// let message = Xcm::Transact { origin_type: OriginKind::Superuser, require_weight_at_most: 0, call: call.into() }; -/// let destination: MultiLocation = Parent.into(); /// /// assert!( /// // Sender2 will block this. -/// <(Sender1, Sender2, Sender3) as SendXcm>::send_xcm(destination.clone(), message.clone()) +/// <(Sender1, Sender2, Sender3) as SendXcm>::send_xcm(Parent, message.clone()) /// .is_err() /// ); /// /// assert!( /// // Sender3 will catch this. -/// <(Sender1, Sender3) as SendXcm>::send_xcm(destination.clone(), message.clone()) +/// <(Sender1, Sender3) as SendXcm>::send_xcm(Parent, message.clone()) /// .is_ok() /// ); /// # } @@ -253,12 +259,12 @@ pub trait SendXcm { /// If it is not a destination which can be reached with this type but possibly could by others, then it *MUST* /// return `CannotReachDestination`. Any other error will cause the tuple implementation to exit early without /// trying other type fields. - fn send_xcm(destination: MultiLocation, message: Xcm<()>) -> Result; + fn send_xcm(destination: impl Into, message: Xcm<()>) -> Result; } #[impl_trait_for_tuples::impl_for_tuples(30)] impl SendXcm for Tuple { - fn send_xcm(destination: MultiLocation, message: Xcm<()>) -> Result { + fn send_xcm(destination: impl Into, message: Xcm<()>) -> Result { for_tuples!( #( // we shadow `destination` and `message` in each expansion for the next one. let (destination, message) = match Tuple::send_xcm(destination, message) { @@ -266,6 +272,6 @@ impl SendXcm for Tuple { o @ _ => return o, }; )* ); - Err(Error::CannotReachDestination(destination, message)) + Err(Error::CannotReachDestination(destination.into(), message)) } } diff --git a/xcm/src/v2/mod.rs b/xcm/src/v2/mod.rs index 2456884e7972..60bec66ed963 100644 --- a/xcm/src/v2/mod.rs +++ b/xcm/src/v2/mod.rs @@ -152,7 +152,7 @@ pub enum Response { /// Some assets. Assets(MultiAssets), /// The outcome of an XCM instruction. - ExecutionResult(result::Result<(), (u32, Error)>), + ExecutionResult(Option<(u32, Error)>), /// An XCM version. Version(super::Version), } diff --git a/xcm/src/v2/traits.rs b/xcm/src/v2/traits.rs index a28137b00052..d1e1381f4de3 100644 --- a/xcm/src/v2/traits.rs +++ b/xcm/src/v2/traits.rs @@ -24,90 +24,90 @@ use super::*; #[derive(Copy, Clone, Encode, Decode, Eq, PartialEq, Debug, TypeInfo)] pub enum Error { - Undefined, + // Errors that happen due to instructions being executed. These alone are defined in the + // XCM specification. /// An arithmetic overflow happened. + #[codec(index = 0)] Overflow, - /// The operation is intentionally unsupported. + /// The instruction is intentionally unsupported. + #[codec(index = 1)] Unimplemented, - UnhandledXcmVersion, - /// The implementation does not handle a given XCM. - UnhandledXcmMessage, - /// The implementation does not handle an effect present in an XCM. - UnhandledEffect, - EscalationOfPrivilege, + /// Origin Register does not contain a value value for a reserve transfer notification. + #[codec(index = 2)] UntrustedReserveLocation, + /// Origin Register does not contain a value value for a teleport notification. + #[codec(index = 3)] UntrustedTeleportLocation, - DestinationBufferOverflow, + /// `MultiLocation` value too large to descend further. + #[codec(index = 4)] MultiLocationFull, + /// `MultiLocation` value ascend more parents than known ancestors of local location. + #[codec(index = 5)] MultiLocationNotInvertible, - FailedToDecode, + /// The Origin Register does not contain a valid value for instruction. + #[codec(index = 6)] BadOrigin, - ExceedsMaxMessageSize, - /// An asset transaction (like withdraw or deposit) failed. - /// See implementers of the `TransactAsset` trait for sources. - /// Causes can include type conversion failures between id or balance types. + /// The location parameter is not a valid value for the instruction. + #[codec(index = 7)] + InvalidLocation, + /// The given asset is not handled. + #[codec(index = 8)] + AssetNotFound, + /// An asset transaction (like withdraw or deposit) failed (typically due to type conversions). + #[codec(index = 9)] FailedToTransactAsset(#[codec(skip)] &'static str), - /// Execution of the XCM would potentially result in a greater weight used than the pre-specified - /// weight limit. The amount that is potentially required is the parameter. - WeightLimitReached(Weight), - /// An asset wildcard was passed where it was not expected (e.g. as the asset to withdraw in a - /// `WithdrawAsset` XCM). - Wildcard, - /// The case where an XCM message has specified a optional weight limit and the weight required for - /// processing is too great. - /// - /// Used by: - /// - `Transact` - TooMuchWeightRequired, - /// The fees specified by the XCM message were not found in the holding register. - /// - /// Used by: - /// - `BuyExecution` - NotHoldingFees, - /// The weight of an XCM message is not computable ahead of execution. This generally means at least part - /// of the message is invalid, which could be due to it containing overly nested structures or an invalid - /// nested data segment (e.g. for the call in `Transact`). - WeightNotComputable, - /// The XCM did not pass the barrier condition for execution. The barrier condition differs on different - /// chains and in different circumstances, but generally it means that the conditions surrounding the message - /// were not such that the chain considers the message worth spending time executing. Since most chains - /// lift the barrier to execution on appropriate payment, presentation of an NFT voucher, or based on the - /// message origin, it means that none of those were the case. - Barrier, - /// Indicates that it is not possible for a location to have an asset be withdrawn or transferred from its - /// ownership. This probably means it doesn't own (enough of) it, but may also indicate that it is under a - /// lock, hold, freeze or is otherwise unavailable. + /// An asset cannot be withdrawn, potentially due to lack of ownership, availability or rights. + #[codec(index = 10)] NotWithdrawable, - /// Indicates that the consensus system cannot deposit an asset under the ownership of a particular location. + /// An asset cannot be deposited under the ownership of a particular location. + #[codec(index = 11)] LocationCannotHold, - /// The assets given to purchase weight is are insufficient for the weight desired. - TooExpensive, - /// The given asset is not handled. - AssetNotFound, - /// The given message cannot be translated into a format that the destination can be expected to interpret. + /// Attempt to send a message greater than the maximum supported by the transport protocol. + #[codec(index = 12)] + ExceedsMaxMessageSize, + /// The given message cannot be translated into a format supported by the destination. + #[codec(index = 13)] DestinationUnsupported, - /// `execute_xcm` has been called too many times recursively. - RecursionLimitReached, /// Destination is routable, but there is some issue with the transport mechanism. - /// - /// A human-readable explanation of the specific issue is provided. + #[codec(index = 14)] Transport(#[codec(skip)] &'static str), /// Destination is known to be unroutable. + #[codec(index = 15)] Unroutable, - /// The weight required was not specified when it should have been. - UnknownWeightRequired, - /// An error was intentionally forced. A code is included. - Trap(u64), - /// The given claim could not be recognized/found. + /// Used by `ClaimAsset` when the given claim could not be recognized/found. + #[codec(index = 16)] UnknownClaim, - /// The location given was invalid for some reason specific to the operation at hand. - InvalidLocation, -} + /// Used by `Transact` when the functor cannot be decoded. + #[codec(index = 17)] + FailedToDecode, + /// Used by `Transact` to indicate that the given weight limit could be breached by the functor. + #[codec(index = 18)] + TooMuchWeightRequired, + /// Used by `BuyExecution` when the Holding Register does not contain payable fees. + #[codec(index = 19)] + NotHoldingFees, + /// Used by `BuyExecution` when the fees declared to purchase weight are insufficient. + #[codec(index = 20)] + TooExpensive, + /// Used by the `Trap` instruction to force an error intentionally. Its code is included. + #[codec(index = 21)] + Trap(u64), -impl From<()> for Error { - fn from(_: ()) -> Self { - Self::Undefined - } + // Errors that happen prior to instructions being executed. These fall outside of the XCM spec. + /// XCM version not able to be handled. + UnhandledXcmVersion, + /// Execution of the XCM would potentially result in a greater weight used than weight limit. + WeightLimitReached(Weight), + /// The XCM did not pass the barrier condition for execution. + /// + /// The barrier condition differs on different chains and in different circumstances, but + /// generally it means that the conditions surrounding the message were not such that the chain + /// considers the message worth spending time executing. Since most chains lift the barrier to + /// execution on appropriate payment, presentation of an NFT voucher, or based on the message + /// origin, it means that none of those were the case. + Barrier, + /// The weight of an XCM message is not computable ahead of execution. + WeightNotComputable, } impl From for Error { @@ -167,7 +167,12 @@ pub trait ExecuteXcm { /// Execute some XCM `message` from `origin` using no more than `weight_limit` weight. The weight limit is /// a basic hard-limit and the implementation may place further restrictions or requirements on weight and /// other aspects. - fn execute_xcm(origin: MultiLocation, message: Xcm, weight_limit: Weight) -> Outcome { + fn execute_xcm( + origin: impl Into, + message: Xcm, + weight_limit: Weight, + ) -> Outcome { + let origin = origin.into(); log::debug!( target: "xcm::execute_xcm", "origin: {:?}, message: {:?}, weight_limit: {:?}", @@ -183,7 +188,7 @@ pub trait ExecuteXcm { /// Some amount of `weight_credit` may be provided which, depending on the implementation, may allow /// execution without associated payment. fn execute_xcm_in_credit( - origin: MultiLocation, + origin: impl Into, message: Xcm, weight_limit: Weight, weight_credit: Weight, @@ -192,7 +197,7 @@ pub trait ExecuteXcm { impl ExecuteXcm for () { fn execute_xcm_in_credit( - _origin: MultiLocation, + _origin: impl Into, _message: Xcm, _weight_limit: Weight, _weight_credit: Weight, @@ -241,16 +246,16 @@ pub type SendResult = result::Result<(), SendError>; /// /// A sender that only passes the message through and does nothing. /// struct Sender1; /// impl SendXcm for Sender1 { -/// fn send_xcm(destination: MultiLocation, message: Xcm<()>) -> SendResult { -/// return Err(SendError::CannotReachDestination(destination, message)) +/// fn send_xcm(destination: impl Into, message: Xcm<()>) -> SendResult { +/// return Err(SendError::CannotReachDestination(destination.into(), message)) /// } /// } /// /// /// A sender that accepts a message that has an X2 junction, otherwise stops the routing. /// struct Sender2; /// impl SendXcm for Sender2 { -/// fn send_xcm(destination: MultiLocation, message: Xcm<()>) -> SendResult { -/// if let MultiLocation { parents: 0, interior: X2(j1, j2) } = destination { +/// fn send_xcm(destination: impl Into, message: Xcm<()>) -> SendResult { +/// if let MultiLocation { parents: 0, interior: X2(j1, j2) } = destination.into() { /// Ok(()) /// } else { /// Err(SendError::Unroutable) @@ -261,7 +266,8 @@ pub type SendResult = result::Result<(), SendError>; /// /// A sender that accepts a message from a parent, passing through otherwise. /// struct Sender3; /// impl SendXcm for Sender3 { -/// fn send_xcm(destination: MultiLocation, message: Xcm<()>) -> SendResult { +/// fn send_xcm(destination: impl Into, message: Xcm<()>) -> SendResult { +/// let destination = destination.into(); /// match destination { /// MultiLocation { parents: 1, interior: Here } => Ok(()), /// _ => Err(SendError::CannotReachDestination(destination, message)), @@ -277,17 +283,16 @@ pub type SendResult = result::Result<(), SendError>; /// require_weight_at_most: 0, /// call: call.into(), /// }]); -/// let destination = MultiLocation::parent(); /// /// assert!( /// // Sender2 will block this. -/// <(Sender1, Sender2, Sender3) as SendXcm>::send_xcm(destination.clone(), message.clone()) +/// <(Sender1, Sender2, Sender3) as SendXcm>::send_xcm(Parent, message.clone()) /// .is_err() /// ); /// /// assert!( /// // Sender3 will catch this. -/// <(Sender1, Sender3) as SendXcm>::send_xcm(destination.clone(), message.clone()) +/// <(Sender1, Sender3) as SendXcm>::send_xcm(Parent, message.clone()) /// .is_ok() /// ); /// # } @@ -298,12 +303,12 @@ pub trait SendXcm { /// If it is not a destination which can be reached with this type but possibly could by others, then it *MUST* /// return `CannotReachDestination`. Any other error will cause the tuple implementation to exit early without /// trying other type fields. - fn send_xcm(destination: MultiLocation, message: Xcm<()>) -> SendResult; + fn send_xcm(destination: impl Into, message: Xcm<()>) -> SendResult; } #[impl_trait_for_tuples::impl_for_tuples(30)] impl SendXcm for Tuple { - fn send_xcm(destination: MultiLocation, message: Xcm<()>) -> SendResult { + fn send_xcm(destination: impl Into, message: Xcm<()>) -> SendResult { for_tuples!( #( // we shadow `destination` and `message` in each expansion for the next one. let (destination, message) = match Tuple::send_xcm(destination, message) { @@ -311,7 +316,7 @@ impl SendXcm for Tuple { o @ _ => return o, }; )* ); - Err(SendError::CannotReachDestination(destination, message)) + Err(SendError::CannotReachDestination(destination.into(), message)) } } diff --git a/xcm/xcm-builder/Cargo.toml b/xcm/xcm-builder/Cargo.toml index b482c5799a4f..08f37b515ca7 100644 --- a/xcm/xcm-builder/Cargo.toml +++ b/xcm/xcm-builder/Cargo.toml @@ -3,10 +3,10 @@ authors = ["Parity Technologies "] edition = "2018" name = "xcm-builder" description = "Tools & types for building with XCM and its executor." -version = "0.9.9" +version = "0.9.11" [dependencies] -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] } scale-info = { version = "1.0", default-features = false, features = ["derive"] } xcm = { path = "..", default-features = false } xcm-executor = { path = "../xcm-executor", default-features = false } diff --git a/xcm/xcm-builder/src/lib.rs b/xcm/xcm-builder/src/lib.rs index e2caff56bf36..72bb8b61c0ff 100644 --- a/xcm/xcm-builder/src/lib.rs +++ b/xcm/xcm-builder/src/lib.rs @@ -57,7 +57,9 @@ pub use fungibles_adapter::{ mod weight; #[allow(deprecated)] pub use weight::FixedRateOfConcreteFungible; -pub use weight::{FixedRateOfFungible, FixedWeightBounds, TakeRevenue, UsingComponents}; +pub use weight::{ + FixedRateOfFungible, FixedWeightBounds, TakeRevenue, UsingComponents, WeightInfoBounds, +}; mod matches_fungible; pub use matches_fungible::{IsAbstract, IsConcrete}; diff --git a/xcm/xcm-builder/src/mock.rs b/xcm/xcm-builder/src/mock.rs index 67a2cd8c9aec..4efc02b7e191 100644 --- a/xcm/xcm-builder/src/mock.rs +++ b/xcm/xcm-builder/src/mock.rs @@ -109,8 +109,8 @@ pub fn sent_xcm() -> Vec<(MultiLocation, opaque::Xcm)> { } pub struct TestSendXcm; impl SendXcm for TestSendXcm { - fn send_xcm(dest: MultiLocation, msg: opaque::Xcm) -> SendResult { - SENT_XCM.with(|q| q.borrow_mut().push((dest, msg))); + fn send_xcm(dest: impl Into, msg: opaque::Xcm) -> SendResult { + SENT_XCM.with(|q| q.borrow_mut().push((dest.into(), msg))); Ok(()) } } @@ -164,11 +164,11 @@ pub fn to_account(l: MultiLocation) -> Result { pub struct TestOriginConverter; impl ConvertOrigin for TestOriginConverter { fn convert_origin( - origin: MultiLocation, + origin: impl Into, kind: OriginKind, ) -> Result { use OriginKind::*; - match (kind, origin) { + match (kind, origin.into()) { (Superuser, _) => Ok(TestOrigin::Root), (SovereignAccount, l) => Ok(TestOrigin::Signed(to_account(l)?)), (Native, MultiLocation { parents: 0, interior: X1(Parachain(id)) }) => diff --git a/xcm/xcm-builder/src/origin_conversion.rs b/xcm/xcm-builder/src/origin_conversion.rs index b1800de2c6c8..9f33347e378d 100644 --- a/xcm/xcm-builder/src/origin_conversion.rs +++ b/xcm/xcm-builder/src/origin_conversion.rs @@ -32,7 +32,11 @@ impl, Origin: Origi where Origin::AccountId: Clone, { - fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result { + fn convert_origin( + origin: impl Into, + kind: OriginKind, + ) -> Result { + let origin = origin.into(); if let OriginKind::SovereignAccount = kind { let location = LocationConverter::convert(origin)?; Ok(Origin::signed(location).into()) @@ -44,7 +48,11 @@ where pub struct ParentAsSuperuser(PhantomData); impl ConvertOrigin for ParentAsSuperuser { - fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result { + fn convert_origin( + origin: impl Into, + kind: OriginKind, + ) -> Result { + let origin = origin.into(); if kind == OriginKind::Superuser && origin.contains_parents_only(1) { Ok(Origin::root()) } else { @@ -57,8 +65,11 @@ pub struct ChildSystemParachainAsSuperuser(PhantomData<(ParaId, impl, Origin: OriginTrait> ConvertOrigin for ChildSystemParachainAsSuperuser { - fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result { - match (kind, origin) { + fn convert_origin( + origin: impl Into, + kind: OriginKind, + ) -> Result { + match (kind, origin.into()) { ( OriginKind::Superuser, MultiLocation { parents: 0, interior: X1(Junction::Parachain(id)) }, @@ -72,8 +83,11 @@ pub struct SiblingSystemParachainAsSuperuser(PhantomData<(ParaId impl, Origin: OriginTrait> ConvertOrigin for SiblingSystemParachainAsSuperuser { - fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result { - match (kind, origin) { + fn convert_origin( + origin: impl Into, + kind: OriginKind, + ) -> Result { + match (kind, origin.into()) { ( OriginKind::Superuser, MultiLocation { parents: 1, interior: X1(Junction::Parachain(id)) }, @@ -87,8 +101,11 @@ pub struct ChildParachainAsNative(PhantomData<(Parachai impl, Origin: From> ConvertOrigin for ChildParachainAsNative { - fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result { - match (kind, origin) { + fn convert_origin( + origin: impl Into, + kind: OriginKind, + ) -> Result { + match (kind, origin.into()) { ( OriginKind::Native, MultiLocation { parents: 0, interior: X1(Junction::Parachain(id)) }, @@ -104,8 +121,11 @@ pub struct SiblingParachainAsNative( impl, Origin: From> ConvertOrigin for SiblingParachainAsNative { - fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result { - match (kind, origin) { + fn convert_origin( + origin: impl Into, + kind: OriginKind, + ) -> Result { + match (kind, origin.into()) { ( OriginKind::Native, MultiLocation { parents: 1, interior: X1(Junction::Parachain(id)) }, @@ -120,7 +140,11 @@ pub struct RelayChainAsNative(PhantomData<(RelayOrigin, Ori impl, Origin> ConvertOrigin for RelayChainAsNative { - fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result { + fn convert_origin( + origin: impl Into, + kind: OriginKind, + ) -> Result { + let origin = origin.into(); if kind == OriginKind::Native && origin.contains_parents_only(1) { Ok(RelayOrigin::get()) } else { @@ -135,8 +159,11 @@ impl, Origin: OriginTrait> ConvertOrigin where Origin::AccountId: From<[u8; 32]>, { - fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result { - match (kind, origin) { + fn convert_origin( + origin: impl Into, + kind: OriginKind, + ) -> Result { + match (kind, origin.into()) { ( OriginKind::Native, MultiLocation { parents: 0, interior: X1(Junction::AccountId32 { id, network }) }, @@ -153,8 +180,11 @@ impl, Origin: OriginTrait> ConvertOrigin where Origin::AccountId: From<[u8; 20]>, { - fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result { - match (kind, origin) { + fn convert_origin( + origin: impl Into, + kind: OriginKind, + ) -> Result { + match (kind, origin.into()) { ( OriginKind::Native, MultiLocation { parents: 0, interior: X1(Junction::AccountKey20 { key, network }) }, diff --git a/xcm/xcm-builder/src/tests.rs b/xcm/xcm-builder/src/tests.rs index 746d9cbb6ce7..e3e5e24ca1b0 100644 --- a/xcm/xcm-builder/src/tests.rs +++ b/xcm/xcm-builder/src/tests.rs @@ -150,7 +150,6 @@ fn paying_reserve_deposit_should_work() { add_reserve(Parent.into(), (Parent, WildFungible).into()); WeightPrice::set((Parent.into(), 1_000_000_000_000)); - let origin = Parent.into(); let fees = (Parent, 30).into(); let message = Xcm(vec![ ReserveAssetDeposited((Parent, 100).into()), @@ -158,7 +157,7 @@ fn paying_reserve_deposit_should_work() { DepositAsset { assets: All.into(), max_assets: 1, beneficiary: Here.into() }, ]); let weight_limit = 50; - let r = XcmExecutor::::execute_xcm(origin, message, weight_limit); + let r = XcmExecutor::::execute_xcm(Parent, message, weight_limit); assert_eq!(r, Outcome::Complete(30)); assert_eq!(assets(3000), vec![(Parent, 70).into()]); } @@ -171,7 +170,7 @@ fn transfer_should_work() { add_asset(1001, (Here, 1000)); // They want to transfer 100 of them to their sibling parachain #2 let r = XcmExecutor::::execute_xcm( - Parachain(1).into(), + Parachain(1), Xcm(vec![TransferAsset { assets: (Here, 100).into(), beneficiary: X1(AccountIndex64 { index: 3, network: Any }).into(), @@ -434,7 +433,7 @@ fn reserve_transfer_should_work() { // They want to transfer 100 of our native asset from sovereign account of parachain #1 into #2 // and let them know to hand it to account #3. let r = XcmExecutor::::execute_xcm( - Parachain(1).into(), + Parachain(1), Xcm(vec![TransferReserveAsset { assets: (Here, 100).into(), dest: Parachain(2).into(), @@ -482,8 +481,7 @@ fn simple_version_subscriptions_should_work() { let r = XcmExecutor::::execute_xcm(origin, message.clone(), weight_limit); assert_eq!(r, Outcome::Error(XcmError::Barrier)); - let origin = Parent.into(); - let r = XcmExecutor::::execute_xcm(origin, message, weight_limit); + let r = XcmExecutor::::execute_xcm(Parent, message, weight_limit); assert_eq!(r, Outcome::Complete(10)); assert_eq!(SubscriptionRequests::get(), vec![(Parent.into(), Some((42, 5000)))]); @@ -536,8 +534,7 @@ fn simple_version_unsubscriptions_should_work() { let r = XcmExecutor::::execute_xcm(origin, message.clone(), weight_limit); assert_eq!(r, Outcome::Error(XcmError::Barrier)); - let origin = Parent.into(); - let r = XcmExecutor::::execute_xcm(origin, message, weight_limit); + let r = XcmExecutor::::execute_xcm(Parent, message, weight_limit); assert_eq!(r, Outcome::Complete(10)); assert_eq!(SubscriptionRequests::get(), vec![(Parent.into(), None)]); @@ -580,14 +577,13 @@ fn version_unsubscription_instruction_should_work() { fn transacting_should_work() { AllowUnpaidFrom::set(vec![Parent.into()]); - let origin = Parent.into(); let message = Xcm::(vec![Transact { origin_type: OriginKind::Native, require_weight_at_most: 50, call: TestCall::Any(50, None).encode().into(), }]); let weight_limit = 60; - let r = XcmExecutor::::execute_xcm(origin, message, weight_limit); + let r = XcmExecutor::::execute_xcm(Parent, message, weight_limit); assert_eq!(r, Outcome::Complete(60)); } @@ -595,14 +591,13 @@ fn transacting_should_work() { fn transacting_should_respect_max_weight_requirement() { AllowUnpaidFrom::set(vec![Parent.into()]); - let origin = Parent.into(); let message = Xcm::(vec![Transact { origin_type: OriginKind::Native, require_weight_at_most: 40, call: TestCall::Any(50, None).encode().into(), }]); let weight_limit = 60; - let r = XcmExecutor::::execute_xcm(origin, message, weight_limit); + let r = XcmExecutor::::execute_xcm(Parent, message, weight_limit); assert_eq!(r, Outcome::Incomplete(50, XcmError::TooMuchWeightRequired)); } @@ -610,14 +605,13 @@ fn transacting_should_respect_max_weight_requirement() { fn transacting_should_refund_weight() { AllowUnpaidFrom::set(vec![Parent.into()]); - let origin = Parent.into(); let message = Xcm::(vec![Transact { origin_type: OriginKind::Native, require_weight_at_most: 50, call: TestCall::Any(50, Some(30)).encode().into(), }]); let weight_limit = 60; - let r = XcmExecutor::::execute_xcm(origin, message, weight_limit); + let r = XcmExecutor::::execute_xcm(Parent, message, weight_limit); assert_eq!(r, Outcome::Complete(40)); } @@ -651,9 +645,8 @@ fn paid_transacting_should_refund_payment_for_unused_weight() { #[test] fn prepaid_result_of_query_should_get_free_execution() { let query_id = 33; - let origin: MultiLocation = Parent.into(); // We put this in manually here, but normally this would be done at the point of crafting the message. - expect_response(query_id, origin.clone()); + expect_response(query_id, Parent.into()); let the_response = Response::Assets((Parent, 100).into()); let message = Xcm::(vec![QueryResponse { @@ -664,12 +657,12 @@ fn prepaid_result_of_query_should_get_free_execution() { let weight_limit = 10; // First time the response gets through since we're expecting it... - let r = XcmExecutor::::execute_xcm(origin.clone(), message.clone(), weight_limit); + let r = XcmExecutor::::execute_xcm(Parent, message.clone(), weight_limit); assert_eq!(r, Outcome::Complete(10)); assert_eq!(response(query_id).unwrap(), the_response); // Second time it doesn't, since we're not. - let r = XcmExecutor::::execute_xcm(origin.clone(), message.clone(), weight_limit); + let r = XcmExecutor::::execute_xcm(Parent, message.clone(), weight_limit); assert_eq!(r, Outcome::Error(XcmError::Barrier)); } diff --git a/xcm/xcm-builder/src/weight.rs b/xcm/xcm-builder/src/weight.rs index 3ec684f85852..1e84a42e2ada 100644 --- a/xcm/xcm-builder/src/weight.rs +++ b/xcm/xcm-builder/src/weight.rs @@ -64,7 +64,7 @@ impl, C: Decode + GetDispatchInfo, M> FixedWeightBounds } } -struct WeightInfoBounds(PhantomData<(W, C, M)>); +pub struct WeightInfoBounds(PhantomData<(W, C, M)>); impl WeightBounds for WeightInfoBounds where W: XcmWeightInfo, diff --git a/xcm/xcm-builder/tests/mock/mod.rs b/xcm/xcm-builder/tests/mock/mod.rs index bcdac942a30a..1f0a5942045c 100644 --- a/xcm/xcm-builder/tests/mock/mod.rs +++ b/xcm/xcm-builder/tests/mock/mod.rs @@ -47,8 +47,8 @@ pub fn sent_xcm() -> Vec<(MultiLocation, opaque::Xcm)> { } pub struct TestSendXcm; impl SendXcm for TestSendXcm { - fn send_xcm(dest: MultiLocation, msg: opaque::Xcm) -> SendResult { - SENT_XCM.with(|q| q.borrow_mut().push((dest, msg))); + fn send_xcm(dest: impl Into, msg: opaque::Xcm) -> SendResult { + SENT_XCM.with(|q| q.borrow_mut().push((dest.into(), msg))); Ok(()) } } diff --git a/xcm/xcm-executor/Cargo.toml b/xcm/xcm-executor/Cargo.toml index d0b6d71d8fe7..ab2184c81d1d 100644 --- a/xcm/xcm-executor/Cargo.toml +++ b/xcm/xcm-executor/Cargo.toml @@ -3,11 +3,11 @@ authors = ["Parity Technologies "] edition = "2018" name = "xcm-executor" description = "An abstract and configurable XCM message executor." -version = "0.9.9" +version = "0.9.11" [dependencies] impl-trait-for-tuples = "0.2.0" -parity-scale-codec = { version = "2.0.0", default-features = false, features = ["derive"] } +parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] } xcm = { path = "..", default-features = false } sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } sp-io = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } @@ -16,9 +16,13 @@ sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } log = { version = "0.4.14", default-features = false } +frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master" , default-features = false, optional = true } [features] default = ["std"] +runtime-benchmarks = [ + "frame-benchmarking", +] std = [ "parity-scale-codec/std", "xcm/std", diff --git a/xcm/xcm-executor/integration-tests/Cargo.toml b/xcm/xcm-executor/integration-tests/Cargo.toml index 7f80eaa366df..5602a1f178e7 100644 --- a/xcm/xcm-executor/integration-tests/Cargo.toml +++ b/xcm/xcm-executor/integration-tests/Cargo.toml @@ -3,7 +3,7 @@ authors = ["Parity Technologies "] edition = "2018" name = "xcm-executor-integration-tests" description = "Integration tests for the XCM Executor" -version = "0.9.9" +version = "0.9.11" [dependencies] frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } diff --git a/xcm/xcm-executor/integration-tests/src/lib.rs b/xcm/xcm-executor/integration-tests/src/lib.rs index 359a5ef7a39e..a6673aca7a92 100644 --- a/xcm/xcm-executor/integration-tests/src/lib.rs +++ b/xcm/xcm-executor/integration-tests/src/lib.rs @@ -117,7 +117,7 @@ fn query_response_fires() { let mut block_builder = client.init_polkadot_block_builder(); - let response = Response::ExecutionResult(Ok(())); + let response = Response::ExecutionResult(None); let max_weight = 1_000_000; let msg = Xcm(vec![QueryResponse { query_id, response, max_weight }]); let msg = Box::new(VersionedXcm::from(msg)); @@ -148,13 +148,13 @@ fn query_response_fires() { r.event, polkadot_test_runtime::Event::Xcm(pallet_xcm::Event::ResponseReady( q, - Response::ExecutionResult(Ok(())), + Response::ExecutionResult(None), )) if q == query_id, ))); assert_eq!( polkadot_test_runtime::Xcm::query(query_id), Some(QueryStatus::Ready { - response: VersionedResponse::V2(Response::ExecutionResult(Ok(()))), + response: VersionedResponse::V2(Response::ExecutionResult(None)), at: 2u32.into() }), ) @@ -206,7 +206,7 @@ fn query_response_elicits_handler() { let mut block_builder = client.init_polkadot_block_builder(); - let response = Response::ExecutionResult(Ok(())); + let response = Response::ExecutionResult(None); let max_weight = 1_000_000; let msg = Xcm(vec![QueryResponse { query_id, response, max_weight }]); @@ -237,7 +237,7 @@ fn query_response_elicits_handler() { TestNotifier(ResponseReceived( MultiLocation { parents: 0, interior: X1(Junction::AccountId32 { .. }) }, q, - Response::ExecutionResult(Ok(())), + Response::ExecutionResult(None), )) if q == query_id, ))); }); diff --git a/xcm/xcm-executor/src/assets.rs b/xcm/xcm-executor/src/assets.rs index c7049a3a6412..93a29d7af880 100644 --- a/xcm/xcm-executor/src/assets.rs +++ b/xcm/xcm-executor/src/assets.rs @@ -211,7 +211,7 @@ impl Assets { /// Returns an error unless all `assets` are contained in `self`. In the case of an error, the first asset in /// `assets` which is not wholly in `self` is returned. - fn ensure_contains(&self, assets: &MultiAssets) -> Result<(), TakeError> { + pub fn ensure_contains(&self, assets: &MultiAssets) -> Result<(), TakeError> { for asset in assets.inner().iter() { match asset { MultiAsset { fun: Fungible(ref amount), ref id } => { diff --git a/xcm/xcm-executor/src/lib.rs b/xcm/xcm-executor/src/lib.rs index 6e4611b14eac..f252b2e7e3a3 100644 --- a/xcm/xcm-executor/src/lib.rs +++ b/xcm/xcm-executor/src/lib.rs @@ -67,11 +67,12 @@ pub const MAX_RECURSION_LIMIT: u32 = 8; impl ExecuteXcm for XcmExecutor { fn execute_xcm_in_credit( - origin: MultiLocation, + origin: impl Into, mut message: Xcm, weight_limit: Weight, mut weight_credit: Weight, ) -> Outcome { + let origin = origin.into(); log::trace!( target: "xcm::execute_xcm_in_credit", "origin: {:?}, message: {:?}, weight_limit: {:?}, weight_credit: {:?}", @@ -149,7 +150,8 @@ impl From for frame_benchmarking::BenchmarkError { } impl XcmExecutor { - pub fn new(origin: MultiLocation) -> Self { + pub fn new(origin: impl Into) -> Self { + let origin = origin.into(); Self { holding: Assets::new(), origin: Some(origin.clone()), @@ -268,7 +270,7 @@ impl XcmExecutor { for asset in assets.inner() { Config::AssetTransactor::beam_asset(asset, origin, &dest)?; } - assets.reanchor(&inv_dest)?; + assets.reanchor(&inv_dest).map_err(|()| XcmError::MultiLocationFull)?; let mut message = vec![ReserveAssetDeposited(assets), ClearOrigin]; message.extend(xcm.0.into_iter()); Config::XcmSender::send_xcm(dest, Xcm(message)).map_err(Into::into) @@ -343,10 +345,7 @@ impl XcmExecutor { ReportError { query_id, dest, max_response_weight: max_weight } => { // Report the given result by sending a QueryResponse XCM to a previously given outcome // destination if one was registered. - let response = Response::ExecutionResult(match self.error { - None => Ok(()), - Some(e) => Err(e), - }); + let response = Response::ExecutionResult(self.error); let message = QueryResponse { query_id, response, max_weight }; Config::XcmSender::send_xcm(dest, Xcm(vec![message]))?; Ok(()) @@ -411,14 +410,16 @@ impl XcmExecutor { Ok(()) }, SetErrorHandler(mut handler) => { - let handler_weight = Config::Weigher::weight(&mut handler)?; + let handler_weight = Config::Weigher::weight(&mut handler) + .map_err(|()| XcmError::WeightNotComputable)?; self.total_surplus.saturating_accrue(self.error_handler_weight); self.error_handler = handler; self.error_handler_weight = handler_weight; Ok(()) }, SetAppendix(mut appendix) => { - let appendix_weight = Config::Weigher::weight(&mut appendix)?; + let appendix_weight = Config::Weigher::weight(&mut appendix) + .map_err(|()| XcmError::WeightNotComputable)?; self.total_surplus.saturating_accrue(self.appendix_weight); self.appendix = appendix; self.appendix_weight = appendix_weight; diff --git a/xcm/xcm-executor/src/traits/conversion.rs b/xcm/xcm-executor/src/traits/conversion.rs index 7d2a2f50ba75..dbfb2d6a5fad 100644 --- a/xcm/xcm-executor/src/traits/conversion.rs +++ b/xcm/xcm-executor/src/traits/conversion.rs @@ -144,9 +144,9 @@ impl Convert, T> for Decoded { /// // A convertor that will bump the para id and pass it to the next one. /// struct BumpParaId; /// impl ConvertOrigin for BumpParaId { -/// fn convert_origin(origin: MultiLocation, _: OriginKind) -> Result { -/// match origin.interior() { -/// Junctions::X1(Junction::Parachain(id)) if origin.parent_count() == 0 => { +/// fn convert_origin(origin: impl Into, _: OriginKind) -> Result { +/// match origin.into() { +/// MultiLocation { parents: 0, interior: Junctions::X1(Junction::Parachain(id)) } => { /// Err(Junctions::X1(Junction::Parachain(id + 1)).into()) /// } /// _ => unreachable!() @@ -156,12 +156,12 @@ impl Convert, T> for Decoded { /// /// struct AcceptPara7; /// impl ConvertOrigin for AcceptPara7 { -/// fn convert_origin(origin: MultiLocation, _: OriginKind) -> Result { -/// match origin.interior() { -/// Junctions::X1(Junction::Parachain(id)) if id == &7 && origin.parent_count() == 0 => { +/// fn convert_origin(origin: impl Into, _: OriginKind) -> Result { +/// match origin.into() { +/// MultiLocation { parents: 0, interior: Junctions::X1(Junction::Parachain(id)) } if id == 7 => { /// Ok(7) /// } -/// _ => Err(origin) +/// o => Err(o) /// } /// } /// } @@ -175,18 +175,25 @@ impl Convert, T> for Decoded { /// ``` pub trait ConvertOrigin { /// Attempt to convert `origin` to the generic `Origin` whilst consuming it. - fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result; + fn convert_origin( + origin: impl Into, + kind: OriginKind, + ) -> Result; } #[impl_trait_for_tuples::impl_for_tuples(30)] impl ConvertOrigin for Tuple { - fn convert_origin(origin: MultiLocation, kind: OriginKind) -> Result { + fn convert_origin( + origin: impl Into, + kind: OriginKind, + ) -> Result { for_tuples!( #( let origin = match Tuple::convert_origin(origin, kind) { Err(o) => o, r => return r }; )* ); + let origin = origin.into(); log::trace!( target: "xcm::convert_origin", "could not convert: origin: {:?}, kind: {:?}", diff --git a/xcm/xcm-executor/src/traits/weight.rs b/xcm/xcm-executor/src/traits/weight.rs index 5d3af4f4c141..d3da75e0c29e 100644 --- a/xcm/xcm-executor/src/traits/weight.rs +++ b/xcm/xcm-executor/src/traits/weight.rs @@ -34,7 +34,7 @@ pub trait WeightBounds { /// message. pub trait UniversalWeigher { /// Get the upper limit of weight required for `dest` to execute `message`. - fn weigh(dest: MultiLocation, message: Xcm<()>) -> Result; + fn weigh(dest: impl Into, message: Xcm<()>) -> Result; } /// Charge for weight in order to execute XCM. diff --git a/xcm/xcm-simulator/Cargo.toml b/xcm/xcm-simulator/Cargo.toml index c0219386b823..abfa5560fc0c 100644 --- a/xcm/xcm-simulator/Cargo.toml +++ b/xcm/xcm-simulator/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "xcm-simulator" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] description = "Test kit to simulate cross-chain message passing and XCM execution" edition = "2018" diff --git a/xcm/xcm-simulator/example/Cargo.toml b/xcm/xcm-simulator/example/Cargo.toml index b4a8cc93e537..17ce84caabcd 100644 --- a/xcm/xcm-simulator/example/Cargo.toml +++ b/xcm/xcm-simulator/example/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "xcm-simulator-example" -version = "0.9.9" +version = "0.9.11" authors = ["Parity Technologies "] description = "Examples of xcm-simulator usage." edition = "2018" diff --git a/xcm/xcm-simulator/example/src/lib.rs b/xcm/xcm-simulator/example/src/lib.rs index 1f6d2934a673..2707c69c7f42 100644 --- a/xcm/xcm-simulator/example/src/lib.rs +++ b/xcm/xcm-simulator/example/src/lib.rs @@ -125,7 +125,7 @@ mod tests { Relay::execute_with(|| { assert_ok!(RelayChainPalletXcm::send_xcm( Here, - Parachain(1).into(), + Parachain(1), Xcm(vec![Transact { origin_type: OriginKind::SovereignAccount, require_weight_at_most: INITIAL_BALANCE as u64, @@ -152,7 +152,7 @@ mod tests { ParaA::execute_with(|| { assert_ok!(ParachainPalletXcm::send_xcm( Here, - Parent.into(), + Parent, Xcm(vec![Transact { origin_type: OriginKind::SovereignAccount, require_weight_at_most: INITIAL_BALANCE as u64, @@ -180,7 +180,7 @@ mod tests { ParaA::execute_with(|| { assert_ok!(ParachainPalletXcm::send_xcm( Here, - MultiLocation::new(1, X1(Parachain(2))), + (Parent, Parachain(2)), Xcm(vec![Transact { origin_type: OriginKind::SovereignAccount, require_weight_at_most: INITIAL_BALANCE as u64, @@ -247,7 +247,7 @@ mod tests { }, ]); // Send withdraw and deposit - assert_ok!(ParachainPalletXcm::send_xcm(Here, Parent.into(), message.clone())); + assert_ok!(ParachainPalletXcm::send_xcm(Here, Parent, message.clone())); }); Relay::execute_with(|| { @@ -289,7 +289,7 @@ mod tests { }, ]); // Send withdraw and deposit with query holding - assert_ok!(ParachainPalletXcm::send_xcm(Here, Parent.into(), message.clone(),)); + assert_ok!(ParachainPalletXcm::send_xcm(Here, Parent, message.clone(),)); }); // Check that transfer was executed diff --git a/xcm/xcm-simulator/example/src/parachain.rs b/xcm/xcm-simulator/example/src/parachain.rs index 0d2c74f8ba7c..8d68b498ca21 100644 --- a/xcm/xcm-simulator/example/src/parachain.rs +++ b/xcm/xcm-simulator/example/src/parachain.rs @@ -219,7 +219,7 @@ pub mod mock_msg_queue { let hash = Encode::using_encoded(&xcm, T::Hashing::hash); let (result, event) = match Xcm::::try_from(xcm) { Ok(xcm) => { - let location = MultiLocation::new(1, X1(Parachain(sender.into()))); + let location = (1, Parachain(sender.into())); match T::XcmExecutor::execute_xcm(location, xcm, max_weight) { Outcome::Error(e) => (Err(e.clone()), Event::Fail(Some(hash), e)), Outcome::Complete(w) => (Ok(w), Event::Success(Some(hash))), @@ -275,7 +275,7 @@ pub mod mock_msg_queue { Self::deposit_event(Event::UnsupportedVersion(id)); }, Ok(Ok(x)) => { - let outcome = T::XcmExecutor::execute_xcm(Parent.into(), x.clone(), limit); + let outcome = T::XcmExecutor::execute_xcm(Parent, x.clone(), limit); >::append(x); Self::deposit_event(Event::ExecutedDownward(id, outcome)); }, diff --git a/xcm/xcm-simulator/src/lib.rs b/xcm/xcm-simulator/src/lib.rs index f932fc50deb8..5e563e153dba 100644 --- a/xcm/xcm-simulator/src/lib.rs +++ b/xcm/xcm-simulator/src/lib.rs @@ -296,9 +296,10 @@ macro_rules! decl_test_network { pub struct ParachainXcmRouter($crate::PhantomData); impl> $crate::SendXcm for ParachainXcmRouter { - fn send_xcm(destination: $crate::MultiLocation, message: $crate::Xcm<()>) -> $crate::SendResult { + fn send_xcm(destination: impl Into<$crate::MultiLocation>, message: $crate::Xcm<()>) -> $crate::SendResult { use $crate::{UmpSink, XcmpMessageHandlerT}; + let destination = destination.into(); match destination.interior() { $crate::Junctions::Here if destination.parent_count() == 1 => { $crate::PARA_MESSAGE_BUS.with( @@ -320,9 +321,10 @@ macro_rules! decl_test_network { /// XCM router for relay chain. pub struct RelayChainXcmRouter; impl $crate::SendXcm for RelayChainXcmRouter { - fn send_xcm(destination: $crate::MultiLocation, message: $crate::Xcm<()>) -> $crate::SendResult { + fn send_xcm(destination: impl Into<$crate::MultiLocation>, message: $crate::Xcm<()>) -> $crate::SendResult { use $crate::DmpMessageHandlerT; + let destination = destination.into(); match destination.interior() { $( $crate::X1($crate::Parachain(id)) if *id == $para_id && destination.parent_count() == 0 => {